| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | 
							- import { dom_manager, type_manager } from "./functions.js";
 
- class applet_animations {
 
-     static display(state, target) {
 
-         if (state) {
 
-             target.style.display = "block";
 
-         } else {
 
-             target.style.display = "none";
 
-         }
 
-     }
 
-     static hide_left(state, target) {
 
-         if (state) {
 
-             target.style.left = "0";
 
-         } else {
 
-             target.style.left = -target.offsetWidth + "px";
 
-         }
 
-     }
 
-     static hide_right(state, target) {
 
-         if (state) {
 
-             target.style.right = "0";
 
-         } else {
 
-             target.style.right = -target.offsetWidth + "px";
 
-         }
 
-     }
 
- }
 
- class applet_builder {
 
-     #minimalise;
 
-     #maximalise;
 
-     #target;
 
-     #animation;
 
-     constructor() {
 
-         this.#minimalise = undefined;
 
-         this.#maximalise = undefined;
 
-         this.#target = undefined;
 
-         this.#animation = applet_animations.display;
 
-     }
 
-     set minimalise(target) {
 
-         if (!dom_manager.is_element(target)) {
 
-             throw "Minimalise button must be HTML element.";
 
-         }
 
-         this.#minimalise = target;
 
-     }
 
-     set maximalise(target) {
 
-         if (!dom_manager.is_element(target)) {
 
-             throw "Maximalise button must be HTML element.";
 
-         }
 
-         this.#maximalise = target;
 
-     }
 
-     set target(target) {
 
-         if (!dom_manager.is_element(target)) {
 
-             throw "Target must be HTML element.";
 
-         }
 
-         this.#target = target;
 
-     }
 
-     set animation(target) {
 
-         if (!type_manager.is_function(target)) {
 
-             throw "Animation must be an function.";
 
-         }
 
-         this.#animation = target;
 
-     }
 
-     get is_valid() {
 
-         if (this.#minimalise === undefined) {
 
-             return false;
 
-         }
 
-         if (this.#maximalise === undefined) {
 
-             return false;
 
-         }
 
-         if (this.#target === undefined) {
 
-             return false;
 
-         }
 
-         if (this.#animation === undefined) {
 
-             return false;
 
-         }
 
-         return true;
 
-     }
 
-     get #is_swapable() {
 
-         return this.#minimalise === this.#maximalise;
 
-     }
 
-     #build_swapable() {
 
-         return new swapable_applet(
 
-             this.#target, 
 
-             this.#minimalise,
 
-             this.#animation
 
-         );
 
-     }
 
-     build() {
 
-         if (!this.is_valid) {
 
-             throw "Builder is not valid yes.";
 
-         }
 
-         if (this.#is_swapable) {
 
-             return this.#build_swapable();
 
-         }
 
-     }
 
- }
 
- class applet {
 
-     _target;
 
-     _animation;
 
-     _state;
 
-     get _has_animation() {
 
-         return this._animation !== undefined;
 
-     }
 
-     _run_animation() {
 
-         this._animation(this._state, this._target);
 
-     }
 
-     show() {
 
-         this._state = true;
 
-         this._run_animation();
 
-     }
 
-     hide() {
 
-         this._state = false;
 
-         this._run_animation();
 
-     }
 
- }
 
- class swapable_applet extends applet {
 
-     #swaper;
 
-     constructor(target, swaper, animation) {
 
-         super();
 
-         if (!dom_manager.is_element(target)) {
 
-             throw "Target must be HTML element.";
 
-         }
 
-         if (!dom_manager.is_element(swaper)) {
 
-             throw "Swaper must be HTML element.";
 
-         }
 
-         if (animation !== undefined && !type_manager.is_function(animation)) {
 
-             throw "Animation must be undefined (disabled), or function.";
 
-         }
 
-         this._target = target;
 
-         this.#swaper = swaper;
 
-         this._animation = animation;
 
-         this._state = false;
 
-         this.hide();
 
-         this.#listen();
 
-     }
 
-     #listen() {
 
-         this.#swaper.addEventListener("click", () => { this.swap(); });
 
-     }
 
-     swap() {
 
-         if (this._state) {
 
-             this.hide();
 
-         } else {
 
-             this.show();
 
-         }
 
-     }
 
- }
 
- export { applet_builder, applet_animations };
 
 
  |