| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- import { dom_manager } from "./functions.js";
 
- class list_applet {
 
-     #symbol;
 
-     #target;
 
-     #items;
 
-     constructor(target, symbol = null) {
 
-         if (!dom_manager.is_element(target)) {
 
-             throw "Target list must be an HTML element.";
 
-         }
 
-         this.#items = new Object();
 
-         this.#target = target;  
 
-         this.#symbol = null;
 
-         if (symbol !== null) {
 
-             this.#symbol = symbol.toString();
 
-         }
 
-         
 
-         if (!this.#target.classList.contains("items-list")) {
 
-             this.#target.classList.add("items-list");
 
-         }
 
-         this.clean();
 
-     }   
 
-     clean() {
 
-         while(this.#target.childElementCount) {
 
-             this.#target.lastChild.remove();
 
-         }
 
-     }
 
-     exists(name) {
 
-         return this.#items.hasOwnProperty(name);
 
-     }
 
-     remove(name) {
 
-         if (!this.exists(name)) {
 
-             throw "Can not remove item. This item not exists on list.";
 
-         }
 
-         this.#items[name].remove();
 
-         delete(this.#items[name]);
 
-     }
 
-     #new_symbol() {
 
-         const symbol = document.createElement("span");
 
-         
 
-         symbol.classList.add("material-symbols-outlined");
 
-         symbol.innerText = this.#symbol;
 
-         return symbol;
 
-     }
 
-     append(name, action) {
 
-         if (this.exists(name)) {
 
-             throw "Items with this name already exists on list.";
 
-         }
 
-         name = name.trim();
 
-         if (name.length === 0) {
 
-             throw "Name for new item can not be empty.";
 
-         }
 
-         const new_item = document.createElement("div");
 
-         new_item.classList.add("list-item");
 
-         if (this.#symbol !== null) {
 
-             new_item.appendChild(this.#new_symbol());
 
-         }
 
-         const nametag = document.createElement("p");
 
-         nametag.innerText = name;
 
-         new_item.appendChild(nametag);
 
-         this.#target.appendChild(new_item);
 
-         this.#items[name] = new_item;
 
-     
 
-         new_item.addEventListener("click", () => {
 
-             action(this, name);
 
-         });
 
-     }
 
- }
 
- export { list_applet };
 
 
  |