Mapeate.Base = function(mapeate, entradas){ const self = this, base_cache = {x : 0, y : 0}, posicion_de_raton = {x : 0, y : 0}; let iniciado = false, base_hilo, construido = false; const constructor = () => { mapeate.print("info", "mapeate_base_construyendose"); mapeate.print("ok", "mapeate_base_construido"); }; this.iniciar = callback => { const terminar = estado => typeof callback == "function" && callback(estado); if(iniciado){ terminar(false); return false; }; iniciado = true; self.construir(() => { mapeate.print("ok", "base_construida"); terminar(true); }); return true; }; const base_hilo_metodo = () => { if(mapeate.si_mismo && (base_cache.x != mapeate.si_mismo.offsetWidth || base_cache.y != mapeate.si_mismo.offsetHeight) && mapeate.si_mismo.getAttribute){ const minimo = Number(mapeate.si_mismo.getAttribute("data-celdas-minimo")); let tamano; base_cache.x = mapeate.si_mismo.offsetWidth; base_cache.y = mapeate.si_mismo.offsetHeight; tamano = base_cache[base_cache.x < base_cache.y ? "x" : "y"] / Number(mapeate.si_mismo.getAttribute("data-celdas")); mapeate.si_mismo.style.fontSize = (tamano < minimo ? tamano = minimo : tamano) + "px"; mapeate.si_mismo.setAttribute("data-menu-principal-completo", base_cache.x / tamano > 50); }; }; this.construir = callback => { const terminar = estado => typeof callback == "function" && callback(estado); if(construido){ terminar(false); return false; }; construido = true; mapeate.vistas.establecer(mapeate.configuracion("posicion_html"), "base", { clases : "", link_local : "#", logo : mapeate.configuracion("logo"), hash : mapeate.coger_hash(), menu_principal : mapeate.vistas.crear_elementos_de_menu("elemento_menu_principal", mapeate.configuracion("menu_principal")), menu_links : mapeate.vistas.crear_elementos_de_menu("elemento_menu_links", mapeate.configuracion("menu_links")), lista_mapas : mapeate.mapas.selector.crear_lista(), parametros_raiz : { aplicacion : mapeate.configuracion("aplicacion"), link : mapeate.configuracion("link"), git : mapeate.configuracion("git"), organizacion : mapeate.configuracion("organizacion"), celdas : mapeate.configuracion("celdas"), celdas_minimo : mapeate.configuracion("tamano_minimo_celda"), onmousemove : mapeate.nombre_objeto + ".base.capturar_cursor(this, event);" } }, () => { mapeate.establecer_si_mismo(document.querySelector("#" + mapeate.hash_self)); base_hilo = mapeate.anadir_hilo_de_proceso(base_hilo_metodo); terminar(true); }); return true; }; this.coger_posicion_del_cursor = evento => { const box = mapeate.si_mismo.getBoundingClientRect(); return [evento.clientX - box.x, evento.clientY - box.y]; }; this.capturar_cursor = (elemento, evento) => [posicion_de_raton.x, posicion_de_raton.y] = self.coger_posicion_del_cursor(evento); this.coger_posicion_del_raton = () => ({...posicion_de_raton}); constructor(); };