| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- export class fullscreen {
- #node;
-
- constructor() {
- this.#node = null;
- }
- get visible() {
- return this.#node !== null;
- }
- _build_node() {
- throw new TypeError("This is virtual method!");
- }
- get #opacity() {
- if (!this.visible) {
- throw new TypeError("Can not change opacity of not existed.");
- }
- return Number(this.#node.style.opacity);
- }
- set #opacity(target) {
- if (!this.visible) {
- throw new TypeError("Can not change opacity of not existed.");
- }
- this.#node.style.opacity = String(target);
- }
- get_query(selector) {
- if (!this.visible) {
- throw new TypeError("Can not get item from not visible.");
- }
- return this.#node.querySelector(selector);
- }
- #prepare() {
- const container = document.createElement("div");
-
- container.classList.add("fullscreen-viewer");
- container.style.transition = "opacity 0.5s";
- container.appendChild(this._build_node());
-
- return container;
- }
- hide() {
- if (!this.visible) {
- return;
- }
- this.#opacity = 0;
- setTimeout(() => {
- if (!this.visible) {
- return;
- }
-
- this.#node.remove();
- this.#node = null;
- }, 500);
- }
- show() {
- if (this.visible) {
- return;
- }
-
- this.#node = this.#prepare();
- this.#opacity = 0;
- document.querySelector("body").appendChild(this.#node);
- setTimeout(() => {
- this.#opacity = 1;
- }, 100);
- }
- }
|