From 96fb176388e6384bec68e79f95ef31d1562d69a6 Mon Sep 17 00:00:00 2001 From: KyMAN <0kyman0@gmail.com> Date: Fri, 15 Mar 2024 01:51:53 +0100 Subject: [PATCH] #wip: Montada la base ECMA, creando la base del GUI. --- .gitignore | 3 +- Artbook/Mapeate.logo | Bin 0 -> 1350 bytes Artbook/Mapeate.logo.xcf | Bin 0 -> 59145 bytes Public/app.html | 17 + Public/css/Mapeate.iconos.css | 7 + Public/ecma/Mapeate.ecma.js | 352 ++++++++++++++++-- Public/favicon.ico | Bin 0 -> 4286 bytes Public/html/vistas.html | 67 ++++ Public/images/Mapeate-128.png | Bin 0 -> 8541 bytes Public/images/Mapeate-192.png | Bin 0 -> 14695 bytes Public/images/Mapeate-270.png | Bin 0 -> 14112 bytes Public/images/Mapeate-32.png | Bin 0 -> 1656 bytes Public/images/Mapeate-512.png | Bin 0 -> 7289 bytes Public/images/Mapeate.png | Bin 0 -> 7289 bytes Public/json/Mapeate.configuracion.json | 39 +- Public/json/i18n/Mapeate.i18n.alarabiyah.json | 28 ++ .../json/i18n/Mapeate.i18n.azerbaycanca.json | 28 ++ Public/json/i18n/Mapeate.i18n.catala.json | 28 ++ Public/json/i18n/Mapeate.i18n.cestina.json | 28 ++ Public/json/i18n/Mapeate.i18n.dansk.json | 28 ++ Public/json/i18n/Mapeate.i18n.deutsch.json | 28 ++ Public/json/i18n/Mapeate.i18n.ellinika.json | 28 ++ Public/json/i18n/Mapeate.i18n.english.json | 28 ++ Public/json/i18n/Mapeate.i18n.espanol.json | 17 + Public/json/i18n/Mapeate.i18n.esperanto.json | 28 ++ Public/json/i18n/Mapeate.i18n.farsi.json | 28 ++ Public/json/i18n/Mapeate.i18n.francais.json | 28 ++ Public/json/i18n/Mapeate.i18n.gaeilge.json | 28 ++ Public/json/i18n/Mapeate.i18n.hangugeo.json | 28 ++ Public/json/i18n/Mapeate.i18n.hindi.json | 28 ++ Public/json/i18n/Mapeate.i18n.indonesia.json | 28 ++ Public/json/i18n/Mapeate.i18n.italiano.json | 28 ++ Public/json/i18n/Mapeate.i18n.ivrit.json | 28 ++ Public/json/i18n/Mapeate.i18n.magyar.json | 28 ++ Public/json/i18n/Mapeate.i18n.nederlands.json | 28 ++ Public/json/i18n/Mapeate.i18n.nihongo.json | 28 ++ Public/json/i18n/Mapeate.i18n.polski.json | 28 ++ Public/json/i18n/Mapeate.i18n.portugues.json | 28 ++ Public/json/i18n/Mapeate.i18n.russkiy.json | 28 ++ Public/json/i18n/Mapeate.i18n.slovencina.json | 28 ++ Public/json/i18n/Mapeate.i18n.suomi.json | 28 ++ Public/json/i18n/Mapeate.i18n.svenska.json | 28 ++ Public/json/i18n/Mapeate.i18n.thai.json | 28 ++ Public/json/i18n/Mapeate.i18n.turkce.json | 28 ++ Public/json/i18n/Mapeate.i18n.ukrainska.json | 28 ++ Public/json/i18n/Mapeate.i18n.zhongwen.json | 28 ++ Public/scss/Mapeate.base.scss | 137 +++++++ Public/scss/Mapeate.configuracion.scss | 20 + Public/scss/Mapeate.css | 109 ++++++ Public/scss/Mapeate.css.map | 7 + Public/scss/Mapeate.scss | 1 + Tools/sass.sh | 3 + 52 files changed, 1595 insertions(+), 24 deletions(-) create mode 100644 Artbook/Mapeate.logo create mode 100644 Artbook/Mapeate.logo.xcf create mode 100644 Public/css/Mapeate.iconos.css create mode 100644 Public/favicon.ico create mode 100644 Public/html/vistas.html create mode 100644 Public/images/Mapeate-128.png create mode 100644 Public/images/Mapeate-192.png create mode 100644 Public/images/Mapeate-270.png create mode 100644 Public/images/Mapeate-32.png create mode 100644 Public/images/Mapeate-512.png create mode 100644 Public/images/Mapeate.png create mode 100644 Public/json/i18n/Mapeate.i18n.alarabiyah.json create mode 100644 Public/json/i18n/Mapeate.i18n.azerbaycanca.json create mode 100644 Public/json/i18n/Mapeate.i18n.catala.json create mode 100644 Public/json/i18n/Mapeate.i18n.cestina.json create mode 100644 Public/json/i18n/Mapeate.i18n.dansk.json create mode 100644 Public/json/i18n/Mapeate.i18n.deutsch.json create mode 100644 Public/json/i18n/Mapeate.i18n.ellinika.json create mode 100644 Public/json/i18n/Mapeate.i18n.english.json create mode 100644 Public/json/i18n/Mapeate.i18n.esperanto.json create mode 100644 Public/json/i18n/Mapeate.i18n.farsi.json create mode 100644 Public/json/i18n/Mapeate.i18n.francais.json create mode 100644 Public/json/i18n/Mapeate.i18n.gaeilge.json create mode 100644 Public/json/i18n/Mapeate.i18n.hangugeo.json create mode 100644 Public/json/i18n/Mapeate.i18n.hindi.json create mode 100644 Public/json/i18n/Mapeate.i18n.indonesia.json create mode 100644 Public/json/i18n/Mapeate.i18n.italiano.json create mode 100644 Public/json/i18n/Mapeate.i18n.ivrit.json create mode 100644 Public/json/i18n/Mapeate.i18n.magyar.json create mode 100644 Public/json/i18n/Mapeate.i18n.nederlands.json create mode 100644 Public/json/i18n/Mapeate.i18n.nihongo.json create mode 100644 Public/json/i18n/Mapeate.i18n.polski.json create mode 100644 Public/json/i18n/Mapeate.i18n.portugues.json create mode 100644 Public/json/i18n/Mapeate.i18n.russkiy.json create mode 100644 Public/json/i18n/Mapeate.i18n.slovencina.json create mode 100644 Public/json/i18n/Mapeate.i18n.suomi.json create mode 100644 Public/json/i18n/Mapeate.i18n.svenska.json create mode 100644 Public/json/i18n/Mapeate.i18n.thai.json create mode 100644 Public/json/i18n/Mapeate.i18n.turkce.json create mode 100644 Public/json/i18n/Mapeate.i18n.ukrainska.json create mode 100644 Public/json/i18n/Mapeate.i18n.zhongwen.json create mode 100644 Public/scss/Mapeate.base.scss create mode 100644 Public/scss/Mapeate.configuracion.scss create mode 100644 Public/scss/Mapeate.css create mode 100644 Public/scss/Mapeate.css.map create mode 100644 Public/scss/Mapeate.scss create mode 100755 Tools/sass.sh diff --git a/.gitignore b/.gitignore index f191c41..3378244 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ Data *.apache2.conf Public/data -*[Ss]ecret*s* \ No newline at end of file +*[Ss]ecret*s* +.sass-cache \ No newline at end of file diff --git a/Artbook/Mapeate.logo b/Artbook/Mapeate.logo new file mode 100644 index 0000000000000000000000000000000000000000..8d179678735a811983011f1a87c80359cbadc8f1 GIT binary patch literal 1350 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 ts);6|RyNo+MNLF5lSMXPpY{|C7kOXmOp literal 0 HcmV?d00001 diff --git a/Public/app.html b/Public/app.html index 5eb3d5a..1eaa44d 100644 --- a/Public/app.html +++ b/Public/app.html @@ -9,6 +9,23 @@ + + + + + + + + + + diff --git a/Public/css/Mapeate.iconos.css b/Public/css/Mapeate.iconos.css new file mode 100644 index 0000000..875e019 --- /dev/null +++ b/Public/css/Mapeate.iconos.css @@ -0,0 +1,7 @@ +.mapeate [data-icon=web]::before{content : "\f0ac"; font-family : "FA5FS";} +.mapeate [data-icon=principal]::before{content : "\f015"; font-family : "FA5FS";} +.mapeate [data-icon=app]::before{content : "\f085"; font-family : "FA5FS";} +.mapeate [data-icon=git]::before{content : "\f841"; font-family : "FA5FB";} +.mapeate [data-icon=wix]::before{content : "\f5cf"; font-family : "FA5FB";} +.mapeate [data-icon=facebook]::before{content : "\f09a"; font-family : "FA5FB";} +.mapeate [data-icon=twitter]::before{content : "\f099"; font-family : "FA5FB";} \ No newline at end of file diff --git a/Public/ecma/Mapeate.ecma.js b/Public/ecma/Mapeate.ecma.js index 943cf82..6068e90 100644 --- a/Public/ecma/Mapeate.ecma.js +++ b/Public/ecma/Mapeate.ecma.js @@ -26,11 +26,35 @@ Mapeate = function(entradas){ archivos_de_i18n_por_defecto : [ "/json/i18n/Mapeate.i18n.espanol.json" ], - ajax_timeout : 2000 + ajax_timeout : 2000, + terminal_unkn_oscuro : "color : #AAA;", + terminal_unkn_claro : "color : #666;", + terminal_ok_oscuro : "color : #9F9;", + terminal_ok_claro : "color : #090;", + terminal_info_oscuro : "color : #99F;", + terminal_info_claro : "color : #009;", + terminal_note_oscuro : "color : #222;", + terminal_note_claro : "color : #EFEFEF;" }, configuracion = {}, - textos = {}, - terminal_tipos = []; + textos = { + espanol : { + mapeate : "Mapeate", + mapeate_construyendose : "La aplicación 'Mapéate' se está construyendo...", + mapeate_construido : "La aplicación 'Mapeate' se construyó completamente.", + cargando_configuracion : "Cargando la configuración...", + configuracion_cargada : "La configuración ha sido cargada completamente.", + cargando_terminal_tipos : "Cargando los tipos de salidas de terminal...", + terminal_tipos_cargados : "Los tipos de terminal han sido cargados completamente.", + cargando_i18n : "Cargando los textos internacionalizados...", + i18n_cargada : "Los textos internacionalizados han sido cargados completamente." + } + }, + terminal_tipos = [], + vistas = {}, + hashes = [], + hilos_de_proceso = [], + base_cache = {x : 0, y : 0}; let iniciado = false, configuracion_sobreescribir = false, idioma_por_defecto = null, @@ -42,7 +66,14 @@ Mapeate = function(entradas){ terminal_info_oscuro, terminal_info_claro, terminal_note_oscuro, terminal_note_claro, modo_gui_oscuro = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches, - formato_terminal = "[{tipo}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{linea}]{archivo}({metodo}): {mensaje}"; + formato_terminal = "[{tipo}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{linea}]{archivo}({metodo}): {mensaje}", + hash_alfabeto, hash_longitud, + intervalo_de_procesos, precarga_timeout, + construido = false, + base_hilo; + + let hash_self = this.hash_self; + let si_mismo = this.si_mismo = document; const re_bloque_de_traza = new RegExp("^(" + [ /\s*at\s+(([^\s]+)\s+\()?(([^\(\)\:]+\:)?[^\(\)\:]+)(\:([0-9]+)\:[0-9]+)?\)?/.source, // Webkit @@ -52,12 +83,13 @@ Mapeate = function(entradas){ const constructor = () => { configuracion_por_defecto.terminal_tipos_por_defecto.forEach(entrada => terminal_tipos.push(entrada)); + establecer_variables_comunes(); self.print("info", "mapeate_construyendose"); - self.configuracion("autoiniciar") && self.iniciar(() => { - self.print("ok", "mapeate_construido"); - }); + self.print("ok", "mapeate_construido"); + + self.configuracion("autoiniciar") && self.iniciar(); }; @@ -89,23 +121,44 @@ Mapeate = function(entradas){ establecer_variables_comunes(); - self.configuracion_anadir(self.configuracion("archivos_de_configuracion_por_defecto"), null, () => { + self.print("info", "cargando_configuracion"); + + self.configuracion_anadir(self.configuracion("archivos_de_configuracion_por_defecto"), true, () => { establecer_variables_comunes(); - self.configuracion_anadir(self.configuracion("archivos_de_configuracion"), null, () => { + self.configuracion_anadir(self.configuracion("archivos_de_configuracion"), true, () => { establecer_variables_comunes(); + self.print("ok", "configuracion_cargada"); + self.print("info", "cargando_terminal_tipos"); self.terminal_tipos_anadir(self.configuracion("terminal_tipos_por_defecto"), () => { self.terminal_tipos_anadir(self.configuracion("terminal_tipos"), () => { + self.print("ok", "terminal_tipos_cargados"); i18n_sobreescribir = self.configuracion(["i18n_sobreescribir", "sobreescribir"]); idioma_por_defecto = self.configuracion(["idioma_por_defecto", "idioma"]); idioma = self.configuracion(["idioma", "idioma_por_defecto"]); + hash_alfabeto = self.configuracion("hash_alfabeto"); + hash_longitud = self.configuracion("hash_longitud"); + precarga_timeout = self.configuracion("precarga_timeout"); + + intervalo_de_procesos = setInterval(ejecutar_hilos_de_proceso, 1000 / self.configuracion("ejecutar_hilos_de_proceso")); - self.i18n_anadir(self.configuracion("archivos_de_i18n_por_defecto"), null, () => { - self.i18n_anadir(self.configuracion("archivos_de_i18n"), null,() => { - - terminar(true); - console.log("PASA"); - + self.print("info", "cargando_i18n"); + self.i18n_anadir(self.configuracion("archivos_de_i18n_por_defecto"), true, () => { + self.i18n_anadir(self.configuracion("archivos_de_i18n"), true, () => { + self.print("ok", "i18n_cargada"); + self.print("info", "cargando_vistas"); + self.cargar_vistas(self.configuracion("archivos_de_vistas_por_defecto"), true, () => { + self.cargar_vistas(self.configuracion("archivos_de_vistas"), true, () => { + self.print("ok", "vistas_cargadas"); + + self.print("info", "construyendo_base"); + self.construir_base(() => { + self.print("ok", "base_construida"); + terminar(true); + }); + + }); + }); }); }); @@ -251,11 +304,33 @@ Mapeate = function(entradas){ 0 ); + const formatear_parametro = (clave, string) => ' data-' + clave.replace(/[^a-z0-9]+/g, '-') + '="' + ("" + string).replace(/"/g, "\\\"") + '"'; + this.string_variables = (string, variables, por_defecto) => { const l = (variables = self.coger_array_de_diccionarios(variables)).length; - return (string || "" + string).replace(/\{([^\{\}]+)\}/g, (crudo, clave) => { + return (string || "" + string).replace(/\{{2}([^\{\}]+)\}{2}|\{([^\{\}]+)\}| +data-([^=\s]+)="\[{2}\]{2}"/g, (crudo, i18n, clave, parametros) => { + if(i18n) + return self.i18n(i18n, variables); + if(parametros){ + for(let i = 0; i < l; i ++) + switch(typeof variables[i][parametros]){ + case "object": + + let html = ''; + + for(const clave in variables[i][parametros]) + html += formatear_parametro(clave, variables[i][parametros][clave]); + + return html; + case "string": + default: + if(variables[i][parametros] !== undefined) + return formatear_parametro(parametros, variables[i][parametros]) + }; + return ""; + }; for(let i = 0; i < l; i ++) if(variables[i][clave] !== undefined) return variables[i][clave]; @@ -428,7 +503,7 @@ Mapeate = function(entradas){ metodo : matches[3] || matches[8] || "", linea : Number(matches[7] || matches[10]) } : null; - }); + }).filter(linea => linea); this.print = (tipo, mensaje, variables, i) => { @@ -438,13 +513,12 @@ Mapeate = function(entradas){ tipo : self.coger_tipo_terminal(tipo), i18n : mensaje, ...(typeof variables == "object" ? variables : {}), - ...(self.coger_traza((isNaN(i) ? 1 : i) + 1) || { + ...(self.coger_traza(isNaN(i) ? 1 : i)[0] || { linea : -1, metodo : "UNKNOWN", archivo : "UNKNOWN" }) - }, - clave_tipo = conjunto.tipo.trim().toLowerCase(); + }; let mensaje_procesado; conjunto.line = conjunto.linea; @@ -467,8 +541,6 @@ Mapeate = function(entradas){ mensaje_procesado = self.string_variables(formato_terminal, conjunto); - console.log(conjunto); - switch(conjunto.tipo){ case " OK ": console.log("%c" + mensaje_procesado, self.modo_gui_oscuro() ? terminal_ok_oscuro : terminal_ok_claro); @@ -495,6 +567,242 @@ Mapeate = function(entradas){ }; + const cargar_vistas = (entradas, sobreescribir, callback, i) => { + + if(!entradas || i >= entradas.length){ + typeof callback == "function" && callback(); + return; + }; + + const terminar = () => cargar_vistas(entradas, sobreescribir, callback, i + 1); + + if(!entradas[i]){ + terminar(); + return; + }; + + if(typeof entradas[i] == "object"){ + if(entradas[i] instanceof Array) + cargar_vistas(entradas[i], sobreescribir, terminar, 0); + else{ + for(const clave in entradas[i]) + if(typeof entradas[i] == "string" && (sobreescribir || vistas[clave] === undefined)) + vistas[clave] = entradas[i]; + terminar(); + }; + }else if(typeof entradas[i] == "string"){ + if(!(entradas[i] = entradas[i].trim())){ + terminar(); + return; + }; + + let json; + + if(/^(\/|[a-z0-9]{3,5}\:\/{2})[^\r\n]*$/i.test(entradas[i])) + self.leer_archivo(entradas[i], salida => cargar_vistas( + typeof salida == "object" && salida instanceof Array ? salida : [salida], + sobreescribir, + terminar, + 0 + )); + else{ + + if(/^(\[(.|[\r|\n])*\]|\{(.|[\n\n])*\})$/.test(entradas[i])){ + try{ + json = JSON.parse(entradas[i]); + }catch(excepcion){}; + if(json){ + cargar_vistas(json, sobreescribir, terminar, 0); + return; + }; + }; + + while(entradas[i].length){ + + const matches = entradas[i].match(/<\!\-{2} *\[{2}([^\[\]]+)\]{2} *\-{2}>/); + + if(!matches) + break; + + const l = (entradas[i] = entradas[i].substring(matches.index + matches[0].length)).indexOf(matches[0]); + + if(l == -1) + continue; + + if(sobreescribir || vistas[matches[1]] === undefined) + vistas[matches[1]] = entradas[i].substring(0, l); + entradas[i] = entradas[i].substring(l + matches[0].length); + + }; + + terminar(); + + }; + + }else + terminar(); + + }; + + this.cargar_vistas = (entradas, sobreescribir, callback) => cargar_vistas( + typeof entradas == "object" && entradas instanceof Array ? entradas : [entradas], + typeof sobreescribir == "boolean" ? sobreescribir : sobreescribir_vistas, + callback, + 0 + ); + + this.hash = () => { + + let hash; + const l = hash_alfabeto.length; + + do{ + hash = ""; + while((hash += hash_alfabeto[Math.random() * l >> 0]).length < hash_longitud); + }while( + hashes.includes(hash) || + /^[0-9]/.test(hash) || + document.querySelector("#" + hash + ",." + hash + ",[name=" + hash + "]") + ); + hashes.push(hash); + + return hash; + }; + + const ejecutar_hilos_de_proceso = () => hilos_de_proceso.forEach(hilo => hilo && hilo()); + + this.anadir_hilo_de_proceso = metodo => { + if(typeof metodo != "function") + return null; + + let i = 0; + const l = hilos_de_proceso.length; + + for(; i < l; i ++) + if(!hilos_de_proceso[i]) + break; + + hilos_de_proceso[i] = metodo; + + return i; + }; + + this.eliminar_hilo_de_proceso = i => !isNaN(i) && hilos_de_proceso[i] && (hilos_de_proceso[i] = null); + + this.precargar = (selector, callback) => { + + const terminar = elemento => typeof callback == "function" && callback(elemento); + + if(!selector) + terminar(null); + else if(selector.nodeName || selector.tagName) + terminar(selector); + else if(typeof selector == "string" && (selector = selector.trim())){ + + let elemento; + + try{ + if(elemento = si_mismo.querySelector(selector)){ + terminar(elemento); + return; + }; + }catch(excepcion){ + terminar(null); + return; + }; + + const fecha = Date.now(), + precarga = self.anadir_hilo_de_proceso(() => { + if(elemento = si_mismo.querySelector(selector)){ + self.eliminar_hilo_de_proceso(precarga); + terminar(elemento); + }else if(Date.now() - fecha > precarga_timeout){ + self.eliminar_hilo_de_proceso(precarga); + terminar(null); + }; + }); + + }else + terminar(null); + + }; + + this.establecer_vista = (posicion, vista, entradas, callback) => self.precargar(posicion, posicion => { + + const precarga_hash = self.hash(); + + posicion.innerHTML = self.string_variables( + (vistas[vista] || vista) + '
', + entradas + ); + + self.precargar("div[data-precarga=" + precarga_hash + "]", elemento => { + elemento.remove(); + typeof callback == "function" && callback(); + }); + + }); + + this.crear_elementos_de_menu = (vista, opciones) => opciones.map(opcion => self.string_variables(vistas[vista], { + ...opcion, + nombre_texto : self.i18n(opcion.nombre, opcion) + })).join(""); + + const base_hilo_metodo = () => { + + if(base_cache.x != si_mismo.offsetWidth || base_cache.y != si_mismo.offsetHeight){ + + const minimo = Number(si_mismo.getAttribute("data-celdas-minimo")); + let tamano; + + base_cache.x = si_mismo.offsetWidth; + base_cache.y = si_mismo.offsetHeight; + + tamano = base_cache[base_cache.x < base_cache.y ? "x" : "y"] / Number(si_mismo.getAttribute("data-celdas")); + + si_mismo.style.fontSize = (tamano < minimo ? minimo : tamano) + "px"; + + }; + + }; + + this.construir_base = callback => { + + const terminar = () => typeof callback == "function" && callback(); + + if(construido){ + terminar(); + return; + }; + construido = true; + + self.establecer_vista(self.configuracion("posicion_html"), vistas.base, { + clases : "", + link_local : "#", + logo : self.configuracion("logo"), + hash : hash_self = self.hash_self = self.hash(), + menu_principal : self.crear_elementos_de_menu("elemento_menu_principal", self.configuracion("menu_principal")), + menu_links : self.crear_elementos_de_menu("elemento_menu_links", self.configuracion("menu_links")), + parametros_raiz : { + aplicacion : self.configuracion("aplicacion"), + link : self.configuracion("link"), + git : self.configuracion("git"), + organizacion : self.configuracion("organizacion"), + celdas : self.configuracion("celdas"), + celdas_minimo : self.configuracion("tamano_minimo_celda") + } + }, () => { + + si_mismo = self.si_mismo = document.querySelector("#" + hash_self); + + base_hilo = self.anadir_hilo_de_proceso(base_hilo_metodo); + + terminar(); + + }); + + }; + constructor(); }; \ No newline at end of file diff --git a/Public/favicon.ico b/Public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a511fa0ad21ae7154cfd54f4901d3a7f11126140 GIT binary patch literal 4286 zcmchaOGu+v6vyvpbRsDDh!lmP5sJ`d>BePT_$-u8aU%#axUjg;h0wL3E-LM8IxX5& zt)kFP!9l165seyOi&0U85s_F|KB#H6HA>9w`GxO>t7hs%)GNmv&g1^iIrrShr<5aq z<>iY1>X$;L-cw3_C?q0PC4~GwhvPWv^768Detv#!X=y2(NF;p79%Hn$v?Q^^;qYp8 zb+v{T7Z>LwhT?~gf%yfeRIpd->gqJP%UG+et%ZNk7|0v!xw$!mox~GanaEZjG6u8W z7WS;Ex2q$Dm4}GITJI})dpsVcwRVJ*Yjf{0WMyTgdd*$$RNjL7WM^mRrO>ZT;NT)TAMJWTsZ8AKVx+-kW9~_858Fxd@K4ySw{M zb91vE931=;f=7nV^aH;1gYEk+b#VRJW2@wC`^)_5JMT@mf9(Bz1)IDg zk;vD9KtP8=Ay>Db>`X;Ph2GoS`+*$6wFwzIY_P@0`15wi+TY(F>+0%C#N+X%CI&84T$Hs?ud#p_IUE|)A ze8acl<8yv~{+YzDhlYm!k#+8*KDC9YgZ`VUCTBjUS7OiuAz1z~3_0$FjzMiQknNkfFl{TYT`Pwzr)>CI)wn?DthN zhO@J?&)eGC5|x#eTJGEL_xJZZrQa`eb8|HWj|?3)*y1DD#U~RJ6K}Zhy_EiFwFJTi1*^XwXS#_x}GF<9@f zr*h{%m-F+t(b3U$2p*Z#`~%Z#_PfE%cbDHZJ(;{4rMG!|X1V0Jz4jn)VAGT2X4N72 zy>r{ya+jRb`MBqZeLg(e_lJqcoKezWrVheB&i9vz!Rm)c|Nb;Fn0~mA?{6IsXdUxw z9WBs0;?+9TqxDxIt+UH@BDb(RUYHw*eU$HyK7UdWiFm!CX-`kjv?t^ZI+22)6NTV= olnRA{PERE0c%w=c#FX;Kl?up1rCTlvt%I^%m>UeRz!dEN0QeKo&Hw-a literal 0 HcmV?d00001 diff --git a/Public/html/vistas.html b/Public/html/vistas.html new file mode 100644 index 0000000..1f58ddd --- /dev/null +++ b/Public/html/vistas.html @@ -0,0 +1,67 @@ + + + + Mapeate - Vistas + + + + + + +
+
+

+ + + {{mapeate}} + +

+ + +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/Public/images/Mapeate-128.png b/Public/images/Mapeate-128.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf0c8f04db2525878731b8f2c76d13e3be614f3 GIT binary patch literal 8541 zcmWkzWmptl7@dU$mQHDq77(OUKv+6OKvL;0=?0e&kVZ-AM(LE47LY~|=@sc(LVAI3 zz8|wQd*{yc+<5PK&pGdVZ7pR&JX$;e00>o86m-Bl;{OYV4gU7YSd0JwB*H;nURzaO zp2^MQjje;T4FGT^2PaFb^vTi>nCYr3ej%ddUP~&FG$MK6KEq8>055-F?9Jc$5C4-e z8`qPBFsGiL#DOp2u?^Kk)nQDRkhOhe@iq(lT@6=b^f9vKA?i^2a0LSI92Kr`qM!6y z)L>t;JA5B;ux~@=|IjXWcFr+6F`$G3w8H ze~sJ(zg;)oJGt&GZ9h<&40%}-Q@9#<(HS@)eUZI-mE(!)-$Ml80X3NAvpZh)E-qMz zH-G{O>KG2|-UAqE39y|P8gXf8Xf$Bs5ZLMY-mz4==x(z>uPOKsmvGZs5&VIMJTV?gw z*(oSM>l+#@1Tz6-*c^vn2=+4w;+Hx95RuGNR#w*J%*|ll)q7QCnB{!eh+fvmSc%87@*9d;@HcxIkP|!IlGHfLhSHj?!>sb{y%+D^FVHT{XV2)AWn%Zi%DFZ zI*N#4Esu2L;A&jpvIcW<=<`u|Ip_NN`VsKFCC4tl=@C?|gbat6(R$*#eU5*hKHSWP zpPG$OrbK5LCy*X~QBIOV7q4WLg^(xcI>t`QT}CEu6a}n>>Qu~%d#p#Rf2Tu;0a9ru zI(poxzcc=^L^AAeB?8)Z!nEwSXt{9gXBA9@)jLkM$+gPNv^^i$;`}*Ci9$fBKHf~9E6ll?Rfoe^R8IG4nlTA zWHO38V!yisyBLw{WF`0}{QyKlD#4-Ri2aFP(_kB^sLVf%b6}U@t$L^!NAK{mU zg@tbWzXdkaax7qZQEB;pKq_`PYImm6UZx7W~EFkHPX; z&ydPqOkEsDc0rK$oUZo|0S*9TojBC=^kKlnJ;bjs!MqbIUw`~53?IL5&g|_NLEmW( z=_75g(#+>D8ZFo`cBR)u<#dNk&~0l|Ee*29&#LOmUOt>PDKK@<)Xl=+LpkC zG1rj5)5zf~&JGScE0dG?lY3|D<2g^)zsJ)-f!3faK?fHX_6U;cB4uJh+fnL5ZO)-u zi#`=+XP%wKuY5amH4g*M_Z>JQUNJ>Db3{;ZQN$R(2rR;7HVWvJ30iD+u|C_Kby<<% z;fZrz{g$KgN%;Nc)m08_L{PpqC!=3kTNMxo%}*|JRaQ_y{;so<>MbK1`@RBfVq8+n z7EReJgoMa^`0#<>dsiWZH>9+*_glTL3gA>lQ8=`mUu z9SzGh(nD^LtI)kXBNFrPhU~3@E3nM zP3|#IirZCGR2&xcw^yj0w5&s3pY8eG-(D=sYi}711nE+sL?4gj zO|M|=HqvSTvj)+hb|zYMDVWeGCP~z_Mts6`k*};jAEy` z>ePsMVtVmzq1ZxGg{FHIqIFz+d~)S87KJcfeKRw@_x-~;Q&Uqa8XEm;1F^|DIq~3X z6t%Qa4-5>52VV<=U|i>SY{|yK!6GTS@Mo*qtc&sN>d{?f?;-T;>C>#|b3|0QTAx8!+#JgyrKbLU2(W|SgINKbaQT-na4RcTzz`w~X;Gfw z0DgV{uB7+!WkGp4%*eXuton6Syp4Ou~@z{G5(-TOvZ}5qSVn@%^HD z&1Vv5!LYrsCAeSI&q9LQ52{SQCOCxM07`1O9Vy>+xKleckI(@)Gxk5X&jM7Po^fzs zzr9&pz4ViLc6tkWRaH}?tfNDA{cp$0mw$6KGyKB`vQpE>0Gh1Z9FV5>n_&F6V1`l7 zpQ*vg#nqE7;kn;DU-tYV8#}uIa|>Q~9yuBcByMCV_Vo0qJb!LyT!U=2q?{t69`HCT zMx#Nz7SQg!xmpG)8w`1dMn@wO6BCz14I69;J%4%u-;zGP0D>S;jOYS8Ccy0dUhj^O zmvI%P)33_9#pc9BVnHFHOy61}S+PT-8i-&1&mA_AP!RKlVp;O2Ahjmh%;4Ee+|412 zdJZAL($>}2j})-_KIHSQtLvE$YK1Vo2LNU%%KzYW<8%YSB7`2t?VT}-_WHv8dJzC* zSRmPBzfP9hefw5d&CaF2$I*n>*9!vW5Pm&jQqzV(QA*8->O^wwSp%oUVNVdhORvXc z>>eMW|7~vCj^;`)9`1ucZX15DP2XK0azuW=$i9mIyp|78Vo3l$GR*c$FuWa*Cin8km}AZQBKDMY(m>4| z!%chqvE^Rri&iIYzrQ)RQEuEDP*GA^9wB?`89H4SMLAT=qJN=RF(=d0)2*fo6}MM9 z+xw7O7l+Gr_ERh=>FGi}*PSZ-U0^tV7@>U%=Ki?eUbt-{!PlP#^`CdRQ}IB~V7WTi zDgrSGZHT;@&=JbBI?4VzxPn#t!&-1&@kS}07Asx}6JRg&LK#4W9h;0n+#a@R@trPK z9WAmip0FN~<3y0fD}}!(Qkqx9-9c8>pXON2>u}B5vFw_dmWdF2UU9c?rjF zJs=421-85;86t@oxEFi=XCoT9{!5+DAVn>0WMMa%{r$_xE?jN3U;e^nibWG|vM9z^$pE0OGkdp4urUCYJtU48C}^ zDFASTpabR^HmSH2T2fLcXY^y43KuyA zo{57mwssTX8vFs1DsU8y@&nYX^ed9m(l`Q9Ac@RO3mEHRZ&WM$sp>&sL{azC56A2F zOGA3aqaPCn5|>NQvNSk`*YV-7>kCw3;KiXp#$5VdcjBn6kdBVd662kws%q%GGd3bo z+@zaIcAzuxVzTS)+u<9TyGtt$^jjYc@yA~cj>6;#PV;EAx`q7LKZuI|WuKe!;srtg zt=X9wbMUybvB|9j{h;gsMEo4K|a&IGh#D36P_`l&F|>6mVSS8@}u%*nu5IBj!qf$~ImPB!}M~QF@Y=NELuGfL_uonkI79 zD?<~>_Hocbica<+fc4STkF9I-Ky-f$L#J9jt%NTKg; zP&Qckg@s|E62aNR)p>ey$s>xRLqpr*wxnk9>IuVr+-_~g&NK*G*`2X0F;Y6Z$MXg3 z?CgMBj?ukv#LdNzA8P%BgMk{r+TXt~jEsgQ+i|uCU-5BqB~$$V{o8P;5a zC)!r(2(^;6OvPN*)FU~9)-~1aERXNAR0V&G#xjNM*l;X*BXD^Ze3Gv=fE1uHozE;1 zUT~BFa8lsC`W8e3G>(=QwDb*tP^po@FL&}y$Zni}#XK%HSTMncedIx>PgCLN#G>OM z_)uMGY3bz5j9$IR#t+fC@>$1vi$3g=l|WS8e)=jWMNABluzDB}G4tye8IU`Jh-fB- z!*F-Y6LmQ$sBoEuFfcF}Zx4ODSciv)T|(X-At6R>UR)BO%n-=bctZl$VR(S?5T}|( z4klsAPmR%axrSfwcf2P0jEGh^I_U0d%X*>Fp?_imCCq?UX4p@;#0x{}8X9gNN8;h* zzh{EUM3Af!-F<%xQbuejbms04@mnTPPC1+w=~uAhQ}Qr@*}J%@$(x0F-AS21KF`PY zP6e)#+hY#9->s+_s<#<&w!Lff-czx(WH~-PZC8P1J|3U-{KHQQ|1|3;LL=c(+#poK zYFnf`mq;)10h~V^=1{u2>DaE#Nr4rSR7U?O8TPG9f3+$K5)QikMbcgKlre0+%x zVKocn7=g4%5x7c1k2!VHhYxT{UgMcfwhN^wI$-85*Tu zVayKa{L~L6!V^h6e%K3hgIKFBbG=<8+NG?hm<&eRN8c6ysH!VZ3cPpUHG^$AA~L`! zD+OE}y1b$EVa;J}H4k+K&S9`9D1t+b-r3O+Z>h$~*4>4gL= z1oqC>-zq3Sv>XGN6b26Aq*TAQIPJt+Z*@4 zemGP)k?(cex;v!BYljSwvdt$#I3$SBTnK~#P{^nuI@Gc!%dX$)Xv93 z6EGMeH=vQ5Q2za_EG>vB{!x4V%v<)Yv<2mSg~zxeY2Sjv**dqWqO$Ve?Wv-Dc`ctA zQAglAraibP>0?jN_U4GczFDI6yb#`${jc026n=N34z1JPTw9eHTd?O0dd^^wE z>eubmInF^iXY(d;8LS4MBSvJe>wdIKuY8Lh_8iw$q_&ZS%QeCQbt5xq(z0gdJ9&B5YVRZmY(G5C^0%09SNa%gDPfSQ?W3lbjSOo!GQ`6Ga1k(+wj0YOGa)}Oww$c#e zj?n4ED=xrOODjRzQiTw~oT3&|-`xC*)u+4CsKM}hUUlIY2_WL3kOZnIfFJYH0p~nj zUCF%63v&nO4Espl!GX)t(vr=NMtY@mwXU$F1gpZJ#-|;qH0}K4y@a>$YY|{;($&x) z_^I^_*j^45TJ;yJ6~d4!yigO(8taXD@R)7yV(Q{5hQ{Wg#JM%VgUfz&8~vrJ>193R zAMmZYXciVQ%ph_31R|G1ibpxf0nC_v3o_Cv0h3}KhNc|A0?ce~ZMCP;6l-%P<>e6r zO^xwPfDNdtqNAg0TXX9pcdrUxFz!FRknJfXn)~6>LrX*R9-PiMJfG;OXZ*14gXw9V zay{;>i{bHcTU-{Djw|vOG{f3wNeIB@gCT<#zPIaFyc`-IPs?W0yIsX5S?>w4aM(#mG5fIG8&~pjiU~rl2}lTU&Epu>uu4 zFbU^9y#qo(<&hr8CK;%eEuK7!dl@Qo;{x!4M69V*^vRQi)|d+b>Q~N}>umL?SVn>BQaWL~>6kv}ETl^*?)GgcHk{k92F%s@+wX)(m#|pXM3^pbj4V z@(!IU6KJQaOD=PX#8eH0%0AAkTi?vQ$6geBQN2W;t`yS4I}d-A`LzvH#Hy)aTD_{A zZOD}+fIu-@bd8N;K-X_EB8p4x0x>>4AI4;Oaja z#~>3VE(B^1*!kqAH@=IK)yQ>+uYvXqsnnKbw}-$vZM;&@<)5ezA(HVkRRu=vb9=kH z;3#)@cMT~&@F7HO8;r>8E|2<%GmpQ{nF_$Dx|XfpGgn`(Gink#mEC?0W6BT`5^_PK zTUx|T@%w?xs#(VepoBa)L4s?V)tb>&G7RUd-M|}0*oVZ*ImRg|`URCwIX47Ef z>LtT`xk9?eE$dXqd3-`nh93o0-Kzk;bhNa!ZhzpaVKBvqo)BnT4|4C*I~I1m3=_2h z$={ny!1daiWfp~?nVH%DPQRrRHXh|c+XF5xE_(+D(sBzCXt!c3cS&7cU5oo)>_t)0KU`@)wgUTLQ{62cHgV(!UYNCt zB+%jAWyhvZgCozUjZ9y@c+mszO#S!vktPQ@=)<|xJHV>6v_u9d4H|;YGI*`}A#4U> z@g9Xa{D9b5fOIi+znq+0LH zPtL=>*DIpqMzO{u5!hh#4}W~L*!VFisT)H|(%48(RV@A$RMr55oQMc$)(yw=T!Jcn zd^r+YAkO=E*>u$9Z+~>bV>)HY`Eg4?)1byQm1jvD^l3H^Q>U858D)*Uy_?p@t;snw zx@Rj4=CQS7UuOe+hu@P66Wsjw3?D7*K+K~+$S4;5^zZn%2i(M~*Igo@YX|y3DIKCh zLLc2Re8lTd%i}7xmL>JS$Y(E0EvN<|E16($W8+V3PyJ@UytKEsmz9?fw+=9nl?6bD zn+a`ymg7CJdg02*yDISH%|ny|oue&BGN6LORhSrMwZv+|I?p z#S0>O8_L#xm$I?DO4Od{9O?ABmuSj;8YSc} z`I$tjevoHvvi9@|UJobm>H0cARZK6)b*UwpIhfX%Z85c5>m7YB6+QiE&6S}|MVeCH{Q{Nr!nhS9t})M^RpEenxb;cDwM9l7e-uf+_{Lb8M9SMaTlB&I@H=L2{} z0u{KP`-9^$1c_(MX__2{8Wnp1~Ci6LOh59e?z=|@k zc++Et&h9wdimq5;-(rurc%@YtoK|qw$vSA zHf1>x`ef-DCE{0Z&!9hlStoYhDMNO59Cx5Bp4|&&FJ$|`Vnrn-4b5wuWo3Fg8T{T+%#$&;S-oQqMika`8Ey zKN`Sw+!u&#=?HJg<c`9_}|ayQ1DtyN+pta^zvc=Xl&;6;E6b z`KhLj*C6l$1UspZgYBEXWXyg#of-*2^NbBcsvHwnRJp@HRo@{CUZr~KOJx!vRU@fA zW?LM=x&>PY9VuxKYY4d;)U6-^T) z=H7;Tu*wdoDrzZI!_C9~1AxjR Ax&QzG literal 0 HcmV?d00001 diff --git a/Public/images/Mapeate-192.png b/Public/images/Mapeate-192.png new file mode 100644 index 0000000000000000000000000000000000000000..29d96b68b5f7976ea42031ce25421eec9ad3e47f GIT binary patch literal 14695 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 literal 0 HcmV?d00001 diff --git a/Public/images/Mapeate.png b/Public/images/Mapeate.png new file mode 100644 index 0000000000000000000000000000000000000000..11534d7b0fe9e379cc61943ab2851a7cfa6fa964 GIT binary patch literal 7289 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 + font-size : .77em; + vertical-align : top; + } + [data-i18n]{display : none;} + } + [data-icon]::before{ + margin : 0em; + // font-size : .7em; + } + } + + .licencias{ + display : block; + width : 100%; + margin : .1em 0em; + font-size : .85em; + font-weight : 900; + text-align : center; + img{ + width : auto; + height : 1em; + } + } + +} \ No newline at end of file diff --git a/Public/scss/Mapeate.configuracion.scss b/Public/scss/Mapeate.configuracion.scss new file mode 100644 index 0000000..18e60aa --- /dev/null +++ b/Public/scss/Mapeate.configuracion.scss @@ -0,0 +1,20 @@ +// Colores. +$color-primario : #D50F0A; +$color-secundario : #0A0FD5; +$color-delante : #222; +$color-detras : #EFEFEF; +$color-gris : mix($color-delante, $color-detras, 50%); + +// Tamaños. +$tamano-cabecera : 4em; +$tamano-pie : 1em; + +// Fuentes. +$fuente-principal : "Roboto"; +$fuente-monoespaciada : "Roboto Mono"; +$fuente-iconificada : "FA5FS"; + +// Transiciones. +$transicion-entrada : .2s; +$transicion-salida : 1s; +$transicion : .5s; \ No newline at end of file diff --git a/Public/scss/Mapeate.css b/Public/scss/Mapeate.css new file mode 100644 index 0000000..5d4d37f --- /dev/null +++ b/Public/scss/Mapeate.css @@ -0,0 +1,109 @@ +.mapeate { + position: relative; + top: 0em; + left: 0em; + width: 100%; + height: 100%; + color: #222; + background-color: #EFEFEF; + overflow: hidden; } + .mapeate, .mapeate h1, .mapeate h2, .mapeate h3, .mapeate h4, .mapeate h5, .mapeate h6 { + font-size: 1em; } + .mapeate, .mapeate input, .mapeate textarea, .mapeate button { + font-family: "Roboto"; } + .mapeate [data-visible=false] { + display: none !important; } + .mapeate a[href] { + text-decoration: none; } + .mapeate a[href], .mapeate [onclick], .mapeate button, .mapeate [type=button], .mapeate [type=reset], .mapeate [type=submit] { + color: #D50F0A; + cursor: pointer; + transition-property: color; + transition-duration: 1s; } + .mapeate a[href]:hover, .mapeate [onclick]:hover, .mapeate button:hover, .mapeate [type=button]:hover, .mapeate [type=reset]:hover, .mapeate [type=submit]:hover { + color: #0A0FD5; + transition-duration: 0.2s; } + .mapeate [data-icon]::before { + margin: 0em .4em; + font-family: "FA5FS"; + font-size: 1em; + vertical-align: middle; } + .mapeate nav ul { + margin: 0em; + padding: 0em; + list-style-type: none; } + .mapeate header, .mapeate main, .mapeate footer { + position: absolute; + left: 0em; + width: 100%; } + .mapeate header { + top: 0em; + height: 4em; + z-index: 20; } + .mapeate main { + top: 4em; + bottom: 1em; + overflow: auto; + z-index: 10; } + .mapeate footer { + bottom: 0em; + height: 1em; + z-index: 30; } + .mapeate h1 { + position: absolute; + top: 0em; + left: 0em; + margin: 0.08em 0.1em; + font-size: 3.2em; } + .mapeate h1 span { + vertical-align: middle; } + .mapeate h1 img { + width: auto; + height: 1em; } + .mapeate h1 img + span { + display: none; } + .mapeate h1 span + span { + font-size: .85em; } + .mapeate .menu-principal { + position: absolute; + left: 50%; + bottom: 0em; + width: 30em; + margin-left: -15em; + text-align: center; } + .mapeate .menu-principal li { + display: inline-block; + margin: 0em 1em; } + .mapeate .menu-links { + position: absolute; + top: 0em; + right: 0em; + margin: .1em; } + .mapeate .menu-links li { + display: inline-block; + width: 1em; + height: 1em; + margin: 0em .2em; + font-size: 2em; + text-align: center; + background-color: #222; + border-radius: .5em; } + .mapeate .menu-links li > a { + font-size: .77em; + vertical-align: top; } + .mapeate .menu-links li [data-i18n] { + display: none; } + .mapeate .menu-links [data-icon]::before { + margin: 0em; } + .mapeate .licencias { + display: block; + width: 100%; + margin: .1em 0em; + font-size: .85em; + font-weight: 900; + text-align: center; } + .mapeate .licencias img { + width: auto; + height: 1em; } + +/*# sourceMappingURL=Mapeate.css.map */ diff --git a/Public/scss/Mapeate.css.map b/Public/scss/Mapeate.css.map new file mode 100644 index 0000000..521b7ce --- /dev/null +++ b/Public/scss/Mapeate.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,QAAQ;EAEJ,QAAQ,EAAG,QAAQ;EACnB,GAAG,EAAG,GAAG;EACT,IAAI,EAAG,GAAG;EACV,KAAK,EAAG,IAAI;EACZ,MAAM,EAAG,IAAI;EACb,KAAK,ECJQ,IAAI;EDKjB,gBAAgB,ECJJ,OAAO;EDKnB,QAAQ,EAAG,MAAM;EAEjB,sFAAmB;IAAC,SAAS,EAAG,GAAG;EACnC,4DAAuB;IAAC,WAAW,ECAnB,QAAQ;EDExB,6BAAoB;IAAC,OAAO,EAAG,eAAe;EAE9C,gBAAO;IACH,eAAe,EAAG,IAAI;EAG1B,4HAAiE;IAC7D,KAAK,ECpBK,OAAO;IDqBjB,MAAM,EAAG,OAAO;IAChB,mBAAmB,EAAG,KAAK;IAC3B,mBAAmB,ECNN,EAAE;IDOf,gKAAO;MACH,KAAK,ECxBG,OAAO;MDyBf,mBAAmB,ECVT,IAAG;EDcrB,4BAAmB;IACf,MAAM,EAAG,QAAQ;IACjB,WAAW,ECnBG,OAAO;IDoBrB,SAAS,EAAG,GAAG;IACf,cAAc,EAAG,MAAM;EAG3B,eAAM;IACF,MAAM,EAAG,GAAG;IACZ,OAAO,EAAG,GAAG;IACb,eAAe,EAAG,IAAI;EAG1B,+CAAkB;IACd,QAAQ,EAAG,QAAQ;IACnB,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;EAGhB,eAAM;IACF,GAAG,EAAG,GAAG;IACT,MAAM,EC5CK,GAAG;ID6Cd,OAAO,EAAG,EAAE;EAGhB,aAAI;IACA,GAAG,ECjDQ,GAAG;IDkDd,MAAM,ECjDA,GAAG;IDkDT,QAAQ,EAAG,IAAI;IACf,OAAO,EAAG,EAAE;EAGhB,eAAM;IACF,MAAM,EAAG,GAAG;IACZ,MAAM,ECxDA,GAAG;IDyDT,OAAO,EAAG,EAAE;EAGhB,WAAE;IACE,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,IAAI,EAAG,GAAG;IACV,MAAM,EAAG,YAA6B;IACtC,SAAS,EAAG,KAAqB;IACjC,gBAAI;MAAC,cAAc,EAAG,MAAM;IAC5B,eAAG;MACC,KAAK,EAAG,IAAI;MACZ,MAAM,EAAG,GAAG;MACZ,sBAAM;QAAC,OAAO,EAAG,IAAI;IAEzB,uBAAS;MAAC,SAAS,EAAG,KAAK;EAG/B,wBAAe;IACX,QAAQ,EAAG,QAAQ;IACnB,IAAI,EAAG,GAAG;IACV,MAAM,EAAG,GAAG;IACZ,KAAK,EAAG,IAAI;IACZ,WAAW,EAAG,KAAK;IACnB,UAAU,EAAG,MAAM;IACnB,2BAAE;MACE,OAAO,EAAG,YAAY;MACtB,MAAM,EAAG,OAAO;EAIxB,oBAAW;IACP,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,IAAI;IACb,uBAAE;MACE,OAAO,EAAG,YAAY;MACtB,KAAK,EAAG,GAAG;MACX,MAAM,EAAG,GAAG;MACZ,MAAM,EAAG,QAAQ;MACjB,SAAS,EAAG,GAAG;MACf,UAAU,EAAG,MAAM;MACnB,gBAAgB,EC1GX,IAAI;MD2GT,aAAa,EAAG,IAAI;MACpB,2BAAG;QACC,SAAS,EAAG,KAAK;QACjB,cAAc,EAAG,GAAG;MAExB,mCAAW;QAAC,OAAO,EAAG,IAAI;IAE9B,wCAAmB;MACf,MAAM,EAAG,GAAG;EAKpB,mBAAU;IACN,OAAO,EAAG,KAAK;IACf,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,QAAQ;IACjB,SAAS,EAAG,KAAK;IACjB,WAAW,EAAG,GAAG;IACjB,UAAU,EAAG,MAAM;IACnB,uBAAG;MACC,KAAK,EAAG,IAAI;MACZ,MAAM,EAAG,GAAG", +"sources": ["Mapeate.base.scss","Mapeate.configuracion.scss"], +"names": [], +"file": "Mapeate.css" +} diff --git a/Public/scss/Mapeate.scss b/Public/scss/Mapeate.scss new file mode 100644 index 0000000..78031b3 --- /dev/null +++ b/Public/scss/Mapeate.scss @@ -0,0 +1 @@ +@import "Mapeate.configuracion.scss", "Mapeate.base.scss"; \ No newline at end of file diff --git a/Tools/sass.sh b/Tools/sass.sh new file mode 100755 index 0000000..744c481 --- /dev/null +++ b/Tools/sass.sh @@ -0,0 +1,3 @@ +#!/bin/bash +directory=`dirname $(readlink -f "$0")` +sass $directory/../Public/scss/Mapeate.scss $directory/../Public/scss/Mapeate.css \ No newline at end of file