view.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { screen } from "./screen.js";
  2. import { assets_getter } from "./assets-getter.js";
  3. export class view {
  4. #manager;
  5. /**
  6. * This function build new view instance. Basically, it require view
  7. * manager, and assets loader. Views are builded by screen manager,
  8. * when view on screen had been changing.
  9. *
  10. * @param {screen} manager - Screen manager
  11. */
  12. constructor(manager) {
  13. if (!(manager instanceof screen)) {
  14. throw new TypeError("Screen manager is in bad type.");
  15. }
  16. this.#manager = manager;
  17. }
  18. /**
  19. * @returns {screen} - This return screen manager
  20. */
  21. get manager() {
  22. return this.#manager;
  23. }
  24. /**
  25. * Determinate that view is ready to interaction after show function.
  26. * When return true, then after show() function manager would
  27. *
  28. * @returns {bool} - True
  29. */
  30. /**
  31. * @returns {assets_getter} - This return assets loader
  32. */
  33. get loader() {
  34. return this.#manager.loader;
  35. }
  36. /**
  37. * This function is responsible for creating new view items.
  38. *
  39. * @abstract
  40. * @returns {HTMLElement} - New view container
  41. */
  42. show() {
  43. throw new Error("This function must be override.");
  44. }
  45. /**
  46. * This function is responsibke for cleanup after view. It is empty by
  47. * default, but when it is required, it can be overwrite. It is called
  48. * before view destroy.
  49. */
  50. destroy() {
  51. }
  52. }