| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { view } from "./view.js";
- import { loading_screen } from "./loading-screen.js";
- export class screen {
- #root;
- #view;
-
- constructor(root) {
- this.#root = root;
- }
- get root() {
- return this.#root;
- }
- get view() {
- return this.#view;
- }
- get #loading() {
- return new loading_screen();
- }
- #change_view(target) {
- if (this.#view !== undefined) {
- this.#view.destroy();
- }
- this.#view = target;
- const content = this.#view.show();
- if (!(content instanceof HTMLElement)) {
- throw new TypeError("View show not return HTML Element.");
- }
- while (this.root.lastChild) {
- this.root.lastChild.remove();
- }
- this.root.appendChild(content);
- this.#loading.hide();
- }
- set view(target) {
- if (!(target instanceof view)) {
- throw new Error("Target must be instance of view.");
- }
- if (this.#loading.visible) {
- this.#change_view(target)
- return;
- }
- this.#loading.show();
- setTimeout(() => {
- this.#change_view(target);
- }, this.#loading.time);
- }
- }
|