| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- import { products_loader } from "./products_loader.js";
 
- import { product_containers } from "./product_containers.js";
 
- export class searcher {
 
-     #input;
 
-     #category;
 
-     #manager;
 
-     #result;
 
-     static #instances;
 
-     static #add(instance) {
 
-         if (typeof(searcher.#instances) !== "object") {
 
-             searcher.#instances = new Array();
 
-         }
 
-         searcher.#instances.push(instance);
 
-     }
 
-     static reload() {
 
-         if (typeof(searcher.#instances) !== "object") {
 
-             return ;
 
-         }
 
-         searcher.#instances.forEach(instance => {
 
-             instance.update();
 
-         });
 
-     }
 
-     
 
-     constructor(search_form, manager, result) {
 
-         this.#input = search_form.querySelector("input[type=\"text\"]");
 
-         this.#category = search_form.querySelector("select");
 
-         this.#manager = manager;
 
-         this.#result = result;
 
-         this.#selector_complete();
 
-         search_form.addEventListener("submit", (target) => {
 
-             target.preventDefault();
 
-             this.update();
 
-         });
 
-         searcher.#add(this);
 
-     }
 
-     get categories() {
 
-         return {
 
-             "name": "Name",
 
-             "author": "Author"
 
-         }
 
-     }
 
-     #selector_complete() {
 
-         const category = this.#category;
 
-         const categories = this.categories;
 
-         Object.keys(categories).forEach(name => {
 
-             const option = document.createElement("option");
 
-             option.value = name;
 
-             option.innerText = categories[name];
 
-         
 
-             category.appendChild(option);
 
-         });
 
-     }
 
-     get #loader() {
 
-         return {
 
-             "name": products_loader.search_name,
 
-             "author": products_loader.search_author
 
-         }[this.category];
 
-     }
 
-     get category() {
 
-         return this.#category.value;
 
-     }
 
-     get phrase() {
 
-         return this.#input.value.trim();
 
-     }
 
-     get #result_title() {
 
-         return this.#result.innerText;
 
-     }
 
-     set #result_title(target) {
 
-         this.#result.innerText = target;
 
-     }
 
-     async update() {
 
-         if (this.phrase.length === 0) {
 
-             this.show_all();
 
-             return;
 
-         }
 
-         this.#insert(await this.#loader(this.phrase));
 
-     }
 
-     #insert(list) {
 
-         if (list.length === 0) {
 
-             this.#result_title = "Not found anything.";
 
-         } else {
 
-             this.#result_title = "Browse our products!";
 
-         }
 
-         this.#manager
 
-         .clean()
 
-         .add_list(list)
 
-         .update();
 
-     }
 
-     async show_all() {
 
-         this.#insert(await products_loader.all())
 
-     }
 
- }
 
 
  |