diff --git a/.gitignore b/.gitignore
index 28a890c..4366c4b 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,13 @@
Data
TMP
-PHP/WMarkDown.Secrets.php
Public/data
Public/es
Public/index.html
Public/dev
JSON/html.files.json
-WMarkDown.apache2.conf
-
+*.apache2.conf
+.sass-cache
+__pycache__
+*[Ss]ecrets?*
+/Python/Abstracts/AnPMap.py
+/Python/Abstracts/Applications.py
\ No newline at end of file
diff --git a/ArtBook/WMarkDown.logo.svg b/ArtBook/WMarkDown.logo.svg
new file mode 100644
index 0000000..b550878
--- /dev/null
+++ b/ArtBook/WMarkDown.logo.svg
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ArtBook/WMarkDown.logo.xcf b/ArtBook/WMarkDown.logo.xcf
new file mode 100644
index 0000000..3fb544f
Binary files /dev/null and b/ArtBook/WMarkDown.logo.xcf differ
diff --git a/HTML/WMarkDown.base.html b/HTML/WMarkDown.base.html
new file mode 100644
index 0000000..607b68f
--- /dev/null
+++ b/HTML/WMarkDown.base.html
@@ -0,0 +1,127 @@
+
+
+
+ {title_text}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {contents}
+
+
+
\ No newline at end of file
diff --git a/HTML/WMarkDown.web.base.html b/HTML/WMarkDown.web.base.html
new file mode 100644
index 0000000..9a2a1fc
--- /dev/null
+++ b/HTML/WMarkDown.web.base.html
@@ -0,0 +1,83 @@
+
+
+
+ {title_text}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {contents}
+
+
+
\ No newline at end of file
diff --git a/JSON/I18N/Python/WMarkDown.py.i18n.espanol.json b/JSON/I18N/Python/WMarkDown.py.i18n.espanol.json
new file mode 100644
index 0000000..817731b
--- /dev/null
+++ b/JSON/I18N/Python/WMarkDown.py.i18n.espanol.json
@@ -0,0 +1,6 @@
+{
+ "espanol" : {
+ "wmarkdown" : "WMarkDown",
+ "wmd" : "WMarkDown"
+ }
+}
\ No newline at end of file
diff --git a/JSON/WMarkDown.py.routes.json b/JSON/WMarkDown.py.routes.json
new file mode 100644
index 0000000..25ccf1a
--- /dev/null
+++ b/JSON/WMarkDown.py.routes.json
@@ -0,0 +1,3 @@
+[
+ "get:/ /WMarkDown/Public"
+]
\ No newline at end of file
diff --git a/JSON/WMarkDown.py.settings.json b/JSON/WMarkDown.py.settings.json
new file mode 100644
index 0000000..1f875bf
--- /dev/null
+++ b/JSON/WMarkDown.py.settings.json
@@ -0,0 +1,49 @@
+{
+ "wmarkdown_host_name" : "/^(https?\\:\\/{2})?wm(arkdown|d)\\.(k3y\\.pw|(anprm\\.)?local|anprm)/",
+ "wmarkdown_default_settings_files" : [
+ "/JSON/WMarkDown.py.settings.json"
+ ],
+ "wmarkdown_default_secrets_files" : [
+ "/JSON/WMarkDown.py.settings.secrets.json"
+ ],
+ "wmarkdown_default_i18n_files" : [
+ "/JSON/I18N/Python/WMarkDown.py.i18n.espanol.json"
+ ],
+ "wmarkdown_default_routes_files" : [
+ "/JSON/WMarkDown.py.routes.json",
+ "/JSON/WMarkDown.py.routes.secrets.json"
+ ],
+ "wmarkdown_resources" : {
+ "charset" : "utf-8",
+ "logo" : "/images/WMarkDown.png",
+ "link" : "https://wmarkdown.k3y.pw/",
+ "git" : "https://git.k3y.pw/Whalers/WMarkDown",
+ "project" : "WMarkDown",
+ "web" : "https://wmarkdown.k3y.pw",
+ "authors" : ["Tarsier", "KyMAN"],
+ "class" : "wmarkdown-web",
+ "snake" : "wmarkdown",
+ "metas" : {},
+ "styles" : ["/scss/WMarkDown.web.scss"],
+ "menu" : [
+ ["web", "_self", "/"],
+ ["git", "_blank", "https://git.k3y.pw/Whalers/WMarkDown"]
+ ],
+ "licenses" : [
+ ["copyright", null, null, {
+ "year" : "2019-2025",
+ "entity" : "Tarsier & KyMAN"
+ }],
+ ["cc_by_nc_sa_4"]
+ ],
+ "dictionary" : "https://wmarkdown.{domain}/json/WMarkDown.dict.es.kyman.json"
+ },
+ "__COMMENTS__" : {
+ "wmarkdown_default_views_files" : [],
+ "wmarkdown_charset" : "utf-8",
+ "wmarkdown_logo" : "/images/WMarkDown.png",
+ "wmarkdown_link" : "https://wmarkdown.k3y.pw/",
+ "wmarkdown_git" : "https://git.k3y.pw/Whalers/WMarkDown",
+ "wmarkdown_base_html" : "/HTML/WMarkDown.base.html"
+ }
+}
\ No newline at end of file
diff --git a/Public/.htaccess b/Public/.htaccess
deleted file mode 100755
index 81d9bac..0000000
--- a/Public/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-Header set Access-Control-Allow-Origin "*"
diff --git a/Public/css/WMarkDown.icons.FontAwesome.css b/Public/css/WMarkDown.icons.FontAwesome.css
new file mode 100644
index 0000000..2850493
--- /dev/null
+++ b/Public/css/WMarkDown.icons.FontAwesome.css
@@ -0,0 +1,25 @@
+.wmd-icon.checkbox>input+span::before{content : "\f0c8"; font-family : "FA6FR";}
+.wmd-icon.checkbox>input:disabled+span::before{content : "\f0c8"; font-family : "FA6FS"; opacity : .5;}
+.wmd-icon.checkbox>input:checked+span::before{content : "\f14a"; font-family : "FA6FR";}
+.wmd-icon.radio-button>input+span::before{content : "\f111"; font-family : "FA6FR";}
+.wmd-icon.radio-button>input:disabled+span::before{content : "\f111"; font-family : "FA6FS"; opacity : .5;}
+.wmd-icon.radio-button>input:checked+span::before{content : "\f192"; font-family : "FA6FR";}
+.wmd-icon.tick>input+span::before{content : "\f00d"; font-family : "FA6FS";}
+.wmd-icon.tick>input:disabled+span::before{content : "\f560"; font-family : "FA6FS";}
+.wmd-icon.tick>input:checked+span::before{content : "\f00c"; font-family : "FA6FS";}
+.wmarkdown [data-icon=warning]::before,.wmarkdown [data-icon=warn]::before{content : "\f071"; font-family : "FA6FS";}
+.wmarkdown [data-icon=ask]::before,.wmarkdown [data-icon=question]::before{content : "\f059"; font-family : "FA6FS";}
+.wmarkdown [data-icon=answer]::before{content : "\f138"; font-family : "FA6FS";}
+.wmarkdown [data-icon=comment]::before{content : "\f075"; font-family : "FA6FR";}
+.wmarkdown [data-icon=note]::before{content : "\f249"; font-family : "FA6FR";}
+.wmarkdown [data-icon=characters]::before{content : "\f031"; font-family : "FA6FS";}
+.wmarkdown [data-icon=lines]::before{content : "\f039"; font-family : "FA6FS";}
+.wmd-code-block [data-icon=type]::before{content : "\f15b"; font-family : "FA6FR";}
+.wmd-code-block[data-type=html] [data-icon]::before{content : "\f1c9"; font-family : "FA6FR";}
+.wmarkdown [data-icon=link]::before{content : "\f0c1"; font-family : "FA6FS";}
+.wmarkdown [data-deployed=true]>[data-icon=deploy]::before,
+.wmd-main-menu [data-deployed=true]>[data-icon=deploy]::before{content : "\f146"; font-family : "FA6FR";}
+.wmarkdown [data-deployed=false]>[data-icon=deploy]::before,
+.wmd-main-menu [data-deployed=false]>[data-icon=deploy]::before{content : "\f0fe"; font-family : "FA6FR";}
+.wmd-main-menu-button [data-icon=menu]::before{content : "\f0c9"; font-family : "FA6FS";}
+.wmarkdown [data-icon=view_switch]::before{content : "\f074"; font-family : "FA6FS";}
\ No newline at end of file
diff --git a/Public/css/WMarkDown.icons.css b/Public/css/WMarkDown.icons.css
old mode 100755
new mode 100644
index b29149e..ed1e721
--- a/Public/css/WMarkDown.icons.css
+++ b/Public/css/WMarkDown.icons.css
@@ -1,35 +1,9 @@
-.wmarkdown [data-icon=show]::before{content : "\f06e"; font-family : "FA5FS";}
-.wmarkdown [data-icon=hide]::before{content : "\f070"; font-family : "FA5FS";}
-.wmarkdown [type=checkbox]+[data-icon=checkbox]::before{content : "\f0c8";}
-.wmarkdown [type=checkbox]:checked+[data-icon=checkbox]::before{content : "\f14a";}
-.wmarkdown [type=checkbox]:disabled+[data-icon=checkbox]::before{content : "\f0c8"; font-family : "FA5FS"; opacity : .5;}
-.wmarkdown [type=radio]+[data-icon=radio]::before{content : "\f111";}
-.wmarkdown [type=radio]:checked+[data-icon=radio]::before{content : "\f192";}
-.wmarkdown [type=radio]:disabled+[data-icon=radio]::before{content : "\f111"; font-family : "FA5FS"; opacity : .5;}
-.wmarkdown [type=checkbox]+[data-icon=tick]::before{content : "\f00d"; font-family : "FA5FS";}
-.wmarkdown [type=checkbox]:checked+[data-icon=tick]::before{content : "\f00c"; font-family : "FA5FS";}
-.wmarkdown [data-icon=language]::before{content : "\f1c9";}
-.wmarkdown [data-icon=characters]::before{content : "\f031"; font-family : "FA5FS";}
-.wmarkdown [data-icon=lines]::before{content : "\f036"; font-family : "FA5FS";}
-.wmarkdown [data-icon=link]::before{content : "\f0c1"; font-family : "FA5FS";}
-.wmarkdown [data-deployed=false]>[data-icon=deploy]::before{content : "\f054"; font-family : "FA5FS";}
-.wmarkdown [data-deployed=true]>[data-icon=deploy]::before{content : "\f078"; font-family : "FA5FS";}
-.wmarkdown [data-levels='0']>[data-icon=deploy]::before{content : " ";}
-.wmarkdown [data-icon=likes]::before{content : "\f164"; font-family : "FA5FS";}
-.wmarkdown [data-icon=dislikes]::before{content : "\f165"; font-family : "FA5FS";}
-.wmarkdown [data-icon=views]::before{content : "\f06e";}
-.wmarkdown [data-icon=comments]::before{content : "\f086";}
-.wmarkdown [data-icon=note]::before{content : "\f27a";}
-.wmarkdown [data-icon=alert]::before{content : "\f0f3";}
-.wmarkdown [data-icon=important]::before{content : "\f0a1"; font-family : "FA5FS";}
-.wmarkdown [data-icon=warning]::before,.wmarkdown [data-icon=warn]::before{content : "\f12a"; font-family : "FA5FS";}
-.wmarkdown [data-icon=danger]::before{content : "\f071"; font-family : "FA5FS";}
-.wmarkdown [data-icon=ask]::before{content : "\f128"; font-family : "FA5FS";}
-.wmarkdown [data-icon=home]::before{content : "\f015"; font-family : "FA5FS";}
-.wmarkdown [data-icon=developt]::before{content : "\f121"; font-family : "FA5FS";}
-.wmarkdown [data-icon=git]::before{content : "\f841"; font-family : "FA5FB";}
-.wmarkdown [data-icon=game]::before{content : "\f11b";font-family : "FA5FS";}
-.wmarkdown [data-icon=documentation]::before{content : "\f02d";font-family : "FA5FS";}
-.wmarkdown [data-icon=menu]::before{content : "\f0c9";font-family : "FA5FS";}
-.wmarkdown [data-icon=content]::before{content : "\f570";font-family : "FA5FS";}
-.wmarkdown [data-icon=files]::before{content : "\f0c5";font-family : "FA5FS";}
+.wmd-icon.checkbox>input+span::before{content : "\2610";}
+.wmd-icon.checkbox>input:disabled+span::before{content : "\25A3"; opacity : .5;}
+.wmd-icon.checkbox>input:checked+span::before{content : "\2612";}
+.wmd-icon.radio-button>input+span::before{content : "\25CB";}
+.wmd-icon.radio-button>input:disabled+span::before{content : "\25CE"; opacity : .5;}
+.wmd-icon.radio-button>input:checked+span::before{content : "\25C9";}
+.wmd-icon.tick>input+span::before{content : "\2714";}
+.wmd-icon.tick>input:disabled+span::before{content : "\25CB";}
+.wmd-icon.tick>input:checked+span::before{content : "\2718";}
\ No newline at end of file
diff --git a/Public/css/WMarkDown.web.icons.css b/Public/css/WMarkDown.web.icons.css
new file mode 100644
index 0000000..db6d0ca
--- /dev/null
+++ b/Public/css/WMarkDown.web.icons.css
@@ -0,0 +1,5 @@
+.main-menu [data-icon=web]::before{content : "\f0ac"; font-family : "FA6FS";}
+.main-menu [data-icon=git]::before{content : "\f841"; font-family : "FA6FB";}
+.main-menu [data-icon=home]::before{content : "\f015"; font-family : "FA6FS";}
+.main-menu [data-icon=game]::before{content : "\f11b"; font-family : "FA6FS";}
+.main-menu [data-icon=blog]::before{content : "\f27a"; font-family : "FA6FR";}
\ No newline at end of file
diff --git a/Public/doc/es/bugs.w.md b/Public/doc/es/bugs.w.md
new file mode 100644
index 0000000..07f9b6d
--- /dev/null
+++ b/Public/doc/es/bugs.w.md
@@ -0,0 +1,48 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_bugs
+title_text = Bugs y errores - WMarkDown
+```
+
+
+
+## Bugs y errores
+
+Esta sección va orientada a exponer los posibles errores que se puedan encontrar dentro del proyecto y el estado al cual se atañen.
+
+### Párrafos incompletos
+
+Se aprecia que los párrafos creados con saltos de línea los fracciona en Python.
+
+* [X] Localizar el error.
+* [X] Arreglo del error.
+
+> [!@Srx00] El problema estaba en que cuando se llamaba de forma recursiva al método "analyse" éste no llevaba si era un subelemento o no pues omití sin querer en el desarrollo ese factor y sólo enviaba en su lugar el lenguaje con el que tenía que trabajar. Afectaba a todo el lenguaje. Esto vislumbró otro fallo con el orden de los patrones que también fue corregido.
+
+### Modulo Cursivas en bucle
+
+Cuando hay un único asterisco suelto, el patrón de este módulo entra en bucle infinito con un consumo de procesador elevado.
+
+* [X] Localizar el error.
+* [X] Arreglo del error.
+
+> [!@Srx00] Con la ayuda de ChatGPT se llegó a una conclusión pues dicho error sólo sucede con el caso de los asteriscos simples en Python, mientras que en JavaScript y otros no pasa. El problema radica en el motor de interpretación del patrón regular, siendo diferente, siguiendo el ejemplo, la librería "re" de Python y el motor de interpretación V8. El cambio fue con respecto a como formular el patrón regular. No encontré más información que ésta.
+
+> [!@Srx00] Aún así, no funciona en todos los casos, dando errores cuando existen 2 asterisco y luego otro sin que éste contenga final. Insisto que sólo pasa con los asteriscos pues con el uso del resto de marcas no sucede pese a ser la misma casuística.
+
+### Negrillas y Cursivas
+
+Cuando se juntan ambos elementos en un único elemento, éste reacciona de forma inoportuna, por ejemplo, en el siguiente caso:
+
+```md
+
+Esto es un ejemplo del error, donde el ***elemento1*** y el ***elemento2*** tendrían que estar en negrilla y cursiva simultáneamente.
+
+```
+
+* [X] Localizar el error.
+* [X] Arreglo del error.
+
+> [!Srx00] El problema radica, en el ejemplo aquí expuesto, en que la cursiva sólo afectaría por posición de los atributos de WMarkDown por defecto, al fragmento de texto " y el ", dejando el resto en negrilla y con dos asteriscos sin procesar. Para arreglar dicho error hay que crear un subelemento que monte negrilla y cursiva de golpe, aunque lo ideal es que lo procese directamente tal como está. Es un poco chapuzas el arreglo pero inicialmente, y en base a la filosofía de funcionamiento, esta es la solución más plausible.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/description.md b/Public/doc/es/description.md
new file mode 100644
index 0000000..266ebd5
--- /dev/null
+++ b/Public/doc/es/description.md
@@ -0,0 +1,11 @@
+El WMarkDown es un pequeño lenguaje de marcas orientado a formatear un texto en un esquema más complejo con formato. Está basado principalmente en MarkDown y el lenguaje de marcas de MediaWiki, motivo por el cual existe éste. Tiene numerosos elementos personalizados por lo que tampoco podemos encajarlo dentro de estos dos entornos.
+
+Actualmente cuenta con soporte para Python y formatea el texto contra HTML y SASS/CSS.
+
+Esta versión del proyecto es la segunda que hay, siendo la primera desarrollada por 2020 entre Srx01 y Srx00, con influencia de Srx02. Hubo testeos por parte de Srx03 y Srx04.
+
+> Esta Web ya puede servir como ejemplo de resultado HTML sobre el fichero "index.w.md" pues está integrado como fichero Index de la Web y está procesado en caliente con la petición. El servidor de trabajo sobre que el se soporta la Web es un servidor AnP, desarrollado en Python por el propio desarrollador de este proyecto, Srx00.
+
+Es importante mencionar que tanto el lenguaje como el diseño tuvo una evolución, siendo el logo original creado por Srx01, así como el segundo logo que se tuvo. Este tercer logo está basado en el segundo logo de Srx01 pero fue creado por Srx00. También se cambiaron los colores originales establecidos por Srx01 por los actuales establecidos por Srx00. También es importante destacar que cambia la filosofía de trabajo e interpretación de las marcas, basado en un proyecto privado creado para una entidad por parte de Srx00, cogiendo dicha parte que no era privada y fue plenamente desarrollada por él mismo.
+
+> Para ir a la página de pruebas sería [aquí](/doc/tests.w.md Página de pruebas).
\ No newline at end of file
diff --git a/Public/doc/es/design.w.md b/Public/doc/es/design.w.md
new file mode 100644
index 0000000..283ff7c
--- /dev/null
+++ b/Public/doc/es/design.w.md
@@ -0,0 +1,51 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_design
+title_text = Estilo y diseño - WMarkDown
+```
+
+
+
+## Estilo y diseño
+
+El estilo y el diseño del proyecto WMarkDown está basado a su vez tanto en el proyecto original así como se construyeron visualmente otros proyectos como AnP. A nivel de colores, éste tiene los siguientes:
+
+[|
+|= Tipo | Hexadecimal | RGBA | Muestra
+| Fondo | #EFEFEF | rgba\(239, 239, 239, 1) | [[#EFEFEF]]
+| Frontal | #222 | rgba\(34, 34, 34, 1) | [[#222]]
+| Primario | #008844 | rgba\(0, 136, 68, 1) | [[#008844]]
+| Secundario | #880044 | rgba\(136, 0, 68, 1) | [[#880044]]
+| Gris | #888 | rgba\(136, 136, 136, 1) | [[#888]]
+| Tabla título | #19888888 | rgba\(136, 136, 136, 0.1) | [[color rgba(136, 136, 136, 0.1)]]
+| Tabla Select | #19888888 | rgba\(136, 136, 136, 0.1) | [[color rgba(136, 136, 136, 0.1)]]
+| Tabla impar | #38888888 | rgba\(136, 136, 136, 0.2) | [[color rgba(136, 136, 136, 0.2)]]
+| Tabla par | #00FFFFFF | rgba\(255, 255, 255, 0) | [[color rgba(255, 255, 255, 0)]]
+| Borde interno | #19888888 | rgba\(136, 136, 136, 0.5) | [[color rgba(136, 136, 136, 0.5)]]
+| Diccionario | #115533 | rgba\(17, 85, 51, 1) | [[#115533]]
+| Diccionario en | #551133 | rgba\(85, 17, 51, 1) | [[#551133]]
+| Code impar | #38C8C8C8 | rgba\(200, 200, 200, 0.2) | [[color rgba(200, 200, 200, 0.2)]]
+|]
+
+> [!!] Es importante entender que el diseño se basa en el resultado de la Web como diseño general pues el uso del WMarkDown se condicionará a como lo diseñe el usuario que lo implemente en su proyecto. Inicialmente está diseñado para ser independiente con un diseño monocromático en escala de grises, pero éste puede ser alterado según características del usuario. En el caso de la Web del propio proyecto se basa en el estilo de AnP pero con los códigos de color que le fueron asignados en la tabla anterior.
+
+Se utilizaron 3 fuentes distintas para visualizar el proyecto, las cuales son:
+
+* **Roboto**. Para el texto en general.
+ * https://fonts.google.com/specimen/Roboto?query=roboto
+* **Roboto Mono**. Para los bloques de código.
+ * https://fonts.google.com/specimen/Roboto+Mono?query=roboto
+* **Font Awesome**. Para la iconificación general de la Web.
+ * https://fontawesome.com/
+
+El tamaño general del proyecto se basa en un sistema porcentual que imita parcialmente el sistema de DPI existente en los dispositivos móviles o aplicaciones orientadas a la densidad de puntos por pulgada de la pantalla donde se ejecutan. En este caso, la filosofía se basa en unificar la visualización general en todos los dispositivos independientemente del tamaño y resolución de la pantalla, y que permita, de alguna forma, ampliar o disminuir los objetos según permisos por parte de los desarrolladores y, si así lo permiten los desarrolladores, por necesidades del propio usuario. El sistema se basa en buscar, dentro del rectángulo que contiene la aplicación (Pantalla), el lado más estrecho y trabajar sobre éste, dividiéndolo en celdas, en este caso, 40 celdas, así pues, se cambie el tamaño de la pantalla, o navegador en este caso, la aplicación seguirá viéndose exactamente igual.
+
+La cabecera consta de 4 celdas de alto; mientras que el pie de página consta de 2. Ambos elementos están entablados mediante un Flex que permite posicionar los elementos internamente de una forma ágil, flexible y visual, permitiendo añadir nuevos elementos y condicionándolos a éstos.
+
+El logo, partiendo de los colores primario y secundario, consta de 3 rectángulos alterados a formas específicas y separadas con angulos de entre 10 para los externos, y 20 para los internos. La intención es generar una W que parta de la idea de Srx01 de hacer, mediante una M, como respresentación de MarkDown, y la flecha integrada dentro del final de la misma, haciendo una simulación de vela gráfica. De esta forma nos desmarcamos de MarkDown. El resultado de éste es los siguiente.
+
+((!image /images/WMarkDown.svg))
+
+> [!!] En PNG tiene un borde de color blanco para destacar sobre ciertos fondos que puedan coincidir en colores con los del propio logo SVG.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/donates.w.md b/Public/doc/es/donates.w.md
new file mode 100644
index 0000000..5ee5f10
--- /dev/null
+++ b/Public/doc/es/donates.w.md
@@ -0,0 +1,55 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_donates
+title_text = Donaciones - WMarkDown
+```
+
+
+
+## Donaciones
+
+Este proyecto es plenamente gratuito pues es un proyecto orientado a complementar otros proyectos de los mismos desarrolladores. No tiene ningún plan de ingresos ni pasivos ni activos más allá de lo que se expone en este título. Si alguien quisiere colaborar en que este proyecto no sólo esté abierto por requisitos de los autores, sino también cara un mantenimiento hacia terceros, a continuación presentamos unas direcciones de Cryptoactivos donde se podrá donar sin ninguna cuantía mínima establecida.
+
+- **Bitcoin** o *BTC*: [bitcoin:bc1qu82ravz56qt9j44wza6p9tcqn5gyyhqyufpnu2?label=WMarkDownDonation bc1qu82ravz56qt9j44wza6p9tcqn5gyyhqyufpnu2]
+- **Litecoin** o *LTC*: [litecoin:ltc1qqj93dxr7kyas3resnws4mr5hudlvqm4c7xf3x6?label=WMarkDownDonation ltc1qqj93dxr7kyas3resnws4mr5hudlvqm4c7xf3x6]
+- **Dogecoin** o *DOGE*: [dogecoin:DEXrwydRVE5HrAnwogoUe9UxVQbRWSRetQ?label=WMarkDownDonation DEXrwydRVE5HrAnwogoUe9UxVQbRWSRetQ]
+- **Dash**: [dash:XpzAZSHGXDwzYFSNhgxLiayY7WJTgAsnus?label=WMarkDownDonation XpzAZSHGXDwzYFSNhgxLiayY7WJTgAsnus]
+- **Faircoin** o *FAIR*: [faircoin:fLJfTuSt3MYwbgt7E4KtUprbkmadiaN5xq?label=WMarkDownDonation fLJfTuSt3MYwbgt7E4KtUprbkmadiaN5xq]
+
+> [!!] Mientras no halla ninguna condición de recursos que impida el mantenimiento gratuito de este servicio, éste permanecerá mantenido y público independientemente de los ingresos obtenidos a partir de los donativos.
+
+> [!#] Los usuarios que colaboren y quieran ser referenciados, éstos serán referenciados en este apartado mediante un Quote de comentario de usuario con el Nick y avatar correspondiente, pero sólo en caso de que ellos quieran aparecer aquí.
+
+> [!#] Se mantendrá informados a los usuarios de todo aquel donativo dado y la cantidad económica adquirida, y será publicado su uso y tenencia para que halla constancia pública del uso que se le dé a dichos recursos.
+
+> [!@Srx00] Quería agredecer de forma persona aquellas aportaciones que serán bien recibidas y valoradas para este proyecto, ya sea como valor simbólico como de mantenimiento. Así, que desde el desarrollo y como desarrollador de este proyecto, muchas gracias a todos aquellos que ponen su granito de arena para este proyecto y por lo tanto, en pro de todos. Muchas gracias, de verdad.
+
+### Balance
+
+A continuación se mostrará una tabla de balance con respecto a las cantidades y usos dados.
+
+[|
+|= Activo | Cantidad | Motivo | Usuario | Cantidad total actual
+| **BTC** | 0 BTC | Inicio del contador de unidades de BTC. | | 0 BTC
+| **LTC** | 0 LTC | Inicio del contador de unidades de LTC. | | 0 LTC
+| **DOGE** | 0 DOGE | Inicio del contador de unidades de DOGE. | | 0 DOGE
+| **DASH** | 0 DASH | Inicio del contador de unidades de DASH. | | 0 DASH
+| **FAIR** | 0 FAIR | Inicio del contador de unidades de FAIR. | | 0 FAIR
+|]
+
+Cómputo total actual en tenencia.
+
+[|
+|= Activo | Cantidad | Número de Operaciones
+| **BTC** | 0 BTC | 0
+| **LTC** | 0 LTC | 0
+| **DOGE** | 0 DOGE | 0
+| **DASH** | 0 DASH | 0
+| **FAIR** | 0 FAIR | 0
+|]
+
+### Donantes
+
+A continuación, los comentarios de los donantes.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/faq.w.md b/Public/doc/es/faq.w.md
new file mode 100644
index 0000000..a001f8f
--- /dev/null
+++ b/Public/doc/es/faq.w.md
@@ -0,0 +1,25 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_faq
+title_text = F.A.Q. - WMarkDown
+```
+
+
+
+## F.A.Q.
+
+En este apartado se irán haciendo preguntas y respuestas acorde a motivos sobre las decisiones que se tomaron para llevar a cabo dicho proyecto.
+
+> [!?] **¿Por qué utilizas el Syntax Highlighter para MarkDown para representar en código el propio lenguaje de marcas del WMarkDown?** Pues al no existir oficialmente el propio lenguaje WMarkDown, éste no tiene asignado un lenguaje oficial y menos, un desarrollo ajeno a este proyecto que pueda ayudar y complementar dicho proyecto de momento. Al ser el lenguaje más parecido, éste es el que se quedará inicialmente.
+
+> [!?] **¿Por qué usas guiones bajos para marcar fragmentos de texto subrayados pues es una de las marcas de MarkDown para representar la negrilla y la cursiva?** Los guiones bajos son una alternativa en MarkDown para representar ambos formatos, pero el principal es el uso de los asteriscos. Al no existir una manera eficiente de representar textos tachados o subrayados se decidió cambiar estas marcas para los fragmentos de texto subrayados.
+
+> [!?] **¿Cómo distingue WMarkDown de un título una lista ordenada numerada mediante la marca almuadilla o "#"?** Pues básicamente los títulos requieren de al menos dos saltos de línea por debajo de ellos, mientras que en una lista, en cuanto halla más de un elemento tras de él se sabe que es una lista ordenada numerada.
+
+> [!?] **¿Puede dar problemas el WMarkDown?** Como toda tecnología digital compleja, ésta puede responder de forma inesperada no contemplada por los desarrolladores de la misma, además, actualmente sólo hay un único desarrollador, por lo que posiblemente dé resultados inesperados pues sólo se contempla el propósito de acción de dicho desarrollador. A medida que se haga uso de éste se irán reportando problemas y se irán haciendo las correcciones pertinentes según el tiempo que se le pueda dedicar pues este proyecto es un proyecto Free Open Source que mientras no genere un dinero que permita mantenimiento sobre otros proyectos, éste irá limitado a dicho contexto, en conjunto con el número de desarrolladores que puedan ser partícipes.
+
+> [!?] **¿Por qué se decidió poner la licencia general de Creative Commons para Atribución, No Comercial y que se permite el Compartir o *CC-BY-NC-SA*?** Pues por el hecho de que se quiere dejar el proyecto para uso libre en Internet para cualquiera que quiera implementarlo dentro de su proyecto, sin embargo, licencias como el MIT o GPL no obliga a reconocer la autoría, cosa que creo que es de vital importancia para ayudar a los autores originales tanto a su visibilización como mostrar su trabajo y de una forma indirecta, favorecer su currículum profesional, de ahí que tenga el **BY de Atribución o By en inlgés**; tampoco nos interesa que dicho proyecto se venda a terceros cuando éste es totalmente gratuito, sin embargo, no nos importa que este proyecto sea usado en un proyecto comercial siempre que la fuente de ingresos no sea el servicio que se ofrece con este proyecto, de ahí que sea **NC de No Comercial**; y finalmente, como dijimos hasta ahora, que éste pueda ser compartido, manipulado y trabajado libremente con las dos condiciones anteriores, de ahí que sea **SA de Compartir o Shared Alike**. Un ejemplo de uso comercial puede ser la creación de un Blog o Foro donde la gente escriba a partir de WMarkDown, donde el producto no es el propio WMarkDown, sino el servicio del Blog o foro.
+
+> [!?] **¿Por qué se seleccionó el nombre WMarkDown pese a que el logo sea una W con la flecha alzada pudiendo encajar mejor __WMarkUp__?** El problema es que la base principal del lenguaje se basa plenamente en MarkDown, donde la lógica me dice que Down viene a simplificar la forma de escribir en un formato de estilos mediante marcas de texto. Poner Up sería ir a la contra, y creemos desde WMarkDown, que no es éste el propósito.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/integration.w.md b/Public/doc/es/integration.w.md
new file mode 100644
index 0000000..3c14427
--- /dev/null
+++ b/Public/doc/es/integration.w.md
@@ -0,0 +1,33 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_integration
+title_text = Integración - WMarkDown
+```
+
+
+
+## Integración
+
+El WMarkDown puede ser integrado directamente en un proyecto si éste tiene el lenguaje de ejecución del mismo. Actualmente contamos con los siguientes lenguajes, los cuales irán acompañados de su sistema de adjunción.
+
+### HTML
+
+Para poder integrar WMarkDown sobre HTML se requiere de agregar las siguientes etiquetas en la cabecera para que éstas recreen las condiciones de funcionamiento del mismo.
+
+```html
+
+```
+
+> [!! Importante] Es importante tener en cuenta que el código HTML no sigue el estándar puro de HTML5 por motivos de filosofía del desarrollador. Ésto se puede percibir con el autocierre de la etiqueta LINK, así como los atributos "data-" expuestos.
+
+También es importante mencionar que si se usa un servidor que permita la interpretación directa de archivos
+
+### Python
+
+Para poder integrar el lado de Python es necesario la tenencia local del archivo que se referencia contra el Git:
+
+- https://git.k3y.pw/Whalers/WMarkDown/src/branch/main/Python/WMarkDown.py
+
+Con dicho fichero nosotros seríamos libres de integrarlo como librería cara el usuario de ejecución o dentro de nuestro proyecto en cuestión.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual.w.md b/Public/doc/es/manual.w.md
new file mode 100644
index 0000000..769dc9d
--- /dev/null
+++ b/Public/doc/es/manual.w.md
@@ -0,0 +1,47 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_manual
+title_text = Manual - WMarkDown
+```
+
+
+
+## Manual
+
+Cara el modo de uso de esta tecnología contamos que parte de la idea de ser implementado en entornos Web, por lo que es totalmente compatible con HTML, es decir, que a parte de las propias funcionalidades del HTML que se le puedan dar de forma nativa, éste contará con otros elementos específicos del mismo basado en tecnologías como MarkDown o el lenguaje de marcas utilizado para el proyecto MediaWiki.
+
+> [!!] El resultado del proceso del WMarkDown, inicialmente será completamente HTML por lo que puede ser alterado mediante JavaScript, ECMAScript, SASS y CSS para personalizarlo al usuario.
+
+A continuación iremos detallando las diferentes marcas para dar lugar a cada uno de los elementos.
+
+[[include manual/paragraphs.w.md]]
+
+[[include manual/text_formats.w.md]]
+
+[[include manual/checks.w.md]]
+
+[[include manual/titles.w.md]]
+
+[[include manual/links.w.md]]
+
+[[include manual/color_sample.w.md]]
+
+[[include manual/tables.w.md]]
+
+[[include manual/lists.w.md]]
+
+[[include manual/quotes.w.md]]
+
+[[include manual/code_block.w.md]]
+
+[[include manual/presentation_links.w.md]]
+
+[[include manual/exclude.w.md]]
+
+[[include manual/includes.w.md]]
+
+[[include manual/dictionaries.w.md]]
+
+[[include manual/code_doc.w.md]]
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/checks.w.md b/Public/doc/es/manual/checks.w.md
new file mode 100644
index 0000000..45d703f
--- /dev/null
+++ b/Public/doc/es/manual/checks.w.md
@@ -0,0 +1,38 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_checks
+title_text = Ticks, Checks y Radios - WMarkDown
+```
+
+
+
+### Ticks, Checks y Radios
+
+Los Ticks, Checkboxes y los Radio Buttons son elementos bastante básicos con los que trabajar en un apartado documental pues pueden ser indicativos de selección o marcas que determinan elementos seleccionados. A continuación se deja una tabla con las marcas y valor que representan.
+
+[[!]]
+
+[| class="wmd-checks-viewer"
+|=| Marca |
+|= Upper | Lower | Valor
+| \[ ] | \[ ] | [ ]
+| \[X] | \[x] | [x]
+| \[-] | \[-] | [-]
+| \( ) | \( ) | ( )
+| \(X) | \(x) | (x)
+| \(-) | \(-) | (-)
+| \{V} | \{v} | {v}
+| \{W} | \{w} | {w}
+| \{X} | \{x} | {x}
+|]
+
+> [!#] Estas marcas no están condicionadas entre sí como puede ser cuando se trabajan en formularios los Radio Buttons, lo que significa que son de libre uso.
+
+> [!!] Estas marcas ignoran si son en mayúsculas o minúsculas, es decir, que funcionarán independientemente de cómo se escriban.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/code_block.w.md b/Public/doc/es/manual/code_block.w.md
new file mode 100644
index 0000000..a137d86
--- /dev/null
+++ b/Public/doc/es/manual/code_block.w.md
@@ -0,0 +1,131 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_checks
+title_text = Bloques de código - WMarkDown
+```
+
+
+
+### Bloques de código
+
+Los bloques de código están diseñados para poder mostrar códigos, Scripts, etc. De forma que el texto esté monoespaciado, con conteo de líneas y caracteres, así como visualización del número de línea donde te encuentras y con la posibilidad de ir visiblemente ayudado de un Syntax Highlighter. Básicamente viene siendo un bloque que se generará a nivel visual, a modo de caja donde se incluirá el código dado y formateado de la forma anteriormente descrita.
+
+> [!#] Los bloques de código siguen la filosofía de MarkDown por simplicidad a la hora de se implementados. Los bloques de código de MediaWiki son ignorados aquí por el hecho de que acaban siendo bloques HTML, cosa que ya se pueden integrar manualmente.
+
+'''wmd-examples
+
+A continuación se expone un bloque de HTML.
+
+```html
+Ejemplo
+Esto es un ejemplo de HTML .
+```
+
+'''
+
+Estos bloques también pueden ser usados para módulos que requieran de un bloque con las órdenes, parámetros o descripciones necesarias. Dichos módulos son los siguientes:
+
+- **math**, **maths** o **[[!mathjax]]**: El módulo "maths" o de matemáticas nos permite visualizar funciones y operaciones matemáticas a partir de código MathJax a partir de la librería "mathjax.js".
+- **mermaid** o **[[!mermaidjs]]**: Este módulo se utiliza para representar gráficos, flujos, esquemas, etc. A partir de la librería "mermaid.js".
+- **[[!wmd-examples]]**: Este módulo es específico para WMarkDown y nos permite hacer ejemplos dinámicos contra el cliente de textos formateados en WMarkDown.
+- **[[!wmd-options]]**: Este módulo nos permite especificar las opciones cara un documento WMarkDown, por lo general el título y el código de idioma utilizado.
+- **[[!wmd]]** o **[[!wmarkdown]]**: Vienen siendo bloques especiales que se ponen fuera de lo que son textos WMarkDown que identifican en un texto plano, bloques que han de ser procesados como WMarkDown.
+
+> [!!] Estos bloques se procesarán en el cliente pues no afecta inicialmente al SEO para su salida directa en HTML, por lo tanto, éstos aparecerán reflejados en HTML como bloques de código convencionales.
+
+'''wmd-examples
+
+A continuación tenemos un Script JS.
+
+```js
+console.log("Esto es un ejemplo de impresión por consola en JavaScript.");
+```
+
+Ahora mostramos un ejemplo de un flujo.
+
+```mermaid
+flowchart TD
+
+A["Elemento A"]
+B["Elemento B"]
+C["Elemento C"]
+
+A --> B
+B --> C
+
+```
+
+Finalmente, mostramos un ejemplo de función matemática.
+
+```maths
+# Ejemplo hallando el siguiente punto.
+(x_3, y_3) = (x_1, y_1) - (x_2, y_2)
+```
+
+'''
+
+También puede ser usado simplemente para representar texto plano.
+
+'''wmd-examples
+
+```txt
+Esto es un texto plano.
+```
+
+```
+Esto es otro texto plano sin nombre de formato.
+```
+
+```lenguaje-desconocido
+Al ser un lenguaje desconocido, éste saldrá también como texto plano.
+```
+
+'''
+
+Para poder representar los bloques de código tenemos varias marcas las cuales son las siguientes:
+
+[[!]]
+
+[| class="wmd-blocks-marks-viewer"
+|=| Marca
+|= Compactado | Espaciado
+| ``` | ` ` `
+| ''' | ' ' '
+| """ | " " "
+|]
+
+> [!?] **¿Por qué existen varias formas de llamar a los bloques de código?** Básicamente por versatilidad pues habrá lenguajes o fragmentos de código que se quieran representar y éstos contengan conjuntos de caracteres que puedan hacer conflicto con el propio bloque de código, por tanto, hay estas opciones para que el usuario pueda elegir entre ellas. Este es el motivo por el cual se pudo ejemplificar los bloques de código en el propio WMarkDown.
+
+Por otro lado, y terminando con los bloques de código, también hay un tipo de bloques de código especiales que son los *[[!wmd]]* o *[[!wmarkdown]]*, que nos sirven para identificar bloques de código WMarkDown para ser procesados dentro de un bloque de texto plano, como se explicó anteriormente. Normalmente se suelen poner en documentos directos como HTML para que éstos sean procesados parcialmente y ahorrar proceso y recursos, así como posibles errores y complicaciones.
+
+'''html
+
+Ejemplo de incrustación
+
+Esto es un bloque de código HTML normal.
+
+" " "wmd
+
+## Ejemplo
+
+Aquí empieza un bloque de código WMarkDown el cual será procesado en HTML, pero se ignorará lo que esté fuera de este bloque.
+
+```txt
+Ejemplo de bloque dentro de otro bloque, pero éste será procesado como bloque de código WMarkDown.
+```
+
+" " "
+
+Esto ya está fuera del dominio anterior.
+
+'''
+
+Los bloques de código incrustados, como el que vemos en este ejemplo también pueden ir encapsulados entre dos comentarios XML.
+
+<!-- \[\[[[!WMD]]]] -->
+
+Esto nos permite no salir del formato HTML ni XML en el IDE.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/code_doc.w.md b/Public/doc/es/manual/code_doc.w.md
new file mode 100644
index 0000000..1f00293
--- /dev/null
+++ b/Public/doc/es/manual/code_doc.w.md
@@ -0,0 +1,62 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_code_doc
+title_text = Documentación de Código - WMarkDown
+```
+
+
+
+### Documentación de Código
+
+El módulo de Documentación de Código o Code Doc es un módulo que sirve para identificar elementos concretos dentro del código fuente del proyecto de forma genérica. Está basado en documentar funciones y métodos principalmente aunque permite más funciones que éstas. Las funciones y los métodos, en base a la filosofía de este módulo, están diseñadas en base a un entorno fuertemente tipado con estructuras de sobrecargas y argumentos opciones. Su estructura se basa en marcas que identifican las diferentes partes.
+
+```wmd-examples
+
+[[@ [String] WMarkDown.process(!String data, Integer lanuage = 1, ?String path = null)]]
+
+[[@ [String] WMarkdown.analyse(!String data, Integer language = 1, Integer mode = 0, ?String path = null)]]
+
+```
+
+El módulo crearía una capa adaptada al espacio del párrafo el cual tendría el bloque de llamada explicado a nivel de código y una tabla con los argumentos definidos de una forma simplificada para ayudar en su comprensión.
+
+La sintaxis es sencilla, parte de lo siguiente:
+
+* **Tipado de respuesta**: Es un elemento opcional comprendido entre corchetes que determina el tipado de respuesta. Si no se especifica, por defecto será **void** (Vacío).
+* **Acceso**: Es un elemento opcional que determina el acceso a dicho elemento, donde si no se nombra se entenderá como elemento público, pero sino, indicaría lo siguiente:
+ * **Privado**: Determina que el elemento del que se habla tiene acceso únicamente privado y se representa mediante el caracter "**!**".
+ * **Protegido**: Determina que el elemento del que se habla tiene acceso protegido por su herencia y se representa mediante el caracter "**?**".
+* **Espacio de nombres**: Es un elemento opcional que determina el espacio de nombres para llegar hasta éste, ya sea por nombre de Clase, por el propio espacio de nombres, o ambos juntos como puede suceder en PHP.
+* **Ámbito**: Es un elemento opcional que determina el la separación entre el espacio de nombres y el nombre del elemento se separan por un caracter el cual indica uno de estos dos casos.
+ * **Objeto**: Se indica con un punto ("**.**") e indica que parte de la creación de un objeto a partir de la clase que lo nombra. En caso de no haber nombre
+ * **Estático**: Se indica con dos puntos ("**:**") e indica que parte de la clase que lo nombra.
+* **Método** o **Elemento**: Nombre del método o elemento al que se hace referencia.
+* **Argumentos**: Bloque opcional que se especifica únicamente en caso de ser un método o una función, entre paréntesis tendrá los argumentos de entrada. Cada argumento tendría lo siguiente:
+ * **Obligatorio**: El primer elemento es opcional e indica si es opcional u obligatorio donde si hay al inicio del argumento un cierre de exclamación ("**!**") indica que es obligatorio, sino nos indica que es opcional.
+ * **Nulleable**: El segundo elemento es opcional e indica si es nulleable o no donde si hay al inicio del argumento un cierre de interrogación ("**?**") indica que es nulleable, sino, no admite valores nulos.
+ * **Tipado**: El tercer elemento es obligatorio e indica el tipado del argumento.
+ * **Nombre**: El cuarto elemento es obligatorio e indica el nombre del argumento.
+ * **Valor por defecto**: El quinto elemento es opcional y especifica el valor por defecto que tiene ese argumento. Sólo se especifica para argumentos opcionales cuando éstos tienen un valor por defecto. Se identifica por ir separado con el signo igual ("**=**") del nombre hasta la coma que lo separa. En caso de ser un String, diccionario o Array se identifica su final con el cierre del mismo.
+* **Valor por defecto**: Bloque opcional diseñado para valores de variables y constantes que representa su valor por defecto. Se distingue de los argumentos mediante la separación con el nombre del método con el caracter iguale ("**=**").
+
+> [!!] El Espacio de nombres y el Ámbito van juntos, es decir, si se especifican han de existir los dos, si no, no se ha de especificar ninguno de los dos.
+
+> [!!] Puede haber más de un tipado alternativo. Éstos se separan con el caracter tubería ("**|**").
+
+Cara los tipados, el nombre que se le dé dependerá del desarrollador y del propio nombre de las clases de los que parten los posibles objetos, sin embargo, hay que destacar que se espera encapsulados entre diamantes en casos de ser Vectores o definición de diccionarios y/o objetos.
+
+```wmd-examples
+
+
+[[@ [Array>] ejemplo]]
+
+```
+
+> [!#] Cuando hablamos de variables o métodos y funciones que no tienen argumentos, la tabla de definición de argumentos no aparecerá, o en caso de ser alterado el CSS original del WMarkDown, saldrá vacía.
+
+> [!#] Para especificar valores nulos o cualquier valor aconsejamos, por mantener un estándar basado en JSDoc \(No se sigue plenamente la filosofía de JSDoc, pero si se basa bastante en ésta) el uso de **Null** y **Any** consecutivamente. También destacar que Any no representa entre sus valores ni a Null ni a "undefined" en el caso de JavaScript.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/color_sample.w.md b/Public/doc/es/manual/color_sample.w.md
new file mode 100644
index 0000000..bbcfd7a
--- /dev/null
+++ b/Public/doc/es/manual/color_sample.w.md
@@ -0,0 +1,33 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_color_sample
+title_text = Muestra de color - WMarkDown
+```
+
+
+
+### Muestra de color
+
+Las muestras de color no son más que unas cajitas para mostrar un color concreto de una forma rápida y ágil.
+
+```wmd-examples
+
+Esta muestra [[#F00]] es el color rojo.
+
+Esta muestra [[#FF0000]] es el color rojo.
+
+Esta muestra [[#f00]] es el color rojo.
+
+Esta muestra [[color rgb(255, 0, 0)]] es el color rojo.
+
+Esta muestra [[color red]] es el color rojo.
+
+Esta muestra [[color #F00]] es el color rojo.
+
+```
+
+> [!!] Es cierto que tenemos la capacidad de poner bloques de color vía HTML, ya sea con la etiqueta SPAN o DIV, pero esta forma es más eficiente y permite que sin tener conocimientos de HTML poder aplicar colores sólo a su nombre en inglés, código hexadecimal o RGB y RGBA.
+
+Las muestras de color se pueden poner simplemente entre dobles corchetes si éstas son hexadecimal; o bien, entre corchetes se nombra "color" y luego, separado por espacio o tabulación, el código de color, independientemente de ser hexadecima, RGB, RGBA, HLS o HLSA; así como con el nombre del color en inglés.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/dictionaries.w.md b/Public/doc/es/manual/dictionaries.w.md
new file mode 100644
index 0000000..609ac61
--- /dev/null
+++ b/Public/doc/es/manual/dictionaries.w.md
@@ -0,0 +1,69 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_dictionaries
+title_text = Diccionarios - WMarkDown
+```
+
+
+
+### Diccionarios
+
+Los diccionarios en WMarkDown son una herramienta para ayudar a escribir sin preocuparse en definir elementos que puedan resultar complejos, profesionales o simples interpretaciones. La idea simplemente es la creación de un diccionar JSON el cual será cargado y en base a los patrones establecidos éste los implementará en los textos del propio WMarkDown para que el usuario, al Clickar en dichos elementos les salga qué es para ti, además de permitir el muestreo de definiciones de forma anidada.
+
+La implementación de los diccionarios es automática siempre que se le halla dado algún archivo de diccionario. Si éste no fue dado, los diccionarios no se post-procesarán.
+
+El formato JSON de los diccionarios viene siendo un Array donde se implementará en cada elemento del mismo un término, y los términos tendrían un formato también de Array donde:
+
+1. **Patrón y corrección**: Éste puede ser un único Array con un patrón regular y el texto corregido que quieres que se tenga uniformemente; o bien, un Array de elementos los cuales, como antes, sería un Array con un patrón y el texto corregido que quieres que se tenga uniformemente.
+2. **Definición**: Viene siendo la definición, el cual puede ser un simple String o un Array para poder hacer saltos de línea.
+3. **Links**: Links de interés tanto para más información como Webs oficiales y proyectos.
+
+Un ejemplo de ésto puede ser el siguiente:
+
+```json
+[[
+ [
+ ["/\\bwmarkdown\\b/ig", "WMarkDown"],
+ ["/\\b(wmd\\b|w\\.m\\.d\\.|w\\. +m\\. +d\\. +)/ig", "WMD"]
+ ], [
+ "El WMarkDown es un proyecto que nos permite hacer documentación y textos ",
+ "formateados desde un lenguaje de marcas sencillo que parte como idea de ",
+ "lenguajes de marcas como MarkDown y MediaWiki, personalizado a usos más ",
+ "extensos, flexibles y fáciles."
+ ], [
+ "https://wmarkdown.k3y.pw/",
+ "https://git.k3y.pw/Whalers/WMarkDown"
+ ]
+], [
+ ["/\\bmedia *wiki\\b/gi", "MediaWiki"], [
+ "MediaWiki es un proyecto Free Open Source que viene siendo la base de Webs ",
+ "como Wikipedia entre otros, el cual permite gestionar publicaciones y ",
+ "documentación en un entorno flexible, abierto y extendido con una gran ",
+ "comunidad que lo sustenta."
+ ], [
+ "https://www.mediawiki.org/",
+ "https://es.wikipedia.org/wiki/MediaWiki",
+ "https://github.com/wikimedia/mediawiki"
+ ]
+], [
+ [
+ ["/\\bmarkdown\\b/gi", "Markdown"],
+ ["/(? [!!] Si nos fijamos en el ejemplo, los patrones utilizados se basan en patrones regulares de JavaScript. El propio WMarkDown se encargará de adaptarlo al entorno correspondiente, pero es importante seguir este sistema.
+
+Este ejemplo busca patrones que tengan que ver con WMarkDown, MediaWiki y Markdown, marcando en el texto procesado como elementos consultables y los cuales desplegarán un elemento flotante a su altura con la información requerida.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/exclude.w.md b/Public/doc/es/manual/exclude.w.md
new file mode 100644
index 0000000..7e975d6
--- /dev/null
+++ b/Public/doc/es/manual/exclude.w.md
@@ -0,0 +1,27 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_exclude
+title_text = Módulo de exclusión - WMarkDown
+```
+
+
+
+### Módulo de exclusión
+
+El módulo de exclusión está diseñado para ignorar fragmentos de texto para que éstos no se representen con marcas. Esto es muy importante para poder representar bloques de HTML, ejemplos o simplemente, exponer fragmentos de texto con caracteres que pertenecen a las marcas. Hay dos formas de excluir estos elementos.
+
+```wmd-examples
+
+Exclusión completa de un texto.
+
+[[!Esto es un bloque de texto excluído, y esto [x] no es un Checkbox seleccioando. Tampoco funcionará el diccionario.]]
+
+Exclusión de caracteres.
+
+Esto es un texto no excluído y esto [x] sí es un Checkbox seleccionado, pero \[x] esto ya no lo es. Aquí sí funcionaría el diccionario.
+
+```
+
+> [!!] Es importante mencionar que los Slashes escapan sólo una serie de caracteres pues en la anterior versión escapaban todo tipo de caracteres y podía llegar a complicar ciertas cosas. Actualmente está la filosofía de que si hay algo que requiere de escaparse constantemente implica que está mal, por lo que la limitación de caracteres escapados ha de ser mínima.
+
+
diff --git a/Public/doc/es/manual/includes.w.md b/Public/doc/es/manual/includes.w.md
new file mode 100644
index 0000000..64df2e5
--- /dev/null
+++ b/Public/doc/es/manual/includes.w.md
@@ -0,0 +1,35 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_includes
+title_text = Inclusiones - WMarkDown
+```
+
+
+
+### Inclusiones
+
+Una de las características principales de WMarkDown es la capacidad de éste para poder integrar dentro de sí mismo otros recursos externos, por ejemplo, otro archivo HTML, MarkDown o WMarkDown, permitiendo así poder gestionar una documentación ordenada a partir de directorios y ficheros y a la par, poder crear OnePages donde visualizar dicho contenido. Para poder llevar a cabo dicha tarea podemos seguir el siguiente ejemplo:
+
+```wmd-examples
+
+## Ejemplo inclusión
+
+Esto es un párrafo de presentación del título donde nos encontramos.
+
+[[include otro.fichero.w.md]]
+
+Ahora podemos continuar con nuestro fichero habiendo incluído el contenido del fichero "otro.fichero.w.md".
+
+```
+
+De esta forma podemos integrar dentro de nuestro documento diferentes ficheros con el fin de tenerlos ordenados para su trabajo así como generar documentación OnePage para facilitar la accesibilidad a los usuarios a ésta.
+
+Las inclusiones crean secciones o bloques donde se meterá todo su contenido a modo de capa, y las inclusiones de primer nivel tendrán un link que permita ir al documento en cuestión. Con esto se entiende que se permite el anidamiento de inclusiones de archivos.
+
+> [!!] Es importante destacar que se pueden producir **bucles infinitos** cuando un fichero llama a otro el cual llama al primero de forma directa o indirecta. Es muy importante controlar este proceso de forma adecuada y correcta.
+
+> [!!] También es importante destacar que los **títulos anidados** tendrán su valor de origen pudiendo dar lugar a problemas si no se gestionan de una forma adecuada.
+
+> [!!] Por otro lado, decir que los Links que genera para ir a la página o documento a la que hace referencia sólo se mostrará en las de primer nivel porque dichos **Links** son **dinámicos a su punto de origen** donde si el origen es un elemento incluído anidadamente éste podría alojar un Path erróneo.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/links.w.md b/Public/doc/es/manual/links.w.md
new file mode 100644
index 0000000..6218926
--- /dev/null
+++ b/Public/doc/es/manual/links.w.md
@@ -0,0 +1,77 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_links
+title_text = Links o enlaces - WMarkDown
+```
+
+
+
+### Links o enlaces
+
+Para identificar o marcar un Link o enlace en WMarkDown, tenemos varias opciones según nos convenga en su momento, ya sea por comodidad o necesidad. En nuestro caso tenemos los estándares de MarkDown y MediaWiki, así como un sistema propio y detección automática de enlaces mediante búsqueda de protocolos de red con su división al Path, URL o código que lo sigan "://", de esta forma podemos identificar protocolos como:
+
+- FILE.
+- HTTP y HTTPS.
+- FTP y FTPS.
+- SFTP, SSH, etc.
+- Etcétera.
+
+Así pues, contando con los distintos métodos que tenemos para generar Links nos encontramos con los siguientes modos.
+
+> [!!] Para poder ignorar un Link el cual no se quiere que aparezca o que posiblemente se haga uso de un texto el cual no sea un Link hemos de usar las marcas para ignorar el formato de fragmentos de texto que se relata en el [/doc/es/exclude.w.md Módulo de Exclusión] o "[/doc/es/exclude.w.md Ignore]". También se puede hacer uso de los escapes o de código Ampersand para impedir que dichos contenidos se vean afectados.
+
+> [!!] Es importante mencionar que los Links, teóricamente no deben de contener espacios, motivo por el cual, si éstos poseen espacios, como pueden ser los casos de los números de teléfono, en el propio enlace éstos se compactarán, aunque se mostrará íntegramente como se hallan escrito por el usuario.
+
+#### Link directo
+
+Al escribir un Link identificable mediante protocolo o por si es un elemento como una dirección E-Mail, éste puede ser escrito de forma directa.
+
+```wmd-examples
+
+Aquí te pongo un Link directo: https://wmarkdown.k3y.pw/
+
+También se puede hacer un Link directo de una dirección de E-Mail tal como kyman-ficticio@wmarkdown.k3y.pw
+
+```
+
+> [!!] Es importante destacar que este modo de trabajo no permite definirle un texto directo al enlace quedando únicamente el propio texto del enlace como texto tanto de título como de muestreo.
+
+> [!! ¡OJO!] En este caso, por ejemplo, en un párrafo el cual acabe en un signo como el punto o la coma, si éste va pegado al Link éste lo entenderá como parte del mismo.
+
+#### Link MediaWiki
+
+El Link de MediaWiki se integra a partir de apertura y cierre de corchetes de forma directa, y todo lo que se comprenda ahí dentro se entenderá como Link. También hay que destacar que si hay un espacio éste se entenderá como separador del texto que se quiere que represente el Link. Este modo también distingue ciertos protocolos como el de los teléfonos.
+
+```wmd-examples
+
+Web de [https://wmarkdown.k3y.pw/].
+
+Para ver más información, por favor, presione [https://wmarkdown.k3y.pw/ aquí].
+
+Esto es un número de teléfono [+65 9127 92 35 533] y este es otro [723 564 123] y este el mismo de antes pero más obfuscado [723564123].
+
+Y esto es una dirección E-Mail [kyman-ficticio@wmarkdown.k3y.pw].
+
+También puedes poner direcciones como Cryptomonedas como [bitcoin:tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc] o [litecoin:tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s] entre otras.
+
+```
+
+#### Link MarkDown
+
+El Link MarkDown es el Link más complejo. Por su versatilidad fue integrado pero por la complejidad hubo dudas a la hora de integrarlo. Éste se basa en un bloque opcional comprendido entre corchetes que contempla el texto que se quiere que aparezca; luego el Link entre paréntesis el cual, dentro del paréntesis puede ir acompañado de tras un espacio o tabulación, de forma opcional, ya sea entre comillas simples dobles o nada, un texto que sea el título que se presente con el puntero.
+
+```wmd-examples
+
+Web de (https://wmarkdown.k3y.pw/).
+
+Para ver más información, por favor, presione [aquí](https://wmarkdown.k3y.pw/ Link a WMarkDown.).
+
+Esto es un número de teléfono [+65 9127 92 35 533](tel:+6591279235533 Un teléfono inventado xD) y este es otro [723 564 123](723 564 123 También admite espacios.) y este el mismo de antes pero más obfuscado [723564123](723564123).
+
+Y esto es una dirección E-Mail [kyman-ficticio@wmarkdown.k3y.pw].
+
+También puedes poner direcciones como Cryptomonedas como [tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc](bitcoin:tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc Dirección Bitcoin TestNet) o [tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s](litecoin:tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s Dirección Litecoin TestNet) entre otras.
+
+```
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/lists.w.md b/Public/doc/es/manual/lists.w.md
new file mode 100644
index 0000000..cb9cdb9
--- /dev/null
+++ b/Public/doc/es/manual/lists.w.md
@@ -0,0 +1,186 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_lists
+title_text = Listas - WMarkDown
+```
+
+
+
+### Listas
+
+Los listas en WMarkDown se basan en una mezcla entre lo que son las listas crudas de MarkDown así como en las listas de MediaWiki, con un concepto de personalización para determinar si un elemento está contraído o no, permitiendo así controlar la visualización inicial de la lista.
+
+> [!!] Es importante mencionar que la visualización de los elementos compactados depende plenamente de que JavaScript esté habilitado en el navegador pues por defecto no se mostrarán y las acciones dinámicas dependerán plenamente de que éste esté habilitado.
+
+Partiendo de la idea de MarkDown para la gestión de Listas y sus marcas alternativas se creó un subprotocolo que condiciona qué marca se usar'para qué fin pues no todas las marcas funcionan igual, además, éste sistema altera la guía de buenas prácticas de MarkDown pues éste dice de usar siempre la misma marca en la misma lista o nivel de la misma, mientras que aquí se podrá ir alternando según intereses. Las marcas con sus significados son los siguientes:
+
+- *****: El asterisco nos indica una lista desordenada estándar, sin posibilidad de desplegar o compactar.
+- **+**: El signo más nos dice que será una lista desordenada y que ésta estará desplegada por defecto con opción a compactar.
+- **−**: El signo menos nos dice que será una lista desordenada y que ésta estará compactada por defecto con opción a desplegar.
+- **#**: El signo comodín, o sostenido o numérico indica que será una lista ordenada mediante números que parten del valor "1".
+- **1.**: Cualquier número seguido de un punto nos indica una lista ordenada numérica cuyo valor inicial será el del primer elemento puesto.
+- **a.**: Cualquier letra, a excepción de la letra **i** latina, seguida de un punto nos indica que será una lista ordenada alfabéticamente. Éste puede ser en mayúsculas para indicar que las letras sean mayúsculas, o minúsculas para lo contrario.
+- **i.**: Un número romano seguido de un punto nos indica que la lista será ordenada con números romanos. Si éstos están en mayúsculas aparecerán en mayúsculas, y si son en minúsculas, éstos aparecerán en minúsculas.
+
+> [!!] En el caso de los elementos ordenados, éstos seguirán las pautas única y exclusivamente del primer elemento dado. Si por el medio se hacen saltos, se repiten o se mantienen valores, así como si se integran marcas de listas desordenadas, éstas continuarán su orden interpretando corrección del usuario.
+
+Los tipos de listas que hay se pueden ver reflejadas en los siguientes ejemplos:
+
+```wmd-examples
+
+Ejemplo de lista desordenada:
+
+* Elemento 1.
+* Elemento 2.
+* Elemento 3.
+* Elemento 4.
+* Elemento N.
+
+Ejemplo de lista ordenada numérica:
+
+# Elemento 1.
+# Elemento 2.
+# Elemento 3.
+# Elemento 4.
+# Elemento N.
+
+Ejemplo de lista ordenada con inicio en otro valor que no sea uno.
+
+4. Elemento 1.
+5. Elemento 2.
+6. Elemento 3.
+7. Elemento 4.
+8. Elemento N.
+
+La lista anterior sería igual que hacer lo siguiente:
+
+4. Elemento 1.
+4. Elemento 2.
+4. Elemento 3.
+4. Elemento 4.
+4. Elemento N.
+
+O incluso lo siguiente:
+
+4. Elemento 1.
+# Elemento 2.
+# Elemento 3.
+# Elemento 4.
+# Elemento N.
+
+```
+
+Las listas se pueden anidar, lo que hacen que crezcan en árbol. Para ello tenemos tanto la filosofía base de MarkDown mediante espacios y/o tabulaciones; como la filosofía de MediaWiki mediante el conjunto de marcas que determinan el nivel del elemento dentro de la lista.
+
+```wmd-examples
+
+Listas anidadas por el método de MarkDown.
+
+* Elemento 1.
+* Elemento 2.
+ * Elemento 2-1.
+ * Elemento 2-2.
+ * Elemento 2-2-1.
+ * Elemento 2-3.
+* Elemento 3.
+* Elemento 4.
+ * Elemento 4-1.
+* Elemento N.
+
+Listas anidadas por el método de MediaWiki.
+
+* Elemento 1.
+* Elemento 2.
+** Elemento 2-1.
+** Elemento 2-2.
+*** Elemento 2-2-1.
+** Elemento 2-3.
+* Elemento 3.
+* Elemento 4.
+** Elemento 4-1.
+* Elemento N.
+
+Ambas darán el mismo resultado.
+
+```
+
+Dentro de las listas anidadas hay dos marcas que permiten controlar si salen compactadas o desplegadas, lo que determina también que serían compactables o desplegables por el usuario final.
+
+```wmd-examples
+
+* Elemento 1. Elemento desplegado pero no desplegable o compactable.
+ * Elemento 1-1.
+ * Elemento 1-2.
+ * Elemento 1-3.
+- Elemento 2. Elemento desplegable que por defecto está plegado.
+ * Elemento 2-1.
+ + Elemento 2-2. Elemento desplegable, desplegado por defecto.
+ * Elemento 2-2-1.
+ - Elemento 2-3. Elemento desplegable que por defecto está plegado.
+ * Elemento 2-3-1.
+* Elemento 3.
++ Elemento 4. Elemento desplegable que por defecto está desplegado.
+ * Elemento 4-1.
+* Elemento N.
+
+```
+
+> [!!] Como podemos observar, la guía de las buenas prácticas de MarkDown cara las listas, con este concepto se rompe.
+
+También se pueden anidar listas ordenadas y desordenadas entre sí.
+
+```wmd-examples
+
+Ejemplo en filosofía MarkDown.
+
+* Elemento 1.
+* Elemento 2.
+ # Elemento 2-1.
+ # Elemento 2-2.
+ * Elemento 2-2-1.
+ # Elemento 2-3.
+* Elemento 3.
+* Elemento 4.
+ # Elemento 4-1.
+* Elemento N.
+
+Ejemplo en filosofía MediaWiki.
+
+* Elemento 1.
+* Elemento 2.
+*# Elemento 2-1.
+*# Elemento 2-2.
+*#* Elemento 2-2-1.
+*# Elemento 2-3.
+* Elemento 3.
+* Elemento 4.
+*# Elemento 4-1.
+* Elemento N.
+
+```
+
+Mediante la filosofía de poder cambiar la marca tanto en una lista ordenada como desordenada, a excepción del primer valor de las listas ordenadas, en una lista ordenada se pueden establecer elementos plegados y desplegados.
+
+```wmd-examples
+
+4. Elemento 1.
++ Elemento 2.
+ # Elemento 2-1.
+ # Elemento 2-2.
+ # Elemento 2-3.
+* Elemento 3.
+ # Elemento 3-1.
+ # Elemento 3-2.
+ # Elemento 3-3.
+- Elemento 4.
+ # Elemento 4-1.
+ # Elemento 4-2.
+ # Elemento 4-3.
+* Elemento N.
+ # Elemento N-1.
+ # Elemento N-2.
+ # Elemento N-3.
+
+```
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/paragraphs.w.md b/Public/doc/es/manual/paragraphs.w.md
new file mode 100644
index 0000000..85abebe
--- /dev/null
+++ b/Public/doc/es/manual/paragraphs.w.md
@@ -0,0 +1,22 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_paragraphs
+title_text = Párrafos - WMarkDown
+```
+
+
+
+### Párrafos
+
+Para poder crear párrafos, simplemente hemos de crear textos separados por doble salto de línea al menos. Un único salto entre líneas se considerará parte del mismo párrafo.
+
+```wmd-examples
+Esto es un párrafo.
+
+Esto es otro párrafo.
+Esto sigue siendo parte de éste segundo párrafo.
+
+Este es un tercer párrafo.
+```
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/presentation_links.w.md b/Public/doc/es/manual/presentation_links.w.md
new file mode 100644
index 0000000..e0e68e7
--- /dev/null
+++ b/Public/doc/es/manual/presentation_links.w.md
@@ -0,0 +1,64 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_presentation_links
+title_text = Módulo de Links de presentación - WMarkDown
+```
+
+
+
+### Módulo de Links de presentación
+
+Este módulo está orientado a facilitar una presentación visual y estética de elementos.
+
+> [!#] Este módulo nació con la idea de presentar proyectos externos de los que depende el proyecto actual que se documenta mediante WMarkDown; lenguajes de programación y tecnologías usadas; o bien, para mostrar proyectos que hacen uso público de la tecnología que se presenta. Es un poco a modo de créditos pero se puede usar para otras muchas cosas, como presentación de usuarios, personas, miembros, etc.
+
+Este elemento consta de 3 partes:
+
+* **Título**: Viene siendo un texto de presentación o nombre del elemento en cuestión.
+* **Avatares**: Links a imágenes que representen dicho elemento. Éste permite más de una imagen pues, en orden vertical irá cogiendo el primero que le salga sin error. Al ser normalmente un recurso externo, éste puede fallar, por lo que teniendo más de una opción, éste tendrá más dificultades a que falle.
+* **Links**: Los Links son enlaces a Webs, ya sean oficiales, de información o de proyectos, entre otros, que se le pueden vincular. Por defecto, el icono del Link será el favicon del sitio Web al que se hace referencia.
+
+Para definir cada uno de los elementos, basándose en la estructura sintáctica de Python, se usarán líneas, las cuales determinan que si no tienen espacios de inicio es el título; si empieza con un asterísco es una opción para avatar; y si no, sería un Link de referencia.
+
+```wmd-examples
+
+El siguiente bloque sería un ejemplo de este módulo:
+
+[["""
+AnP
+ *https://anp.k3y.pw/images/AnP.png
+ *https://anp.k3y.pw/images/AnP-512.png
+ *https://anp.k3y.pw/favicon.ico
+ https://anp.k3y.pw/
+ https://git.k3y.pw/AnP/AnP
+CDN de KyMAN
+ *https://cdn.k3y.pw/images/CDN.png
+ *https://cdn.k3y.pw/images/CDN-512.png
+ *https://cdn.k3y.pw/favicon.ico
+ https://cdn.k3y.pw/
+ https://git.k3y.pw/KyMAN/CDN
+ErrorsManager
+ *https://errorsmanager.k3y.pw/images/ErrorsManager.png
+ *https://errorsmanager.k3y.pw/images/ErrorsManager-512.png
+ *https://errorsmanager.k3y.pw/favicon.ico
+ https://errorsmanager.k3y.pw/
+ https://git.k3y.pw/KyMAN/ErrorsManager
+Kanvas
+ *https://kanvas.k3y.pw/images/Kanvas.png
+ *https://kanvas.k3y.pw/images/Kanvas-512.png
+ *https://kanvas.k3y.pw/favicon.ico
+ https://kanvas.k3y.pw/
+ https://git.k3y.pw/KyMAN/Kanvas
+MuWeb
+ *https://muweb.k3y.pw/images/MuWeb.png
+ *https://muweb.k3y.pw/images/MuWeb-512.png
+ *https://muweb.k3y.pw/favicon.ico
+ https://muweb.k3y.pw/
+ https://git.k3y.pw/KyMAN/MuWeb
+"""]]
+
+```
+
+> [!!] Para describir alguna cosa concreta de alguno de estos elementos ha de hacerse fuera del módulo.
+
+
diff --git a/Public/doc/es/manual/quotes.w.md b/Public/doc/es/manual/quotes.w.md
new file mode 100644
index 0000000..95726bc
--- /dev/null
+++ b/Public/doc/es/manual/quotes.w.md
@@ -0,0 +1,55 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_quotes
+title_text = Quotes y comentarios - WMarkDown
+```
+
+
+
+### Quotes o comentarios
+
+Los Quotes o comentarios vienen siendo fragmentos de texto que se usan generalmente para matizar cosas dentro de lo que se quiera decir, remarcar información o simplemente añadir notas adicionales.
+Para referenciar el bloque Quote hemos de encabezar el párrafo mediante el caracter ">", lo que determinará que es un comentario o fragmento de texto explicativo.
+
+```wmd-examples
+Esto es un párrafo normal.
+
+> Esto es un Quote o comentario.
+
+Esto es otro párrafo normal.
+
+> Esto es otro Quote.
+Esto pertenece al mismo Quote.
+
+> Esto es otro Quote distinto.
+
+```
+
+Los Quotes tienen 3 modos: los comentarios comunes añadidos o notas; lo mismo pero con iconificación de contenido para advertencias, preguntas, respuestas, etc., el cual puede ser personalizado a la Web en cuestión; y como comentario de usuarios específicos, que requiere de registrar a los usuarios en el propio gestor WMarkDown.
+
+```wmd-examples
+> Esto es un comentario común o nota.
+
+> [!comment] Esto es lo mismo que lo anterior pero iconificado.
+
+> [!#] Esto es exactamente lo mismo que lo anterior pero simplificado.
+
+> [!# Comentario] Esto es lo mismo que lo anterior pero aclarando que es un comentario. El resultado se verá visualmente.
+
+> [!!] Esto es una advertencia o nota importante.
+
+> [!Q] Esto es un comentario directo.
+
+> [!?] Esto es para realizar preguntas dentro del texto.
+
+> [!>] Esto es para responder preguntas.
+
+> [!icono_personalizado Personalizado] Esto es un Quote con icono personalizado y con texto que advierte de que es un contenido personalizado.
+
+> [!@Usuario] Esto es un Quote a modo de comentario específico a una persona registrada.
+
+```
+
+Todos los los elementos pueden ser personalizables y nombrables.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/tables.w.md b/Public/doc/es/manual/tables.w.md
new file mode 100644
index 0000000..fc7225d
--- /dev/null
+++ b/Public/doc/es/manual/tables.w.md
@@ -0,0 +1,73 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_tables
+title_text = Tablas - WMarkDown
+```
+
+
+
+### Tablas
+
+Las tablas en WMarkDown no siguen ningún estandar concreto pues desde WMarkDown las consideramos altamente ineficientes, muy posiblemente por desconocimiento pero hemos hecho algunos cambios que tiran más hacia MediaWiki que a Markdown, aun así, el parecido y la funcionalidad son similares.
+
+Teniendo en cuenta que tanto a nivel de texto plano sobre WMarkDown como a nivel gráfico proceso han de ser altamente visibles, así cmo simplificar en la medida de lo posible la composición de una de éstas, se hizo de la siguiente forma.
+
+```wmd-examples
+
+A continuación montaremos una tabla.
+
+[| class="jojo"
+|^ Cabecera 1 | Cabecera 2 | Cabecera 3 | Cabecera N
+|= Título 1 | Título 2 | Título 3 | Título N
+| Elemento 1 | Elemento 2 | Elemento 3 | Elemento N
+| Elemento 1 | Elemento 2 | Elemento 3 | Elemento N
+| Elemento 1 | Elemento 2 | Elemento 3 | Elemento N
+|_ Pie 1 | Pie 2 | Pie 3 | Pie N
+|]
+
+```
+
+Como podemos observar, las tablas se abren mediante corchete y exclamación, donde la primera línea nos permite poner atributos a la misma, pero a nivel de la etiqueta TABLE en HTML. Por otro lado, tenemos los títulos, que se hacen a partir de acento circunflejo ("^") para indicar que será para la cabecera; el guión bajo ("_") para indicar que es para el pie de página; y el igual ("=") que indica que es para ambos. Las cabecerás se irán creando verticalmente según aparezcan en la tabla y no tienen que ir en ninguna posición específica.
+
+Por otro lado, decir que se puede hacer Span de las columnas, es decir, unir dos o más columnas de una forma visual y sencilla. Para ello se unirán tuberías, caracter que divide cada columna. Si no hay espacios ni nada que las separe, éstas se unirán en una única celda en esa tupla concreta.
+
+```wmd-examples
+
+[|
+|= Columna 1 | Columna 2 | Columna 3 | Columna 4 | Columna 5
+| Columna 1 | Columna 2 | Columna 3 | Columna 4 | Columna 5
+||| Columna 1-3 | Columna 4 | Columna 5
+| Columna 1 | *Columna* 2 ||| Columna 3-5
+| Columna 1 || Columna 2-3 | [https://wmarkdown.k3y.pw/#tablas Columna 4] | Columna 5
+|]
+
+```
+
+> [!#] Los Span o uniones de columnas en una celda se pueden realizar tanto en los títulos como en el cuerpo.
+
+> [!!] También hay que destacar que hay que controlar bien el número de columnas por fila para que éstas sean igual y comunes en todas.
+
+> [!!] Es importante destacar también que las celdas también serán formateadas según los parámetros de WMarkDown, como las negrillas u otras marcas que pueda haber en éstas.
+
+Finalmente, también decir que se pueden hacer celdas que pueden tener saltos de línea. Ésto se puede llevar a cabo mediante comillas tanto dobres como simples.
+
+```wmd-examples
+
+[|
+|= Columna 1 | Columna 2 | Columna 3
+| Celda 1-A | Celda 2-A | Celda 3-A
+| Celda 1-B | "Celda 2-B
+
+Esto es más contenido de la celda 2-B." | Celda 3-B
+| Celda 1-C | 'Celda 2-C
+
+Esto es más contenido de la celda 2-C.' | Celda 3-C
+|]
+
+```
+
+> [!!] Es importante destacar que las celdas se consideran subelementos, es decir, no son considerados elementos de bloque como párrafos o similares y quedan plenamente condicionadas a subelementos de bloque, por eso, en el ejemplo aquí mostrad, pese a haber doble salto de línea, éste permanece como una única línea.
+
+> [!!] Es importante mencionar también que si un texto empieza y acaba por comillas dobles o comillas simples, éstas se omitirán en el resultado final pues se entenderá que son conjuntos para gestionar en multilínea.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/text_formats.w.md b/Public/doc/es/manual/text_formats.w.md
new file mode 100644
index 0000000..1307a0e
--- /dev/null
+++ b/Public/doc/es/manual/text_formats.w.md
@@ -0,0 +1,44 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_text_formats
+title_text = Formatos de texto - WMarkDown
+```
+
+
+
+### Formatos de texto
+
+Los formatos de texto en WMarkDown se pueden generar de una forma muy básica a partir de marcas. Los más habituales son los que se representan en el siguiente ejemplo:
+
+```wmd-examples
+
+- *Esto es un texto en cursiva.*
+- **Esto es un texto en negrilla.**
+- ~~Esto es un texto tachado.~~
+- __Esto es un texto subrayado.__
+- ``Esto es un bloque de código o texto monospaciado como tal.``
+- ***Esto es un texto negrilla y cursiva.***
+- ~~*Esto es un texto tachado y en cursiva.*~~
+- ~~**Esto es un texto tachado y en negrilla.**~~
+- ~~***Esto es un texto tachado, en negrilla y cursva.***~~
+- __*Esto es un texto subrayado y en cursiva.*__
+- __**Esto es un texto subrayado y en negrilla.**__
+- __***Esto es un texto subrayado, en negrilla y cursva.***__
+- __***Esto es un texto subrayado, en negrilla y cursiva.***__
+- __~~*Esto es un texto subrayado, tachado y en cursiva.*~~__
+- __~~**Esto es un texto subrayado, tachado y en negrilla.**~~__
+- __~~***Esto es un texto subrayado, tachado, en negrilla y cursva.***~~__
+
+```
+
+> [!!] Todas estas marcas se pueden entremezclar, pero es muy importante tener encuenta que las aperturas y los cierres de estos elementos han de corresponder de dentro a fuera siempre. Si se abre, por ejemplo, una cursiva y luego una negrilla, y se cierra primero negrilla y luego cursiva, el resultado no será el esperado, siendo ejecutado sólo el primero de la lista y pudiendo ser afectado tras éste en el resto del documento.
+
+Como resumen o conclusión final tenemos los siguientes formatos:
+
+- *****: Cursiva mediante un único asterisco.
+- ******: Negrilla mediante doble asterisco.
+- **˜˜**: Texto tachado mediante doble virgulilla.
+- **__**: Texto subrayado mediante doble guión bajo.
+- **``**: Texto monoespaciado o para código mediante doble comilla o acento agudo.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/manual/titles.w.md b/Public/doc/es/manual/titles.w.md
new file mode 100644
index 0000000..4a0a6d8
--- /dev/null
+++ b/Public/doc/es/manual/titles.w.md
@@ -0,0 +1,49 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_titles
+title_text = Títulos - WMarkDown
+```
+
+
+
+### Títulos
+
+Los títulos en WMarkDown no sólo son un formato, sino también una referencia dentro de página. Es muy importante su buen uso dentro del documento para evitar no sólo conflictos con los estándares, sino también dentro del propio WMarkDown. Los títulos serían los siguientes:
+
+```wmd-examples
+## Esto sería un H2.
+
+### Esto sería un H3.
+
+#### Esto sería un H4.
+
+##### Esto sería un H5.
+
+###### Esto sería un H6.
+
+```
+
+> [!!] Hay que tener en cuenta que el WMarkDown permite **incluir** contenido entre distintos **ficheros**, y éstos pueden ir gestionados con títulos. Éstos no cambiarán tras la carga por lo que si se adjunta un archivo con títulos a la altura o superiores al actual pueden romper la dinámica del documento resultante.
+
+> [!!] También es importante destacar que el **tamaño de los títulos** va porcentuado al texto actual según formato del WMarkDown.
+
+> [!!] También es importante mencionar que **no hay títulos por encima de H6**, y **se desaconseja**, por estándar de HTML, el uso de **H1**, salvo de forma manual en la cabecera de la Web para representar el logo y/o nombre del sitio o documento.
+
+Como alternativa para seguir los estándares de MarkDown y MediaWiki, tenemos la opción de hacer los títulos de la siguiente manera:
+
+```wmd-examples
+== Esto sería un H2 ==
+
+=== Esto sería un H3 ===
+
+==== Esto sería un H4 ====
+
+===== Esto sería un H5 =====
+
+====== Esto sería un H6 ======
+
+```
+
+> [!!] Existe una alternativa en MarkDown oficial que sería para los H1 y los H2 con respecto a subrayar una línea con caracteres de igual ("=") para los H1; y con guines medios ("-") para los H2. Al trabajar H1 y H2, pese a poderlos adaptar a H2 y H3 por la filosofía de trabajo de WMarkDown, éstos no se implementaron, tanto por la complejidad a la hora de ser interpretados como por el poco uso que se vio tras un análisis inicial.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/opinions.w.md b/Public/doc/es/opinions.w.md
new file mode 100644
index 0000000..ecee62a
--- /dev/null
+++ b/Public/doc/es/opinions.w.md
@@ -0,0 +1,17 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_opinions
+title_text = Opiniones y comentarios - WMarkDown
+```
+
+
+
+## Opiniones y comentarios
+
+Esta sección va dedicada a publicar las opiniones y comentarios de usuarios cercanos a los desarrolladores del proyecto para que halla una visión externa a éste, aprobechando la confianza en éstos tanto para lo bueno como para lo malo.
+
+> [!@Srx00] Quería agradecer personalmente a todos aquellos que me han dado una opinión y/o comentario acerca de este proyecto. Lo valor mucho pues sea como crítica para aprender como apoyo a continuar con este tipo de trabajos, me son realmente importantes. ¡Muchas gracias!
+
+> [!@Srx00] Como opinión personal, es un proyecto raro, que le da mayor complejidad a la aplicación en desarrollo como cuando le metes cualquier librería que añade una nueva funcionalidad, sin embargo, es cierto que si lo vemos desde el punto de vista de la gestión de errores, creo, a nivel personal, por mi experiencia, que éste puede ser una herramienta fuerte para gestionar los errores tanto a nivel local como entre plataformas o diferentes entornos del lenguaje dentro de un mismo proyecto, sin embargo, creo de vital importancia destacar que si se puede omitir el uso de dichas funciones, por ejemplo, para aquellos errores que contengan menos de 28 verificaciones, ahorraría tanto coste de dificultad como coste de proceso. Al ser una herramienta compatible directamente con enteros, es una forma de darle eficiencia a tu proyecto y no rompería mucho la estructura de funcionamiento con esta librería en la medida de lo posible.
+
+
\ No newline at end of file
diff --git a/Public/doc/es/projects.w.md b/Public/doc/es/projects.w.md
new file mode 100644
index 0000000..4926274
--- /dev/null
+++ b/Public/doc/es/projects.w.md
@@ -0,0 +1,86 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_projects
+title_text = Proyectos - WMarkDown
+```
+
+
+
+## Proyectos
+
+El propio proyecto WMarkDown se nutre de otros proyectos para ganar propiedades y/o características. La mayoría de estos proyectos tienen licencia MIT, pero por filosofía interna creemos que es importante mencionar las tecnologías y herramientas externas que hallan sido usadas para el desarrollo de este proyecto, ayudando a la visualización de estos proyectos, tecnologías, etc. Así como ayudando a sus creadores y mantenedores dentro de un nivel profesional a nivel curricular como personal por visualización de su trabajo y habilidades compartidas con la comunidad. Es por esto que a continuación se hace una lista de las tecnologías usadas, datos básicos de las mismas, motivos de uso y los Links pertientes.
+
+[["""
+Mermaid JS
+ *https://mermaid.js.org/favicon.ico
+ *https://mermaid.js.org/mermaid-logo.svg
+ https://mermaid.js.org/
+ https://mermaid.live/
+ https://github.com/mermaid-js/mermaid
+ https://www.mediawiki.org/wiki/Extension:Mermaid
+MathJax
+ *https://www.mathjax.org/favicon.ico
+ https://www.mathjax.org/
+ https://github.com/mathjax/MathJax
+ https://es.wikipedia.org/wiki/MathJax
+highlight.js
+ *https://highlightjs.org/icon.png
+ *https://highlightjs.org/favicon.ico
+ https://highlightjs.org/
+ https://github.com/highlightjs/highlight.js
+AnP
+ *https://anp.k3y.pw/images/AnP.png
+ *https://anp.k3y.pw/images/AnP-512.png
+ *https://anp.k3y.pw/favicon.ico
+ https://anp.k3y.pw/
+ https://git.k3y.pw/AnP/AnP
+CDN de KyMAN
+ *https://cdn.k3y.pw/images/CDN.png
+ *https://cdn.k3y.pw/images/CDN-512.png
+ *https://cdn.k3y.pw/favicon.ico
+ https://cdn.k3y.pw/
+ https://git.k3y.pw/KyMAN/CDN
+"""]]
+
+Por otro lado, también tenemos tecnologías que de una forma pública hacen uso de esta tecnología, el WMarkDown para diversos fines según intereses de los autores de dichos proyectos. A continuación dejamos la lista con dichas tecnologías para visibilizar el uso de WMarkDown.
+
+[["""
+AnP
+ *https://anp.k3y.pw/images/AnP.png
+ *https://anp.k3y.pw/images/AnP-512.png
+ *https://anp.k3y.pw/favicon.ico
+ https://anp.k3y.pw/
+ https://git.k3y.pw/AnP/AnP
+CDN de KyMAN
+ *https://cdn.k3y.pw/images/CDN.png
+ *https://cdn.k3y.pw/images/CDN-512.png
+ *https://cdn.k3y.pw/favicon.ico
+ https://cdn.k3y.pw/
+ https://git.k3y.pw/KyMAN/CDN
+ErrorsManager
+ *https://errorsmanager.k3y.pw/images/ErrorsManager.png
+ *https://errorsmanager.k3y.pw/images/ErrorsManager-512.png
+ *https://errorsmanager.k3y.pw/favicon.ico
+ https://errorsmanager.k3y.pw/
+ https://git.k3y.pw/KyMAN/ErrorsManager
+PythonMapper
+ *https://pythonmapper.k3y.pw/images/PythonMapper.png
+ *https://pythonmapper.k3y.pw/images/PythonMapper-512.png
+ *https://pythonmapper.k3y.pw/favicon.ico
+ https://pythonmapper.k3y.pw/
+ https://git.k3y.pw/KyMAN/PythonMapper
+Kanvas
+ *https://kanvas.k3y.pw/images/Kanvas.png
+ *https://kanvas.k3y.pw/images/Kanvas-512.png
+ *https://kanvas.k3y.pw/favicon.ico
+ https://kanvas.k3y.pw/
+ https://git.k3y.pw/KyMAN/Kanvas
+MuWeb
+ *https://muweb.k3y.pw/images/MuWeb.png
+ *https://muweb.k3y.pw/images/MuWeb-512.png
+ *https://muweb.k3y.pw/favicon.ico
+ https://muweb.k3y.pw/
+ https://git.k3y.pw/KyMAN/MuWeb
+"""]]
+
+
\ No newline at end of file
diff --git a/Public/doc/es/targets.w.md b/Public/doc/es/targets.w.md
new file mode 100644
index 0000000..3007196
--- /dev/null
+++ b/Public/doc/es/targets.w.md
@@ -0,0 +1,82 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_targets
+title_text = Objetivos - WMarkDown
+```
+
+
+
+## Objetivos
+
+Los objetivos para poder llevar a cabo este proyecto son los siguientes:
+
++ [X] Actualizar base del proyecto.
+ + [X] Montar la aplicación AnP sobre Python y agregarlo a los servidores.
+ + [X] Preparar el HTML para las páginas WMarkDown.
+ + [X] Reestablecer el dominio local de pruebas contra AnP en vez de Apache.
++ [X] Montar estilos genéricos.
+ + [X] Adjuntar el SASS de configuración y de elementos comunes de AnP.
+ + [X] Establecer colores primarios y secundarios.
+ + [X] Rehacer el logo del WMarkDown.
++ [-] CSS.
+ + [X] Visualización general.
+ + [X] Checkboxes y Radio Buttons.
+ + [-] Visualización de los bloques de código.
+ + [X] Estilos del menú dinámico.
++ [-] ECMAScript/JavaScript.
+ + [ ] Gestión de la visuazalición de bloques de código y condición de bloques especiales.
+ + [X] Crear menú dinámico sobre entorno cliente a partir de los ID de los Headers o títulos.
+ + [X] Integrar los diccionarios del WDictionaries para unificar proyectos y actualizar formato.
+ + [X] Formatear los archivos de diccionario JSON.
+ + [X] Carga asíncrona de los diccionarios.
+ + [X] Identificación de los elementos de los diccionarios en los textos al nivel establecido.
+ + [X] Generar las cajas de muestreo de información del elemento de diccionario.
++ [-] Python.
+ + [X] Crear base independiente para que pueda ser adjuntado en cualquier proyecto.
+ + [X] Crear gestión de módulos dinámicos de forma simplificada sobre diccionarios y sistemas de Callbacks sobre patrones regulares.
+ + [X] Crear módulo de análisis directo.
+ + [X] Crear módulo de análisis vía bloque.
+ + [X] Módulo para los párrafos.
+ + [X] Módulo para los títulos y subtítulos.
+ + [X] Módulo para las listas ordenadas y desordenadas.
+ + [X] Módulo para la gestión de las tablas.
+ + [X] Módulo para fragmentos de texto en negrita.
+ + [X] Módulo para fragmentos de texto en itálica.
+ + [X] Módulo para fragmentos de texto tachado.
+ + [X] Módulo para fragmentos de texto subrayado.
+ + [X] Módulo para fragmentos de texto monoespaciado o de código.
+ + [X] Módulo para la visualización de Links.
+ + [X] Links marcados.
+ + [X] Links y Paths directos.
+ + [X] Módulo para la visualización de imagen.
+ + [-] Módulo para la visualización de vídeo.
+ + [-] Vídeo nativo.
+ + [ ] Vídeo de Youtube.
+ + [ ] Vídeo de Vimeo.
+ + [-] Módulo para la reproducción de audio.
+ + [ ] Audio nativo.
+ + [ ] Audio de Soundcloud.
+ + [ ] Reproductor de múltiples audios.
+ + [ ] Slider de imágenes y vídeos.
+ + [X] Módulo de bloques de código.
+ + [-] Quotes o comentarios.
+ + [X] Bloques crudos.
+ + [X] Bloques iconificados.
+ + [X] Bloques de comentario de usuario.
+ + [ ] Bloques anidados.
+ + [X] Inclusiones de archivos externos.
+ + [X] Integrar el WDictionaries en el proyecto WMarkDown para unificar gestión documental.
+ + [ ] Aplicar un sistema de tabulaciones adecuada para facilitar acceso al código fuente HTML.
+ + [ ] Implementar sistema de comentarios para ignorar fragmentos de texto y que no salgan como resultado futuro.
+ + [X] Implementar módulo de definición de método y/o función para documentación.
+ + [X] Módulo para visualizar muestra de color.
+ + [X] Módulo para visibilizar proyectos y recursos.
+ + [ ] Módulo para visualizar direcciones de monedas o de pago mediante String y QR con Link integrado.
+ + [ ] Módulo para comentar fragmentos que no resulten en el String de salida.
++ [X] Implementar SyntaxHightlighter para el módulo de bloque de código.
++ [X] Implementar MathJax.
++ [X] Implementar MermaidJS.
++ [ ] Implementar ejemplificación de uso del lenguaje WMarkDown "[[!wmd-examples]]".
++ [ ] Gestionar cacheados automáticos de los ficheros contra HTML para precompilaciones.
+
+
\ No newline at end of file
diff --git a/Public/doc/tests.w.md b/Public/doc/tests.w.md
new file mode 100644
index 0000000..e12ad86
--- /dev/null
+++ b/Public/doc/tests.w.md
@@ -0,0 +1,159 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_tests
+title_text = Tests - WMarkDown
+```
+
+
+
+## Tests
+
+Esto es una prueba de ***Italic-Bold***. ¿Funca? ¿Y si *ponemos esto **con negrilla**, funcionaría*?
+
+Bloque de Flowcharts de Mermaid JS:
+
+```mermaid
+flowchart TD
+
+A --> B
+B --> C
+```
+
+Bloque de funciones matemáticas:
+
+```maths
+
+f(x) = a + bc + c
+
+```
+
+Este elemento [[#F00]], que es lo mismo que [[color #F00]] y [[color red]], es una prueba de muestra de color rojo.
+
+[[@ [Integer|String|Array] ErrorsManager.bitwise(!Integer | String | Array code = "jojo", !Integer bits)]]
+
+Imagen:
+
+((!image https://images.unsplash.com/photo-1597852074816-d933c7d2b988 Esto es una prueba xD))
+
+((!picture https://images.unsplash.com/photo-1597852074816-d933c7d2b988 Esto es una prueba xD))
+
+Y esto sería un icono ((!icon https://images.unsplash.com/photo-1597852074816-d933c7d2b988 Esto es una prueba xD)) xD
+
+* Elemento A
+* Elemento B
+* Elemento C
+
+- Elemento A
+- Elemento B
+ - JoJo
+- Elemento C
+
++ Elemento A
++ Elemento B
+ - jojo
++ Elemento C
+
+# Elemento A
+# Elemento B
+#* Elemento BA
+#* Elemento BB
+#*# Elemento BBA
+# Elemento C
+
+1. Elemento A
+2. Elemento B
+3. Elemento C
+
+a. Elemento A
+b. Elemento B
+c. Elemento C
+
+A. Elemento A
+B. Elemento B
+C. Elemento C
+
+i. Elemento A
+i. Elemento B
+i. Elemento C
+
+i. Elemento A
+ii. Elemento B
+iii. Elemento C
+
+I. Elemento A
+I. Elemento B
+I. Elemento C
+
+4. Elemento 1.
++ Elemento 2.
+ # Elemento 2-1.
+ # Elemento 2-2.
+ # Elemento 2-3.
+* Elemento 3.
+ # Elemento 3-1.
+ # Elemento 3-2.
+ # Elemento 3-3.
+- Elemento 4.
+ # Elemento 4-1.
+ # Elemento 4-2.
+ # Elemento 4-3.
+* Elemento N.
+ # Elemento N-1.
+ # Elemento N-2.
+ # Elemento N-3.
+
+> [!@Srx00] jojo xDDD
+
+Esto es un texto ~~-tachado-~~ xDDD.
+
+Y esto es un texto __subrayado__ xDD.
+
+##### Esto sería un H5.
+
+###### Esto sería un H6.
+
+https://wmarkdown.k3y.pw/
+
+kyman@wmarkdown.k3y.pw
+
+[+94 683 43 12 441]
+
+===== Esto sería un H5. =====
+
+====== Esto sería un H6. ======
+
+También puedes poner direcciones como Cryptomonedas como [bitcoin:tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc] o [litecoin:tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s] entre otras.
+
+También puedes poner direcciones como Cryptomonedas como [tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc](bitcoin:tb1qujswuek3mefsm3m84g94ek40drysxe9z09yfnc Dirección Bitcoin TestNet) o [tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s](litecoin:tltc1q4xy8sg2hf6nqqrhp69aukn6md3rx8v6jlqc67s Dirección Litecoin TestNet) entre otras.
+
+A continuación montaremos una tabla.
+
+[| class="jojo"
+|^ Cabecera 1 | Cabecera 2 | Cabecera 3 | Cabecera N
+|= Título 1 | Título 2 | Título 3 | Título N
+| Elemento 1 | Elemento 2 | Elemento 3 | Elemento N
+| Elemento 1 | Elemento 2 | Elemento 3 | Elemento N
+| Elemento 1 | Elemento 2 | Elemento 3 | Elemento N
+|_ Pie 1 | Pie 2 | Pie 3 | Pie N
+|]
+
+[|
+|= Columna 1 | Columna 2 | Columna 3 | Columna 4 | Columna 5
+| Columna 1 | Columna 2 | Columna 3 | Columna 4 | Columna 5
+||| Columna 1-3 | Columna 4 | Columna 5
+| Columna 1 | *Columna* 2 ||| Columna 3-5
+| Columna 1 || Columna 2-3 | [https://wmarkdown.k3y.pw/#tablas Columna 4] | Columna 5
+|]
+
+[|
+|= Columna 1 | Columna 2 | Columna 3
+| Celda 1-A | Celda 2-A | Celda 3-A
+| Celda 1-B | "Celda 2-B
+
+Esto es más contenido de la celda 2-B." | Celda 3-B
+| Celda 1-C | 'Celda 2-C
+
+Esto es más contenido de la celda 2-C.' | Celda 3-C
+|]
+
+
\ No newline at end of file
diff --git a/Public/ecma/WMarkDown.Dictionary.ecma.js b/Public/ecma/WMarkDown.Dictionary.ecma.js
deleted file mode 100755
index b5761a8..0000000
--- a/Public/ecma/WMarkDown.Dictionary.ecma.js
+++ /dev/null
@@ -1,338 +0,0 @@
-WMarkDown.Dictionary = function(wmarkdown){
-
- const self = this;
- let started = false,
- scroll_event = null,
- z_index = 5,
- thread = null,
- cache = "";
-
- const construct = () => {};
-
- const scroll_event_function = event => {
-
- const content_box = wmarkdown.item_self.querySelector(".content"),
- half_width = content_box.offsetWidth / 2,
- half_height = content_box.offsetHeight / 2,
- font_size = window.getComputedStyle(wmarkdown.item_self, null).getPropertyValue("font-size");
-
- content_box.querySelectorAll(".content .data-dictionary-item").forEach(item => {
-
- const properties = item.getBoundingClientRect();
-
- item.setAttribute("data-left", properties.x - content_box.offsetLeft > half_width);
- item.setAttribute("data-top", properties.y - content_box.offsetTop < half_height);
- item.querySelector(".box").style.fontSize = font_size;
-
- });
-
- };
-
- const autosearch = () => wmarkdown.item_self.querySelectorAll(".data-dictionary-table").forEach(searcher => searcher.querySelector("[name=autosearch]").checked && self.search(searcher, null));
-
- this.start = () => {
-
- if(started)
- return;
- started = true;
-
- const dictionary_links = wmarkdown.settings("dictionary_links");
- dictionary_title = wmarkdown.settings("dictionary_title") || "Dictionary";
-
- scroll_event = wmarkdown.item_self.querySelector(".content").addEventListener("scroll", scroll_event_function);
- self.build();
- thread = wmarkdown.threads_add(autosearch);
-
- if(dictionary_links)
- load_links(dictionary_links.push ? dictionary_links : [dictionary_links], dictionary => {
-
- const content_box = wmarkdown.item_self.querySelector(".content-box");
- let hash = dictionary_title.toLowerCase().replace(/[^a-z\d]+/g, "-");
-
- if(!/^(.+\-)(\d+)$/.test(hash))
- hash += "-0";
- while(document.getElementById(hash))
- hash = hash.replace(/^(.+\-)(\d+)$/, (...arguments) => arguments[1] + (Number(arguments[2]) + 1));
-
- with(content_box.appendChild(document.createElement("h1"))){
- setAttribute("id", hash);
- innerText = dictionary_title;
- };
- with(wmarkdown.item_self.querySelector(".headers-menu>nav>ul").appendChild(document.createElement("li"))){
- setAttribute("data-level", 1);
- setAttribute("data-deployed", false);
- setAttribute("data-levels", 0);
- setAttribute("data-parent-deployed", true);
- setAttribute("data-id", wmarkdown.hash());
- innerHTML = (`
-
- ` + dictionary_title + `
- `);
- };
- build(dictionary, content_box.appendChild(document.createElement("form")));
-
- });
-
- };
-
- const process_description = description => {
- if(!description)
- return "";
- if(description.substr)
- return description;
- if(typeof description != "object")
- return "" + description;
-
- let html = ``;
-
- description.forEach(line => html += " " + (line || ` `));
- html += ` `;
-
- return html;
- }
-
- const mount = (dictionary, item) => item.childNodes.forEach(node => {
- if(node.hasAttribute && node.hasAttribute("data-ignore") && node.getAttribute("data-ignore") == "true")
- return;
- if(node.nodeType != Node.TEXT_NODE){
- !(node.tagName && ["noscript", "a"].includes(node.tagName.toLowerCase())) && !(node.classList && node.classList.contains("code-block")) && mount(dictionary, node);
- return;
- };
-
- let html = node.textContent;
-
- if(!node.textContent || !/[^\r\n\s\t]/.test(html))
- return;
-
- const nodes = [];
-
- dictionary.forEach(item => item.patterns.forEach((pattern, i) => pattern && (html = html.replace(pattern, (...values) => {
-
- let html = ``;
- const result = (item.results[i] || item.results[0]).replace(/\$(\d)/g, (all, i) => values[Number(i)] || "");
-
- (item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => html += ` `);
- nodes.push((`
-
- ` + result + `
- ` + process_description(item.description) + `
- ` + html + `
- ` + result + `
- `).trim());
-
- return '###' + (nodes.length - 1) + "###";
- }))));
-
- html = html.replace(/\#{3}(\d+)\#{3}/g, (...arguments) => nodes[Number(arguments[1])]);
-
- if(html == node.textContent)
- return;
-
- const span = node.parentNode.insertBefore(document.createElement("span"), node);
-
- span.setAttribute("class", "data-dictionary-block");
- span.innerHTML = html;
-
- node.remove();
-
- });
-
- const load = (files, i, callback, dictionary, patterns_used) => {
-
- if(i >= files.length){
- callback(dictionary);
- return;
- };
-
- wmarkdown.load_file(files[i], data => {
- if(data){
- try{
- JSON.parse(data).forEach(item => {
-
- const json = item.pattern.substr ? item.pattern : JSON.stringify(item.pattern);
-
- if(patterns_used.includes(json))
- return;
- patterns_used.push(json);
-
- let pattern;
- const patterns = [];
-
- if(!item.pattern)
- return;
-
- (item.pattern.push ? item.pattern : [item.pattern]).forEach(pattern => {
-
- const pattern_closed = pattern.lastIndexOf("/");
-
- try{
- pattern_closed && (pattern = new RegExp(pattern.substr(1, pattern_closed - 1), pattern.substr(pattern_closed + 1)));
- }catch(exception){};
-
- patterns.push(pattern || null);
-
- });
-
- patterns && dictionary.push(Object.assign({}, item, {
- patterns : patterns,
- results : item.result.push ? item.result : [item.result]
- }));
-
- });
- }catch(exception){console.error(exception);};
- };
- load(files, i + 1, callback, dictionary, patterns_used);
- });
-
- };
-
- const build = (dictionary, item) => {
-
- const header = (`
-
- i
- Patterns
- Results
- Words
- Meanings
- URLs
-
- `),
- hashes = {};
- let body = ``;
-
- ["search", "autosearch", "meanings", "case_sensitive"].forEach(key => hashes[key] = wmarkdown.hash());
-
- dictionary.forEach((item, i) => {
-
- let urls = ``,
- words = '';
- const results = item.words || item.results;
-
- (item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => urls += `` + link + ` `);
- (results.push ? results : [results]).forEach(word => words += '' + word + ' ');
-
- body += (`
-
- ` + i + `
- ` + item.patterns.join(` `) + `
- ` + item.results.join(` `) + `
-
- ` + (item.description.push ? item.description.join(" ") : item.description) + `
-
-
- `);
- });
-
- item.setAttribute("class", "data-dictionary-table");
- item.setAttribute("action", window.location.hash);
- item.setAttribute("method", "get");
- item.setAttribute("onsubmit", "return false;");
- item.innerHTML = (`
-
- Search
-
- Search
-
-
-
-
-
- Meanings
-
-
-
-
- Case sensitive
-
-
-
-
- Autosearch
-
-
-
- Search
-
-
-
-
-
- ` + header + `
- ` + body + `
- ` + header + `
-
-
-
- `);
- }
-
- const load_links = (links, callback) => load(links, 0, dictionary => {
-
- mount(dictionary, wmarkdown.item_self.querySelector(".content>.content-box"));
- setTimeout(scroll_event_function, 10);
-
- typeof callback == "function" && callback(dictionary);
-
- }, [], []);
-
- this.build = () => wmarkdown.item_self.querySelectorAll(".wdictionary[data-status=unloaded]").forEach(items => {
- items.setAttribute("data-status", "loading");
-
- load_links(JSON.parse(wmarkdown.utf8_decode(atob(items.getAttribute("data-json")))), dictionary => {
- build(dictionary, items.parentNode.insertBefore(document.createElement("form"), items));
- });
-
- });
-
- this.show = (element, event) => {
- element.style.zIndex = ++ z_index;
- element.setAttribute("data-show", true);
- };
- this.hide = (element, event) => element.setAttribute("data-show", false);
-
- this.search = (element, event) => {
- if(!element)
- return;
-
- while((!element.classList || !element.classList.contains("data-dictionary-table")) && (element = element.parentNode));
-
- let text = element.querySelector("[name=search]").value;
-
- if(text == cache)
- return;
- cache = text;
-
- const meanings = element.querySelector("[name=meanings]").checked,
- case_sensitive = element.querySelector("[name=case_sensitive]").checked;
-
- !case_sensitive && (text = text.toLowerCase());
-
- element.querySelectorAll("tbody>tr").forEach(word => {
-
- let words = word.querySelector("[data-field=words]").innerText,
- description = word.querySelector("[data-field=description]").innerText;
-
- if(!case_sensitive){
- words = words.toLowerCase(),
- description = description.toLowerCase();
- };
-
- word.setAttribute("data-visible", (
- !text ||
- words.indexOf(text) != -1 ||
- (meanings && description.indexOf(text) != -1)
- ));
-
- });
-
- };
-
- construct();
-
-};
diff --git a/Public/ecma/WMarkDown.Dictionary.old.ecma.js b/Public/ecma/WMarkDown.Dictionary.old.ecma.js
deleted file mode 100755
index 4a5239a..0000000
--- a/Public/ecma/WMarkDown.Dictionary.old.ecma.js
+++ /dev/null
@@ -1,299 +0,0 @@
-WMarkDown.Dictionary = function(wmarkdown){
-
- const self = this;
- let started = false,
- scroll_event = null,
- z_index = 5,
- thread = null,
- cache = "";
-
- const construct = () => {};
-
- const scroll_event_function = event => {
-
- const content_box = wmarkdown.item_self.querySelector(".content"),
- half_width = content_box.offsetWidth / 2,
- half_height = content_box.offsetHeight / 2,
- font_size = window.getComputedStyle(wmarkdown.item_self, null).getPropertyValue("font-size");
-
- content_box.querySelectorAll(".content .data-dictionary-item").forEach(item => {
-
- const properties = item.getBoundingClientRect();
-
- item.setAttribute("data-left", properties.x - content_box.offsetLeft > half_width);
- item.setAttribute("data-top", properties.y - content_box.offsetTop < half_height);
- item.querySelector(".box").style.fontSize = font_size;
-
- });
-
- };
-
- const autosearch = () => wmarkdown.item_self.querySelectorAll(".data-dictionary-table").forEach(searcher => {if(searcher.querySelector("[name=autosearch]").checked)self.search(searcher, null)});
-
- this.start = () => {
-
- if(started)
- return;
- started = true;
-
- scroll_event = wmarkdown.item_self.querySelector(".content").addEventListener("scroll", scroll_event_function);
- self.build();
- thread = wmarkdown.threads_add(autosearch);
-
- };
-
- const process_description = description => {
- if(!description)
- return "";
- if(description.substr)
- return description;
- if(typeof description != "object")
- return "" + description;
-
- let html = ``;
-
- description.forEach(line => html += " " + (line || ` `));
- html += ` `;
-
- return html;
- }
-
- const mount = (dictionary, item) => item.childNodes.forEach(node => {
- if(node.nodeType != Node.TEXT_NODE){
- if(!(node.tagName && node.tagName.toLowerCase() == "a") && !(node.classList && node.classList.contains("code-block")))
- mount(dictionary, node);
- return;
- };
-
- let html = node.textContent;
-
- if(!node.textContent || !/[^\r\n\s\t]/.test(html))
- return;
-
- const nodes = [];
-
- dictionary.forEach(item => item.patterns.forEach((pattern, i) => {if(pattern)html = html.replace(pattern, (...values) => {
-
- let html = ``;
- const result = item.results[i].replace(/\$(\d)/g, (all, i) => values[Number(i)] || "");
-
- (item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => html += ` `);
- nodes.push(`
-
-
- ` + result + `
- ` + process_description(item.description) + `
- ` + html + `
-
- ` + result + `
-
- `);
-
- return '###' + (nodes.length - 1) + "###";
- })}));
-
- html = html.replace(/\#{3}(\d+)\#{3}/g, (...arguments) => nodes[Number(arguments[1])]);
-
- if(html == node.textContent)
- return;
-
- const span = node.parentNode.insertBefore(document.createElement("span"), node);
-
- span.setAttribute("class", "data-dictionary-block");
- span.innerHTML = html;
-
- node.remove();
-
- });
-
- this.build = () => {
-
- const dictionary = [],
- patterns_used = [];
-
- wmarkdown.item_self.querySelectorAll(".data-dictionary[data-json]").forEach(items => {
-
- const data = JSON.parse(wmarkdown.utf8_decode(atob(items.getAttribute("data-json"))));
-
- if(typeof data != "object")
- return;
-
- if(data.dictionary)
- data.dictionary.forEach(item => {
-
- const json = item.pattern.substr ? item.pattern : JSON.stringify(item.pattern);
-
- if(patterns_used.includes(json))
- return;
- patterns_used.push(json);
-
- let pattern;
- const patterns = [];
-
- if(!item.pattern)
- return;
-
- (item.pattern.push ? item.pattern : [item.pattern]).forEach(pattern => {
-
- const pattern_closed = pattern.lastIndexOf("/");
-
- try{
- if(pattern_closed)
- pattern = new RegExp(pattern.substr(1, pattern_closed - 1), pattern.substr(pattern_closed + 1));
- }catch(exception){};
-
- patterns.push(pattern || null);
-
- });
-
- if(patterns)
- dictionary.push(Object.assign({}, item, {
- patterns : patterns,
- results : item.result.push ? item.result : [item.result]
- }));
-
- });
-
- });
-
- mount(dictionary, wmarkdown.item_self.querySelector(".content>.content-box"));
- setTimeout(scroll_event_function, 10);
-
- const dictionary_input = wmarkdown.item_self.querySelector(".data-dictionary");
-
- if(!dictionary_input)
- return;
-
- const item = dictionary_input.parentNode.insertBefore(document.createElement("form"), dictionary_input),
- header = (`
-
- i
- Patterns
- Results
- Words
- Meanings
- URLs
-
- `),
- hashes = {};
- let body = ``;
-
- ["search", "autosearch", "meanings", "case_sensitive"].forEach(key => hashes[key] = wmarkdown.hash());
-
- dictionary.forEach((item, i) => {
-
- let urls = ``,
- words = '';
- const results = item.words || item.results;
-
- (item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => urls += `` + link + ` `);
- (results.push ? results : [results]).forEach(word => words += '' + word + ' ');
-
- body += (`
-
- ` + i + `
- ` + item.patterns.join(` `) + `
- ` + item.results.join(` `) + `
-
- ` + (item.description.push ? item.description.join(" ") : item.description) + `
-
-
- `);
- });
-
- item.setAttribute("class", "data-dictionary-table");
- item.setAttribute("action", window.location.hash);
- item.setAttribute("method", "get");
- item.setAttribute("onsubmit", "return false;");
- item.innerHTML = (`
-
- Search
-
- Search
-
-
-
-
-
- Meanings
-
-
-
-
- Case sensitive
-
-
-
-
- Autosearch
-
-
-
- Search
-
-
-
-
-
- ` + header + `
- ` + body + `
- ` + header + `
-
-
-
- `);
-
- };
-
- this.show = (element, event) => {
- element.style.zIndex = ++ z_index;
- element.setAttribute("data-show", true);
- };
- this.hide = (element, event) => element.setAttribute("data-show", false);
-
- this.search = (element, event) => {
- if(!element)
- return;
-
- while((!element.classList || !element.classList.contains("data-dictionary-table")) && (element = element.parentNode));
-
- let text = element.querySelector("[name=search]").value;
-
- if(text == cache)
- return;
- cache = text;
-
- const meanings = element.querySelector("[name=meanings]").checked,
- case_sensitive = element.querySelector("[name=case_sensitive]").checked;
-
- if(!case_sensitive)
- text = text.toLowerCase();
-
- element.querySelectorAll("tbody>tr").forEach(word => {
-
- let words = word.querySelector("[data-field=words]").innerText,
- description = word.querySelector("[data-field=description]").innerText;
-
- if(!case_sensitive){
- words = words.toLowerCase(),
- description = description.toLowerCase();
- };
-
- word.setAttribute("data-visible", (
- !text ||
- words.indexOf(text) != -1 ||
- (meanings && description.indexOf(text) != -1)
- ));
-
- });
-
- };
-
- construct();
-
-};
diff --git a/Public/ecma/WMarkDown.Multimedia.ecma.js b/Public/ecma/WMarkDown.Multimedia.ecma.js
deleted file mode 100755
index 6342bbc..0000000
--- a/Public/ecma/WMarkDown.Multimedia.ecma.js
+++ /dev/null
@@ -1,241 +0,0 @@
-WMarkDown.Multimedia = function(wmarkdown){
-
- const self = this;
- let started = false;
-
- const construct = () => {};
-
- const error = (element, type) => {
-
- element.parentNode.setAttribute("data-status", "error");
- element.parentNode.setAttribute("data-error-type", type);
-
- return null;
- };
-
- this.image_try_next = (element, event) => {
- if(!element.hasAttribute("data-i") || !element.hasAttribute("data-src"))
- return error(element, "no_data");
-
- let images;
-
- try{
- if(!(images = JSON.parse(atob(element.getAttribute("data-src")))))
- return error(element, "no_json");
- }catch(exception){
- console.error(exception);
- return error(element, "exception");
- };
-
- const i = Number(element.getAttribute("data-i"));
-
- if(isNaN(i))
- return error(element, "i_is_nan");
- if(i >= images.length)
- return error(element, "ended")
-
- const image = new Image();
-
- image.src = images[i];
- image.onload = () => {
-
- const anchor = element.parentNode.querySelector("a");
-
- element.setAttribute("src", images[i]);
- element.parentNode.setAttribute("data-status", "loaded");
- element.parentNode.querySelector(".image-style").style.backgroundImage = "url('" + images[i] + "')";
-
- if(anchor){
- anchor.setAttribute("href", images[i]);
- anchor.innerText = images[i];
- };
-
- };
- image.onerror = () => {
- element.setAttribute("data-i", i + 1);
- self.image_try_next(element, event);
- };
-
- };
-
- this.video_try_next = (element, event) => {
- if(!element.hasAttribute("data-i") || !element.hasAttribute("data-src"))
- return error(element, "no_data");
-
- let videos;
-
- try{
- if(!(videos = JSON.parse(atob(element.getAttribute("data-src")))))
- return error(element, "no_json");
- }catch(exception){
- console.error(exception);
- return error(element, "exception");
- };
-
- const i = Number(element.getAttribute("data-i"));
-
- if(isNaN(i))
- return error(element, "i_is_nan");
- if(i >= videos.length)
- return error(element, "ended")
-
- const video = document.createElement("video");
-
- video.src = videos[i];
- video.onloadstart = () => {
- element.setAttribute("src", videos[i]);
- wmarkdown.get_mime(videos[i], mime => element.setAttribute("type", mime));
- with(element.parentNode.querySelector("a")){
- setAttribute("href", videos[i]);
- innerText = videos[i];
- };
- element.parentNode.setAttribute("data-status", "loaded");
- video.remove();
- };
- video.onerror = () => {
- element.setAttribute("data-i", i + 1);
- self.image_try_next(element, event);
- video.remove();
- };
-
- };
-
- this.audio_try_next = (element, event) => {
- if(!element.hasAttribute("data-i") || !element.hasAttribute("data-src"))
- return error(element, "no_data");
-
- let audios;
-
- try{
- if(!(audios = JSON.parse(atob(element.getAttribute("data-src")))))
- return error(element, "no_json");
- }catch(exception){
- console.error(exception);
- return error(element, "exception");
- };
-
- const i = Number(element.getAttribute("data-i"));
-
- if(isNaN(i))
- return error(element, "i_is_nan");
- if(i >= audios.length)
- return error(element, "ended")
-
- const audio = new Audio();
-
- audio.src = audios[i];
- audio.onloadstart = () => {
- element.setAttribute("src", audios[i]);
- wmarkdown.get_mime(audios[i], mime => element.setAttribute("type", mime));
- with(element.parentNode.querySelector("a")){
- setAttribute("href", audios[i]);
- innerText = audios[i];
- };
- element.parentNode.setAttribute("data-status", "loaded");
- };
- audio.onerror = () => {
- element.setAttribute("data-i", i + 1);
- self.image_try_next(element, event);
- };
-
- };
-
- const embed_try = embed => {
- if(!embed.hasAttribute("data-platform") || !embed.hasAttribute("data-id"))
- return;
- embed.setAttribute("data-status", "mounted");
-
- switch(embed.getAttribute("data-platform")){
- case "youtube":
- with(embed.appendChild(document.createElement("iframe"))){
- setAttribute("src", "https://www.youtube.com/embed/" + embed.getAttribute("data-id"));
- setAttribute("title", "YouTube video player");
- setAttribute("frameborder", 0);
- setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;");
- setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
- setAttribute("allowfullscreen", true);
- };
- break;
- case "vimeo":
- with(embed.appendChild(document.createElement("iframe"))){
- setAttribute("src", "https://player.vimeo.com/video/" + embed.getAttribute("data-id"));
- setAttribute("frameborder", 0);
- setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;");
- setAttribute("allow", "autoplay; fullscreen; picture-in-picture");
- setAttribute("allowfullscreen", true);
- };
- break;
- case "facebook":
- //
- //
- // https://www.facebook.com/gaming/497870250231404/videos/830479191217676/
- with(embed.appendChild(document.createElement("iframe"))){
- setAttribute("src", "https://www.facebook.com/video.php?v=" + embed.getAttribute("data-id"));
- setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;border:none;overflow:hidden;");
- setAttribute("scrolling", "no");
- setAttribute("frameborder", 0);
- setAttribute("allow", "autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share");
- setAttribute("allowfullscreen", true);
- };
- break;
- case "twitch":
- //
- // https://www.twitch.tv/videos/1025807282
- with(embed.appendChild(document.createElement("iframe"))){
- setAttribute("src", "https://player.twitch.tv/?video=" + embed.getAttribute("data-id") + "&parent=wmarkdown.k3y.pw");
- setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;");
- setAttribute("scrolling", "no");
- setAttribute("frameborder", 0);
- setAttribute("allow", "autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share");
- setAttribute("allowfullscreen", true);
- };
- break;
- };
-
- };
-
- const execute_in_range = (item, range, callback) => {
-
- const y = item.getBoundingClientRect().y;
-
- if(y < range && y > -range){
- item.setAttribute("data-status", "loading");
- callback();
- };
-
- };
-
- this.on_scroll = (event) => {
-
- const range = wmarkdown.item_self.querySelector(".content").offsetHeight * wmarkdown.settings("onload_media_range");
-
- wmarkdown.item_self.querySelectorAll(".multimedia-box>[data-status=unloaded]").forEach(item => execute_in_range(item, range, () => {
-
- const media = item.querySelector("audio[onerror]") || item.querySelector("[onerror]");
-
- media.onerror(media);
-
- }));
-
- wmarkdown.item_self.querySelectorAll(".multimedia-box>[data-type=embed]>[data-status=unmounted]").forEach(item => execute_in_range(item, range, () => embed_try(item)));
-
- };
-
- this.start = () => {
-
- if(started)
- return;
- started = true;
-
- const content = wmarkdown.item_self.querySelector(".content");
-
- self.on_scroll(null);
- wmarkdown.item_self.querySelector(".content").addEventListener("scroll", self.on_scroll);
-
- };
-
- this.go = (element, event) => window.open(element.querySelector("[src]").getAttribute("src"), "_blank");
-
- construct();
-
-};
diff --git a/Public/ecma/WMarkDown.WMonitor.ecma.js b/Public/ecma/WMarkDown.WMonitor.ecma.js
deleted file mode 100755
index a923481..0000000
--- a/Public/ecma/WMarkDown.WMonitor.ecma.js
+++ /dev/null
@@ -1,78 +0,0 @@
-WMarkDown.WMonitor = function(wmarkdown){
-
- const self = this;
- let started = false;
-
- const construct = () => {};
-
- this.start = () => {
-
- if(started)
- return;
- started = true;
-
- self.build();
-
- };
-
- this.build = () => {
-
- const blocks = [];
-
- wmarkdown.item_self.querySelectorAll("[data-wmonitor][data-status=unloaded]").forEach(item => {
-
- item.setAttribute("data-status", "loading");
- item.innerHTML = (`
-
- `);
- blocks.push(item.getAttribute("data-wmonitor"));
-
- });
-
- console.log(blocks);
-
- };
-
- this.set_like = (item, event) => {
-
- console.log("like");
-
- };
-
- this.set_dislike = (item, event) => {
-
- console.log("dislike");
-
- };
-
- this.view_comments = (item, event) => {
-
- console.log("comments");
-
- };
-
- construct();
-
-};
diff --git a/Public/ecma/WMarkDown.ecma.js b/Public/ecma/WMarkDown.ecma.js
old mode 100755
new mode 100644
index 2455722..c073c22
--- a/Public/ecma/WMarkDown.ecma.js
+++ b/Public/ecma/WMarkDown.ecma.js
@@ -1,711 +1,804 @@
-WMarkDown = function(input){
-
- const self = this,
- default_settings = {
- nulls : true,
- default_value : null,
- autostart : true,
- object_name : "wmarkdown",
- frames_per_second : 24,
- timeout : 2000,
- preload_timeout : 2000,
- preload_wmarkdown : true,
- hash_alphabet : "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",
- hash_length : 11,
- meanings : true,
- case_sensitive : false,
- autosearch : true,
- onload_media_range : 1.4,
- ajax_timeout : 2000,
- mime_extension_file : "/json/mime_to_extension.json",
- extension_mime_file : "/json/extension_to_mime.json",
- default_mime : "application/octet-stream",
- default_extension : "txt",
- variable_name : "wmd",
- wmd_file : "wmd.php",
- display_view : null,
- cells : 40,
- item : ".wmarkdown",
- size_multiplier : 1,
- automultiplier : 1,
- default_font_size : 14,
- size_range : [.5, 4],
- wmd_options : "wmd-options",
- wmd_options_position : "header",
- screen_sizes : [2560, 1920, 1280, 960, 640],
- default_view : "content",
- nulls : false,
- default_value : null
- },
- custom_settings = {},
- threads = [],
- hashes = [],
- mime_extension = {},
- extension_mime = {},
- screen = {
- x : 0,
- y : 0,
- multiplier : 0,
- automultiplier : 0,
- sizes : []
- },
- on_ready_events = [];
- let started = false,
- thread = null,
- threads_l = 0,
- screen_size_change_thread = null,
- last_change = 0,
- on_ready_ok = false;
-
- let object_name = this.object_name;
- let item_self = this.item_self = document;
- let hash_self = this.hash_self;
-
- let dictionary = this.dictionary;
- let multimedia = this.multimedia;
- let wmonitor = this.wmonitor;
-
- const null_or_undefined = this.null_or_undefined = value => value === undefined || value === null;
-
- const settings_priority = inputs => [].concat(!inputs ? [] : inputs.push ? inputs : [inputs], [input, custom_settings, default_settings]);
-
- const default_value = this.default_value = (_default, nulls) => _default !== undefined && ((typeof nulls == "boolean" ? nulls : settings("nulls", null, false, false)) || _default !== null ? _default : settings("default_value"), null, null, true);
-
- const settings = this.settings = (names, inputs, _default, nulls) => {
- if(!names)
- return default_value(_default, nulls);
-
- const l = (names.push ? names : names = [names]).length,
- m = (inputs = (inputs ? inputs.push ? inputs : [inputs] : []).concat([input, default_settings])).length;
-
- typeof nulls != "boolean" && (nulls = settings("nulls", null, false, false));
-
- for(let j = 0; j < m; j ++)
- if(typeof inputs[j] == "object")
- for(let i = 0; i < l; i ++)
- if(names[i] && inputs[j][names[i]] !== undefined && (nulls || inputs[j][names[i]] !== null))
- return inputs[j][names[i]];
- return default_value(_default, nulls);
- };
-
- const threads_function = () => {
-
- const date = Date.now();
-
- threads.forEach(thread => thread && thread());
-
- if(item_self && date - last_change > 2000){
- last_change = date;
-
- const mobile = self.is_mobile();
-
- item_self.setAttribute("data-mobile", mobile);
- item_self.setAttribute("data-display-view", mobile ? "mobile" : "pc");
-
- };
-
- };
-
- const threads_add = this.threads_add = method => {
- if(typeof method != "function")
- return null;
-
- let i = 0;
-
- for(; i < threads_l; i ++)
- if(!threads[i])
- break;
-
- threads[i] = method;
- threads_l = threads.length;
-
- return i;
- };
-
- const threads_remove = this.threads_remove = i => !isNaN(i) && threads[i] && (threads[i] = null);
-
- const threads_start = this.threads_start = frames_per_second => thread === null && (thread = setInterval(threads_function, 1000 / (frames_per_second || settings("frames_per_second"))));
-
- const threads_stop = this.threads_stop = () => {
- if(thread === null)
- return;
-
- clearInterval(thread);
- thread = null;
-
- };
-
- const is_dom_item = item => (
- typeof HTMLElement == "object" ? item instanceof HTMLElement :
- typeof Node == "object" ? item instanceof Node :
- item && typeof item === "object" && !isNaN(item.nodeType) && item.nodeName == "string"
- );
-
- const preload = this.preload = (selector, callback) => {
- if(typeof callback != "function")
- return;
-
- if(!selector){
- callback(null, false, "NO_SELECTOR");
- return;
- };
- if(is_dom_item(selector)){
- callback(selector, false, "OK");
- return;
- };
- if(!selector.substr){
- callback(null, false, "NO_DOM_ITEM");
- return;
- };
-
- let item;
-
- try{
- if(item = item_self.querySelector(selector)){
- callback(item, false, "OK");
- return;
- };
- }catch(error){
- callback(null, false, "BAD_SELECTOR");
- return;
- };
-
- const date = Date.now(),
- timeout = settings(["preload_timeout", "timeout"]);
- let preload = threads_add(() => {
- if(item = item_self.querySelector(selector)){
- threads_remove(preload);
- callback(item, true, "OK");
- }else if(Date.now() - date > timeout){
- threads_remove(preload);
- callback(null, true, "TIMEOUT");
- };
- });
-
- };
-
- const screen_size_change = () => {
-
- if(!item_self)
- return;
-
- const multiplier = Number(item_self.getAttribute("data-size-multiplier")),
- automultiplier = Number(item_self.getAttribute("data-size-automultiplier"));
-
- if(screen.x == item_self.offsetWidth && screen.y == item_self.offsetHeight && screen.multiplier == multiplier && screen.automultiplier == automultiplier)
- return;
-
- screen.x = item_self.offsetWidth;
- screen.y = item_self.offsetHeight;
- screen.multiplier = multiplier;
- screen.automultiplier = automultiplier;
-
- const x_higher = screen.x > screen.y;
- let size = "0";
-
- !screen.sizes.some((value, i) => i && !(value > screen.x && (size += " " + i)));
-
- item_self.setAttribute("data-direction", x_higher ? "horizontal" : "vertical");
- item_self.style.fontSize = ((
- item_self.getAttribute("data-mobile") == "true" ?
- screen[x_higher ? "y" : "x"] / Number(item_self.getAttribute("data-cells")) :
- item_self.getAttribute("data-font-size")
- ) * multiplier * automultiplier) + "px";
- item_self.setAttribute("data-screen-size", size.trim());
-
- };
-
- const button = this.button = (name, action, default_text) => {
-
- const text = default_text;
-
- return (`
-
-
- ` + text + `
-
- `);
- };
-
- const preload_wmarkdown = this.preload_wmarkdown = callback => {
- if(typeof callback != "function")
- return;
-
- if(item_self && item_self.classList && item_self.classList.contains("wmarkdown")){
- callback(item_self, false, "OK");
- return;
- };
-
- preload(".wmarkdown", wmarkdown => {
-
- if(!wmarkdown){
- callback(null, false, "NO_WMARKDOWN");
- return;
- };
-
- const mobile = self.is_mobile(),
- display_view = settings("display_view"),
- multiplier = settings(["size_multiplier", "multiplier"]),
- view_menu_items = {
- menu : item_self.querySelector(".headers-menu [data-i18n=headers_menu]"),
- content : item_self.querySelector("fieldset.content h1,h2,h3,h4,h5,h6"),
- files : item_self.querySelector("fieldset.files [data-i18n=files]")
- };
-
- item_self = self.item_self = wmarkdown;
-
- item_self.setAttribute("data-mobile", mobile);
- item_self.setAttribute("data-display-view", display_view || (mobile ? "mobile" : "pc"));
- item_self.setAttribute("data-cells", settings("cells"));
- item_self.setAttribute("data-size-multiplier", multiplier);
- item_self.setAttribute("data-size-automultiplier", settings(["size_automultiplier", "automultiplier"]));
- item_self.setAttribute("data-font-size", settings(["default_font_size", "font_size"]));
- item_self.setAttribute("data-view", settings(["default_view", "view"]));
-
- screen_size_change_thread = threads_add(screen_size_change);
-
-
- with(item_self.querySelector("header").appendChild(document.createElement("div"))){
- setAttribute("class", "view-menu buttons group");
- for(const key in view_menu_items)
- view_menu_items[key] && (innerHTML += button(key, object_name + ".view_show(this, event, '" + key + "');", view_menu_items[key]));
- };
-
- preload(settings("item"), () => {
-
- const menu_items = item_self.querySelectorAll(".headers-menu [data-levels]");
-
- menu_items.forEach((item, i) => {
- if(!i)
- return;
-
- const level = Number(item.getAttribute("data-level")),
- j = i - 1;
-
- if(level > Number(menu_items[j].getAttribute("data-level")))
- menu_items[j].setAttribute("data-levels", Number(menu_items[j].getAttribute("data-levels")) + 1);
-
- });
-
- });
-
- preload("[data-preload=wmarkdown-preloader]", preloader => {
-
- if(!preloader){
- callback(null, false, "NO_PRELOADER");
- return;
- };
-
- preloader.remove();
- setTimeout(() => callback(item_self, true, "OK"), 1000);
-
- const options_class = settings(["wmd_options", "options"]);
- let options = item_self.querySelector("." + options_class);
-
- !options && (options = item_self.querySelector(settings(["wmd_options_position", "options_position"])).appendChild(document.createElement("div"))).setAttribute("class", options_class);
-
- if(!options.querySelector("[name=multiplier]")){
-
- const range = settings(["size_range", "multiplier_range"]);
-
- with(options.appendChild(document.createElement("span"))){
- setAttribute("class", "multiplier");
- innerHTML = (`
-
-
- Less
-
-
-
-
-
-
-
- More
-
- `);
- // setAttribute("data-clicked", false);
- // setAttribute("onmousedown", object_name + ".multiplier_mouse_down(this, event);");
- // setAttribute("onmouseup", object_name + ".multiplier_mouse_up(this, event);");
- // setAttribute("onmouseout", object_name + ".multiplier_mouse_up(this, event);");
- // setAttribute("onmousemove", object_name + ".multiplier_change(this, event);");
- // innerHTML = ` `;
- };
-
- };
-
- });
-
- });
-
- };
-
- this.start = () => {
-
- if(started)
- return;
- started = true;
-
- threads_start();
-
- screen.sizes = settings("screen_sizes");
-
- preload_wmarkdown(wmarkdown => {
- if(!wmarkdown)
- return;
-
- const references = {},
- logo = wmarkdown.querySelector(".logo img"),
- temporary_image = new Image();
-
- logo.setAttribute("data-status", "loading");
- temporary_image.src = logo.getAttribute("src");
-
- temporary_image.addEventListener("load", event => logo.parentNode.setAttribute("data-status", "ok"));
- temporary_image.addEventListener("error", event => logo.parentNode.setAttribute("data-status", "error"));
-
- try{
- typeof mermaid !== undefined && mermaid.initialize({startOnLoad : true});
- }catch(no_mermaid){console.error(["MERMAID_ERROR", no_mermaid])};
-
- try{
- typeof hljs !== undefined && item_self.querySelectorAll(".code-block:not([data-special=true])>.code-box").forEach(block => block.innerHTML = hljs.highlight(block.innerHTML.replace(/&(gt|lt|amp);/g, (...arguments) => {
- return {
- amp : "&",
- gt : ">",
- lt : "<"
- }[arguments[1]] || arguments[0];
- }), {language : block.parentNode.getAttribute("data-lang")}).value);
- }catch(no_highlighter){console.error(["HIGHLIGHTER_ERROR", no_highlighter])};
-
- item_self.querySelectorAll("[type=hidden][data-index]").forEach(reference => references[reference.getAttribute("data-index")] = reference.getAttribute("data-link"));
- item_self.querySelectorAll("a[data-index]").forEach(link => link.setAttribute("href", references[link.getAttribute("data-index")] || link.getAttribute("href")));
-
- item_self.querySelectorAll(".code-block[data-lang=maths]>div").forEach(item => {
- try{
-
- const formula = MathJax.tex2chtml(item.innerText);
-
- item.innerHTML = '';
- item.appendChild(formula);
-
- }catch(no_maths){console.error(["MATHS_ERROR", no_maths])};
- });
- MathJax.startup.document.clear();
- MathJax.startup.document.updateDocument();
-
- item_self.querySelectorAll("fieldset.headers-menu nav a,fieldset.files nav a+a").forEach(anchor => anchor.setAttribute("onclick", (anchor.getAttribute("onclick") || "") + object_name + ".go_to_item(this, event);"))
-
- dictionary && dictionary.start();
- multimedia && multimedia.start();
- wmonitor && wmonitor.start();
-
- on_ready_ok = true;
- on_ready_events.forEach(event => event && event());
-
- });
-
- };
-
- const construct = () => {
-
- object_name = self.object_name = settings("object_name");
-
- WMarkDown.Dictionary && (dictionary = self.dictionary = new WMarkDown.Dictionary(self));
- WMarkDown.Multimedia && (multimedia = self.multimedia = new WMarkDown.Multimedia(self));
- WMarkDown.WMonitor && (wmonitor = self.wmonitor = new WMarkDown.WMonitor(self));
-
- settings("autostart") && self.start();
-
- };
-
- const get_menu = menu => {
-
- if(menu)
- while(menu.tagName && menu.tagName.toLowerCase() != "fieldset" && (menu = menu.parentNode));
-
- return menu || null;
- };
-
- const show_menu = (element, visible) => {
-
- const menu = get_menu(element);
-
- menu && document.querySelector(".wmarkdown>.body").setAttribute("data-" + menu.getAttribute("class").split("-")[0] + "-menu-deployed", visible);
-
- };
-
- this.hide_menu = (element, event) => show_menu(element, false);
- this.show_menu = (element, event) => show_menu(element, true);
-
- this.block_code_scroll = (element, event) => element.parentNode.querySelector("ol").style.marginTop = -element.scrollTop + "px";
-
- this.deploy = (element, event, deployed) => {
- if(!element)
- return;
-
- while(!element.hasAttribute("data-level") && (element = element.parentNode));
- if(!element)
- return;
-
- const level = Number(element.getAttribute("data-level")) + 1,
- items = element.parentNode.querySelectorAll("[data-id=" + element.getAttribute("data-id") + "]~li"),
- l = items.length;
- let parent_deployed = [];
-
- element.setAttribute("data-deployed", typeof deployed == "boolean" ? deployed : deployed = element.getAttribute("data-deployed") == "false");
-
- for(let i = 0; i < l; i ++){
-
- const current_level = Number(items[i].getAttribute("data-level"));
-
- if(current_level < level)
- break;
-
- if(deployed){
- items[i].setAttribute("data-parent-deployed", current_level == level || parent_deployed[current_level - 1]);
- parent_deployed[current_level] = items[i].getAttribute("data-deployed") == "true";
- }else
- items[i].setAttribute("data-parent-deployed", false);
-
- };
-
- };
-
- this.hash = () => {
-
- let hash,
- alphabet = settings("hash_alphabet");
- const length = settings("hash_length"),
- l = (alphabet.push ? alphabet : alphabet = ("" + alphabet).split("")).length;
-
- do{
- hash = "";
- while((hash += alphabet[Math.random() * l >> 0]).length < length);
- }while(
- hashes.includes(hash) ||
- /^\d/.test(hash) ||
- document.querySelector("." + hash + ",#" + hash + ",[name=" + hash + "]")
- );
- hashes.push(hash);
-
- return hash;
- };
-
- this.utf8_encode = string => unescape(encodeURIComponent(string));
- this.utf8_decode = string => decodeURIComponent(escape(string));
-
- const load_file = this.load_file = (url, callback) => {
-
- let ended = false;
- const ajax = new XMLHttpRequest(),
- timeout = settings(["ajax_timeout", "timeout"]),
- end = error => {
- if(ended)
- return;
- ended = true;
- typeof callback == "function" && callback(ajax.responseText, ajax.status, ajax.readyState, error == "OK", error);
- },
- date = Date.now();
-
- ajax.open("get", url, true);
- ajax.timeout = timeout;
- ajax.onreadystatechange = () => {
- if(ended)
- return;
- if(ajax.readyState == 4)
- end("OK");
- else if(Date.now() - date > timeout)
- end("FORCED_TIMEOUT");
- };
- ajax.send(null);
-
- ajax.ontimeout = () => end("TIMEOUT");
- ajax.onabort = () => end("ABORTED");
- ajax.onerror = () => end("ERROR");
-
- return ajax;
- };
-
- this.send = (variables, callback) => {
-
- let ended = false;
- const ajax = new XMLHttpRequest(),
- timeout = settings(["ajax_timeout", "timeout"]),
- end = error => {
- if(ended)
- return;
- ended = true;
- typeof callback == "function" && callback(ajax.responseText, ajax.status, ajax.readyState, error == "OK", error);
- },
- date = Date.now();
-
- ajax.open("post", settings("wmd_file"), true);
- ajax.timeout = timeout;
- ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
- ajax.onreadystatechange = () => {
- if(ended)
- return;
- if(ajax.readyState == 4)
- end("OK");
- else if(Date.now() - date > timeout)
- end("FORCED_TIMEOUT");
- };
- ajax.send(encodeURIComponent(settings("variable_name")) + "=" + btoa(JSON.stringify(variables)));
-
- ajax.ontimeout = () => end("TIMEOUT");
- ajax.onabort = () => end("ABORTED");
- ajax.onerror = () => end("ERROR");
-
- return ajax;
- };
-
- this.get_mime = (path, callback) => {
-
- const extension = path.match(/^.+\.([^\.\/]+)$/);
-
- if(!extension)
- return callback(settings("default_mime"));
-
- if(extension_mime.length){
- callback(extension_mime[extension[1]] || settings("default_mime"));
- return;
- };
-
- load_file(settings("extension_mime_file"), data => {
-
- let json = null;
-
- try{
- if(json = JSON.parse(data))
- for(const extension in json)
- extension_mime[extension] = json[extension];
- }catch(exception){};
-
- callback(extension_mime[extension[1]] || settings("default_mime"));
-
- });
-
- };
-
- this.get_extensions = (mime, callback) => {
-
- if(!mime)
- return callback(settings("default_extension"));
- if(mime_extension.length){
- callback(mime_extension[mime[1]] || settings("default_extension"));
- return;
- };
-
- load_file(settings("mime_extension_file"), data => {
-
- let json = null;
-
- try{
- if(json = JSON.parse(data))
- for(const mime in json)
- mime_extension[mime] = json[mime];
- }catch(exception){};
-
- callback(mime_extension[mime[1]] || settings("default_extension"));
-
- });
-
- };
-
- // http://detectmobilebrowsers.com
- this.is_mobile = () => {
-
- const user_agent = (navigator.userAgent || navigator.vendor || window.opera);
-
- return (
- /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(user_agent) ||
- /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(user_agent.substr(0, 4))
- );
- };
-
- // this.multiplier_change = (item, event) => item_self.setAttribute("data-size-multiplier", item.value);
- this.multiplier_mouse_down = (item, event) => item.setAttribute("data-clicked", true);
- this.multiplier_mouse_up = (item, event) => item.setAttribute("data-clicked", false);
- const multiplier_delimiter = (position, total) => position < 0 ? 0 : position > total ? total : position;
- const multiplier_resize = () => {
-
- const mark = item_self.querySelector(".wmd-options .multiplier .range-position"),
- total = item_self.querySelector(".wmd-options .multiplier .range-box").offsetWidth - mark.offsetWidth,
- range = settings("size_range"),
- position = ((range[1] - range[0]) * (mark.offsetLeft / total)) + range[0];
-
- item_self.setAttribute("data-size-multiplier", ((range[1] - range[0]) * (position / total)) + range[0]);
-
- };
- this.multiplier_change = (item, event) => {
-
- if(item.getAttribute("data-clicked") != "true")
- return;
-
- const mark = item.querySelector(".range-position"),
- total = item.offsetWidth - mark.offsetWidth,
- range = settings("size_range");
- let position = multiplier_delimiter(event.clientX - event.target.getBoundingClientRect().left - (mark.offsetWidth / 2));
-
- mark.style.left = position + "px";
- multiplier_resize();
-
- };
- this.multiplier_less = (item, event) => {
-
- const mark = item.parentNode.querySelector(".range-position"),
- total = item.offsetWidth - mark.offsetWidth;
- let position = multiplier_delimiter(mark.offsetLeft - (total / 10));
-
- mark.style.left = position + "px";
- // console.log([position, mark.offsetLeft, (total / 10), mark.style.left, mark.offsetLeft]);
- multiplier_resize();
-
- };
- this.multiplier_more = (item, event) => {
-
- const mark = item.parentNode.querySelector(".range-position"),
- total = item.offsetWidth - mark.offsetWidth;
- let position = multiplier_delimiter(mark.offsetLeft + (total / 10));
-
- mark.style.left = position + "px";
- // console.log([position, mark.offsetLeft, (total / 10), mark.style.left, mark.offsetLeft]);
- multiplier_resize();
-
- };
-
- this.view_show = (item, event, key) => item_self.setAttribute("data-view", key);
-
- this.go_to_item = (item, event) => item_self.setAttribute("data-view", "content");
-
- this.on_ready = callback => {
- if(typeof callback != "function")
- return null;
- if(on_ready_ok){
- callback();
- return null;
- };
-
- let i = 0;
- const l = on_ready_events.length;
-
- for(; i < l; i ++)
- if(!on_ready_events[i])
- break;
-
- on_ready_events[i] = callback;
-
- return i;
- };
-
- this.remove_on_ready = i => !isNaN(i) && on_ready_events[i] && (on_ready_events[i] = null);
-
- construct();
-
-};
+"use strict";
+
+/**
+ * @callback wmarkdown_ajax_callback
+ * @param {?string} response
+ * @param {!number} status
+ * @param {!number} state
+ * @param {!boolean} ok
+ * @param {!string} message
+ * @return {void}
+ */
+
+/**
+ * @constructor
+ * @param {?string|Object.} [inputs]
+ * @returns {void}
+ * @access public
+ */
+const WMarkDown = function(inputs){
+
+ /** @type {WMarkDown} */
+ const self = this,
+ /** @type {Array.} */
+ dictionary_done = [],
+ /** @type {Array.|Array.>>} */
+ dictionary = [],
+ /** @type {Array.} */
+ root_boxes = [],
+ /** @type {string} */
+ hash_alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",
+ /** @type {number} */
+ hash_length = 11,
+ /** @type {Array.} */
+ hashes = [],
+ /** @type {Array.>} */
+ type_dictionary = [
+ ["JavaScript/ECMAScript", "js", "javascript", "ecma", "ecmascript", "node", "nodejs", "typescript", "ts"],
+ ["Python", "python", "py"]
+ ];
+ /** @type {number|null} */
+ let thread_inteval = null,
+ /** @type {boolean} */
+ dictionary_loaded = false,
+ /** @type {Array. {
+
+ if(typeof inputs == "string")
+ inputs = {dictionary : inputs};
+
+ thread_inteval = setInterval(thread_method, 250);
+
+ if(inputs.dictionary){
+
+ /** @type {number} */
+ let loaded = 0;
+ /** @type {Array.} */
+ const dictionaries = inputs.dictionary instanceof Array ? inputs.dictionary : [inputs.dictionary],
+ /**
+ * @returns {void}
+ */
+ end = () => ++ loaded == dictionaries.length && (dictionary_loaded = true);
+
+ dictionaries.forEach(url => WMarkDown.prototype.get(url, data => {
+ try{
+ self.add_to_dictionary(JSON.parse(data));
+ }catch(exception){
+ console.error(exception);
+ };
+ end();
+ }));
+
+ };
+
+ };
+
+ /**
+ * @param {!Array., Array., Array.>} data
+ * @returns {void}
+ * @access public
+ */
+ this.add_to_dictionary = data => data.forEach(([patterns, definition, links]) => {
+
+ /** @type {number|null} */
+ let i = null;
+
+ patterns[0] instanceof Array || (patterns = [patterns]);
+
+ patterns.forEach(([pattern, text]) => {
+ if(!dictionary_done.includes(text)){
+ if(i === null)
+ dictionary[i = dictionary.length] = {
+ patterns : [[WMarkDown.prototype.format_pattern(pattern), text]],
+ definition : typeof definition == "string" ? definition : definition.join(""),
+ links : links
+ };
+ else
+ dictionary[i].patterns.push([WMarkDown.prototype.format_pattern(pattern), text]);
+ };
+ });
+
+ });
+
+ /**
+ * @returns {string}
+ * @access public
+ */
+ this.get_hash = () => {
+
+ /** @type {string} */
+ let hash;
+ /** @type {number} */
+ const l = hash_alphabet.length;
+
+ do{
+ hash = "";
+ while((hash += hash_alphabet[Math.random() * l >> 0]).length < hash_length);
+ }while(
+ hashes.includes(hash) ||
+ /^[0-9]/.test(hash) ||
+ document.querySelector("." + hash + ",#" + hash + ",[name=" + hash + "]")
+ );
+ hashes.push(hash);
+
+ return hash;
+ };
+
+ /**
+ * @param {!NodeList} block
+ * @returns {void}
+ * @access public
+ */
+ this.format_dictionary = block => block.childNodes.forEach((item, i) => {
+
+ /** @type {Array.>} */
+ const blocks = [];
+
+ if(item.nodeName == "#text"){
+ if(item.textContent.trim()){
+
+ /** @type {string} */
+ let html = item.textContent;
+ /** @type {Array.} */
+ const items = [];
+
+ dictionary.forEach((item, k) => {
+ item.patterns.forEach(([pattern, text]) => {
+ html = html.replace(pattern, (...matches) => {
+
+ /** @type {number} */
+ const j = items.length;
+
+ items.push([k, matches, text.replace(/\$([0-9])/g, (all, match_i) => {
+ return matches[match_i] !== null && matches[match_i] !== undefined ? matches[match_i] : "";
+ })]);
+
+ return dictionary_item_mark[0] + j + dictionary_item_mark[1];
+ });
+ });
+ });
+
+ if(html != item.textContent){
+
+ /** @type {HTMLSpanElement} */
+ const element = document.createElement("span");
+
+ blocks.push([i, element]);
+
+ element.innerHTML = html.replace(dictionary_item_mark[2], (_, j) => {
+
+ /** @type {Array.} */
+ const [k, matches, text] = items[Number(j)];
+
+ return `` + text + ` `;
+ });
+
+ };
+
+ };
+ }else if(
+ !["img", "a", "audio", "canvas", "picture"].includes((item.tagName || item.nodeName).toLowerCase()) &&
+ !["wmd-excluded", "wmd-code-block", "wmd-code-doc"].some(class_name => item.classList && item.classList.contains(class_name))
+ ){
+ self.format_dictionary(item);
+ addEventListener("click", self.dictionary_out);
+ };
+
+ blocks.forEach(([i, element]) => {
+ block.insertBefore(element, block.childNodes[i]);
+ block.childNodes[i + 1].remove();
+ });
+
+ });
+
+ /**
+ * @param {!HTMLElement} item
+ * @returns {HTMLElement|null}
+ * @access public
+ */
+ this.get_root_box = item => {
+
+ /** @type {HTMLElement|null} */
+ let box = null;
+
+ while(item && item.classList && (item = item.parentNode))
+ item.classList && item.classList.contains("wmarkdown") && (box = item);
+
+ return box;
+ };
+
+ /**
+ * @param {!HTMLUListElement} data_box
+ * @param {!String} i18n
+ * @param {!String} text
+ * @param {!String} action
+ * @returns {HTMLLIElement}
+ * @access private
+ */
+ const add_button_data = (data_box, i18n, text, action) => {
+
+ /** @type {HTMLLIElement} */
+ const button = data_box.appendChild(document.createElement("li"));
+
+ button.setAttribute("data-i18n", i18n);
+ button.setAttribute("data-i18n-without", true);
+ button.setAttribute("title", text);
+ button.setAttribute("onclick", action);
+ button.innerHTML = (`
+
+ ` + text + `
+ ` + text + `
+ `);
+
+ return button;
+ };
+
+ /**
+ * @param {!HTMLElement} box
+ * @param {!String} name
+ * @param {!Array.} [buttons]
+ * @returns {void}
+ * @access private
+ */
+ const set_special_type = (box, name, buttons) => {
+
+ while(!box.classList.contains("wmd-code-block") && (box = box.parentNode));
+
+ /** @type {HTMLUListElement} */
+ const data = box.querySelector(".data");
+
+ box.querySelector("li[data-i18n=type]>.value").innerHTML = name;
+ add_button_data(data, "view_switch", "View switch", "WMarkDown.prototype.view_switch(this, event);");
+
+ buttons && buttons.forEach(([i18n, text, action]) => add_button_data(data, i18n, text, action));
+
+ };
+
+ /**
+ * @param {!HTMLElement} content
+ * @param {!String} language
+ * @returns {HTMLDivElement}
+ * @access private
+ */
+ const build_special_type = (content, language) => {
+ content.parentNode.childNodes.forEach(item => item.tagName && item.setAttribute("data-visible", false));
+
+ /** @type {HTMLDivElement} */
+ const box = content.parentNode.appendChild(document.createElement("div"));
+
+ box.setAttribute("class", "view");
+ box.setAttribute("data-visible", true);
+ set_special_type(content, language);
+
+ return box;
+ };
+
+ /**
+ * @returns {void}
+ * @access private
+ */
+ const thread_method = () => {
+
+ /** @type {HTMLBodyElement} */
+ const body = document.querySelector("body");
+
+ document.querySelectorAll(".wmd-code-block[data-processed=false]").forEach(block => {
+
+ /** @type {string} */
+ const language = block.getAttribute("data-type").toLowerCase(),
+ /** @type {HTMLElement} */
+ content = block.querySelector(".content"),
+ /** @type {String} */
+ type = block.getAttribute("data-type").toLowerCase();
+
+ block.setAttribute("data-processed", true);
+
+ if(["math", "maths", "mathjax"].includes(language)){
+ build_special_type(content, "MathJax").innerHTML = MathJax.tex2chtml(content.innerText).outerHTML;
+ MathJax.startup.document.clear();
+ MathJax.startup.document.updateDocument();
+ }else if(["mermaid", "mermaidjs", "mermaid_js"].includes(language)){
+
+ /** @type {HTMLDivElement} */
+ const box = build_special_type(content, "Mermaid JS");
+
+ mermaid.render(self.get_hash(), content.innerText).then(graph => box.innerHTML = graph.svg);
+
+ }else
+ try{
+ content.innerHTML = hljs.highlight(content.innerText, {language : (
+ ["wmd-examples", "wmd", "wmarkdown"].includes(language) ? "markdown" :
+ language)}).value;
+ type_dictionary.some(alternatives => {
+ if(alternatives.includes(type)){
+ block.querySelector("[data-i18n=type]>.value").innerText = alternatives[0];
+ return true;
+ };
+ return false;
+ });
+ }catch(exception){};
+
+ });
+
+ if(dictionary_loaded){
+
+ /** @type {HTMLElement} */
+ const block = document.querySelector("[data-dictionary-processed=false]");
+
+ if(block && [...block.childNodes].slice(-3).some(item => (
+ item.classList &&
+ item.classList.contains("wmd-process-and-loaded")
+ ))){
+
+ block.querySelectorAll(".wmd-process-and-loaded").forEach(item => {
+ item.parentNode.hasAttribute("data-dictionary-processed") &&
+ item.parentNode.setAttribute("data-dictionary-processed", true);
+ item.remove();
+ });
+
+ self.format_dictionary(block);
+
+ };
+
+ };
+
+ document.querySelectorAll("[data-list-unprocessed=true]").forEach(list => {
+
+ /** @type {HTMLSpanElement} */
+ const deployer = list.parentNode.insertBefore(document.createElement("span"), list.parentNode.childNodes[0]);
+
+ [
+ ["data-deployed", list.getAttribute("data-deployed")],
+ ["onclick", "WMarkDown.prototype.deploy(this, event);"]
+ ].forEach(([key, value]) => deployer.setAttribute(key, value));
+ deployer.innerHTML = (`
+
+ Deploy
+ `);
+
+ list.setAttribute("data-list-unprocessed", false);
+
+ });
+
+ document.querySelectorAll(".wmd-media[data-status=unprocessed]").forEach(item => item.setAttribute("data-status", "unloaded"));
+
+ if(body){
+
+ document.querySelectorAll(".wmd-media[data-status=unloaded]").forEach((item, i) => {
+
+ /** @type {DOMRect} */
+ const bounds = item.getBoundingClientRect();
+
+ if(
+ (bounds.y + bounds.height > -100 && bounds.y < body.offsetHeight + 100) &&
+ (bounds.x + bounds.width > -100 && bounds.x < body.offsetWidth + 100)
+ ){
+
+ /** @type {HTMLElement} */
+ const main_item = item.querySelector("noscript+*");
+
+ item.setAttribute("data-status", "loading");
+
+ if(main_item.tagName.toLowerCase() == "img"){
+ [
+ ["onload", "WMarkDown.prototype.image_loaded(this, event);"],
+ ["onerror", "WMarkDown.prototype.image_load(this, event);"]
+ ].forEach(([key, value]) => main_item.setAttribute(key, value));
+ item.setAttribute("data-status", "loading");
+ self.image_load(main_item);
+ };
+
+ };
+
+ });
+
+ document.querySelectorAll(".wmarkdown[data-menu-processed=false]").forEach(block => {
+ if(block.getAttribute("data-menu-processed") == "true")
+ return;
+
+ /** @type {HTMLUListElement|null} */
+ let menu = document.querySelector(".wmd-main-menu>ul");
+ /** @type {Array.} */
+ const items = block.querySelectorAll("h1,h2,h3,h4,h5,h6");
+
+ if(items.length){
+
+ /** @type {number} */
+ let current_level = 0;
+
+ if(!menu){
+
+ /** @type {HTMLDivElement} */
+ const button = document.querySelector("header").appendChild(document.createElement("div"));
+
+ (menu = (
+ document.querySelector("[data-cells]") || document.querySelector("body")
+ ).appendChild(document.createElement("nav"))).appendChild(document.createElement("ul"));
+ menu.setAttribute("class", "wmd-main-menu");
+ menu.setAttribute("data-visible", false);
+ menu = menu.childNodes[0];
+
+ addEventListener("click", WMarkDown.prototype.hide_menu);
+
+ button.innerHTML += (`
+
+
+ Menu
+
+ `);
+ button.setAttribute("class", "wmd-main-menu-button");
+
+ };
+
+ current_level = [...items].reduce((lower, item) => {
+
+ const level = Number(item.tagName[1]);
+
+ return level < lower ? level : lower
+ }, 6);
+ items.forEach(item => {
+
+ const level = Number(item.tagName[1]),
+ menu_item = document.createElement("li"),
+ anchor = menu_item.appendChild(document.createElement("a"));
+
+ menu_item.setAttribute("data-level", level);
+ anchor.innerText = item.innerText;
+ anchor.setAttribute("href", "#" + item.getAttribute("id"));
+ anchor.setAttribute("target", "_self");
+ anchor.setAttribute("title", item.innerText);
+
+ if(current_level < level){
+
+ const subblock = menu.childNodes[menu.childNodes.length - 1];
+
+ if(!(menu = subblock.childNodes[menu.childNodes.length - 1]) || menu.tagName.toLowerCase() != "ul"){
+
+ const button_deployer = subblock.insertBefore(document.createElement("span"), subblock.childNodes[0]);
+
+ menu = subblock.appendChild(document.createElement("ul"));
+
+ button_deployer.setAttribute("data-deployed", false);
+ button_deployer.setAttribute("onclick", "WMarkDown.prototype.deploy(this, event);");
+ button_deployer.innerHTML = (`
+
+ Deploy
+ `);
+
+ };
+
+ current_level ++;
+
+ }else
+ while(current_level > level && menu.parentNode.parentNode.tagName.toLowerCase() == "ul"){
+ current_level --;
+ menu = menu.parentNode.parentNode;
+ };
+
+ menu.appendChild(menu_item);
+
+ });
+
+ };
+
+ block.setAttribute("data-menu-processed", true);
+ block.querySelectorAll(".wmarkdown[data-menu-processed=false]").forEach(subblock => subblock.setAttribute("data-menu-processed", true));
+
+ window.location.hash && (window.location.href = window.location.hash);
+
+ });
+
+ };
+
+ };
+
+ /**
+ * @param {!HTMLElement} item
+ * @param {!MouseEvent} event
+ * @returns {void}
+ * @access public
+ */
+ this.dictionary_over = (item, event) => setTimeout(() => {
+
+ /** @type {string|null} */
+ const hash = item.getAttribute("data-hash");
+
+ if(!hash || dictionary_boxes.includes(hash))
+ return;
+
+ /** @type {HTMLBodyElement} */
+ const body = document.querySelector("body"),
+ /** @type {HTMLDivElement} */
+ box = document.querySelector("body").appendChild(document.createElement("div")),
+ /** @type {DOMRect} */
+ bounds = item.getBoundingClientRect(),
+ /** @type {number} */
+ x = bounds.x + (bounds.width / 2),
+ /** @type {number} */
+ y = bounds.y + (bounds.height / 2),
+ /** @type {number} */
+ i = Number(item.getAttribute("data-i")),
+ own_keys = [];
+
+ box.setAttribute("class", "wmd-dictionary-box");
+ box.setAttribute("data-dictionary-box", hash);
+
+ dictionary_boxes.push(hash);
+
+ box.innerHTML = (`
+ ` + dictionary[i].patterns.reduce((definition, [pattern, text]) => (
+ definition.replace(pattern, () => {
+ own_keys.push(text.replace(/\$[0-9]/g, ""));
+ return dictionary_item_mark[0] + (own_keys.length - 1) + dictionary_item_mark[1];
+ })
+ ), dictionary[i].definition).replace(dictionary_item_mark[2], (all, i) => `` + own_keys[i] + ` `) + `
+ ` + dictionary[i].links.map(link => ` `).join("") + `
+ `);
+
+ box.style.zIndex = dictionary_z ++;
+ if(x > body.offsetWidth / 2)
+ box.style.right = (body.offsetWidth - x) + "px";
+ else
+ box.style.left = x + "px";
+ if(y > body.offsetHeight / 2)
+ box.style.bottom = (body.offsetHeight - y) + "px";
+ else
+ box.style.top = y + "px";
+
+ setTimeout(() => self.format_dictionary(box.querySelector(".definition")), 100);
+
+ }, 100);
+
+ /**
+ * @param {!HTMLElement} item
+ * @param {!MouseEvent} event
+ * @returns {void}
+ * @access public
+ * @static
+ */
+ this.dictionary_out = event => {
+
+ /** @type {string|null} */
+ let hash = null,
+ /** @type {HTMLElement} */
+ item = event.target,
+ /** @type {string|null} */
+ box_hash = null,
+ /** @type {string|null} */
+ item_hash = null;
+
+ while(item.classList){
+ if(item.classList.contains("wmd-dictionary-box")){
+ box_hash = hash = item.getAttribute("data-dictionary-box");
+ break;
+ }else if(item.classList.contains("wmd-dictionary-item"))
+ item_hash = hash = item.getAttribute("data-hash");
+ item = item.parentNode;
+ };
+
+ if(hash){
+
+ /** @type {number} */
+ let i = dictionary_boxes.indexOf(hash);
+
+ if(++ i){
+
+ /** @type {number} */
+ let j,
+ /** @type {number} */
+ k;
+
+ if(box_hash)
+ [j, k] = (
+ !dictionary_boxes.includes(item_hash) ? [i, dictionary_boxes.length] :
+ [i = dictionary_boxes.indexOf(item_hash) + 1, dictionary_boxes.length]);
+ else{
+ [j, k] = [0, dictionary_boxes.length];
+ i = 0;
+ };
+
+ dictionary_boxes.slice(j, k).forEach(hash => {
+ document.querySelector(".wmd-dictionary-box[data-dictionary-box=" + hash + "]").remove();
+ dictionary_boxes.splice(i, 1);
+ });
+
+ return;
+ };
+
+ };
+
+ document.querySelectorAll(".wmd-dictionary-box").forEach(box => box.remove());
+ dictionary_boxes = [];
+
+ };
+
+ constructor();
+
+};
+
+/**
+ * @param {!string} pattern
+ * @returns {RegExp}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.format_pattern = pattern => {
+
+ /** @type {RegExpMatchArray} */
+ const matches = pattern.match(/^\/(.+)\/([a-z]*)$/);
+
+ matches || console.log([pattern, matches]);
+
+ return new RegExp(matches[1], matches[2]);
+};
+
+/**
+ * @param {!string} url
+ * @param {!wmarkdown_ajax_callback} callback
+ * @returns {XMLHttpRequest}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.get = (url, callback) => {
+
+ /** @type {boolean} */
+ let ended = false;
+ /** @type {XMLHttpRequest} */
+ const ajax = new XMLHttpRequest(),
+ /** @type {number} */
+ time = Date.now(),
+ /**
+ * @param {!string} message
+ * @returns {void}
+ */
+ end = message => !ended && (ended = true) && typeof callback == "function" && callback(
+ ajax.responseText,
+ ajax.status,
+ ajax.readyState,
+ message == "OK",
+ message
+ );
+
+ ajax.open("get", url, true);
+ ajax.timeout = 2000;
+ ajax.onreadystatechange = () => {
+ if(ended)
+ return;
+ if(ajax.readyState == 4)
+ end((ajax.status >= 200 && ajax.status < 300) || [301, 302, 304].includes(ajax.status) ? "OK" : "HTTP_ERROR");
+ else if(Date.now() - time > 2000)
+ end("FORCED_TIMEOUT");
+ };
+ ajax.send(null);
+
+ ajax.onerror = () => end("ERROR");
+ ajax.onabort = () => end("ABORTED");
+ ajax.ontimeout = () => end("TIMEOUT");
+
+ return ajax;
+};
+
+/**
+ * @param {!HTMLSpanElement} item
+ * @param {!MouseEvent} event
+ * @returns {void}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.deploy = (item, event) => item.setAttribute("data-deployed", item.getAttribute("data-deployed") == "false");
+
+/**
+ * @param {!HTMLImageElement} item
+ * @param {!ErrorEvent} [event]
+ * @returns {void}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.image_load = (item, event) => {
+
+ /** @type {Array.} */
+ const images = JSON.parse(atob(item.getAttribute("data-sources"))),
+ /** @type {number} */
+ i = Number(item.getAttribute("data-i"));
+
+ if(i >= images.length){
+ item.parentNode.setAttribute("data-status", "error");
+ return;
+ };
+
+ item.setAttribute("src", images[i]);
+ item.setAttribute("data-i", i + 1);
+
+};
+
+/**
+ * @param {!HTMLImageElement} item
+ * @param {!EventTarget} [event]
+ * @returns {void}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.image_loaded = (item, event) => {
+
+ /** @type {HTMLSpanElement|Null} */
+ const span_image = item.parentNode.querySelector(".image");
+
+ item.parentNode.setAttribute("data-status", "success");
+
+ span_image && (span_image.style.backgroundImage = "url('" + item.src + "')");
+
+};
+
+/**
+ * @param {!HTMLElement} [item]
+ * @param {!EventTarget} [event]
+ * @returns {void}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.show_menu = (item, event) => document.querySelector(".wmd-main-menu").setAttribute("data-visible", true);
+
+/**
+ * @param {!EventTarget} event
+ * @returns {void}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.hide_menu = event => {
+ if(
+ event.target.parentNode.parentNode.classList &&
+ event.target.parentNode.parentNode.classList.contains("wmd-main-menu-button")
+ )
+ return;
+
+ /** @type {HTMLElement|null} */
+ const main_menu = document.querySelector(".wmd-main-menu");
+
+ if(!main_menu || main_menu.getAttribute("data-visible") == "false")
+ return;
+
+ /** @type {HTMLElement} */
+ let item = event.target;
+
+ while(item.tagName.toLowerCase() != "body" && item != main_menu)
+ item = item.parentNode;
+
+ item != main_menu && main_menu.setAttribute("data-visible", false);
+
+};
+
+/**
+ * @param {!HTMLElement} item
+ * @param {!MouseEvent} [event]
+ * @returns {void}
+ * @access public
+ * @static
+ */
+WMarkDown.prototype.view_switch = (item, event) => {
+
+ /** @type {HTMLDivElement} */
+ const box = item.parentNode.parentNode.querySelector(".code");
+
+ if(!box)
+ return;
+
+ /** @type {HTMLDivElement} */
+ const view = box.querySelector(".view"),
+ /** @type {Boolean} */
+ visible = view.getAttribute("data-visible") != "true";
+
+ view.setAttribute("data-visible", visible);
+ ["lines", "content"].forEach(key => box.querySelector("." + key).setAttribute("data-visible", !visible));
+
+};
\ No newline at end of file
diff --git a/Public/ecma2/WMarkDown.Converter.ecma.js b/Public/ecma2/WMarkDown.Converter.ecma.js
deleted file mode 100644
index ac552a8..0000000
--- a/Public/ecma2/WMarkDown.Converter.ecma.js
+++ /dev/null
@@ -1,63 +0,0 @@
-WMarkDown.converter = function(wmd, input){
-
- const self = this,
- cache = [];
- let started = false;
-
- let modules = this.modules;
-
- const construct = () => {
-
- WMarkDown.Converter.Modules && (modules = self.modules = new WMarkDown.Converter.Modules(wmd, input));
-
- };
-
- this.start = callback => {
-
- const end = status => typeof callback == "function" && callback(status)
-
- if(started){
- end(false);
- return false;
- };
- started = true;
-
- end(true);
-
- return true;
- };
-
- this.process = wmd_script => {
-
- let i = 0,
- html = ``;
- const l = cache.length,
- indexes = {},
- modules_keys = modules.get_keys();
-
- for(; i < l; i ++)
- if(cache[i] === null)
- break;
- cache[i] = {};
-
- while(modules_keys.length){
-
- const clean_i = [];
-
- modules_keys.forEach((key, i) => {
- if(!indexes[key] || indexes[key].index < 0){
- };
- });
-
- clean_i.reverse().forEach(i => {
- delete indexes[modules_keys[i]];
- modules_keys.splice(i, 1);
- });
-
- };
-
- };
-
- construct();
-
-};
\ No newline at end of file
diff --git a/Public/ecma2/WMarkDown.ecma.js b/Public/ecma2/WMarkDown.ecma.js
deleted file mode 100644
index aa92b98..0000000
--- a/Public/ecma2/WMarkDown.ecma.js
+++ /dev/null
@@ -1,37 +0,0 @@
-WMarkDown = function(input){
-
- const self = this;
- let started = false;
-
- let converter = this.converter;
-
- const construct = () => {
-
- WMarkDown.Converter && (converter = self.converter = new WMarkDown.Converter(self, input));
-
- };
-
- this.start = callback => {
-
- const end = status => typeof callback == "function" && callback(status)
-
- if(started){
- end(false);
- return false;
- };
- started = true;
-
- end(true);
-
- self.launch(["converter"], () => end(true));
-
- return true;
- };
-
- this.launch = (blocks, callback, i) => self[blocks[i || (i = 0)]] && self[blocks[i]].start ? self[blocks[i]].start(() => launch(blocks, callback, i + 1)) : launch(blocks, callback, i + 1);
-
- this.convert = wmd_code => self.converter ? self.converter.process(wmd_code) : null
-
- construct();
-
-};
\ No newline at end of file
diff --git a/Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js b/Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js
deleted file mode 100644
index 2549580..0000000
--- a/Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js
+++ /dev/null
@@ -1,49 +0,0 @@
-WMarkDown.Converter.Modules = function(wmd, input){
-
- const self = this,
- excluded_keys = ["start", "get_keys"],
- modules_keys = [];
- let started = false;
-
- const construct = () => {
-
- const to_snake_fragment = string => string ? " " + string.toLowerCase() : "";
-
- Object.keys(WMarkDown.Converter.Modules).forEach(key => {
- if(!excluded_keys.includes(key)){
-
- const key = key.replace(/([A-Z]+)?([A-Z])/g, (...matches) => (" " +
- to_snake_fragment(matches[1]) +
- to_snake_fragment(matches[2])
- ));
-
- self[key] = new WMarkDown.Converter.Modules[key](wmd);
- !(self[key].pattern instanceof Array) && (self[key].pattern = [self[key].pattern]);
-
- modules_keys.push(key);
-
- };
- });
-
- };
-
- this.start = callback => {
-
- const end = status => typeof callback == "function" && callback(status)
-
- if(started){
- end(false);
- return false;
- };
- started = true;
-
- end(true);
-
- return true;
- };
-
- this.get_keys = () => [].concat(modules_keys);
-
- construct();
-
-};
\ No newline at end of file
diff --git a/Public/ecma2/converter/modules/WMarkDown.Converter.Modules.Headers.ecma.js b/Public/ecma2/converter/modules/WMarkDown.Converter.Modules.Headers.ecma.js
deleted file mode 100644
index 8e42d80..0000000
--- a/Public/ecma2/converter/modules/WMarkDown.Converter.Modules.Headers.ecma.js
+++ /dev/null
@@ -1,10 +0,0 @@
-WMarkDown.converter.Modules.Headers = function(wmd){
-
- this.pattern = [
- /^(\#{1,6})([^\r\n\#]+)(\#{1,6})?$/m,
- /^(\={1,6})([^\r\n\=]+)(\={1,6})?$/m
- ];
-
- this.process = matches => `` + matches[2].trim() + ` `;
-
-};
\ No newline at end of file
diff --git a/Public/favicon.ico b/Public/favicon.ico
new file mode 100644
index 0000000..ff78a5c
Binary files /dev/null and b/Public/favicon.ico differ
diff --git a/Public/git_update.php b/Public/git_update.php
deleted file mode 100755
index 7db4694..0000000
--- a/Public/git_update.php
+++ /dev/null
@@ -1,18 +0,0 @@
-&1");
-
- // header("content-type: text/plain");
- //
- // $fetch = trim(shell_exec("git fetch 2>&1"));
- //
- // if(!preg_match('/(From|Desde) https:\/\//', $fetch)){
- // echo "There are not any updates.";
- // // echo "There is no update.";
- // exit(0);
- // };
- //
- // $pull = shell_exec("git pull 2>&1");
- //
- // echo $fetch . "\n\n" . $pull . "\n\nIt is already updated successfully.";
diff --git a/Public/images/WMarkDown-180.png b/Public/images/WMarkDown-180.png
new file mode 100644
index 0000000..a395181
Binary files /dev/null and b/Public/images/WMarkDown-180.png differ
diff --git a/Public/images/WMarkDown-192.png b/Public/images/WMarkDown-192.png
new file mode 100644
index 0000000..1b4d20a
Binary files /dev/null and b/Public/images/WMarkDown-192.png differ
diff --git a/Public/images/WMarkDown-270.png b/Public/images/WMarkDown-270.png
new file mode 100644
index 0000000..1e98c01
Binary files /dev/null and b/Public/images/WMarkDown-270.png differ
diff --git a/Public/images/WMarkDown-32.png b/Public/images/WMarkDown-32.png
new file mode 100644
index 0000000..898d21c
Binary files /dev/null and b/Public/images/WMarkDown-32.png differ
diff --git a/Public/images/WMarkDown-512.png b/Public/images/WMarkDown-512.png
new file mode 100644
index 0000000..91a5fef
Binary files /dev/null and b/Public/images/WMarkDown-512.png differ
diff --git a/Public/images/WMarkDown.png b/Public/images/WMarkDown.png
new file mode 100644
index 0000000..e130c34
Binary files /dev/null and b/Public/images/WMarkDown.png differ
diff --git a/Public/images/WMarkDown.svg b/Public/images/WMarkDown.svg
new file mode 100644
index 0000000..b550878
--- /dev/null
+++ b/Public/images/WMarkDown.svg
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Public/images/wmarkdown.png b/Public/images/wmarkdown.png
deleted file mode 100755
index 41f3ec5..0000000
Binary files a/Public/images/wmarkdown.png and /dev/null differ
diff --git a/Public/index.w.md b/Public/index.w.md
new file mode 100644
index 0000000..4805cba
--- /dev/null
+++ b/Public/index.w.md
@@ -0,0 +1,29 @@
+```wmd-options
+language = es
+title_i18n = wmarkdown_title_documentation
+title_text = Documentación - WMarkDown
+```
+
+
+
+[[include doc/es/description.md]]
+
+[[include doc/es/projects.w.md]]
+
+[[include doc/es/design.w.md]]
+
+[[include doc/es/integration.w.md]]
+
+[[include doc/es/manual.w.md]]
+
+[[include doc/es/faq.w.md]]
+
+[[include doc/es/bugs.w.md]]
+
+[[include doc/es/targets.w.md]]
+
+[[include doc/es/opinions.w.md]]
+
+[[include doc/es/donates.w.md]]
+
+
\ No newline at end of file
diff --git a/Public/json/WMarkDown.dict.es.kyman.json b/Public/json/WMarkDown.dict.es.kyman.json
new file mode 100644
index 0000000..b3a87b2
--- /dev/null
+++ b/Public/json/WMarkDown.dict.es.kyman.json
@@ -0,0 +1,660 @@
+[[
+ [
+ ["/\\bwmarkdown\\b/ig", "WMarkDown"],
+ ["/\\b(wmd\\b|w\\.m\\.d\\.|w\\. +m\\. +d\\. +)/ig", "WMD"]
+ ], [
+ "El WMarkDown es un proyecto que nos permite hacer documentación y textos ",
+ "formateados desde un lenguaje de marcas sencillo que parte como idea de ",
+ "lenguajes de marcas como MarkDown y MediaWiki, personalizado a usos más ",
+ "extensos, flexibles y fáciles."
+ ], [
+ "https://wmarkdown.k3y.pw/",
+ "https://git.k3y.pw/Whalers/WMarkDown"
+ ]
+], [
+ ["/\\bmedia *wiki\\b/gi", "MediaWiki"], [
+ "MediaWiki es un proyecto Free Open Source que viene siendo la base de Webs ",
+ "como Wikipedia entre otros, el cual permite gestionar publicaciones y ",
+ "documentación en un entorno flexible, abierto y extendido con una gran ",
+ "comunidad que lo sustenta."
+ ], [
+ "https://www.mediawiki.org/",
+ "https://es.wikipedia.org/wiki/MediaWiki",
+ "https://github.com/wikimedia/mediawiki"
+ ]
+], [
+ [
+ ["/\\bmarkdown\\b/gi", "Markdown"],
+ ["/(?[data-icon]::before{
- display : inline-block;
- width : 1em;
- text-align : center;
- }
-
- .groups,.buttons{
- display : block;
- &>*{
- float : left;
- border-radius : 0em;
- }
- &>:first-child{border-radius : $border-radius 0em 0em $border-radius;}
- &>:last-child{border-radius : 0em $border-radius $border-radius 0em;}
- }
-
- header,&>.body,footer,main{
- position : absolute;
- left : 0em;
- width : 100%;
- overflow : hidden;
- box-sizing : border-box;
- }
- header,footer{
- color : $color-back;
- background-color : $color-fore;
- }
-
- header{
- top : 0em;
- height : $header-height;
- z-index : 30;
- .logo{
- height : $header-height * .4;
- margin : .1em .5em;
- font-weight : 900;
- a{
- display : inline-block;
- height : 100%;
- &>span{vertical-align : middle;}
- }
- // .image{display : none;}
- .text{
- display : inline-block;
- margin : .3em 0em;
- }
- span[style]{display : none;}
- .image{
- display : inline-block;
- height : 100%;
- &[data-status=loading],&[data-status=error]{display : none;}
- }
- img{
- width : auto;
- height : 100%;
- }
- }
- .main-menu{
- position : absolute;
- top : 2em;
- left : 50%;
- width : 40em;
- margin-left : -20em;
- text-align : center;
- ul{
- margin : 0em;
- padding : 0em;
- list-style-type : none;
- }
- li{
- display : inline-block;
- margin : 0em 1em;
- white-space : nowrap;
- }
- }
- .wmd-options{
- display : none;
- position : absolute;
- top : 0em;
- right : 0em;
- margin : .2em .8em;
- .multiplier{
- display : inline-block;
- width : 100px;
- height : 20px;
- background-color : #88F;
- }
- }
- .view-menu{
- button{
- transition-property : color border-color background-color opacity;
- [data-icon]::before{margin : 0em;}
- [data-i18n]{display : none;}
- }
- }
- }
-
- &>.body,main{
- top : $header-height;
- bottom : $footer-height;
- color : $color-fore;
- background-color : $color-back;
- z-index : 10;
- &>.headers-menu,&>.content,&>.files{
- position : absolute;
- top : $margin-boxes;
- bottom : $margin-boxes;
- box-sizing : border-box;
- }
- &>.content>div{padding : 0em $content-internal-margin;}
- &>.headers-menu,&>.files{
- nav{
- position : absolute;
- top : 0em;
- left : 0em;
- width : 100%;
- height : 100%;
- padding : 1em;
- overflow : auto;
- box-sizing : border-box;
- }
- ul{
- margin : 0em;
- padding : 0em;
- list-style-type : none;
- @for $level from 0 through 6 {[data-level='#{$level + 1}']{margin-left : $menu-margin-level * $level;}}
- }
- li{white-space : nowrap;}
- .menu-buttons{
- position : absolute;
- top : 0em;
- margin : .2em;
- margin-top : -1.8em;
- [data-icon]::before{margin : 0em;}
- span[data-i18n]{display : none;}
- }
- }
- &>.headers-menu{
- left : $margin-boxes;
- width : $menu-headers-width;
- .menu-buttons{left : $margin-boxes;}
- }
- &[data-headers-menu-deployed=false]{
- &>.content{left : $content-margin;}
- .headers-menu{
- width : auto;
- padding-left : 3em;
- nav{display : none;}
- button{
- &[data-i18n=show]{display : inline-block;}
- &[data-i18n=hide]{display : none;}
- }
- }
- }
- &[data-files-menu-deployed=false]{
- &>.content{right : $content-margin;}
- .files{
- width : auto;
- padding-right : 3em;
- nav{display : none;}
- button{
- &[data-i18n=show]{display : inline-block;}
- &[data-i18n=hide]{display : none;}
- }
- }
- }
- &[data-headers-menu-deployed=true] .headers-menu button{
- &[data-i18n=show]{display : none;}
- &[data-i18n=hide]{display : inline-block;}
- }
- &[data-files-menu-deployed=true] .files button{
- &[data-i18n=show]{display : none;}
- &[data-i18n=hide]{display : inline-block;}
- }
- &>.content{
- top : 0em;
- left : $menu-headers-width + $content-margin;
- right : $menu-files-width + $content-margin;
- bottom : 0em;
- margin : 0em (2 * $margin-boxes);
- padding : 1em 0em;
- overflow : auto;
- legend{display : none;}
- .padding-bottom{height : 1em;}
- }
- &>.files{
- right : $margin-boxes;
- width : $menu-files-width;
- .menu-buttons{right : $margin-boxes;}
- }
- &>fieldset{
- border : none;
- &>legend{
- display : block;
- width : 100%;
- border-bottom : (1.4 * $border-size) dotted $color-grey;
- color : $color-fore;
- font-weight : 900;
- font-size : 1.2em;
- text-align : center;
- box-sizing : border-box;
- }
- }
- [data-parent-deployed=false]{display : none;}
- }
-
- footer{
- bottom : 0em;
- height : $footer-height;
- z-index : 20;
- .license{
- display : block;
- width : 100%;
- text-align : center;
- font-size : .75em;
- font-weight : 900;
- img{
- height : 1.1em;
- margin-left : .4em;
- }
- &>*{vertical-align : middle;}
- }
- }
-
- &[data-view=menu] .view-menu{
- button[data-i18n=menu]{opacity : 1;}
- button[data-i18n=content]{opacity : .5;}
- button[data-i18n=files]{opacity : .5;}
- }
- &[data-view=content] .view-menu{
- button[data-i18n=menu]{opacity : .5;}
- button[data-i18n=content]{opacity : 1;}
- button[data-i18n=files]{opacity : .5;}
- }
- &[data-view=files] .view-menu{
- button[data-i18n=menu]{opacity : .5;}
- button[data-i18n=content]{opacity : .5;}
- button[data-i18n=files]{opacity : 1;}
- }
-
- // Responsive.
- &[data-display-view=pc]{
- .view-menu{display : none;}
- }
- &[data-display-view=mobile]{
- .view-menu{
- display : block;
- position : absolute;
- bottom : 0em;
- right : 0em;
- margin : .3em 1em;
- }
- .headers-menu,.files{.menu-buttons{display : none;}}
- fieldset{&.headers-menu,&.content,&.files{
- top : 0em;
- left : 0em;
- right : auto;
- bottom : auto;
- margin : 0em;
- padding : 0em;
- width : 100%;
- height : 100%;
- }}
- &[data-view=menu]{
- fieldset.headers-menu{display : block;}
- fieldset.content{display : none;}
- fieldset.files{display : none;}
- }
- &[data-view=content]{
- fieldset.headers-menu{display : none;}
- fieldset.content{display : block;}
- fieldset.files{display : none;}
- }
- &[data-view=files]{
- fieldset.headers-menu{display : none;}
- fieldset.content{display : none;}
- fieldset.files{display : block;}
- }
- }
- &[data-screen-size~="3"]{
- .main-menu a [data-i18n]{display : none;}
- header .logo .text{font-size : .6em;}
- }
- &[data-screen-size~="4"]{
- header .logo .text{display : none;}
- .main-menu li{margin : 0em .3em;}
- }
-
-}
diff --git a/Public/scss/WMarkDown.components.scss b/Public/scss/WMarkDown.components.scss
deleted file mode 100755
index ab1f428..0000000
--- a/Public/scss/WMarkDown.components.scss
+++ /dev/null
@@ -1,487 +0,0 @@
-.wmarkdown{
-
- // Checkbox y Radio Buttons.
- label{&.checkbox,&.radio,&.tick{
- display : inline-block;
- cursor : pointer;
- input{display : none;}
- [data-icon]::before{margin : 0em;}
- }}
-
- // CodeBlocks.
- .code-block{
- display : block;
- position : relative;
- width : 80%;
- height : auto;
- margin-left : 10%;
- font-size : .8em;
- overflow : hidden;
- box-sizing : border-box;
- &[data-special=false]{max-height : 35em;}
- &>ul{
- position : absolute;
- top : 0em;
- left : 0em;
- margin : 0em;
- padding : 0em;
- white-space : normal;
- li{
- display : inline-block;
- margin : 0em .2em;
- padding : .2em .8em;
- background-color : mix($color-grey, $color-back, 20%);
- vertical-align : middle;
- border : $border-size solid $color-grey;
- border-radius : .4em;
- [data-i18n]{
- display : none;
- font-weight : 900;
- &::after{
- content : ":";
- margin-right : .4em;
- }
- }
- }
- }
- .lines{
- position : relative;
- top : 0em;
- left : 0em;
- overflow : hidden;
- ol{
- width : 100%;
- margin : 0em;
- margin-top : -.3em;
- margin-left : 4em;
- padding : 0em;
- box-sizing : border-box;
- li{
- &:nth-child(2n){background-color : mix(#FFF, $color-back, 50%);}
- &:nth-child(2n + 1){background-color : mix(#FFF, $color-back, 20%);}
- }
- }
- }
- .code-box{
- position : absolute;
- top : 3.2em;
- left : 4em;
- right : 0em;
- max-height : 31em;
- overflow : auto;
- }
- &>div{&,& *{font-family: $font-mono;}}
- }
-
- .header-file-note{
- margin-top : 2em;
- font-size : .85em;
- color : $color-grey;
- @for $i from 1 through 6{&+h#{$i}{margin-top : 0em;}}
- }
-
- .data-dictionary-item{
- display : inline-block;
- position : relative;
- border-bottom : $border-size dotted;
- cursor : help;
- &[data-left=true]>.box{
- left : auto;
- right : 0em;
- }
- &[data-left=false]>.box{
- left : 0em;
- right : auto;
- }
- &[data-top=false]>.box{
- top : auto;
- bottom : 1em;
- }
- &[data-top=true]>.box{
- top : 1em;
- bottom : auto;
- }
- &[data-show=false]>.box{display : none;}
- .box{
- display : block;
- position : absolute;
- width : $dictionary-item-width;
- height : auto;
- max-height : $dictionary-item-height;
- padding : .5em;
- color : $color-fore;
- font-weight : 400;
- border : $border-size solid $color-fore;
- background-color : mix(rgba(0, 0, 0, 0), $color-back, 5%);
- overflow : hidden;
- box-sizing : border-box;
- border-radius : 1em;
- box-shadow : .1em .1em .2em $color-fore;
- &>span+span{display : block;}
- }
- .result{display : none;}
- .description{
- height : $dictionary-item-height - $dictionary-link-size - 2em;
- text-align : center;
- overflow : auto;
- .paragraph{
- display : block;
- &+span{margin-top : 1em;}
- }
- }
- .links{
- height : $dictionary-link-size + 1.1em;
- margin : .5em 0em;
- text-align : center;
- white-space : nowrap;
- overflow-x : auto;
- overflow-y : hidden;
- &>a{
- display : inline-block;
- width : $dictionary-link-size;
- height : $dictionary-link-size;
- margin : 0em .5em;
- border : $border-size solid $color-fore;
- background-color : #FFF;
- background-position : center center;
- background-size : cover;
- box-sizing : border-box;
- border-radius : $dictionary-link-size * .5;
- }
- }
-
- [data-site=wikipedia_org],[data-site=es_wikipedia_org],[data-site=en_wikipedia_org]{background-image : url('https://wikipedia.org/static/apple-touch/wikipedia.png');}
- [data-site=git_a3do_net],[data-site=git_k3y_pw]{background-image : url('https://about.gitlab.com/ico/favicon-192x192.png');}
- [data-site=youtube_com],[data-site=www_youtube_com]{background-image : url('https://www.youtube.com/s/desktop/c20c1e6c/img/favicon_144.png');}
- [data-site=www_mediawiki_org]{background-image : url('https://www.mediawiki.org/static/apple-touch/mediawiki.png');}
- [data-site=github_com]{background-image : url('https://github.com/fluidicon.png');}
-
- }
-
- .data-dictionary-table{
- display : block;
- position : relative;
- fieldset{border : none;}
- legend,tfoot,[data-field=i],[data-field=patterns],[data-field=results],.checkbox>[data-i18n]{display : none;}
- [data-field=urls] li{
- word-break : break-all;
- word-wrap : break-word;
- }
- .search{
- display : table;
- width : 100%;
- box-sizing : border-box;
- &>*{
- display : table-cell;
- white-space : nowrap;
- }
- .field{&,input{
- width : 100%;
- box-sizing : border-box;
- }}
- &>label{
- font-weight : 900;
- &::after{
- content : ":";
- margin-right : .4em;
- }
- }
- }
- th,td{
- width : 40%;
- &[data-field=words]{width : 20%;}
- }
- td{padding : 1em .4em;}
- thead,tbody{
- display : block;
- tr:not([data-visible=false]){display : table;}
- &,tr{width : 100%;}
- }
- tbody{
- max-height : 30em;
- overflow : auto;
- &>tr{
- &:nth-child(2n + 1)>td{background-color : mix(#FFF, $color-back, 50%);}
- &:nth-child(2n)>td{background-color : mix(#FFF, $color-back, 20%);}
- &:hover>td{background-color : mix(#FFF, $color-back, 75%);}
- }
- }
- }
-
- .multimedia-box{
- display : inline-block;
- position : relative;
- width : 100%;
- text-align : center;
- // [data-type]>a,.image-style{display : none;}
- [data-type=image],[data-type=images]{
- img,a{display : none;}
- .image-style{
- display : inline-block;
- width : 100%;
- height : 100%;
- background-position : center center;
- background-repeat : no-repeat;
- background-size : contain;
- }
- }
- video{
- width : auto;
- width : 100%;
- }
- [data-type=audio]{
- min-width : 10em;
- &>.multimedia-box[data-multiple=false]>span{
- left : 0em;
- width : 100%;
- }
- a{display : none;}
- }
- audio{
- position : absolute;
- top : 100%;
- left : 10%;
- width : 80%;
- margin-top : -6em;
- box-sizing : border-box;
- z-index : 20;
- opacity : .7;
- }
- .text{
- position : absolute;
- bottom : 0em;
- left : 0em;
- width : 100%;
- margin : .5em;
- text-align : center;
- text-shadow :
- 0em 0em .1em $color-fore,
- 0em 0em .075em $color-fore,
- 0em 0em .05em $color-back,
- 0em 0em .025em $color-back;
- }
- [data-type]{
- display : inline-block;
- position : relative;
- margin : 1em;
- }
- &[data-multiple=true]{
- &>span{
- width : 25%;
- height : 10em;
- }
- }
- &[data-multiple=false]{
- &>span{
- width : 80%;
- height : 25em;
- text-align : center;
- }
- }
- &[data-multiple]>[data-links-count]{height : auto;}
- &[data-multiple] [data-platform]{
- display : inline-block;
- position : relative;
- width : 20em;
- height : 10em;
- margin : .5em;
- }
- .multimedia-box{[data-type]{
- position : absolute;
- top : 0em;
- left : 0em;
- width : 100%;
- height : 100%;
- margin : 0em;
- }}
- [data-platform],&[data-multiple=true]>[data-type=audio]>.multimedia-box,[data-platform]{
- width : 20em;
- height : 10em;
- }
- [data-links-count='1']>[data-platform],&[data-multiple=false]>[data-type=audio]>.multimedia-box{
- width : 80%;
- height : 25em;
- }
- }
-
- .links-group{
- text-align : center;
- a{
- display : inline-block;
- position : relative;
- width : 6em;
- height : 7.5em;
- margin : 1em;
- overflow : hidden;
- opacity : .7;
- transition-duration : $transition-out;
- transition-property : color,opacity;
- img{display : none;}
- &:hover{
- opacity : 1;
- transition-duration : $transition-in;
- }
- [data-status]{
- display : block;
- position : absolute;
- top : 0em;
- left : 0em;
- width : 6em;
- height : 6em;
- }
- .text{
- display : block;
- position : absolute;
- left : 0em;
- bottom : 0em;
- width : 100%;
- margin : 0em;
- text-align : center;
- }
- .image-style{
- display : inline-block;
- width : 100%;
- height : 100%;
- background-position : center center;
- background-repeat : no-repeat;
- background-size : contain;
- }
- }
- }
-
- .special-text-i .text{font-weight : 900;}
-
- .quote{
- padding : 1em;
- border : .1em dotted $color-grey;
- }
-
- .wdoc{
- position : relative;
- border : .1.5em solid $color-grey;
- background-color : mix(#FFF, $color-back, 50%);
- border-radius : .4em;
- &[data-language]>legend{
- display : block;
- padding : 0em .4em;
- .name{font-weight : 900;}
- .language{
- margin-left : .4em;
- &::before{content : "[";}
- &::after{content : "]";}
- }
- }
- .structure{
- .return-type{
- margin-right : .4em;
- &::before{content : "[";}
- &::after{content : "]";}
- }
- .attributes{
- display : inline-block;
- margin : 0em;
- padding : 0em;
- list-style-type : none;
- &::before{content : "(";}
- &::after{content : ")";}
- .attribute-status,.attribute-description,.return{display : none;}
- .attribute-type{
- margin-left : .4em;
- span{font-style : italic;}
- &::before{
- content : "[";
- margin-right : .2em;
- }
- &::after{
- content : "]";
- margin-left : .2em;
- }
- }
- }
- .attribute+span::before{
- content : ",";
- margin-right : .4em;
- }
- .attribute[data-status=optional]::after{content : "?";}
- }
- .attribute-type>span+span::before{
- content : ",";
- margin-right : .4em;
- }
- .attributes-data{
- display : table;
- width : 100%;
- margin-top : 1em;
- box-sizing : border-box;
- &>span{
- display : table-row;
- &>span{display : table-cell;}
- }
- &>.return{font-style : italic;}
- }
- &>.data{
- margin : 0em;
- margin-top : 1em;
- padding : 0em;
- list-style-type : none;
- li{
- padding-bottom : .1em;
- &:hover{
- padding-bottom : 0em;
- border-bottom : .1em dotted $color-grey;
- }
- &>:first-child{
- display : inline-block;
- width : 10em;
- height : 1.2em;
- overflow : hidden;
- &::before{content : "@";}
- }
- &>:last-child{margin-left : .4em;}
- }
- }
- div.attributes-data>*{
- &>*{padding-bottom : .1em;}
- &:hover>*{
- padding-bottom : 0em;
- border-bottom : .1em dotted $color-grey;
- }
- }
- [data-with-value=false]{display : none;}
- .deprecated{
- font-weight : 900;
- &::before{content : "(";}
- &::after{
- content : ")";
- margin-right : .4em;
- }
- }
- &[data-deprecated=true]{
- opacity : .6;
- transition-duration : $transition-out;
- transition-property : opacity;
- &:hover{
- opacity : 1;
- transition-duration : $transition-in;
- }
- }
- &+.wdoc{margin-top : 1em;}
- }
-
- .wmd-table{
- width : 80%;
- margin-left : 10%;
- border-collapse : collapse;
- &{border : .1em solid $color-fore;}
- td,th{border : .1em solid $color-grey;}
- tr td{
- transition-duration : $transition-out;
- transition-property : background-color;
- }
- tr:hover td{transition-duration : $transition-in;}
- tbody>tr:nth-child(2n)>td{background-color : mix($color-back, #FFF, 80%);}
- tbody>tr:nth-child(2n + 1)>td{background-color : mix($color-back, #000, 95%);}
- tbody>tr:hover>td{background-color : mix($color-back, #FFF, 30%);}
- }
-
-}
diff --git a/Public/scss/WMarkDown.css b/Public/scss/WMarkDown.css
old mode 100755
new mode 100644
index 17fa852..1fe79f9
--- a/Public/scss/WMarkDown.css
+++ b/Public/scss/WMarkDown.css
@@ -1,753 +1,1411 @@
-.wmarkdown {
- display: block;
- position: relative;
- top: 0em;
- left: 0em;
- width: 100%;
- height: 100%;
- overflow: hidden; }
- .wmarkdown, .wmarkdown * {
- font-family: "Roboto"; }
- .wmarkdown [data-visible=false] {
- display: none; }
- .wmarkdown a[href], .wmarkdown button, .wmarkdown [type=button], .wmarkdown [type=submit], .wmarkdown [type=reset], .wmarkdown [onclick] {
- color: #2272D4;
- cursor: pointer;
- text-decoration: none;
- transition-duration: 1s; }
- .wmarkdown a[href]:hover, .wmarkdown button:hover, .wmarkdown [type=button]:hover, .wmarkdown [type=submit]:hover, .wmarkdown [type=reset]:hover, .wmarkdown [onclick]:hover {
- color: #D47222;
- transition-duration: 0.2s; }
- .wmarkdown a[href], .wmarkdown [onclick] {
- transition-property: color; }
- .wmarkdown button, .wmarkdown [type=button], .wmarkdown [type=submit], .wmarkdown [type=reset] {
- background-color: #dbe3ec;
- border: 0.1em solid #2272D4;
- border-radius: 0.3em;
- transition-property: color,background-color,border-color; }
- .wmarkdown button:hover, .wmarkdown [type=button]:hover, .wmarkdown [type=submit]:hover, .wmarkdown [type=reset]:hover {
- background-color: #ece3db;
- border-color: #D47222; }
- .wmarkdown [data-icon]::before {
- margin-right: .4em;
- font-family: "FA5FR"; }
- .wmarkdown [data-deployed] > [data-icon]::before {
- display: inline-block;
- width: 1em;
- text-align: center; }
- .wmarkdown .groups, .wmarkdown .buttons {
- display: block; }
- .wmarkdown .groups > *, .wmarkdown .buttons > * {
- float: left;
- border-radius: 0em; }
- .wmarkdown .groups > :first-child, .wmarkdown .buttons > :first-child {
- border-radius: 0.3em 0em 0em 0.3em; }
- .wmarkdown .groups > :last-child, .wmarkdown .buttons > :last-child {
- border-radius: 0em 0.3em 0.3em 0em; }
- .wmarkdown header, .wmarkdown > .body, .wmarkdown footer, .wmarkdown main {
- position: absolute;
- left: 0em;
- width: 100%;
- overflow: hidden;
- box-sizing: border-box; }
- .wmarkdown header, .wmarkdown footer {
- color: #EFEFEF;
- background-color: #222; }
- .wmarkdown header {
- top: 0em;
- height: 4em;
- z-index: 30; }
- .wmarkdown header .logo {
- height: 1.6em;
- margin: .1em .5em;
- font-weight: 900; }
- .wmarkdown header .logo a {
- display: inline-block;
- height: 100%; }
- .wmarkdown header .logo a > span {
- vertical-align: middle; }
- .wmarkdown header .logo .text {
- display: inline-block;
- margin: .3em 0em; }
- .wmarkdown header .logo span[style] {
- display: none; }
- .wmarkdown header .logo .image {
- display: inline-block;
- height: 100%; }
- .wmarkdown header .logo .image[data-status=loading], .wmarkdown header .logo .image[data-status=error] {
- display: none; }
- .wmarkdown header .logo img {
- width: auto;
- height: 100%; }
- .wmarkdown header .main-menu {
- position: absolute;
- top: 2em;
- left: 50%;
- width: 40em;
- margin-left: -20em;
- text-align: center; }
- .wmarkdown header .main-menu ul {
- margin: 0em;
- padding: 0em;
- list-style-type: none; }
- .wmarkdown header .main-menu li {
- display: inline-block;
- margin: 0em 1em;
- white-space: nowrap; }
- .wmarkdown header .wmd-options {
- display: none;
- position: absolute;
- top: 0em;
- right: 0em;
- margin: .2em .8em; }
- .wmarkdown header .wmd-options .multiplier {
- display: inline-block;
- width: 100px;
- height: 20px;
- background-color: #88F; }
- .wmarkdown header .view-menu button {
- transition-property: color border-color background-color opacity; }
- .wmarkdown header .view-menu button [data-icon]::before {
- margin: 0em; }
- .wmarkdown header .view-menu button [data-i18n] {
- display: none; }
- .wmarkdown > .body, .wmarkdown main {
- top: 4em;
- bottom: 1em;
- color: #222;
- background-color: #EFEFEF;
- z-index: 10; }
- .wmarkdown > .body > .headers-menu, .wmarkdown > .body > .content, .wmarkdown > .body > .files, .wmarkdown main > .headers-menu, .wmarkdown main > .content, .wmarkdown main > .files {
- position: absolute;
- top: 0.5em;
- bottom: 0.5em;
- box-sizing: border-box; }
- .wmarkdown > .body > .content > div, .wmarkdown main > .content > div {
- padding: 0em 3em; }
- .wmarkdown > .body > .headers-menu nav, .wmarkdown > .body > .files nav, .wmarkdown main > .headers-menu nav, .wmarkdown main > .files nav {
- position: absolute;
- top: 0em;
- left: 0em;
- width: 100%;
- height: 100%;
- padding: 1em;
- overflow: auto;
- box-sizing: border-box; }
- .wmarkdown > .body > .headers-menu ul, .wmarkdown > .body > .files ul, .wmarkdown main > .headers-menu ul, .wmarkdown main > .files ul {
- margin: 0em;
- padding: 0em;
- list-style-type: none; }
- .wmarkdown > .body > .headers-menu ul [data-level='1'], .wmarkdown > .body > .files ul [data-level='1'], .wmarkdown main > .headers-menu ul [data-level='1'], .wmarkdown main > .files ul [data-level='1'] {
- margin-left: 0em; }
- .wmarkdown > .body > .headers-menu ul [data-level='2'], .wmarkdown > .body > .files ul [data-level='2'], .wmarkdown main > .headers-menu ul [data-level='2'], .wmarkdown main > .files ul [data-level='2'] {
- margin-left: 2em; }
- .wmarkdown > .body > .headers-menu ul [data-level='3'], .wmarkdown > .body > .files ul [data-level='3'], .wmarkdown main > .headers-menu ul [data-level='3'], .wmarkdown main > .files ul [data-level='3'] {
- margin-left: 4em; }
- .wmarkdown > .body > .headers-menu ul [data-level='4'], .wmarkdown > .body > .files ul [data-level='4'], .wmarkdown main > .headers-menu ul [data-level='4'], .wmarkdown main > .files ul [data-level='4'] {
- margin-left: 6em; }
- .wmarkdown > .body > .headers-menu ul [data-level='5'], .wmarkdown > .body > .files ul [data-level='5'], .wmarkdown main > .headers-menu ul [data-level='5'], .wmarkdown main > .files ul [data-level='5'] {
- margin-left: 8em; }
- .wmarkdown > .body > .headers-menu ul [data-level='6'], .wmarkdown > .body > .files ul [data-level='6'], .wmarkdown main > .headers-menu ul [data-level='6'], .wmarkdown main > .files ul [data-level='6'] {
- margin-left: 10em; }
- .wmarkdown > .body > .headers-menu ul [data-level='7'], .wmarkdown > .body > .files ul [data-level='7'], .wmarkdown main > .headers-menu ul [data-level='7'], .wmarkdown main > .files ul [data-level='7'] {
- margin-left: 12em; }
- .wmarkdown > .body > .headers-menu li, .wmarkdown > .body > .files li, .wmarkdown main > .headers-menu li, .wmarkdown main > .files li {
- white-space: nowrap; }
- .wmarkdown > .body > .headers-menu .menu-buttons, .wmarkdown > .body > .files .menu-buttons, .wmarkdown main > .headers-menu .menu-buttons, .wmarkdown main > .files .menu-buttons {
- position: absolute;
- top: 0em;
- margin: .2em;
- margin-top: -1.8em; }
- .wmarkdown > .body > .headers-menu .menu-buttons [data-icon]::before, .wmarkdown > .body > .files .menu-buttons [data-icon]::before, .wmarkdown main > .headers-menu .menu-buttons [data-icon]::before, .wmarkdown main > .files .menu-buttons [data-icon]::before {
- margin: 0em; }
- .wmarkdown > .body > .headers-menu .menu-buttons span[data-i18n], .wmarkdown > .body > .files .menu-buttons span[data-i18n], .wmarkdown main > .headers-menu .menu-buttons span[data-i18n], .wmarkdown main > .files .menu-buttons span[data-i18n] {
- display: none; }
- .wmarkdown > .body > .headers-menu, .wmarkdown main > .headers-menu {
- left: 0.5em;
- width: 20%; }
- .wmarkdown > .body > .headers-menu .menu-buttons, .wmarkdown main > .headers-menu .menu-buttons {
- left: 0.5em; }
- .wmarkdown > .body[data-headers-menu-deployed=false] > .content, .wmarkdown main[data-headers-menu-deployed=false] > .content {
- left: 5%; }
- .wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu, .wmarkdown main[data-headers-menu-deployed=false] .headers-menu {
- width: auto;
- padding-left: 3em; }
- .wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu nav, .wmarkdown main[data-headers-menu-deployed=false] .headers-menu nav {
- display: none; }
- .wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu button[data-i18n=show], .wmarkdown main[data-headers-menu-deployed=false] .headers-menu button[data-i18n=show] {
- display: inline-block; }
- .wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu button[data-i18n=hide], .wmarkdown main[data-headers-menu-deployed=false] .headers-menu button[data-i18n=hide] {
- display: none; }
- .wmarkdown > .body[data-files-menu-deployed=false] > .content, .wmarkdown main[data-files-menu-deployed=false] > .content {
- right: 5%; }
- .wmarkdown > .body[data-files-menu-deployed=false] .files, .wmarkdown main[data-files-menu-deployed=false] .files {
- width: auto;
- padding-right: 3em; }
- .wmarkdown > .body[data-files-menu-deployed=false] .files nav, .wmarkdown main[data-files-menu-deployed=false] .files nav {
- display: none; }
- .wmarkdown > .body[data-files-menu-deployed=false] .files button[data-i18n=show], .wmarkdown main[data-files-menu-deployed=false] .files button[data-i18n=show] {
- display: inline-block; }
- .wmarkdown > .body[data-files-menu-deployed=false] .files button[data-i18n=hide], .wmarkdown main[data-files-menu-deployed=false] .files button[data-i18n=hide] {
- display: none; }
- .wmarkdown > .body[data-headers-menu-deployed=true] .headers-menu button[data-i18n=show], .wmarkdown main[data-headers-menu-deployed=true] .headers-menu button[data-i18n=show] {
- display: none; }
- .wmarkdown > .body[data-headers-menu-deployed=true] .headers-menu button[data-i18n=hide], .wmarkdown main[data-headers-menu-deployed=true] .headers-menu button[data-i18n=hide] {
- display: inline-block; }
- .wmarkdown > .body[data-files-menu-deployed=true] .files button[data-i18n=show], .wmarkdown main[data-files-menu-deployed=true] .files button[data-i18n=show] {
- display: none; }
- .wmarkdown > .body[data-files-menu-deployed=true] .files button[data-i18n=hide], .wmarkdown main[data-files-menu-deployed=true] .files button[data-i18n=hide] {
- display: inline-block; }
- .wmarkdown > .body > .content, .wmarkdown main > .content {
- top: 0em;
- left: 25%;
- right: 15%;
- bottom: 0em;
- margin: 0em 1em;
- padding: 1em 0em;
- overflow: auto; }
- .wmarkdown > .body > .content legend, .wmarkdown main > .content legend {
- display: none; }
- .wmarkdown > .body > .content .padding-bottom, .wmarkdown main > .content .padding-bottom {
- height: 1em; }
- .wmarkdown > .body > .files, .wmarkdown main > .files {
- right: 0.5em;
- width: 10%; }
- .wmarkdown > .body > .files .menu-buttons, .wmarkdown main > .files .menu-buttons {
- right: 0.5em; }
- .wmarkdown > .body > fieldset, .wmarkdown main > fieldset {
- border: none; }
- .wmarkdown > .body > fieldset > legend, .wmarkdown main > fieldset > legend {
- display: block;
- width: 100%;
- border-bottom: 0.14em dotted #898989;
- color: #222;
- font-weight: 900;
- font-size: 1.2em;
- text-align: center;
- box-sizing: border-box; }
- .wmarkdown > .body [data-parent-deployed=false], .wmarkdown main [data-parent-deployed=false] {
- display: none; }
- .wmarkdown footer {
- bottom: 0em;
- height: 1em;
- z-index: 20; }
- .wmarkdown footer .license {
- display: block;
- width: 100%;
- text-align: center;
- font-size: .75em;
- font-weight: 900; }
- .wmarkdown footer .license img {
- height: 1.1em;
- margin-left: .4em; }
- .wmarkdown footer .license > * {
- vertical-align: middle; }
- .wmarkdown[data-view=menu] .view-menu button[data-i18n=menu] {
- opacity: 1; }
- .wmarkdown[data-view=menu] .view-menu button[data-i18n=content] {
- opacity: .5; }
- .wmarkdown[data-view=menu] .view-menu button[data-i18n=files] {
- opacity: .5; }
- .wmarkdown[data-view=content] .view-menu button[data-i18n=menu] {
- opacity: .5; }
- .wmarkdown[data-view=content] .view-menu button[data-i18n=content] {
- opacity: 1; }
- .wmarkdown[data-view=content] .view-menu button[data-i18n=files] {
- opacity: .5; }
- .wmarkdown[data-view=files] .view-menu button[data-i18n=menu] {
- opacity: .5; }
- .wmarkdown[data-view=files] .view-menu button[data-i18n=content] {
- opacity: .5; }
- .wmarkdown[data-view=files] .view-menu button[data-i18n=files] {
- opacity: 1; }
- .wmarkdown[data-display-view=pc] .view-menu {
- display: none; }
- .wmarkdown[data-display-view=mobile] .view-menu {
- display: block;
- position: absolute;
- bottom: 0em;
- right: 0em;
- margin: .3em 1em; }
- .wmarkdown[data-display-view=mobile] .headers-menu .menu-buttons, .wmarkdown[data-display-view=mobile] .files .menu-buttons {
- display: none; }
- .wmarkdown[data-display-view=mobile] fieldset.headers-menu, .wmarkdown[data-display-view=mobile] fieldset.content, .wmarkdown[data-display-view=mobile] fieldset.files {
- top: 0em;
- left: 0em;
- right: auto;
- bottom: auto;
- margin: 0em;
- padding: 0em;
- width: 100%;
- height: 100%; }
- .wmarkdown[data-display-view=mobile][data-view=menu] fieldset.headers-menu {
- display: block; }
- .wmarkdown[data-display-view=mobile][data-view=menu] fieldset.content {
- display: none; }
- .wmarkdown[data-display-view=mobile][data-view=menu] fieldset.files {
- display: none; }
- .wmarkdown[data-display-view=mobile][data-view=content] fieldset.headers-menu {
- display: none; }
- .wmarkdown[data-display-view=mobile][data-view=content] fieldset.content {
- display: block; }
- .wmarkdown[data-display-view=mobile][data-view=content] fieldset.files {
- display: none; }
- .wmarkdown[data-display-view=mobile][data-view=files] fieldset.headers-menu {
- display: none; }
- .wmarkdown[data-display-view=mobile][data-view=files] fieldset.content {
- display: none; }
- .wmarkdown[data-display-view=mobile][data-view=files] fieldset.files {
- display: block; }
- .wmarkdown[data-screen-size~="3"] .main-menu a [data-i18n] {
- display: none; }
- .wmarkdown[data-screen-size~="3"] header .logo .text {
- font-size: .6em; }
- .wmarkdown[data-screen-size~="4"] header .logo .text {
- display: none; }
- .wmarkdown[data-screen-size~="4"] .main-menu li {
- margin: 0em .3em; }
-
-.wmarkdown label.checkbox, .wmarkdown label.radio, .wmarkdown label.tick {
- display: inline-block;
- cursor: pointer; }
- .wmarkdown label.checkbox input, .wmarkdown label.radio input, .wmarkdown label.tick input {
- display: none; }
- .wmarkdown label.checkbox [data-icon]::before, .wmarkdown label.radio [data-icon]::before, .wmarkdown label.tick [data-icon]::before {
- margin: 0em; }
-.wmarkdown .code-block {
- display: block;
- position: relative;
- width: 80%;
- height: auto;
- margin-left: 10%;
- font-size: .8em;
- overflow: hidden;
- box-sizing: border-box; }
- .wmarkdown .code-block[data-special=false] {
- max-height: 35em; }
- .wmarkdown .code-block > ul {
- position: absolute;
- top: 0em;
- left: 0em;
- margin: 0em;
- padding: 0em;
- white-space: normal; }
- .wmarkdown .code-block > ul li {
- display: inline-block;
- margin: 0em .2em;
- padding: .2em .8em;
- background-color: #dbdbdb;
- vertical-align: middle;
- border: 0.1em solid #898989;
- border-radius: .4em; }
- .wmarkdown .code-block > ul li [data-i18n] {
- display: none;
- font-weight: 900; }
- .wmarkdown .code-block > ul li [data-i18n]::after {
- content: ":";
- margin-right: .4em; }
- .wmarkdown .code-block .lines {
- position: relative;
- top: 0em;
- left: 0em;
- overflow: hidden; }
- .wmarkdown .code-block .lines ol {
- width: 100%;
- margin: 0em;
- margin-top: -.3em;
- margin-left: 4em;
- padding: 0em;
- box-sizing: border-box; }
- .wmarkdown .code-block .lines ol li:nth-child(2n) {
- background-color: #f7f7f7; }
- .wmarkdown .code-block .lines ol li:nth-child(2n + 1) {
- background-color: #f2f2f2; }
- .wmarkdown .code-block .code-box {
- position: absolute;
- top: 3.2em;
- left: 4em;
- right: 0em;
- max-height: 31em;
- overflow: auto; }
- .wmarkdown .code-block > div, .wmarkdown .code-block > div * {
- font-family: "Roboto Mono"; }
-.wmarkdown .header-file-note {
- margin-top: 2em;
- font-size: .85em;
- color: #898989; }
- .wmarkdown .header-file-note + h1 {
- margin-top: 0em; }
- .wmarkdown .header-file-note + h2 {
- margin-top: 0em; }
- .wmarkdown .header-file-note + h3 {
- margin-top: 0em; }
- .wmarkdown .header-file-note + h4 {
- margin-top: 0em; }
- .wmarkdown .header-file-note + h5 {
- margin-top: 0em; }
- .wmarkdown .header-file-note + h6 {
- margin-top: 0em; }
-.wmarkdown .data-dictionary-item {
- display: inline-block;
- position: relative;
- border-bottom: 0.1em dotted;
- cursor: help; }
- .wmarkdown .data-dictionary-item[data-left=true] > .box {
- left: auto;
- right: 0em; }
- .wmarkdown .data-dictionary-item[data-left=false] > .box {
- left: 0em;
- right: auto; }
- .wmarkdown .data-dictionary-item[data-top=false] > .box {
- top: auto;
- bottom: 1em; }
- .wmarkdown .data-dictionary-item[data-top=true] > .box {
- top: 1em;
- bottom: auto; }
- .wmarkdown .data-dictionary-item[data-show=false] > .box {
- display: none; }
- .wmarkdown .data-dictionary-item .box {
- display: block;
- position: absolute;
- width: 10em;
- height: auto;
- max-height: 10em;
- padding: .5em;
- color: #222;
- font-weight: 400;
- border: 0.1em solid #222;
- background-color: rgba(239, 239, 239, 0.95);
- overflow: hidden;
- box-sizing: border-box;
- border-radius: 1em;
- box-shadow: 0.1em 0.1em 0.2em #222; }
- .wmarkdown .data-dictionary-item .box > span + span {
- display: block; }
- .wmarkdown .data-dictionary-item .result {
- display: none; }
- .wmarkdown .data-dictionary-item .description {
- height: 6em;
- text-align: center;
- overflow: auto; }
- .wmarkdown .data-dictionary-item .description .paragraph {
- display: block; }
- .wmarkdown .data-dictionary-item .description .paragraph + span {
- margin-top: 1em; }
- .wmarkdown .data-dictionary-item .links {
- height: 3.1em;
- margin: .5em 0em;
- text-align: center;
- white-space: nowrap;
- overflow-x: auto;
- overflow-y: hidden; }
- .wmarkdown .data-dictionary-item .links > a {
- display: inline-block;
- width: 2em;
- height: 2em;
- margin: 0em .5em;
- border: 0.1em solid #222;
- background-color: #FFF;
- background-position: center center;
- background-size: cover;
- box-sizing: border-box;
- border-radius: 1em; }
- .wmarkdown .data-dictionary-item [data-site=wikipedia_org], .wmarkdown .data-dictionary-item [data-site=es_wikipedia_org], .wmarkdown .data-dictionary-item [data-site=en_wikipedia_org] {
- background-image: url("https://wikipedia.org/static/apple-touch/wikipedia.png"); }
- .wmarkdown .data-dictionary-item [data-site=git_a3do_net], .wmarkdown .data-dictionary-item [data-site=git_k3y_pw] {
- background-image: url("https://about.gitlab.com/ico/favicon-192x192.png"); }
- .wmarkdown .data-dictionary-item [data-site=youtube_com], .wmarkdown .data-dictionary-item [data-site=www_youtube_com] {
- background-image: url("https://www.youtube.com/s/desktop/c20c1e6c/img/favicon_144.png"); }
- .wmarkdown .data-dictionary-item [data-site=www_mediawiki_org] {
- background-image: url("https://www.mediawiki.org/static/apple-touch/mediawiki.png"); }
- .wmarkdown .data-dictionary-item [data-site=github_com] {
- background-image: url("https://github.com/fluidicon.png"); }
-.wmarkdown .data-dictionary-table {
- display: block;
- position: relative; }
- .wmarkdown .data-dictionary-table fieldset {
- border: none; }
- .wmarkdown .data-dictionary-table legend, .wmarkdown .data-dictionary-table tfoot, .wmarkdown .data-dictionary-table [data-field=i], .wmarkdown .data-dictionary-table [data-field=patterns], .wmarkdown .data-dictionary-table [data-field=results], .wmarkdown .data-dictionary-table .checkbox > [data-i18n] {
- display: none; }
- .wmarkdown .data-dictionary-table [data-field=urls] li {
- word-break: break-all;
- word-wrap: break-word; }
- .wmarkdown .data-dictionary-table .search {
- display: table;
- width: 100%;
- box-sizing: border-box; }
- .wmarkdown .data-dictionary-table .search > * {
- display: table-cell;
- white-space: nowrap; }
- .wmarkdown .data-dictionary-table .search .field, .wmarkdown .data-dictionary-table .search .field input {
- width: 100%;
- box-sizing: border-box; }
- .wmarkdown .data-dictionary-table .search > label {
- font-weight: 900; }
- .wmarkdown .data-dictionary-table .search > label::after {
- content: ":";
- margin-right: .4em; }
- .wmarkdown .data-dictionary-table th, .wmarkdown .data-dictionary-table td {
- width: 40%; }
- .wmarkdown .data-dictionary-table th[data-field=words], .wmarkdown .data-dictionary-table td[data-field=words] {
- width: 20%; }
- .wmarkdown .data-dictionary-table td {
- padding: 1em .4em; }
- .wmarkdown .data-dictionary-table thead, .wmarkdown .data-dictionary-table tbody {
- display: block; }
- .wmarkdown .data-dictionary-table thead tr:not([data-visible=false]), .wmarkdown .data-dictionary-table tbody tr:not([data-visible=false]) {
- display: table; }
- .wmarkdown .data-dictionary-table thead, .wmarkdown .data-dictionary-table thead tr, .wmarkdown .data-dictionary-table tbody, .wmarkdown .data-dictionary-table tbody tr {
- width: 100%; }
- .wmarkdown .data-dictionary-table tbody {
- max-height: 30em;
- overflow: auto; }
- .wmarkdown .data-dictionary-table tbody > tr:nth-child(2n + 1) > td {
- background-color: #f7f7f7; }
- .wmarkdown .data-dictionary-table tbody > tr:nth-child(2n) > td {
- background-color: #f2f2f2; }
- .wmarkdown .data-dictionary-table tbody > tr:hover > td {
- background-color: #fbfbfb; }
-.wmarkdown .multimedia-box {
- display: inline-block;
- position: relative;
- width: 100%;
- text-align: center; }
- .wmarkdown .multimedia-box [data-type=image] img, .wmarkdown .multimedia-box [data-type=image] a, .wmarkdown .multimedia-box [data-type=images] img, .wmarkdown .multimedia-box [data-type=images] a {
- display: none; }
- .wmarkdown .multimedia-box [data-type=image] .image-style, .wmarkdown .multimedia-box [data-type=images] .image-style {
- display: inline-block;
- width: 100%;
- height: 100%;
- background-position: center center;
- background-repeat: no-repeat;
- background-size: contain; }
- .wmarkdown .multimedia-box video {
- width: auto;
- width: 100%; }
- .wmarkdown .multimedia-box [data-type=audio] {
- min-width: 10em; }
- .wmarkdown .multimedia-box [data-type=audio] > .multimedia-box[data-multiple=false] > span {
- left: 0em;
- width: 100%; }
- .wmarkdown .multimedia-box [data-type=audio] a {
- display: none; }
- .wmarkdown .multimedia-box audio {
- position: absolute;
- top: 100%;
- left: 10%;
- width: 80%;
- margin-top: -6em;
- box-sizing: border-box;
- z-index: 20;
- opacity: .7; }
- .wmarkdown .multimedia-box .text {
- position: absolute;
- bottom: 0em;
- left: 0em;
- width: 100%;
- margin: .5em;
- text-align: center;
- text-shadow: 0em 0em 0.1em #222, 0em 0em 0.075em #222, 0em 0em 0.05em #EFEFEF, 0em 0em 0.025em #EFEFEF; }
- .wmarkdown .multimedia-box [data-type] {
- display: inline-block;
- position: relative;
- margin: 1em; }
- .wmarkdown .multimedia-box[data-multiple=true] > span {
- width: 25%;
- height: 10em; }
- .wmarkdown .multimedia-box[data-multiple=false] > span {
- width: 80%;
- height: 25em;
- text-align: center; }
- .wmarkdown .multimedia-box[data-multiple] > [data-links-count] {
- height: auto; }
- .wmarkdown .multimedia-box[data-multiple] [data-platform] {
- display: inline-block;
- position: relative;
- width: 20em;
- height: 10em;
- margin: .5em; }
- .wmarkdown .multimedia-box .multimedia-box [data-type] {
- position: absolute;
- top: 0em;
- left: 0em;
- width: 100%;
- height: 100%;
- margin: 0em; }
- .wmarkdown .multimedia-box [data-platform], .wmarkdown .multimedia-box[data-multiple=true] > [data-type=audio] > .multimedia-box, .wmarkdown .multimedia-box [data-platform] {
- width: 20em;
- height: 10em; }
- .wmarkdown .multimedia-box [data-links-count='1'] > [data-platform], .wmarkdown .multimedia-box[data-multiple=false] > [data-type=audio] > .multimedia-box {
- width: 80%;
- height: 25em; }
-.wmarkdown .links-group {
- text-align: center; }
- .wmarkdown .links-group a {
- display: inline-block;
- position: relative;
- width: 6em;
- height: 7.5em;
- margin: 1em;
- overflow: hidden;
- opacity: .7;
- transition-duration: 1s;
- transition-property: color,opacity; }
- .wmarkdown .links-group a img {
- display: none; }
- .wmarkdown .links-group a:hover {
- opacity: 1;
- transition-duration: 0.2s; }
- .wmarkdown .links-group a [data-status] {
- display: block;
- position: absolute;
- top: 0em;
- left: 0em;
- width: 6em;
- height: 6em; }
- .wmarkdown .links-group a .text {
- display: block;
- position: absolute;
- left: 0em;
- bottom: 0em;
- width: 100%;
- margin: 0em;
- text-align: center; }
- .wmarkdown .links-group a .image-style {
- display: inline-block;
- width: 100%;
- height: 100%;
- background-position: center center;
- background-repeat: no-repeat;
- background-size: contain; }
-.wmarkdown .special-text-i .text {
- font-weight: 900; }
-.wmarkdown .quote {
- padding: 1em;
- border: 0.1em dotted #898989; }
-.wmarkdown .wdoc {
- position: relative;
- border: 0.1 0.5em solid #898989;
- background-color: #f7f7f7;
- border-radius: .4em; }
- .wmarkdown .wdoc[data-language] > legend {
- display: block;
- padding: 0em .4em; }
- .wmarkdown .wdoc[data-language] > legend .name {
- font-weight: 900; }
- .wmarkdown .wdoc[data-language] > legend .language {
- margin-left: .4em; }
- .wmarkdown .wdoc[data-language] > legend .language::before {
- content: "["; }
- .wmarkdown .wdoc[data-language] > legend .language::after {
- content: "]"; }
- .wmarkdown .wdoc .structure .return-type {
- margin-right: .4em; }
- .wmarkdown .wdoc .structure .return-type::before {
- content: "["; }
- .wmarkdown .wdoc .structure .return-type::after {
- content: "]"; }
- .wmarkdown .wdoc .structure .attributes {
- display: inline-block;
- margin: 0em;
- padding: 0em;
- list-style-type: none; }
- .wmarkdown .wdoc .structure .attributes::before {
- content: "("; }
- .wmarkdown .wdoc .structure .attributes::after {
- content: ")"; }
- .wmarkdown .wdoc .structure .attributes .attribute-status, .wmarkdown .wdoc .structure .attributes .attribute-description, .wmarkdown .wdoc .structure .attributes .return {
- display: none; }
- .wmarkdown .wdoc .structure .attributes .attribute-type {
- margin-left: .4em; }
- .wmarkdown .wdoc .structure .attributes .attribute-type span {
- font-style: italic; }
- .wmarkdown .wdoc .structure .attributes .attribute-type::before {
- content: "[";
- margin-right: .2em; }
- .wmarkdown .wdoc .structure .attributes .attribute-type::after {
- content: "]";
- margin-left: .2em; }
- .wmarkdown .wdoc .structure .attribute + span::before {
- content: ",";
- margin-right: .4em; }
- .wmarkdown .wdoc .structure .attribute[data-status=optional]::after {
- content: "?"; }
- .wmarkdown .wdoc .attribute-type > span + span::before {
- content: ",";
- margin-right: .4em; }
- .wmarkdown .wdoc .attributes-data {
- display: table;
- width: 100%;
- margin-top: 1em;
- box-sizing: border-box; }
- .wmarkdown .wdoc .attributes-data > span {
- display: table-row; }
- .wmarkdown .wdoc .attributes-data > span > span {
- display: table-cell; }
- .wmarkdown .wdoc .attributes-data > .return {
- font-style: italic; }
- .wmarkdown .wdoc > .data {
- margin: 0em;
- margin-top: 1em;
- padding: 0em;
- list-style-type: none; }
- .wmarkdown .wdoc > .data li {
- padding-bottom: .1em; }
- .wmarkdown .wdoc > .data li:hover {
- padding-bottom: 0em;
- border-bottom: 0.1em dotted #898989; }
- .wmarkdown .wdoc > .data li > :first-child {
- display: inline-block;
- width: 10em;
- height: 1.2em;
- overflow: hidden; }
- .wmarkdown .wdoc > .data li > :first-child::before {
- content: "@"; }
- .wmarkdown .wdoc > .data li > :last-child {
- margin-left: .4em; }
- .wmarkdown .wdoc div.attributes-data > * > * {
- padding-bottom: .1em; }
- .wmarkdown .wdoc div.attributes-data > *:hover > * {
- padding-bottom: 0em;
- border-bottom: 0.1em dotted #898989; }
- .wmarkdown .wdoc [data-with-value=false] {
- display: none; }
- .wmarkdown .wdoc .deprecated {
- font-weight: 900; }
- .wmarkdown .wdoc .deprecated::before {
- content: "("; }
- .wmarkdown .wdoc .deprecated::after {
- content: ")";
- margin-right: .4em; }
- .wmarkdown .wdoc[data-deprecated=true] {
- opacity: .6;
- transition-duration: 1s;
- transition-property: opacity; }
- .wmarkdown .wdoc[data-deprecated=true]:hover {
- opacity: 1;
- transition-duration: 0.2s; }
- .wmarkdown .wdoc + .wdoc {
- margin-top: 1em; }
-.wmarkdown .wmd-table {
- width: 80%;
- margin-left: 10%;
- border-collapse: collapse; }
- .wmarkdown .wmd-table {
- border: 0.1em solid #222; }
- .wmarkdown .wmd-table td, .wmarkdown .wmd-table th {
- border: 0.1em solid #898989; }
- .wmarkdown .wmd-table tr td {
- transition-duration: 1s;
- transition-property: background-color; }
- .wmarkdown .wmd-table tr:hover td {
- transition-duration: 0.2s; }
- .wmarkdown .wmd-table tbody > tr:nth-child(2n) > td {
- background-color: #f2f2f2; }
- .wmarkdown .wmd-table tbody > tr:nth-child(2n + 1) > td {
- background-color: #e3e3e3; }
- .wmarkdown .wmd-table tbody > tr:hover > td {
- background-color: #fafafa; }
-
-.wmarkdown .MathJax {
- font-size: 1.3em; }
-
-/*# sourceMappingURL=WMarkDown.css.map */
+.wmd-icon > input {
+ display: none; }
+
+.wmd-code-block {
+ display: block;
+ position: relative;
+ margin: 2em 4%;
+ margin-bottom: 4em;
+ font-size: .9em; }
+ .wmd-code-block .code {
+ position: relative;
+ top: 2.5em;
+ width: 100%;
+ height: auto;
+ max-height: 30em;
+ overflow-x: hidden;
+ overflow-y: auto; }
+ .wmd-code-block .data {
+ position: absolute;
+ list-style-type: none;
+ margin: 0em 2em;
+ padding: 0em; }
+ .wmd-code-block .data li {
+ display: inline-block;
+ margin: 0em;
+ padding: .1em .4em;
+ height: 1.2em;
+ border: .1em solid #BBB;
+ box-shadow: 0em 0em .8em inset #BBB; }
+ .wmd-code-block .data li::before {
+ font-family: monospace; }
+ .wmd-code-block .data li > [data-i18n] {
+ display: none; }
+ .wmd-code-block .data [data-icon] {
+ margin-right: .3em; }
+ .wmd-code-block .data > :first-child {
+ display: none; }
+ .wmd-code-block .data > :nth-child(2) {
+ border-radius: .6em 0em 0em .6em; }
+ .wmd-code-block .data > :last-child {
+ border-radius: 0em .6em .6em 0em; }
+ .wmd-code-block ol {
+ width: 100%;
+ margin: 0em;
+ padding: 0em;
+ padding-bottom: 1.5em;
+ font-family: monospace; }
+ .wmd-code-block ol li {
+ margin-left: 4em; }
+ .wmd-code-block ol li::marker {
+ font-size: .85em; }
+ .wmd-code-block ol li:nth-child(2n + 1) {
+ background-color: rgba(200, 200, 200, 0.2); }
+ .wmd-code-block .content {
+ position: absolute;
+ top: 0em;
+ left: 4.3em;
+ right: 0em;
+ margin: 0em;
+ font-family: monospace;
+ background: transparent;
+ overflow-y: hidden;
+ overflow-x: auto; }
+ .wmd-code-block .content > div, .wmd-code-block .content > pre {
+ padding: .1em;
+ white-space: nowrap;
+ box-sizing: border-box; }
+
+.wmd-quote {
+ display: flex;
+ margin: 1em 2em;
+ padding-left: .5em;
+ font-size: .9em;
+ border-left: .5em solid #AAA;
+ border-radius: .5em 0em 0em .5em;
+ flex-direction: row; }
+ .wmd-quote > div {
+ flex: auto;
+ align-self: start; }
+ .wmd-quote > div + div {
+ width: 100%;
+ padding-left: 1em; }
+ .wmd-quote .quote-type {
+ text-align: center; }
+ .wmd-quote .quote-type span {
+ display: block; }
+ .wmd-quote .quote-type span + span {
+ font-weight: 900; }
+ .wmd-quote [data-avatar] {
+ width: 4em;
+ height: 4em;
+ border-radius: 1em;
+ background-color: #888;
+ background-position: center center;
+ background-size: cover; }
+ .wmd-quote [data-icon] {
+ font-size: 3em; }
+ .wmd-quote [data-avatar=srx00], .wmd-quote [data-avatar=kyman] {
+ background-color: transparent;
+ background-image: url("https://cdn.k3y.pw/data/KyMAN-water-mark.png"), url("https://cdn.local/data/KyMAN-water-mark.png"); }
+
+[data-include] > .link {
+ margin-top: 2em;
+ font-size: .9em;
+ opacity: .8; }
+[data-include] + h1, [data-include] + h2, [data-include] + h3, [data-include] + h4, [data-include] + h5, [data-include] + h6 {
+ margin-top: 0em; }
+[data-include] > .wmarkdown > h1:first-child, [data-include] > .wmarkdown > h2:first-child, [data-include] > .wmarkdown > h3:first-child, [data-include] > .wmarkdown > h4:first-child, [data-include] > .wmarkdown > h5:first-child, [data-include] > .wmarkdown > h6:first-child {
+ margin-top: 0em; }
+[data-include] [data-include] > .link > a {
+ display: none; }
+
+.wmd-title > :last-child {
+ margin-left: .3em;
+ font-size: .6em; }
+ .wmd-title > :last-child span {
+ opacity: .3;
+ transition-duration: 1s;
+ transition-property: opacity; }
+ .wmd-title > :last-child span::before {
+ margin: 0em; }
+ .wmd-title > :last-child span:hover {
+ opacity: 1;
+ transition-duration: 0.25s; }
+
+.wmd-table {
+ padding: 1em 0em;
+ margin-left: 5%;
+ margin-right: 5%;
+ text-align: center;
+ font-size: .9em; }
+ .wmd-table table {
+ max-width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+ border-collapse: separate;
+ border-spacing: 0;
+ border: .1em solid #888;
+ box-sizing: border-box;
+ border-radius: .3em; }
+ .wmd-table table td, .wmd-table table th {
+ padding: .2em .5em;
+ border: 0.05em solid rgba(136, 136, 136, 0.5); }
+ .wmd-table table > :first-child > :first-child > :first-child {
+ border-top-left-radius: .3em; }
+ .wmd-table table > :first-child > :first-child > :last-child {
+ border-top-right-radius: .3em; }
+ .wmd-table table > :last-child > :last-child > :first-child {
+ border-bottom-left-radius: .3em; }
+ .wmd-table table > :last-child > :last-child > :last-child {
+ border-bottom-right-radius: .3em; }
+ .wmd-table thead th, .wmd-table thead td, .wmd-table tfoot th, .wmd-table tfoot td {
+ background-color: rgba(136, 136, 136, 0.1); }
+ .wmd-table tbody > tr td, .wmd-table tbody > tr th {
+ background-color: rgba(255, 255, 255, 0);
+ transition-duration: 1s;
+ transition-property: background-color; }
+ .wmd-table tbody > tr:nth-child(n):hover td, .wmd-table tbody > tr:nth-child(n):hover th {
+ background-color: rgba(136, 136, 136, 0.1);
+ transition-duration: 0.25s; }
+ .wmd-table tbody > tr:nth-child(2n + 1) > td, .wmd-table tbody > tr:nth-child(2n + 1) > th {
+ background-color: rgba(136, 136, 136, 0.2); }
+
+.wmd-list [data-deployed=false] ~ ul, .wmd-list [data-deployed=false] ~ ol, .wmd-main-menu [data-deployed=false] ~ ul, .wmd-main-menu [data-deployed=false] ~ ol {
+ display: none; }
+.wmd-list [data-icon=deploy], .wmd-main-menu [data-icon=deploy] {
+ user-select: none; }
+ .wmd-list [data-icon=deploy] + [data-i18n], .wmd-main-menu [data-icon=deploy] + [data-i18n] {
+ display: none; }
+
+.wmd-dictionary-item[onclick] {
+ cursor: help; }
+
+.wmd-dictionary-box {
+ position: absolute;
+ max-width: 15em;
+ max-height: 15em;
+ padding: .3em;
+ border: .1em solid #888;
+ background-color: #EFEFEF;
+ overflow: auto;
+ box-sizing: border-box;
+ box-shadow: .1em .1em .2em #000;
+ border-radius: .5em; }
+ .wmd-dictionary-box .links {
+ text-align: center; }
+ .wmd-dictionary-box a[href] {
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ margin: .3em;
+ background-color: rgba(0, 0, 0, 0.1);
+ border: .1em solid #888;
+ background-position: center center;
+ background-size: cover;
+ box-sizing: border-box;
+ border-radius: 1em; }
+
+.wmd-main-menu-button {
+ padding: 0em 1em;
+ text-align: right; }
+ .wmd-main-menu-button [data-icon]::before {
+ margin: 0em;
+ font-size: 2em; }
+ .wmd-main-menu-button [data-icon] + span {
+ display: none; }
+
+.wmd-main-menu {
+ position: absolute;
+ top: 0em;
+ right: 0em;
+ margin-top: 4em;
+ margin-right: 1em;
+ padding: .3em;
+ border: .1em solid #888;
+ background-color: #EFEFEF;
+ overflow: hidden;
+ z-index: 100;
+ border-radius: .5em;
+ box-shadow: .1em .1em .2em #000; }
+ .wmd-main-menu > ul {
+ max-width: 25em;
+ max-height: 25em;
+ margin: 0em;
+ padding: 0em;
+ overflow: auto; }
+ .wmd-main-menu ul {
+ list-style-type: none;
+ padding-right: 0em; }
+ .wmd-main-menu a:first-child {
+ margin-left: 1.1em; }
+ .wmd-main-menu li {
+ padding: .2em .3em;
+ background-color: rgba(0, 0, 0, 0);
+ transition-property: background-color;
+ transition-duration: 0.25s; }
+ .wmd-main-menu li:hover {
+ background-color: rgba(0, 0, 0, 0.1);
+ transition-duration: 0.25s; }
+
+.wmd-media:not([data-type=icon]) {
+ display: block;
+ position: relative;
+ left: 50%;
+ width: 30em;
+ margin-left: -15em;
+ text-align: center;
+ box-sizing: border-box; }
+ .wmd-media:not([data-type=icon]) img {
+ width: 100%;
+ height: auto;
+ max-width: 30em;
+ max-height: 30em; }
+ .wmd-media:not([data-type=icon]) img + span {
+ background-position: center center;
+ background-size: cover; }
+ .wmd-media:not([data-type=icon])[data-type=image] .text {
+ display: none; }
+ .wmd-media:not([data-type=icon])[data-type=picture] .text {
+ display: block;
+ width: 100%;
+ margin-top: -.2em;
+ text-align: right;
+ font-size: .85em; }
+.wmd-media[data-type=icon] {
+ display: inline-block;
+ height: 1em; }
+ .wmd-media[data-type=icon] img {
+ width: auto;
+ height: 100%; }
+ .wmd-media[data-type=icon] .text {
+ display: none; }
+
+.wmd-code-doc {
+ font-size: .85em;
+ border: none; }
+ .wmd-code-doc legend {
+ display: none; }
+ .wmd-code-doc .description {
+ font-family: monospace;
+ white-space: pre; }
+ .wmd-code-doc .return-type {
+ margin-right: 1em; }
+ .wmd-code-doc .return-type:before, .wmd-code-doc .typed:before {
+ content: "["; }
+ .wmd-code-doc .return-type:after, .wmd-code-doc .typed:after {
+ content: "]"; }
+ .wmd-code-doc .environment, .wmd-code-doc .access {
+ display: inline-block;
+ margin-right: 1em;
+ text-transform: capitalize; }
+ .wmd-code-doc .arguments:before {
+ content: "("; }
+ .wmd-code-doc .arguments:after {
+ content: ")"; }
+ .wmd-code-doc .argument {
+ display: block;
+ width: 100%;
+ padding-left: 4em;
+ box-sizing: border-box; }
+ .wmd-code-doc .argument > span + span {
+ margin-left: 1em; }
+ .wmd-code-doc .argument > :nth-child(5):before {
+ content: "=";
+ margin-right: 1em; }
+ .wmd-code-doc .default-value::before {
+ content: "= "; }
+ .wmd-code-doc[data-arguments-l='0'] > .definition {
+ display: none; }
+
+.wmd-color-sample {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ border: .1em solid #222;
+ vertical-align: middle;
+ border-radius: .3em;
+ box-shadow: 0em 0em .2em #EFEFEF; }
+ .wmd-color-sample > * {
+ display: none; }
+
+.wmd-avatars {
+ display: block;
+ list-style-type: none;
+ text-align: center; }
+ .wmd-avatars > * {
+ display: inline-block;
+ position: relative;
+ width: 7em;
+ height: 7em;
+ margin: 1em; }
+ .wmd-avatars > * .wmd-media {
+ left: auto;
+ margin: 0em;
+ width: 100%;
+ height: 100%; }
+ .wmd-avatars > * a + a {
+ display: block;
+ position: absolute;
+ width: 1.8em;
+ height: 1.8em;
+ border: .1em solid #888;
+ background-color: #EFEFEF;
+ background-position: center center;
+ background-size: cover;
+ border-radius: 50%;
+ box-sizing: border-box; }
+ .wmd-avatars [data-links='1'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='2'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='2'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='3'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(165deg) * 3.5em);
+ margin-left: calc(cos(120deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='3'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(285deg) * 3.5em);
+ margin-left: calc(cos(240deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='3'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='4'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(135deg) * 3.5em);
+ margin-left: calc(cos(90deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='4'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='4'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(315deg) * 3.5em);
+ margin-left: calc(cos(270deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='4'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='5'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(117deg) * 3.5em);
+ margin-left: calc(cos(72deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='5'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(189deg) * 3.5em);
+ margin-left: calc(cos(144deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='5'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(261deg) * 3.5em);
+ margin-left: calc(cos(216deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='5'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(333deg) * 3.5em);
+ margin-left: calc(cos(288deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='5'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='6'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(105deg) * 3.5em);
+ margin-left: calc(cos(60deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='6'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(165deg) * 3.5em);
+ margin-left: calc(cos(120deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='6'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='6'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(285deg) * 3.5em);
+ margin-left: calc(cos(240deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='6'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(345deg) * 3.5em);
+ margin-left: calc(cos(300deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='6'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(96.4285714286deg) * 3.5em);
+ margin-left: calc(cos(51.4285714286deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(147.8571428571deg) * 3.5em);
+ margin-left: calc(cos(102.8571428571deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(199.2857142857deg) * 3.5em);
+ margin-left: calc(cos(154.2857142857deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(250.7142857143deg) * 3.5em);
+ margin-left: calc(cos(205.7142857143deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(302.1428571429deg) * 3.5em);
+ margin-left: calc(cos(257.1428571429deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(353.5714285714deg) * 3.5em);
+ margin-left: calc(cos(308.5714285714deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='7'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(90deg) * 3.5em);
+ margin-left: calc(cos(45deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(135deg) * 3.5em);
+ margin-left: calc(cos(90deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(180deg) * 3.5em);
+ margin-left: calc(cos(135deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(270deg) * 3.5em);
+ margin-left: calc(cos(225deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(315deg) * 3.5em);
+ margin-left: calc(cos(270deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(360deg) * 3.5em);
+ margin-left: calc(cos(315deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='8'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(85deg) * 3.5em);
+ margin-left: calc(cos(40deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(125deg) * 3.5em);
+ margin-left: calc(cos(80deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(165deg) * 3.5em);
+ margin-left: calc(cos(120deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(205deg) * 3.5em);
+ margin-left: calc(cos(160deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(245deg) * 3.5em);
+ margin-left: calc(cos(200deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(285deg) * 3.5em);
+ margin-left: calc(cos(240deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(325deg) * 3.5em);
+ margin-left: calc(cos(280deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(365deg) * 3.5em);
+ margin-left: calc(cos(320deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='9'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(81deg) * 3.5em);
+ margin-left: calc(cos(36deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(117deg) * 3.5em);
+ margin-left: calc(cos(72deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(153deg) * 3.5em);
+ margin-left: calc(cos(108deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(189deg) * 3.5em);
+ margin-left: calc(cos(144deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(261deg) * 3.5em);
+ margin-left: calc(cos(216deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(297deg) * 3.5em);
+ margin-left: calc(cos(252deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(333deg) * 3.5em);
+ margin-left: calc(cos(288deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(369deg) * 3.5em);
+ margin-left: calc(cos(324deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='10'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(77.7272727273deg) * 3.5em);
+ margin-left: calc(cos(32.7272727273deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(110.4545454545deg) * 3.5em);
+ margin-left: calc(cos(65.4545454545deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(143.1818181818deg) * 3.5em);
+ margin-left: calc(cos(98.1818181818deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(175.9090909091deg) * 3.5em);
+ margin-left: calc(cos(130.9090909091deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(208.6363636364deg) * 3.5em);
+ margin-left: calc(cos(163.6363636364deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(241.3636363636deg) * 3.5em);
+ margin-left: calc(cos(196.3636363636deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(274.0909090909deg) * 3.5em);
+ margin-left: calc(cos(229.0909090909deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(306.8181818182deg) * 3.5em);
+ margin-left: calc(cos(261.8181818182deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(339.5454545455deg) * 3.5em);
+ margin-left: calc(cos(294.5454545455deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(372.2727272727deg) * 3.5em);
+ margin-left: calc(cos(327.2727272727deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='11'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(75deg) * 3.5em);
+ margin-left: calc(cos(30deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(105deg) * 3.5em);
+ margin-left: calc(cos(60deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(135deg) * 3.5em);
+ margin-left: calc(cos(90deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(165deg) * 3.5em);
+ margin-left: calc(cos(120deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(195deg) * 3.5em);
+ margin-left: calc(cos(150deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(255deg) * 3.5em);
+ margin-left: calc(cos(210deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(285deg) * 3.5em);
+ margin-left: calc(cos(240deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(315deg) * 3.5em);
+ margin-left: calc(cos(270deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(345deg) * 3.5em);
+ margin-left: calc(cos(300deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(375deg) * 3.5em);
+ margin-left: calc(cos(330deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='12'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(72.6923076923deg) * 3.5em);
+ margin-left: calc(cos(27.6923076923deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(100.3846153846deg) * 3.5em);
+ margin-left: calc(cos(55.3846153846deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(128.0769230769deg) * 3.5em);
+ margin-left: calc(cos(83.0769230769deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(155.7692307692deg) * 3.5em);
+ margin-left: calc(cos(110.7692307692deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(183.4615384615deg) * 3.5em);
+ margin-left: calc(cos(138.4615384615deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(211.1538461538deg) * 3.5em);
+ margin-left: calc(cos(166.1538461538deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(238.8461538462deg) * 3.5em);
+ margin-left: calc(cos(193.8461538462deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(266.5384615385deg) * 3.5em);
+ margin-left: calc(cos(221.5384615385deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(294.2307692308deg) * 3.5em);
+ margin-left: calc(cos(249.2307692308deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(321.9230769231deg) * 3.5em);
+ margin-left: calc(cos(276.9230769231deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(349.6153846154deg) * 3.5em);
+ margin-left: calc(cos(304.6153846154deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(377.3076923077deg) * 3.5em);
+ margin-left: calc(cos(332.3076923077deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='13'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(70.7142857143deg) * 3.5em);
+ margin-left: calc(cos(25.7142857143deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(96.4285714286deg) * 3.5em);
+ margin-left: calc(cos(51.4285714286deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(122.1428571429deg) * 3.5em);
+ margin-left: calc(cos(77.1428571429deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(147.8571428571deg) * 3.5em);
+ margin-left: calc(cos(102.8571428571deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(173.5714285714deg) * 3.5em);
+ margin-left: calc(cos(128.5714285714deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(199.2857142857deg) * 3.5em);
+ margin-left: calc(cos(154.2857142857deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(250.7142857143deg) * 3.5em);
+ margin-left: calc(cos(205.7142857143deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(276.4285714286deg) * 3.5em);
+ margin-left: calc(cos(231.4285714286deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(302.1428571429deg) * 3.5em);
+ margin-left: calc(cos(257.1428571429deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(327.8571428571deg) * 3.5em);
+ margin-left: calc(cos(282.8571428571deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(353.5714285714deg) * 3.5em);
+ margin-left: calc(cos(308.5714285714deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(379.2857142857deg) * 3.5em);
+ margin-left: calc(cos(334.2857142857deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='14'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(69deg) * 3.5em);
+ margin-left: calc(cos(24deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(93deg) * 3.5em);
+ margin-left: calc(cos(48deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(117deg) * 3.5em);
+ margin-left: calc(cos(72deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(141deg) * 3.5em);
+ margin-left: calc(cos(96deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(165deg) * 3.5em);
+ margin-left: calc(cos(120deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(189deg) * 3.5em);
+ margin-left: calc(cos(144deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(213deg) * 3.5em);
+ margin-left: calc(cos(168deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(237deg) * 3.5em);
+ margin-left: calc(cos(192deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(261deg) * 3.5em);
+ margin-left: calc(cos(216deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(285deg) * 3.5em);
+ margin-left: calc(cos(240deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(309deg) * 3.5em);
+ margin-left: calc(cos(264deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(333deg) * 3.5em);
+ margin-left: calc(cos(288deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(357deg) * 3.5em);
+ margin-left: calc(cos(312deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(381deg) * 3.5em);
+ margin-left: calc(cos(336deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='15'] > :nth-child(16) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(67.5deg) * 3.5em);
+ margin-left: calc(cos(22.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(90deg) * 3.5em);
+ margin-left: calc(cos(45deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(112.5deg) * 3.5em);
+ margin-left: calc(cos(67.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(135deg) * 3.5em);
+ margin-left: calc(cos(90deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(157.5deg) * 3.5em);
+ margin-left: calc(cos(112.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(180deg) * 3.5em);
+ margin-left: calc(cos(135deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(202.5deg) * 3.5em);
+ margin-left: calc(cos(157.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(247.5deg) * 3.5em);
+ margin-left: calc(cos(202.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(270deg) * 3.5em);
+ margin-left: calc(cos(225deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(292.5deg) * 3.5em);
+ margin-left: calc(cos(247.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(315deg) * 3.5em);
+ margin-left: calc(cos(270deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(337.5deg) * 3.5em);
+ margin-left: calc(cos(292.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(360deg) * 3.5em);
+ margin-left: calc(cos(315deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(16) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(382.5deg) * 3.5em);
+ margin-left: calc(cos(337.5deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='16'] > :nth-child(17) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(66.1764705882deg) * 3.5em);
+ margin-left: calc(cos(21.1764705882deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(87.3529411765deg) * 3.5em);
+ margin-left: calc(cos(42.3529411765deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(108.5294117647deg) * 3.5em);
+ margin-left: calc(cos(63.5294117647deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(129.7058823529deg) * 3.5em);
+ margin-left: calc(cos(84.7058823529deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(150.8823529412deg) * 3.5em);
+ margin-left: calc(cos(105.8823529412deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(172.0588235294deg) * 3.5em);
+ margin-left: calc(cos(127.0588235294deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(193.2352941176deg) * 3.5em);
+ margin-left: calc(cos(148.2352941176deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(214.4117647059deg) * 3.5em);
+ margin-left: calc(cos(169.4117647059deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(235.5882352941deg) * 3.5em);
+ margin-left: calc(cos(190.5882352941deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(256.7647058824deg) * 3.5em);
+ margin-left: calc(cos(211.7647058824deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(277.9411764706deg) * 3.5em);
+ margin-left: calc(cos(232.9411764706deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(299.1176470588deg) * 3.5em);
+ margin-left: calc(cos(254.1176470588deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(320.2941176471deg) * 3.5em);
+ margin-left: calc(cos(275.2941176471deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(341.4705882353deg) * 3.5em);
+ margin-left: calc(cos(296.4705882353deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(16) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(362.6470588235deg) * 3.5em);
+ margin-left: calc(cos(317.6470588235deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(17) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(383.8235294118deg) * 3.5em);
+ margin-left: calc(cos(338.8235294118deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='17'] > :nth-child(18) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(65deg) * 3.5em);
+ margin-left: calc(cos(20deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(85deg) * 3.5em);
+ margin-left: calc(cos(40deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(105deg) * 3.5em);
+ margin-left: calc(cos(60deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(125deg) * 3.5em);
+ margin-left: calc(cos(80deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(145deg) * 3.5em);
+ margin-left: calc(cos(100deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(165deg) * 3.5em);
+ margin-left: calc(cos(120deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(185deg) * 3.5em);
+ margin-left: calc(cos(140deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(205deg) * 3.5em);
+ margin-left: calc(cos(160deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(245deg) * 3.5em);
+ margin-left: calc(cos(200deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(265deg) * 3.5em);
+ margin-left: calc(cos(220deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(285deg) * 3.5em);
+ margin-left: calc(cos(240deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(305deg) * 3.5em);
+ margin-left: calc(cos(260deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(325deg) * 3.5em);
+ margin-left: calc(cos(280deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(16) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(345deg) * 3.5em);
+ margin-left: calc(cos(300deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(17) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(365deg) * 3.5em);
+ margin-left: calc(cos(320deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(18) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(385deg) * 3.5em);
+ margin-left: calc(cos(340deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='18'] > :nth-child(19) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(63.9473684211deg) * 3.5em);
+ margin-left: calc(cos(18.9473684211deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(82.8947368421deg) * 3.5em);
+ margin-left: calc(cos(37.8947368421deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(101.8421052632deg) * 3.5em);
+ margin-left: calc(cos(56.8421052632deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(120.7894736842deg) * 3.5em);
+ margin-left: calc(cos(75.7894736842deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(139.7368421053deg) * 3.5em);
+ margin-left: calc(cos(94.7368421053deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(158.6842105263deg) * 3.5em);
+ margin-left: calc(cos(113.6842105263deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(177.6315789474deg) * 3.5em);
+ margin-left: calc(cos(132.6315789474deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(196.5789473684deg) * 3.5em);
+ margin-left: calc(cos(151.5789473684deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(215.5263157895deg) * 3.5em);
+ margin-left: calc(cos(170.5263157895deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(234.4736842105deg) * 3.5em);
+ margin-left: calc(cos(189.4736842105deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(253.4210526316deg) * 3.5em);
+ margin-left: calc(cos(208.4210526316deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(272.3684210526deg) * 3.5em);
+ margin-left: calc(cos(227.3684210526deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(291.3157894737deg) * 3.5em);
+ margin-left: calc(cos(246.3157894737deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(310.2631578947deg) * 3.5em);
+ margin-left: calc(cos(265.2631578947deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(16) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(329.2105263158deg) * 3.5em);
+ margin-left: calc(cos(284.2105263158deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(17) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(348.1578947368deg) * 3.5em);
+ margin-left: calc(cos(303.1578947368deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(18) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(367.1052631579deg) * 3.5em);
+ margin-left: calc(cos(322.1052631579deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(19) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(386.0526315789deg) * 3.5em);
+ margin-left: calc(cos(341.0526315789deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='19'] > :nth-child(20) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(2) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(63deg) * 3.5em);
+ margin-left: calc(cos(18deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(3) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(81deg) * 3.5em);
+ margin-left: calc(cos(36deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(4) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(99deg) * 3.5em);
+ margin-left: calc(cos(54deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(5) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(117deg) * 3.5em);
+ margin-left: calc(cos(72deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(6) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(135deg) * 3.5em);
+ margin-left: calc(cos(90deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(7) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(153deg) * 3.5em);
+ margin-left: calc(cos(108deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(8) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(171deg) * 3.5em);
+ margin-left: calc(cos(126deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(9) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(189deg) * 3.5em);
+ margin-left: calc(cos(144deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(10) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(207deg) * 3.5em);
+ margin-left: calc(cos(162deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(11) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(225deg) * 3.5em);
+ margin-left: calc(cos(180deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(12) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(243deg) * 3.5em);
+ margin-left: calc(cos(198deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(13) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(261deg) * 3.5em);
+ margin-left: calc(cos(216deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(14) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(279deg) * 3.5em);
+ margin-left: calc(cos(234deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(15) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(297deg) * 3.5em);
+ margin-left: calc(cos(252deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(16) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(315deg) * 3.5em);
+ margin-left: calc(cos(270deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(17) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(333deg) * 3.5em);
+ margin-left: calc(cos(288deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(18) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(351deg) * 3.5em);
+ margin-left: calc(cos(306deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(19) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(369deg) * 3.5em);
+ margin-left: calc(cos(324deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(20) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(387deg) * 3.5em);
+ margin-left: calc(cos(342deg + 45deg) * 3.5em); }
+ .wmd-avatars [data-links='20'] > :nth-child(21) {
+ top: 2.6em;
+ left: 2.6em;
+ margin-top: calc(sin(405deg) * 3.5em);
+ margin-left: calc(cos(360deg + 45deg) * 3.5em); }
+ .wmd-avatars img {
+ display: none; }
+ .wmd-avatars .image {
+ display: block;
+ position: absolute;
+ top: 0em;
+ left: 0em;
+ width: 100%;
+ height: 100%;
+ border: .1em solid #888;
+ border-radius: 50%;
+ box-sizing: border-box; }
+
+/*# sourceMappingURL=WMarkDown.css.map */
diff --git a/Public/scss/WMarkDown.css.map b/Public/scss/WMarkDown.css.map
old mode 100755
new mode 100644
index 981daa7..5489cf1
--- a/Public/scss/WMarkDown.css.map
+++ b/Public/scss/WMarkDown.css.map
@@ -1,7 +1,7 @@
-{
-"version": 3,
-"mappings": "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",
-"sources": ["WMarkDown.base.scss","WMarkDown.settings.scss","WMarkDown.components.scss","WMarkDown.external.scss"],
-"names": [],
-"file": "WMarkDown.css"
-}
+{
+"version": 3,
+"mappings": "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",
+"sources": ["WMarkDown.scss"],
+"names": [],
+"file": "WMarkDown.css"
+}
diff --git a/Public/scss/WMarkDown.external.scss b/Public/scss/WMarkDown.external.scss
deleted file mode 100755
index a4d08d5..0000000
--- a/Public/scss/WMarkDown.external.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.wmarkdown{
-
- .MathJax{font-size : 1.3em;}
-
-}
diff --git a/Public/scss/WMarkDown.scss b/Public/scss/WMarkDown.scss
old mode 100755
new mode 100644
index 00babf7..dc5e8da
--- a/Public/scss/WMarkDown.scss
+++ b/Public/scss/WMarkDown.scss
@@ -1 +1,428 @@
-@import "WMarkDown.settings.scss", "WMarkDown.base.scss", "WMarkDown.components.scss", "WMarkDown.external.scss";
+// Settings
+$transition-in : .25s;
+$transition-out : 1s;
+// Settings
+
+.wmd-icon>input{display : none;}
+.wmd-code-block{
+ display : block;
+ position : relative;
+ margin : 2em 4%;
+ margin-bottom : 4em;
+ font-size : .9em;
+ .code{
+ position : relative;
+ top : 2.5em;
+ width : 100%;
+ height : auto;
+ max-height : 30em;
+ overflow-x : hidden;
+ overflow-y : auto;
+ }
+ .data{
+ position : absolute;
+ list-style-type : none;
+ margin : 0em 2em;
+ padding : 0em;
+ li{
+ display : inline-block;
+ margin : 0em;
+ padding : .1em .4em;
+ height : 1.2em;
+ border : .1em solid #BBB;
+ box-shadow : 0em 0em .8em inset #BBB;
+ &::before{font-family : monospace;}
+ &>[data-i18n]{display : none;}
+ }
+ [data-icon]{margin-right : .3em;}
+ &>:first-child{display : none;}
+ &>:nth-child(2){border-radius : .6em 0em 0em .6em;}
+ &>:last-child{border-radius : 0em .6em .6em 0em;}
+ }
+ ol{
+ width : 100%;
+ margin : 0em;
+ padding : 0em;
+ padding-bottom : 1.5em;
+ font-family : monospace;
+ li{
+ margin-left : 4em;
+ &::marker{font-size : .85em;}
+ &:nth-child(2n + 1){background-color : rgba(200, 200, 200, .2);}
+ }
+ }
+ .content{
+ position : absolute;
+ top : 0em;
+ left : 4.3em;
+ right : 0em;
+ margin : 0em;
+ font-family : monospace;
+ background : transparent;
+ overflow-y : hidden;
+ overflow-x : auto;
+ &>div,&>pre{
+ padding : .1em;
+ white-space : nowrap;
+ box-sizing : border-box;
+ }
+ }
+}
+.wmd-quote{
+ display : flex;
+ margin : 1em 2em;
+ padding-left : .5em;
+ font-size : .9em;
+ border-left : .5em solid #AAA;
+ border-radius : .5em 0em 0em .5em;
+ flex-direction : row;
+ &>div{
+ flex : auto;
+ align-self : start;
+ &+div{
+ width : 100%;
+ padding-left : 1em;
+ }
+ }
+ .quote-type{
+ text-align : center;
+ span{
+ display : block;
+ &+span{font-weight : 900;}
+ }
+ }
+ [data-avatar]{
+ width : 4em;
+ height : 4em;
+ border-radius : 1em;
+ background-color : #888;
+ background-position : center center;
+ background-size : cover;
+ }
+ [data-icon]{font-size : 3em;}
+ [data-avatar=srx00],[data-avatar=kyman]{
+ background-color : transparent;
+ background-image :
+ url("https://cdn.k3y.pw/data/KyMAN-water-mark.png"),
+ url("https://cdn.local/data/KyMAN-water-mark.png");
+ }
+}
+
+[data-include]{
+ &>.link{
+ margin-top : 2em;
+ font-size : .9em;
+ opacity : .8;
+ }
+ &+h1,&+h2,&+h3,&+h4,&+h5,&+h6{margin-top : 0em;}
+ &>.wmarkdown{&>h1,&>h2,&>h3,&>h4,&>h5,&>h6{&:first-child{margin-top : 0em;}}}
+ [data-include]>.link>a{display : none;}
+}
+
+.wmd-title{
+ &>:last-child{
+ margin-left : .3em;
+ font-size : .6em;
+ span{
+ opacity : .3;
+ transition-duration : $transition-out;
+ transition-property : opacity;
+ &::before{margin : 0em;}
+ &:hover{
+ opacity : 1;
+ transition-duration : $transition-in;
+ }
+ }
+ }
+}
+
+// .wmd-dictionary-item{
+// // text-decoration : underline dotted;
+// opacity : .8;
+// cursor : pointer;
+// transition-duration : $transition-out;
+// transition-property : opacity;
+// &:hover{
+// opacity : 1;
+// transition-duration : $transition-in;
+// }
+// }
+
+.wmd-table{
+ padding : 1em 0em;
+ margin-left : 5%;
+ margin-right : 5%;
+ text-align : center;
+ font-size : .9em;
+ table{
+ max-width : 100%;
+ margin-left : auto;
+ margin-right : auto;
+ border-collapse : separate;
+ border-spacing : 0;
+ border : .1em solid #888;
+ box-sizing : border-box;
+ border-radius : .3em;
+ td,th{
+ padding : .2em .5em;
+ border : .05em solid mix(#888, rgba(255, 255, 255, 0), 50%);
+ }
+ &>:first-child>:first-child>:first-child{border-top-left-radius : .3em;}
+ &>:first-child>:first-child>:last-child{border-top-right-radius : .3em;}
+ &>:last-child>:last-child>:first-child{border-bottom-left-radius : .3em;}
+ &>:last-child>:last-child>:last-child{border-bottom-right-radius : .3em;}
+ }
+ thead,tfoot{th,td{background-color : mix(#888, rgba(255, 255, 255, 0), 10%);}}
+ tbody>tr{
+ td,th{
+ background-color : rgba(255, 255, 255, 0);
+ transition-duration : $transition-out;
+ transition-property : background-color;
+ }
+ &:nth-child(n):hover{td,th{
+ background-color : mix(#888, rgba(255, 255, 255, 0), 10%);
+ transition-duration : $transition-in;
+ }}
+ &:nth-child(2n + 1){&>td,&>th{
+ background-color : mix(#888, rgba(255, 255, 255, 0), 20%);
+ }}
+ }
+}
+
+.wmd-list,.wmd-main-menu{
+ [data-deployed=false]{&~ul,&~ol{display : none;}}
+ [data-icon=deploy]{
+ user-select : none;
+ &+[data-i18n]{display : none;}
+ }
+}
+
+.wmd-dictionary-item[onclick]{cursor : help;}
+.wmd-dictionary-box{
+ position : absolute;
+ max-width : 15em;
+ max-height : 15em;
+ padding : .3em;
+ border : .1em solid #888;
+ background-color : #EFEFEF;
+ overflow : auto;
+ box-sizing : border-box;
+ box-shadow : .1em .1em .2em #000;
+ border-radius : .5em;
+ .links{text-align : center;}
+ a[href]{
+ display : inline-block;
+ width : 2em;
+ height : 2em;
+ margin : .3em;
+ background-color : rgba(0, 0, 0, .1);
+ border : .1em solid #888;
+ background-position : center center;
+ background-size : cover;
+ box-sizing : border-box;
+ border-radius : 1em;
+ }
+}
+
+.wmd-main-menu-button{
+ padding : 0em 1em;
+ text-align : right;
+ [data-icon]{
+ &::before{
+ margin : 0em;
+ font-size : 2em;
+ }
+ &+span{display : none;}
+ }
+}
+.wmd-main-menu{
+ position : absolute;
+ top : 0em;
+ right : 0em;
+ margin-top : 4em;
+ margin-right : 1em;
+ padding : .3em;
+ border : .1em solid #888;
+ background-color : #EFEFEF;
+ overflow : hidden;
+ z-index : 100;
+ border-radius : .5em;
+ box-shadow :
+ // 0em 0em 1em inset #888,
+ .1em .1em .2em #000;
+ &>ul{
+ max-width : 25em;
+ max-height : 25em;
+ margin : 0em;
+ padding : 0em;
+ overflow : auto;
+ }
+ ul{
+ list-style-type : none;
+ padding-right : 0em;
+ }
+ a:first-child{
+ margin-left : 1.1em;
+ }
+ li{
+ padding : .2em .3em;
+ background-color : rgba(0, 0, 0, 0);
+ transition-property : background-color;
+ transition-duration : $transition-in;
+ &:hover{
+ background-color : rgba(0, 0, 0, .1);
+ transition-duration : $transition-in;
+ }
+ }
+}
+
+.wmd-media{
+ &:not([data-type=icon]){
+ display : block;
+ position : relative;
+ left : 50%;
+ width : 30em;
+ margin-left : -15em;
+ text-align : center;
+ box-sizing : border-box;
+ img{
+ width : 100%;
+ height : auto;
+ max-width : 30em;
+ max-height : 30em;
+ &+span{
+ // display : none;
+ background-position : center center;
+ background-size : cover;
+ }
+ }
+ &[data-type=image] .text{display : none;}
+ &[data-type=picture] .text{
+ display : block;
+ width : 100%;
+ margin-top : -.2em;
+ text-align : right;
+ font-size : .85em;
+ }
+ }
+ &[data-type=icon]{
+ display : inline-block;
+ height : 1em;
+ // vertical-align : middle;
+ img{
+ width : auto;
+ height : 100%;
+ }
+ .text{display : none;}
+ }
+}
+
+.wmd-code-doc{
+ font-size : .85em;
+ border : none;
+ // border-radius : .5em;
+ legend{display : none;}
+ .description{
+ font-family : monospace;
+ white-space : pre;
+ }
+ .return-type{margin-right : 1em;}
+ .return-type,.typed{
+ &:before{content : "[";}
+ &:after{content : "]";}
+ }
+ .environment,.access{
+ display : inline-block;
+ margin-right : 1em;
+ text-transform : capitalize;
+ }
+ .arguments{
+ &:before{content : "(";}
+ &:after{content : ")";}
+ }
+ .argument{
+ display : block;
+ width : 100%;
+ padding-left : 4em;
+ box-sizing : border-box;
+ &>span+span{margin-left : 1em;}
+ &>:nth-child(5):before{
+ content : "=";
+ margin-right : 1em;
+ // margin : 0em 1em;
+ }
+ }
+ .default-value::before{content : "= ";}
+ &[data-arguments-l='0']>.definition{display : none;}
+}
+
+.wmd-color-sample{
+ display : inline-block;
+ width : 1em;
+ height : 1em;
+ border : .1em solid #222;
+ vertical-align : middle;
+ border-radius : .3em;
+ box-shadow : 0em 0em .2em #EFEFEF;
+ &>*{display : none;}
+}
+
+.wmd-avatars{
+
+ $size : 7em;
+ $half : $size * .5;
+ $favicon : 1.8em;
+
+ display : block;
+ list-style-type : none;
+ text-align : center;
+ &>*{
+ display : inline-block;
+ position : relative;
+ width : $size;
+ height : $size;
+ margin : 1em;
+ .wmd-media{
+ left : auto;
+ margin : 0em;
+ width : 100%;
+ height : 100%;
+ }
+ a+a{
+ display : block;
+ position : absolute;
+ width : $favicon;
+ height : $favicon;
+ border : .1em solid #888;
+ background-color : #EFEFEF;
+ background-position : center center;
+ background-size : cover;
+ border-radius : 50%;
+ box-sizing : border-box;
+ }
+ }
+ @for $i from 1 through 20{
+ [data-links='#{$i}']{
+ @for $j from 1 through $i{
+ &>:nth-child(#{$j + 1}){
+ top : ($size / 2) - ($favicon / 2);
+ left : ($size / 2) - ($favicon / 2);
+ margin-top : calc(sin(#{$j * (360deg / $i) + 45deg}) * #{$size / 2});
+ margin-left : calc(cos(#{$j * (360deg / $i)} + 45deg) * #{$size / 2});
+ }
+ }
+ }
+ }
+ img{display : none;}
+ .image{
+ display : block;
+ position : absolute;
+ top : 0em;
+ left : 0em;
+ width : 100%;
+ height : 100%;
+ border : .1em solid #888;
+ border-radius : 50%;
+ box-sizing : border-box;
+ }
+}
\ No newline at end of file
diff --git a/Public/scss/WMarkDown.settings.scss b/Public/scss/WMarkDown.settings.scss
deleted file mode 100755
index d75e1f6..0000000
--- a/Public/scss/WMarkDown.settings.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-// Colors.
-$color-primary : #2272D4;
-$color-secondary : #D47222;
-$color-fore : #222;
-$color-back : #EFEFEF;
-$color-grey : mix($color-back, $color-fore, 50%);
-
-// Fonts.
-$font-family : "Roboto";
-$font-mono : "Roboto Mono";
-$font-icon : "FA5FR";
-
-// Sizes.
-$header-height : 4em;
-$footer-height : 1em;
-$menu-headers-width : 20%;
-$menu-files-width : 10%;
-$content-margin : 5%;
-$margin-boxes : .5em;
-$border-size : .1em;
-$menu-margin-level : 2em;
-$content-internal-margin : 3em;
-$dictionary-item-width : 10em;
-$dictionary-item-height : 10em;
-$dictionary-link-size : 2em;
-$border-radius : .3em;
-
-// Transitions.
-$transition-in : .2s;
-$transition-out : 1s;
-$transition : .5s;
diff --git a/Public/scss/WMarkDown.web.css b/Public/scss/WMarkDown.web.css
new file mode 100644
index 0000000..2243bdd
--- /dev/null
+++ b/Public/scss/WMarkDown.web.css
@@ -0,0 +1,160 @@
+html, body {
+ height: 100%;
+ margin: 0em;
+ overflow: hidden; }
+
+.wmarkdown-web {
+ position: relative;
+ top: 0em;
+ left: 0em;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ background-color: #EFEFEF;
+ color: #222; }
+ .wmarkdown-web, .wmarkdown-web input, .wmarkdown-web button, .wmarkdown-web select {
+ font-family: "Roboto"; }
+ .wmarkdown-web pre, .wmarkdown-web textarea,
+ .wmarkdown-web .wmd-code-block,
+ .wmarkdown-web .wmd-code-block ol > li::marker,
+ .wmarkdown-web .wmd-code-doc > .description {
+ font-family: "Roboto Mono"; }
+ .wmarkdown-web [data-icon]::before {
+ font-family: "FA6FR"; }
+ .wmarkdown-web input, .wmarkdown-web button, .wmarkdown-web select, .wmarkdown-web textarea {
+ font-size: 1em; }
+ .wmarkdown-web [data-visible=false], .wmarkdown-web [data-hidden=true] {
+ display: none; }
+ .wmarkdown-web a[href] {
+ text-decoration: none;
+ word-break: break-word; }
+ .wmarkdown-web a[href], .wmarkdown-web [onclick], .wmarkdown-web [onmouseover], .wmarkdown-web [onmousedown], .wmarkdown-web button, .wmarkdown-web [type=button], .wmarkdown-web [type=reset], .wmarkdown-web [type=submit] {
+ cursor: pointer;
+ transition-duration: 1s; }
+ .wmarkdown-web a[href]:hover, .wmarkdown-web [onclick]:hover, .wmarkdown-web [onmouseover]:hover, .wmarkdown-web [onmousedown]:hover, .wmarkdown-web button:hover, .wmarkdown-web [type=button]:hover, .wmarkdown-web [type=reset]:hover, .wmarkdown-web [type=submit]:hover {
+ transition-duration: 0.2s; }
+ .wmarkdown-web a[href], .wmarkdown-web [onclick], .wmarkdown-web [onmouseover], .wmarkdown-web [onmousedown], .wmarkdown-web button, .wmarkdown-web [type=button], .wmarkdown-web [type=reset], .wmarkdown-web [type=submit] {
+ color: #008844;
+ transition-property: color; }
+ .wmarkdown-web a[href]:hover, .wmarkdown-web [onclick]:hover, .wmarkdown-web [onmouseover]:hover, .wmarkdown-web [onmousedown]:hover, .wmarkdown-web button:hover, .wmarkdown-web [type=button]:hover, .wmarkdown-web [type=reset]:hover, .wmarkdown-web [type=submit]:hover {
+ color: #880044; }
+ .wmarkdown-web [onmouseover], .wmarkdown-web [onmousedown] {
+ color: #115533;
+ transition-property: color; }
+ .wmarkdown-web [onmouseover]:hover, .wmarkdown-web [onmousedown]:hover {
+ color: #551133; }
+ .wmarkdown-web a[href], .wmarkdown-web [onclick] {
+ transition-property: color; }
+ .wmarkdown-web button, .wmarkdown-web [type=button], .wmarkdown-web [type=reset], .wmarkdown-web [type=submit] {
+ border-color: 0.1em solid #008844;
+ box-shadow: 0em 0em 0.4em #008844;
+ transition-property: color,border-color,box-shadow; }
+ .wmarkdown-web button:hover, .wmarkdown-web [type=button]:hover, .wmarkdown-web [type=reset]:hover, .wmarkdown-web [type=submit]:hover {
+ border-color: 0.1em solid #880044;
+ box-shadow: 0em 0em 0.4em #880044; }
+ .wmarkdown-web .wmd-dictionary-item {
+ color: #115533; }
+ .wmarkdown-web .wmd-dictionary-item:hover {
+ color: #551133; }
+ .wmarkdown-web h2 {
+ font-size: 2.6em; }
+ .wmarkdown-web h3 {
+ font-size: 2.2em; }
+ .wmarkdown-web h4 {
+ font-size: 1.8em; }
+ .wmarkdown-web h5 {
+ font-size: 1.4em; }
+ .wmarkdown-web h6 {
+ font-size: 1em; }
+ .wmarkdown-web ul, .wmarkdown-web ol {
+ padding: 0em 2em; }
+ .wmarkdown-web header, .wmarkdown-web main, .wmarkdown-web footer {
+ position: absolute;
+ left: 0em;
+ width: 100%; }
+ .wmarkdown-web header, .wmarkdown-web footer {
+ overflow: hidden;
+ display: flex;
+ flex-direction: row;
+ box-shadow: 0em 0em 0.125em #EFEFEF, 0em 0em 0.25em #EFEFEF, 0em 0em 0.5em #EFEFEF, 0em 0em 1em #EFEFEF, 0em 0em 2em #EFEFEF; }
+ .wmarkdown-web header > *, .wmarkdown-web footer > * {
+ flex: auto;
+ align-self: center; }
+ .wmarkdown-web header {
+ top: 0em;
+ height: 4em;
+ z-index: 20; }
+ .wmarkdown-web header h1 {
+ margin: .2em 1em;
+ padding: 0em;
+ font-size: 1em;
+ text-wrap: nowrap; }
+ .wmarkdown-web header h1 .image {
+ height: 3.6em; }
+ .wmarkdown-web header h1 img {
+ width: auto;
+ height: 3.6em; }
+ .wmarkdown-web header h1 img + span {
+ display: none; }
+ .wmarkdown-web header h1 span + span {
+ font-size: 3.4em;
+ height: 0.9444444444em; }
+ .wmarkdown-web header h1 a > span {
+ display: inline-block;
+ vertical-align: top; }
+ .wmarkdown-web main {
+ top: 4em;
+ bottom: 2.5em;
+ padding: 1% 2%;
+ z-index: 10;
+ overflow: auto;
+ box-sizing: border-box; }
+ .wmarkdown-web footer {
+ bottom: 0em;
+ height: 2.5em;
+ z-index: 30; }
+ .wmarkdown-web .main-menu {
+ width: 25em;
+ text-align: center; }
+ .wmarkdown-web .main-menu ul {
+ list-style-type: none;
+ margin: 0em;
+ padding: 0em; }
+ .wmarkdown-web .main-menu li {
+ display: inline-block;
+ margin: 0em .6em; }
+ .wmarkdown-web .licenses {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ position: absolute;
+ left: 0em;
+ bottom: 0em;
+ width: 100%;
+ text-align: center;
+ padding: .1em .2em;
+ font-weight: 900;
+ font-size: .85em;
+ box-sizing: border-box; }
+ .wmarkdown-web .license {
+ display: flex;
+ flex-direction: row;
+ align-self: center;
+ margin: 0em .2em;
+ text-align: center;
+ box-sizing: border-box; }
+ .wmarkdown-web .license span {
+ flex: auto;
+ align-self: center; }
+ .wmarkdown-web .license > * {
+ vertical-align: middle; }
+ .wmarkdown-web .license img {
+ width: auto;
+ height: 2.5em;
+ margin: .2em .2em; }
+ .wmarkdown-web main {
+ overflow: auto; }
+ .wmarkdown-web footer > .licenses {
+ font-size: .8em; }
+
+/*# sourceMappingURL=WMarkDown.web.css.map */
diff --git a/Public/scss/WMarkDown.web.css.map b/Public/scss/WMarkDown.web.css.map
new file mode 100644
index 0000000..131d1a9
--- /dev/null
+++ b/Public/scss/WMarkDown.web.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "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",
+"sources": ["WMarkDown.web.scss","../../../AnP/Public/scss/AnP.common.scss","../../../AnP/Public/scss/AnP.settings.scss"],
+"names": [],
+"file": "WMarkDown.web.css"
+}
diff --git a/Public/scss/WMarkDown.web.scss b/Public/scss/WMarkDown.web.scss
new file mode 100644
index 0000000..cfabc1c
--- /dev/null
+++ b/Public/scss/WMarkDown.web.scss
@@ -0,0 +1,16 @@
+html,body{
+ height : 100%;
+ margin : 0em;
+ overflow : hidden;
+}
+
+@import "../../../AnP/Public/scss/AnP.settings.scss";
+$color-primary : #008844;
+$color-secondary : #880044;
+@import "../../../AnP/Public/scss/AnP.common.scss";
+
+.wmarkdown-web{
+ @include main_web();
+ main{overflow : auto;}
+ footer>.licenses{font-size : .8em;}
+}
\ No newline at end of file
diff --git a/Public/tests/patterns.html b/Public/tests/patterns.html
deleted file mode 100644
index 78f7710..0000000
--- a/Public/tests/patterns.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/Public/update.php b/Public/update.php
deleted file mode 100755
index fb0f016..0000000
--- a/Public/update.php
+++ /dev/null
@@ -1 +0,0 @@
- "update_scripts",
- "author" => "KyMAN",
- "project" => "WMarkDown",
- "class" => "WMarkDown",
- "object" => "wmarkdown",
- "url" => "https://wmarkdown.k3y.pw",
- "project_author" => "Tarsier,KyMAN",
- "key_words" => "Whalers,MarkDown,MediaWiki,WMarkDown,documentación",
- "logo" => "https://wmarkdown.k3y.pw/images/wmarkdown.png",
- "language" => "es",
- "ignore_script_paths" => [
- "/.git",
- "/.gitignore",
- "/ArtBook",
- "/Data",
- "/HTML",
- "/JSON",
- "/Public/css",
- "/Public/index.html",
- "/Public/.htaccess",
- "/Public/es",
- "/Public/images",
- "/Public/json",
- "/Public/scss",
- "/README.md",
- "/WMD"
- ]
- ], WMarkDown\Secrets::wmarkdown));
diff --git a/Python/Application/WMarkDown.py b/Python/Application/WMarkDown.py
new file mode 100644
index 0000000..6406636
--- /dev/null
+++ b/Python/Application/WMarkDown.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from Abstracts.AnPMap import AnP
+from Abstracts.Applications import ApplicationsAbstract
+from typing import Any, Optional
+from os.path import abspath as path_absolute
+from os.path import dirname as directory_name
+
+class WMarkDown(ApplicationsAbstract):
+
+ def __init__(self, anp:AnP, inputs:Optional[dict[str, Any|None]|tuple|list] = None) -> None:
+ super().__init__(anp, "wmarkdown", anp.path.get_parent(path_absolute(directory_name(__file__))), {
+ **anp.get_dictionary(inputs),
+ "wmarkdown_default_settings_files" : "/JSON/WMarkDown.py.settings.json"
+ })
\ No newline at end of file
diff --git a/Python/WMarkDown.py b/Python/WMarkDown.py
new file mode 100644
index 0000000..afcd26b
--- /dev/null
+++ b/Python/WMarkDown.py
@@ -0,0 +1,958 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from re import compile as RECompile
+from re import Pattern as REPattern
+from re import Match as REMatch
+from re import MULTILINE as RE_MULTILINE
+from re import IGNORECASE as RE_IGNORE_CASE
+from typing import Callable, Optional
+from os.path import exists as path_exists
+from os.path import dirname as directory_name
+from base64 import b64encode as base64_encode
+from json import dumps as json_encode
+
+class WMarkDown:
+
+ # Languages
+ HTML:int = 1 << 0
+
+ # Analyse modes
+ RAW:int = 0
+ SUBITEM:int = 1 << 0
+ LINKED:int = 1 << 1
+
+ html_special_characters:dict[str, str] = {
+ "<" : "lt",
+ ">" : "gt",
+ "&" : "amp"
+ }
+ quote_special:dict[str, str] = {
+ "?" : "ask",
+ "!" : "warning",
+ ">" : "answer",
+ "Q" : "comment",
+ "#" : "note"
+ }
+ item_mark:tuple[str, str, REPattern] = ("###@&&_", "_&&@###", RECompile(r'\#{3}\@\&{2}_([0-9]+)_\&{2}\@\#{3}'))
+
+ re_block_html_pattern:str = r'^[ \t]*<\!\-{2}[ \t]*\[{2}[\t ]*(wmd|wmarkdown)[ \t]*\]{2}[\t ]*\-{2}>'
+ re_block_html:REPattern = RECompile(re_block_html_pattern, RE_MULTILINE)
+ re_block_mark:REPattern = RECompile(r'^[ \t]*((" ?){3}|(\' ?){3}|(` ?){3})[ \t]*(wmd|wmarkdown)|' + re_block_html_pattern, RE_MULTILINE)
+ re_new_lines:REPattern = RECompile(r'[\r\n]+')
+ re_new_line:REPattern = RECompile(r'\n|\r\n|\r')
+ re_started_white_spaces:REPattern = RECompile(r'^[ \t]*')
+ re_lines:REPattern = RECompile(r'^[^\r\n]+', RE_MULTILINE)
+ re_list_line:REPattern = RECompile(r'^([ \t]*)(([\-\*#\+]+)|([0-9]+|[a-z]+)\.)?(.*)$', RE_IGNORE_CASE | RE_MULTILINE)
+ re_table_line:REPattern = RECompile(r'^\|([^\r\n"\']+|"([^"\\\\]+|\\\\(.|[\r\n])|[\r\n]+)*"|\'([^\'\\\\]+|\\\\(.|[\r\n])|[\r\n]+)*\')*[\r\n]*', RE_MULTILINE)
+ re_table_item:REPattern = RECompile(r'(\|+)(([^\|\'\"]+|"([^"\\\\]+|\\\\(.|[\r\n])|[\r\n]+)*"|\'([^\'\\\\]+|\\\\(.|[\r\n])|[\r\n]+)*\')*)')
+ re_options:REPattern = RECompile(r'`{3}[ \t]*(wmd|wmarkdown)\-options[ \t]*(\n|\r\n|\r)(([^\r\n`]+|[\r\n]+|`{1,2}[^`])*)`{3}')
+ re_option:REPattern = RECompile(r'^([^=\r\n]+)=([^\r\n]*)$', RE_MULTILINE)
+ re_extension:REPattern = RECompile(r'(([^\.\/\\\\]+)\.)?([^\.\/\\\\]+)$')
+ re_characters_no_id:REPattern = RECompile(r'[^a-z0-9]+', RE_IGNORE_CASE)
+ re_phone_number:REPattern = RECompile(r'^\+?[0-9 ]{5,22}$')
+ re_email_address:REPattern = RECompile(r'^[a-z\.0-9_\-]+@[a-z\.0-9_\-]+\.[a-z0-9]+$')
+ re_class_attribute:REPattern = RECompile(r'(?]+)>|("[^"]*"|\'[^\']*\')')
+ re_start_with_white_spaces:REPattern = RECompile(r'^[ \t]', RE_MULTILINE)
+ re_domain:REPattern = RECompile(r'^[^\:]+\:\/{2}[^\/]+')
+ re_protocol:REPattern = RECompile(r'^([a-z0-9_\-]+)\:', RE_IGNORE_CASE)
+
+ def __init__(self) -> None:
+
+ self.modules:dict[str, tuple[int, REPattern]] = {
+ "special_characters" : (self.SUBITEM, RECompile(r'\\([\(\{\[\*\\])')),
+ "title" : (self.RAW, RECompile(r'^((#{1,6})[\t ]*([^\r\n]+)|(={1,6})[\t ]*([^\r\n=]+)={1,6})(\n|\r\n|\r){2,}', RE_MULTILINE)),
+ "list" : (self.RAW, RECompile(r'^([\-\*#\+]+|([0-9]+|[a-z]+)\.)[^\r\n]*(\n|\r\n|\r)([\t ]*(([\-\*#\+]+|([0-9]+|[a-z]+)\.)[^\r\n]*)(\n|\r\n|\r)?)*', RE_IGNORE_CASE | RE_MULTILINE)),
+ "code_block" : (self.RAW, RECompile(r'^("{3}([^\r\n]*)(((?!"{3})(.|[\r\n]))+)"{3}|" " "([^\r\n]*)(((?!" " ")(.|[\r\n]))+)" " "|\'{3}([^\r\n]*)(((?!\'{3})(.|[\r\n]))+)\'{3}|\' \' \'([^\r\n]*)(((?!\' \' \')(.|[\r\n]))+)\' \' \'|`{3}([^\r\n]*)(((?!`{3})(.|[\r\n]))+)`{3}|` ` `([^\r\n]*)(((?!` ` `)(.|[\r\n]))+)` ` `)', RE_MULTILINE)),
+ "table" : (self.RAW, RECompile(r'^\[\|([^\r\n]*)[\r\n]+((^\|([^\]]([^\r\n"\']|"([^"\\\\]+|\\\\(.|[\r\n])|[\r\n]+)*"|\'([^\'\\\\]+|\\\\(.|[\r\n])|[\r\n]+)*\')*)?[\r\n]+)*)^\|\]', RE_MULTILINE)),
+ "quote" : (self.RAW, RECompile(r'^>[ \t]*(\[\![\t ]*([^\] \t]+)([ \t]+([^\]]+))?\])?(([^\r\n]+(\r\n|[\r\n])?)*)', RE_MULTILINE)),
+ "include" : (self.RAW, RECompile(r'^\[{2}include[ \t]+([^\]]+)\]{2}', RE_MULTILINE)),
+ "media" : (self.SUBITEM | self.LINKED, RECompile(r'\({2}\!(image|icon|video|audio|sound|picture)[ \t]+("(([^"]+|[\r\n]+))"|\'(([^\']+|[\r\n]+))\'|([^ \t\)]+))([ \t]*|[ \t]+("(([^\\\\"]+|\\\\.|[\r\n]+)*)"|\'(([^\\\\\']+|\\\\.|[\r\n]+)*)\'|([^\)]+)))\){2}', RE_IGNORE_CASE)),
+ "code_doc" : (self.RAW, RECompile(r'^\[{2}@(([^\]]+|\][^\]])+)\]{2}', RE_MULTILINE)),
+ "presentation_links" : (self.RAW, RECompile(r'^\[{2}"{3}(([^"]+|[\r\n]+|"{1,2}[^"])*)"{3}\]{2}', RE_MULTILINE)),
+ "paragraph" : (self.RAW, RECompile(r'^(([^\r\n]+(\n|\r\n|\r)?)+)', RE_MULTILINE)),
+ # "bold_italic" : (self.SUBITEM | self.LINKED, RECompile(r'\*{3}(([^\*]+|\*{1,2}[^\*]|[\r\n]+|\\\*)*)\*{3}')),
+ # "bold_italic" : (self.SUBITEM | self.LINKED, RECompile(r'(?]+|[a-z\.0-9_\-]+@[a-z\.0-9_\-]+\.[a-z0-9]+)', RE_IGNORE_CASE))
+ }
+ self.__ids_cache:tuple[str] = tuple()
+
+ def __id(self, string:str) -> str:
+
+ id:str = self.re_characters_no_id.sub(r'-', string).lower()
+
+ if id[0] == '-':
+ id = id[1:]
+ if id[-1] == '-':
+ id = id[:-1]
+
+ if id in self.__ids_cache:
+
+ i:int = 2
+
+ while id + "-" + str(i) in self.__ids_cache:
+ i += 1
+
+ id += "-" + str(i)
+
+ self.__ids_cache += (id,)
+
+ return id
+
+ def reset_ids(self):
+ self.__ids_cache = tuple()
+
+ def module_title(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ level:str = str(len(matches.group(2) or matches.group(4)))
+ content:str = (matches.group(3) or matches.group(5)).strip()
+ id:str = self.__id(content)
+
+ return ('' +
+ '' + self.analyse(content, language, self.SUBITEM, path) + ' ' +
+ '' +
+ ' ' +
+ ' ' +
+ ' ')
+ return None
+
+ def module_paragraph(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(0).strip(), language, self.SUBITEM, path) + '
'
+ return None
+
+ def module_bold_italic(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(1), language, self.SUBITEM, path) + ' '
+ return None
+
+ def module_bold(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(1), language, self.SUBITEM, path) + ' '
+ return None
+
+ def module_italic(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(1), language, self.SUBITEM, path) + ' '
+ return None
+
+ def module_strike(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(1), language, self.SUBITEM, path) + ''
+ return None
+
+ def module_underline(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(1), language, self.SUBITEM, path) + ' '
+ return None
+
+ def module_code_item(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + self.analyse(matches.group(1), language, self.SUBITEM, path) + '
'
+ return None
+
+ @staticmethod
+ def __check_html_module(_type:str, matches:REMatch) -> str:
+
+ is_radio:bool = _type == "radio"
+
+ return ('' +
+ ' ' +
+ ' ' +
+ ' ')
+
+ @classmethod
+ def module_checkbox(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return self.__check_html_module("checkbox", matches)
+ return None
+
+ @classmethod
+ def module_radio(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return self.__check_html_module("radio", matches)
+ return None
+
+ @classmethod
+ def module_tick(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return self.__check_html_module("tick", matches)
+ return None
+
+ @staticmethod
+ def __list_deployed(level:list[int, str, str|None], last_mark:str|None, l:int) -> str:
+
+ _type:str = last_mark if l and last_mark else level[2]
+ deployable:bool = l and _type and _type in "+-"
+ deployed:str = (
+ "null" if not deployable else
+ "false" if _type == '-' else
+ "true")
+
+ return ' data-deployed="' + deployed + '"' + (' data-list-unprocessed="true"' if deployable else '')
+
+ @classmethod
+ def __list_start(self, unordered:bool, _type:str) -> str:
+ if not unordered:
+ _type = _type[:-1]
+ if self.re_integer.search(_type):
+ return ' start="' + _type + '"'
+ return ''
+
+ def module_list(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ html:str = ''
+ lines:list[str] = self.re_new_line.split(matches.group(0))
+ levels:list[list[int, str, str|None]] = [[0, 'u', None]]
+ l:int = 0
+ line:str
+ last_mark:str|None = None
+
+ for line in lines:
+
+ matches:REMatch = self.re_list_line.search(line)
+
+ if not matches:
+ continue
+
+ separator_by_marks:str = len(matches.group(3) or "")
+ separator:str = separator_by_marks if separator_by_marks > 1 else len(matches.group(1))
+ _type:str = matches.group(2)
+ key:str = matches.group(4)
+ string:str = self.analyse(matches.group(5), language, self.SUBITEM, path).strip()
+ unordered:bool = _type and _type[-1] in ('-', '*', '+')
+ subtype:str = _type[-1] if _type else None
+
+ if _type:
+ if levels[l][0] == separator:
+ levels[l][1] = 'u' if unordered else 'o'
+ levels[l][2] = subtype
+ html += ('' if html else '<' + str(levels[l][1]) + 'l class="wmd-list"' + self.__list_start(unordered, _type) + self.__list_deployed(levels[l - 1], last_mark, l) + (
+ ' type="' + key[0] + '"' if key and not unordered and key[0] in ('a', 'A', 'i', 'I') else
+ '') + '>') + '' + string
+ elif levels[l][0] < separator:
+ l += 1
+ levels += [[separator, "u" if unordered else "o", subtype]]
+ html += '<' + levels[l][1] + 'l class="wmd-list"' + self.__list_start(unordered, _type) + self.__list_deployed(levels[l - 1], last_mark, l) + (
+ ' type="' + key[0] + '"' if key and not unordered and key[0] in ('a', 'A', 'i', 'I') else
+ '') + '> ' + string
+ else:
+ while levels[l][0] > separator:
+ html += ' ' + levels.pop(l)[1] + 'l>'
+ l -= 1
+ if not l:
+ break
+ html += '' + string
+ else:
+ html += ' ' + string
+
+ last_mark = subtype
+
+ while len(levels):
+ html += ' ' + levels.pop(len(levels) - 1)[1] + 'l>'
+
+ return html
+ return None
+
+ @classmethod
+ def set_class(self, html:str, _class:str|list|tuple) -> str:
+
+ if not isinstance(_class, (list, tuple)):
+ _class = (_class,)
+
+ if 'class="' not in html:
+ html = (' ' if html else '') + 'class="' + " ".join(_class) + '"'
+
+ def callback(matches:REMatch):
+
+ attribute:str
+ classes_str:str
+ closer:str
+ classes:list[str]
+ class_key:str
+
+ attribute, classes_str, closer = matches.groups()
+ classes = self.re_white_spaces.split(classes_str)
+
+ return attribute + classes_str + (' ' if classes_str else '') + " ".join([
+ class_key for class_key in _class if class_key not in classes
+ ]) + closer
+
+ return self.re_class_attribute.sub(callback, html)
+
+ def module_table(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ html:dict[str, str] = {
+ "thead" : '',
+ "tbody" : '',
+ "tfoot" : ''
+ }
+ attributes:str = (matches.group(1) or "").strip()
+ data:str = matches.group(2).strip()
+
+ while True:
+
+ line_matches:REMatch = self.re_table_line.search(data)
+
+ if not line_matches:
+ break
+
+ line:str = line_matches.group(0)
+ cell_type:str = 'h' if line[1] in ('^', '_', '=') else 'd'
+ tags:tuple[str] = (
+ ("thead",) if line[1] == '^' else
+ ("tfoot",) if line[1] == '_' else
+ ("thead", "tfoot") if line[1] == '=' else
+ ("tbody",))
+ tag:str
+ row:str = ''
+
+ if cell_type == 'h':
+ line = line[0] + line[2:]
+
+ while True:
+
+ cell_matches:REMatch = self.re_table_item.search(line)
+
+ if not cell_matches:
+ break
+
+ column_span_i:int = len(cell_matches.group(1))
+ column_span:str = ' colspan="' + str(column_span_i) + '"' if column_span_i > 1 else ''
+ content:str = (cell_matches.group(2) or "").strip()
+
+ row += '' + self.analyse(
+ content[1:-1] if content and content[0] + content[-1] in ("''", '""') else content,
+ self.HTML,
+ self.SUBITEM,
+ path
+ ) + ' '
+
+ line = line[cell_matches.span()[1]:]
+
+ row += ' '
+
+ for i, tag in enumerate(tags):
+ if i:
+ html[tag] = row + html[tag]
+ else:
+ html[tag] += row
+
+ data = data[line_matches.span()[1]:]
+
+ return ('' +
+ '
' + "".join([
+ '<' + tag + '>' + content + '' + tag + '>' if content else '' for tag, content in html.items()
+ ]) + '
' +
+ '
')
+ return None
+
+ @classmethod
+ def module_exclude(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return '' + (matches.group(1) or "") + ' '
+ return None
+
+ def module_link(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ raw_url:str = (matches.group(4) or matches.group(11) or matches.group(14) or "").strip()
+ url = (
+ "tel:" + raw_url.replace(" ", "") if self.re_phone_number.search(raw_url) else
+ "mailto:" + raw_url if self.re_email_address.search(raw_url) else
+ raw_url)
+ text:str|None = matches.group(2) or matches.group(13) or raw_url
+ protocol_matches:REMatch|None = WMarkDown.re_protocol.search(url)
+
+ return '' + self.analyse(text.strip(), language, self.SUBITEM | self.LINKED, path) + ' '
+ return None
+
+ def module_quote(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ _type:str|None = matches.group(2)
+ type_text:str|None = matches.group(4)
+
+ if _type in self.quote_special:
+ _type = self.quote_special[_type]
+
+ return ('' +
+ (('' + ((
+ ' ' +
+ '' + _type[1:] + ' '
+ ) if _type[0] == "@" else (
+ ' ' +
+ ('' + type_text + ' ' if type_text else '')
+ )) + '
') if _type else '') +
+ '' + self.analyse(matches.group(5), language, self.SUBITEM, path) + '
' +
+ ' ')
+ return None
+
+ @classmethod
+ def code_block_data(self, key:str, value:str|int, language:Optional[int] = HTML, path:Optional[str] = None) -> str:
+ if language & self.HTML:
+ return ('' +
+ ' ' +
+ '' + key + ' ' +
+ '' + str(value) + ' ' +
+ ' ')
+ return None
+
+ @classmethod
+ def filter_html_special_characters(self, string:str) -> str:
+
+ l:int = len(self.html_special_characters)
+ _:int
+ index:list[int] = [-1 for _ in range(l)]
+ response:str = ''
+ characters:tuple[str] = tuple(self.html_special_characters.keys())
+
+ while True:
+
+ j:int
+ character:str
+ i:int|None = None
+
+ for j, character in enumerate(characters):
+ if index[j] == None:
+ continue
+
+ if index[j] < 0:
+ try:
+ index[j] = string.index(character)
+ except:
+ index[j] = None
+ continue
+
+ if i == None or index[i] > index[j]:
+ i = j
+
+ if i == None:
+ response += string
+ break
+
+ length:int = index[i]
+
+ response += string[:length] + '&' + self.html_special_characters[characters[i]] + ';'
+ string = string[length + 1:]
+
+ for j in range(l):
+ if index[j] != None:
+ index[j] -= length + 1
+
+ return response
+
+ @classmethod
+ def module_code_block(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ _type:str
+ content:str
+ i:int
+
+ for i in range(6):
+
+ j:int = 2 + i * 4
+
+ _type = matches.group(j)
+ content = matches.group(j + 1)
+ if _type or content:
+ _type = (_type or "unamed").strip().lower()
+ content = (content or "")
+ break
+
+ if _type:
+
+ lines:list[str] = self.re_new_line.split(content)[2:]
+ _:str
+
+ return (''
+ '
' +
+ ' ' +
+ self.code_block_data("type", _type, language) +
+ self.code_block_data("characters", len(content), language) +
+ self.code_block_data("lines", len(lines), language) +
+ ' ' +
+ '
' +
+ '
' + ''.join([' ' for _ in lines]) + ' ' +
+ '
' + self.filter_html_special_characters(content) + ' ' +
+ '
' +
+ '
')
+ return 'UNKNOWN_BLOCK'
+ return None
+
+ def module_special_characters(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+ return matches.group(1)
+ return None
+
+ @staticmethod
+ def load_file(path:str) -> str|None:
+ if path_exists(path):
+ try:
+ with open(path, "r") as opened:
+ return opened.read()
+ except:
+ pass
+ return None
+
+ def module_include(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ relative_path:str = matches.group(1)
+ new_path:str = path + relative_path
+ extension:str = self.re_extension.search(new_path).groups()[1:]
+ content:str|None = self.load_file(new_path)
+ directory:str = directory_name(new_path) + "/"
+ results:str|None = (
+ None if content == None else
+ self.process(content, language, directory)[0] if ".".join(extension) == "w.md" else
+ self.analyse(content, language, self.RAW, directory) if extension[-1] == "md" else
+ content)
+
+ return ('' +
+ '' +
+ (results or "") +
+ ' ')
+ return None
+
+ @staticmethod
+ def build_html_image(links:list[str]|tuple[str], _type:Optional[str] = "image", title:Optional[str] = None) -> str:
+
+ attributes:str = ' title="' + title + '" alt="' + title + '"' if title else ''
+
+ return ('' +
+ '' +
+ ''.join([' ' for link in links]) +
+ ' ' +
+ ' ' +
+ ' ' +
+ ('' + title + ' ' if title else '') +
+ ' ')
+
+ def module_media(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ _type:str = matches.group(1).lower()
+ links:list[str] = self.re_white_spaces.split(matches.group(3) or matches.group(5) or matches.group(7))
+ text:str = (matches.group(10) or matches.group(12) or matches.group(14) or '').strip()
+
+ if _type in ("image", "picture", "icon"):
+ return self.build_html_image(links, _type, text)
+
+ if _type in ("video",):
+
+ if "youtube.com" in links[0] or "youtu.be" in links[0]:
+ _type = "youtube"
+ elif "vimeo.com" in links[0]:
+ _type = "vimeo"
+
+ return ('' +
+ ' ' +
+ (
+ "YOUTUBE " if _type == "youtube" else
+ "VIMEO " if _type == "vimeo" else
+ ' 1 else '') + '> ') +
+ ' ')
+
+ if _type in ("sound", "audio"):
+
+ if "soundcloud.com" in links[0]:
+ _type = "soundcloud"
+
+ return ('' +
+ ' ' +
+ (
+ "SOUNDCLOUD " if _type == "soundcloud" else
+ ' ') +
+ ' ')
+
+ return None
+ return None
+
+ @classmethod
+ def mark_replace(self, string:str, matches:REMatch, fragments:list[str]) -> str:
+
+ if matches:
+
+ start:int
+ end:int
+ i:int = len(fragments)
+
+ start, end = matches.span()
+
+ string = string[:start] + self.item_mark[0] + str(len(fragments)) + self.item_mark[1] + string[end:]
+ fragments += [matches.group(0)]
+
+ return string
+
+ @classmethod
+ def restore_marks(self, string:str, fragments:list[str]) -> str:
+
+ while True:
+
+ matches:REMatch = self.item_mark[2].search(string)
+
+ if not matches:
+ break
+
+ i:int = int(matches.group(1))
+ _from:int
+ _to:int
+
+ _from, _to = matches.span()
+
+ string = string[:_from] + (fragments[i] if i >= 0 and i < len(fragments) else "") + string[_to:]
+
+ return string
+
+ @classmethod
+ def __doc_typed_format(self, typed:str) -> str:
+ return self.filter_html_special_characters(typed.replace(' ', "").replace(',', ", "))
+
+ def module_code_doc(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ # print(matches.groups())
+
+ data:str = matches.group(1).strip()
+ base:REMatch = self.re_code_doc.search(data)
+ return_type:str = self.__doc_typed_format(base.group(2) or "void")
+ access:str = base.group(3) or "public"
+ name_space:str|None = base.group(5)
+ environment:str = base.group(6) or "global"
+ method:str = base.group(7)
+ parameters:str|None = base.group(9)
+ has_parameters:bool = parameters != None
+ default_value:str|None = base.group(11)
+ full_method:str = (name_space + "." if name_space else "") + method.strip()
+ arguments:str = ''
+ arguments_definition:str = ''
+ header:str = ('' +
+ 'Name ' +
+ 'Required ' +
+ 'Nullable ' +
+ 'Typed ' +
+ 'Default Value ' +
+ ' ')
+ fragments:list[str] = []
+ matches:REMatch
+ arguments_l:int = 0
+
+ if access == "?":
+ access = "protected"
+ elif access == "!":
+ access = "private"
+
+ if environment == ":":
+ environment = "static"
+ elif environment == ".":
+ environment = "object"
+
+ if parameters:
+ while True:
+
+ matches = self.re_code_doc_subarguments.search(parameters)
+
+ if matches:
+ parameters = self.mark_replace(parameters, matches, fragments)
+ else:
+ break
+ else:
+ parameters = ""
+
+ for parameter in parameters.split(","):
+
+ matches = self.re_code_doc_arguments.search(parameter.strip())
+
+ if matches:
+
+ scopes:str = matches.group(1) or ""
+ required:bool = "!" in scopes
+ nullish:bool = "?" in scopes
+ typed:str = self.__doc_typed_format(self.restore_marks(matches.group(2), fragments))
+ name:str = matches.group(3).strip()
+ default_value:str = self.filter_html_special_characters(self.restore_marks((matches.group(5) or "").strip(), fragments))
+
+ arguments += ('' +
+ ('Required ' if required else '') +
+ ('Nullish ' if nullish else '') +
+ '' + typed + ' ' +
+ '' + name + ' ' +
+ ('' + default_value + ' ' if default_value else '') +
+ ' ')
+ arguments_definition += ('' +
+ '' + name + ' ' +
+ '' + ('True' if required else 'False') + ' ' +
+ '' + ('True' if nullish else 'False') + ' ' +
+ '' + typed + ' ' +
+ '' + default_value + ' ' +
+ ' ')
+ arguments_l += 1
+
+ return ('' +
+ '' + full_method + ' ' +
+ '' +
+ '' + return_type + ' ' +
+ '' + environment + ' ' +
+ '' + access + ' ' +
+ '' + full_method + ' ' +
+ ('' + arguments + ' ' if has_parameters else '') +
+ ('' + default_value + ' ' if default_value else '') +
+ '
' +
+ '' +
+ '
' +
+ '' + header + ' ' +
+ '' + arguments_definition + ' ' +
+ '' + header + ' ' +
+ '
' +
+ '
' +
+ ' ')
+ return None
+
+ def module_color_sample(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ color:str = matches.group(2) or matches.group(3)
+
+ return ('' +
+ ' ' +
+ '' + color + ' ' +
+ ' ')
+ return None
+
+ def module_presentation_links(self, matches:REMatch, language:Optional[int] = HTML, path:Optional[str] = None) -> str|None:
+ if language & self.HTML:
+
+ items:list = []
+ i:int = -1
+ title:str
+ avatars:list[str]
+ links:list[str]
+ html_avatars:str = ''
+ html_list:str = ''
+
+ for line in self.re_new_lines.split(matches.group(1)):
+
+ has_spaces:bool = self.re_start_with_white_spaces.search(line) != None
+ data:str = line.strip()
+
+ if not data:
+ continue
+
+ if has_spaces:
+ if i == -1:
+ continue
+ if data[0] == "*":
+ items[i][1] += [data[1:]]
+ if ".k3y.pw/" in data:
+ items[i][1] += [data[1:].replace(".k3y.pw/", ".local/")]
+ else:
+ items[i][2] += [data]
+ else:
+ i += 1
+ items += [[line.strip(), [], []]]
+ continue
+
+ for i, (title, avatars, links) in enumerate(items):
+
+ link:str
+ avatar:str
+
+ html_avatars += ('' +
+ ('' +
+ self.build_html_image(avatars) +
+ ' ' if len(links) else self.build_html_image(avatars)) +
+ ''.join([' ' for link in links]) +
+ ' ')
+ html_list += ('' +
+ '' + title + ' ' +
+ '' +
+ ' ')
+
+ return ('')
+ return None
+
+ @classmethod
+ def remove_default_tabulations(self, data:str) -> str:
+
+ line:str
+ lines:list[str] = self.re_new_lines.split(data)
+ spaces:int = len(data)
+
+ def callback(matches:REMatch):
+ return matches.group(0)[spaces:]
+
+ for line in lines:
+ if not line:
+ continue
+
+ white_spaces:int = len(self.re_started_white_spaces.search(line).group(0))
+
+ if white_spaces < spaces:
+ spaces = white_spaces
+
+ return self.re_lines.sub(callback, data)
+
+ def __build(self, data:str, language:int, path:str|None) -> str:
+ return ('' +
+ self.analyse(self.remove_default_tabulations(data), language, self.RAW, path) +
+ '
' +
+ '
')
+
+ def process(self, data:str, language:Optional[int] = HTML, path:Optional[str] = None) -> str:
+
+ results:str = ""
+ variables:dict[str, str] = {}
+ options:REMatch = self.re_options.search(data)
+
+ if options:
+
+ _from:int
+ _to:int
+ options_data:str = options.group(3)
+
+ _from, _to = options.span()
+
+ while True:
+
+ option:REMatch = self.re_option.search(options_data)
+
+ if not option:
+ break
+
+ variables[option.group(1).strip()] = option.group(2).strip()
+ options_data = options_data[option.span()[1]:]
+
+ data = data[:_from] + data[_to:]
+
+ while True:
+
+ matches:REMatch = self.re_block_mark.search(data)
+
+ if not matches:
+ results += data
+ break
+
+ open_from:int
+ open_to:int
+ mark:str = matches.group(1)
+ re_close:REPattern = RECompile(r'^\s*' + mark, RE_MULTILINE) if mark else self.re_block_html
+
+ open_from, open_to = matches.span()
+ results += data[:open_from]
+ data = data[open_to:]
+
+ close_matches:REMatch = re_close.search(data)
+
+ if close_matches:
+
+ close_from:int
+ close_to:int
+
+ close_from, close_to = close_matches.span()
+
+ results += self.__build(data[:close_from], language, path)
+ data = data[close_to:]
+
+ else:
+ results += self.__build(data, language, path)
+ break
+
+ return results, variables
+
+ def analyse(self, data:str, language:Optional[int] = HTML, mode:Optional[int] = RAW, path:Optional[str] = None) -> str:
+
+ response:str = ""
+ pattern:REPattern
+ item_mode:int
+ items:dict[str, list[bool, int, int, REMatch]] = {key : [True, -1, -1, None] for key, (item_mode, pattern) in self.modules.items() if mode == self.RAW or mode | item_mode == item_mode}
+ # j:int = 0
+ # m:int = 10
+
+ while len(items):
+
+ key:str
+ exists:bool
+ _from:int
+ _to:int
+ matches:REMatch
+ l:int = len(data)
+ selected:str|None = None
+
+ for key, (exists, _from, _to, matches) in items.items():
+ if not exists:
+ continue
+
+ pattern = self.modules[key][1]
+
+ if _from < 0:
+ items[key][3] = matches = pattern.search(data)
+ if matches:
+ _from, _to = items[key][1], items[key][2] = matches.span()
+ else:
+ items[key][0] = False
+ continue
+
+ if _from < l:
+ l = _from
+ selected = key
+
+ if selected == None:
+ response += data
+ break
+
+ _from, _to, matches = items[selected][1:]
+
+ response += data[:_from] + getattr(self, "module_" + selected)(matches, language, path)
+ data = data[_to:]
+
+ for key in items.keys():
+ if items[key][3]:
+ items[key][1] -= _to
+ items[key][2] -= _to
+
+ # j += 1
+ # if j >= m:
+ # break
+
+ return response
+
+ def to_html(self, data:str, path:Optional[str] = None) -> str:
+ return self.analyse(data, self.HTML, self.RAW, path)
\ No newline at end of file
diff --git a/Tools/sass.sh b/Tools/sass.sh
new file mode 100755
index 0000000..c2fceea
--- /dev/null
+++ b/Tools/sass.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+directory=`dirname $(readlink -f "$0")`
+sass $directory/../Public/scss/WMarkDown.scss ../Public/scss/WMarkDown.css;
+sass $directory/../Public/scss/WMarkDown.web.scss ../Public/scss/WMarkDown.web.css;
\ No newline at end of file
diff --git a/version b/version
new file mode 100644
index 0000000..86d4946
--- /dev/null
+++ b/version
@@ -0,0 +1 @@
+0.0.2.0
\ No newline at end of file