<!--~~ Static content for Google and browsers without JavaScript ~~-->
<noscript>
<divid="splashArea">
<p>This <aclass="tc-tiddlylink-external"href="https://tiddlywiki.com"rel="noopener noreferrer"target="_blank">TiddlyWiki</a> contains the following tiddlers:</p><p><ul>
<li>$:/state/toc/Project/Plástico Leal-Plástico Leal - La Conexión--1378386848</li>
<li>$:/state/toc/Project/Plástico Leal-Plástico Leal - La Conexión-1568814661</li>
<li>$:/state/toc/Project/Plástico Leal-Plástico Leal - La Maquinaria--1378386848</li>
<li>$:/state/toc/Project/Plástico Leal/Plástico Leal - La Maquinaria-Extrusora Precious Plastic--1378386848</li>
<li>$:/state/toc/Project/Plástico Leal/Plástico Leal - La Maquinaria-Impresora Copincha--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Mapa digital - reciclaje plástico--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Mapa digital para el reciclaje plástico--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Máquinas para reciclar plásticos--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Máquinas para reciclar plásticos-1568814661</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Máquinas Precious Plastic--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Plástico Leal--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana-Plástico Leal-1568814661</li>
<li>$:/state/toc/Project/Precious Plastic La Habana/Máquinas para reciclar plásticos-Máquinas Precious Plastic--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal-Plástico Leal - La Maquinaria--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria-Impresora Copincha--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria-Máquinas para reciclar plásticos--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria/Máquinas para reciclar plásticos-Impresora Copincha--1378386848</li>
<li>$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria/Máquinas para reciclar plásticos-Máquinas Precious Plastic--1378386848</li>
<li>Unificar Proyecto contenidos y proyectos del gestor</li>
<li>Untitled</li>
<li>ventana - proyecto - Cubacreativa</li>
<li>ventana de pieza</li>
<li>ventana-proyecto-Cuba con Impresoras 3D</li>
<li>ventana-proyecto-Plástico Leal</li>
<li>ventana-proyecto-Precious Plastic La Habana</li>
<li>Vestuario de gigantería con plástico reciclado</li>
<li>View demo</li>
</ul>
</p>
<style>
.tc-remove-when-wiki-loaded {display: none;}
</style>
</div>
</noscript>
<!--~~ Ordinary tiddlers ~~-->
<divid="storeArea"style="display:none;">
<divcreated="20210714175059602"modified="20210714181644275"tags="Inbox todo copincha"title="¿Cómo contribuir en Copincha?"tmap.id="446d1f15-ee22-4683-8a96-954f453c7193">
<pre>Copincha se vale de las colaboraciones voluntarias que hacen crecer el fondo de recursos omunitarios que compartimos.
Este fondo se basa en construir conocimiento compartido y prototipos que nos ayudana a aprender mas rapido sobre una solucion. O materiales disponibles para el prototipado.
Material para el prototipado
Necesidades del espacio
Reflejamos cada contribucion de forma publica y transparente [[aqui|Registro de contribuciones]]
! Donacion monetaria
Resumen
! Donación material
Resumen
! Donación de tiempo
Resumen
! Donación de trabajo
Resumen</pre>
</div>
<divcreated="20210727124957222"modified="20210808041953929"orden="01"tags="Copincha/Sidebar"title="¿Qué es Copincha?"tmap.id="28986d47-8d59-4793-9d63-6981a31440a2">
<pre>Kookma plugin library is a set of plugins developed by [[Mohammad|https://github.com/kookma]]. A good recommendation is to backup your data before installing any plugins. These plugins distributed under MIT license.
To use in other wikis, drag and drop this link to those wikis: [[Kookma Plugin Library|$:/config/KookmaPluginLibrary]]</pre>
<pre>The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
<pre>{"tiddlers":{"$:/Acknowledgements":{"text":"TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"},"$:/core/copyright.txt":{"type":"text/plain","text":"TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2021, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."},"$:/core/icon":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"},"$:/core/images/add-comment":{"tags":"$:/tags/Image","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\
<divcaption="RTL"condition="[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]"created="20200321145709107"description="Toggle Right To Left"icon="$:/core/images/right-arrow"modified="20200406080146540"tags="exmp121"title="$:/core/ui/EditorToolbar/rtl">
"text": "Usa &#91;&#91;corchetes dobles&#93;&#93; para títulos con espacios. También puedes mostrarlos ordenados <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">de más reciente a más antiguo</$button>"
"text": "Modulos cargados en este momento, enlazados con sus tiddlers de origen. Los módulos en itálica carecen de origen, debido normalmente a que se configuraron durante el inicio."
"text": "Aquí se pueden deshabilitar globalmente reglas de interpretación sintáctica del wiki. Ten cuidado: deshabilitar ciertas reglas puede hacer que ~TiddlyWiki deje de funcionar correctamente."
},
"$:/language/ControlPanel/En tal caso, puedes recuperar su normal funcionamiento en [[modo seguro|https": {
"title": "$:/language/ControlPanel/En tal caso, puedes recuperar su normal funcionamiento en [[modo seguro|https",
"text": "//La dirección (URL) por defecto de// TiddlySpot //es `http://<wikiname>.tiddlyspot.com/store.cgi` aunque puede cambiarse a voluntad para usar otro servidor//"
"text": "Esta es la colección completa de campos de tiddler (TiddlerFields) actualmente en uso en este wiki, que incluye los tiddlers de sistema, pero no los ocultos"
"text": "Este plugin contiene componentes del núcleo de TiddlyWiki que incluyen:\n\n* Módulos de código JavaScript\n* Iconos\n* Plantillas necesarias para crear la interfaz de usuario de TiddlyWiki\n* Traducciones al castellano (ES-es) de las cadenas localizables usadas por el núcleo\n"
"text": "Tiddlers recientemente modificados, incluidos los de sistema"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Tiddlers recientemente modificados"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Tiddlers ocultos"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "Etiquetas de sistema"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "Tiddlers de sistema"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Tiddlers que no sonWikiText"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nBienvenido a TiddlyWiki y a su comunidad de usuarios\n\nAntes de guardar información importante en TiddlyWiki, es preciso que te asegures de poder hacerlo de manera fiable\n\nVisita https://tiddlywiki.com/#GettingStarted para más información (en inglés)\n!! Configura este ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br><$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nConsulta más opciones en el [[panel de control|$:/ControlPanel]]\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Ejecuta automáticamente los comandos configurados",
"text": "Compila los targets que se especifican.<br>\nSi no se especifica ninguno, se incluirán todos los disponibles\n\n```\n--build <target> [<target> ...]\n```\n\nLos targets se definen en el archivo `tiddlywiki.info`\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Anula la contraseña de las operaciones de cifrado subsiguientes",
"text": "Revoca la contraseña de las operaciones subsiguientes de cifrado\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"description": "",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nUso: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nComandos disponibles:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nPara obtener ayuda sobre un comando en particular:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Devuelve una lista de ediciones disponibles de TiddlyWiki",
"text": "Lista y descripción de las ediciones disponibles.<br>\nPuedes crear una edición específica con el comando `--init`.\n\n```\n--editions\n```\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Muestra texto de ayuda para comandos de TiddlyWiki",
"text": "Muestra ayuda para un comando:\n\n```\n--help [<command>]\n```\n\nSi se omite el comando, se muestra una lista de comandos disponibles\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Inicializa un nuevo WikiFolder",
"text": "Inicializa una [[WikiFolder|WikiFolders]] con una copia en blanco de la edición especificada.\n\n```\n--init <edition> [<edition> ...]\n```\n\nPor ejemplo:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNota:\n\n* Se creará un directorio para el wiki si es necesario\n\n* La edición por defecto es ''empty''\n\n* El comando `--init` fallará si el directorio no está vacío\n\n* El comando `--init` elimina toda definición de `includeWikis` contenida en el archivo `tiddlywiki.info`\n\n* Cuando se indican varias ediciones para su inicialización, las ediciones //planchan// sucesivamente todo archivo compartido, de modo que el \narchivo `tiddlywiki.info` final será el que corresponda a la última edición que se indique.\n\n* `--editions` muestra una lista de ediciones disponibles\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Carga tiddlers desde un archivo",
"text": "Carga tiddlers de archivos de tipo TiddlyWiki 2.x.x.(`.html`), `.tiddler`, `.tid`, `.json` u otros\n\n```\n--load <filepath>\n```\n\nPara cargar tiddlers de un TiddlyWiki encriptado, primero debes especificar la contraseña con el comando PasswordCommand. Por ejemplo:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nTen en cuenta que TiddlyWiki no carga complementos o extensiones anteriores a los ya cargados. \n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Compila la librería de plugins necesaria para actualizar TiddlyWiki",
"text": "\nConstruye el tiddler `$:/UpgradeLibrary`: librería de actualización\n \nLa librería de actualización tiene formato de plugin ordinario, de tipo `library`<br>\nContiene copia de cada uno de los plugins, temas y paquetes de idioma disponibles en el repositorio de TiddlyWiki5\n\nEste comando es, en principio, para uso interno del equipo de TiddlyWiki y sólo es de interés para aquellos usuarios que deseen compilar actualizaciones personalizadas\n\n```\n--makelibrary <title>\n```\n\nEl título por defecto del tiddler resultante es `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"description": "",
"text": "No existe tal elemento"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Establece el directorio de salida para los comandos siguientes",
"text": "Establece el directorio de salida para los comandos que le siguen <br>\nEl directorio por defecto es el subdirectorio `output`, en el directorio del wiki\n\n```\n--output <pathname>\n```\n\nSi la ruta especificada es relativa, se interpreta como relativa al directorio actual de trabajo<br>\nPor ejemplo: `--output .` establece como directorio de salida el actual directorio de trabajo\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Establece contraseña para operaciones de cifrado subsiguientes",
"text": "Establece contraseña para las operaciones subsiguientes de cifrado\n\n```\n--password <password>\n```\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Genera un tiddler del ContentType que se especifique",
"text": "Genera un tiddler del ContentType que se especifique (por defecto `text/html`) y lo guarda con el nombre de archivo especificado\n\n```\n--rendertiddler <title><filename> [<type>]\n```\n\nPor defecto, el nombre de archivo es relativo al subdirectorio `output` en el directorio del wiki<br>\nPuede usarse el comando `--output` para dirigir la salida a cualquier otro directorio\n\nLos directorios no existentes en la ruta del nombre de archivo se crean automáticamente.\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Genera tiddlers coincidentes con un determinado ContentType",
"text": "Genera un conjunto de tiddlers de un determinado ContentType (por defecto `text/html`) y extensión de archivo (por defecto, `.html`), coincidentes con el argumento de un filtro\n\n```\n--rendertiddlers <filter><template><pathname> [<type>] [<extension>]\n```\n\nPor ejemplo:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nPor defecto, la ruta es relativa al subdirectorio `output` del directorio del wiki<br>\nPuede usarse con el comando `--output` para dirigir la salida a un directorio diferente\n\nCualquier archivo existente en el directorio de destino será borrado<br>\nLos directorios no existentes en la ruta del nombre de archivo se crean automáticamente.\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Guarda un tiddler en un archivo",
"text": "Guarda un tiddler individual en formato binario o como texto plano con el nombre de archivo especificado.\n\n```\n--savetiddler <title><filename>\n```\n\nPor defecto, la ruta es relativa al subdirectorio `output` del directorio del wiki<br>\nPuede usarse con el comando `--output` para dirigir la salida a un directorio diferente\n\nLos directorios no existentes en la ruta del nombre de archivo se crean automáticamente.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Guarda un grupo de tiddlers de formato plano en un directorio",
"text": "Guarda un grupo de tiddlers en formato binario o como texto plano en el directorio especificado.\n\n```\n--savetiddlers <filter><pathname>\n```\n\nPor defecto, la ruta es relativa al subdirectorio `output` del directorio del wiki<br>\nPuede usarse con el comando `--output` para dirigir la salida a un directorio diferente\n\nLos directorios no existentes en la ruta del nombre de archivo se crean automáticamente.\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Proporciona interfaz de servidor HTTP a TiddlyWiki",
"text": "El servidor compilado para TiddlyWiki5 es muy simple. Aunque es compatible con TiddlyWeb, no soporta muchas de las características necesarias para un uso robusto en Internet. \n\nEn la raíz, sirve un tiddler específico<br>\nFuera de la raíz, sirve tiddlers individuales codificados en JSON, y soporta operaciones básicas HTTP de `GET`, `PUT` y `DELETE`.\n\n```\n--server <port><roottiddler><rendertype><servetype><username><password><host><pathprefix>\n```\n\nLos parámetros son\n\n* ''port'' - número de puerto desde el que sirve (por defecto, \"8080\")\n* ''roottiddler'' - tiddler que se sirve desde la raíz (por defecto, \"$:/core/save/all\")\n* ''rendertype'' - tipo de contenido con el que se genera el tiddler raíz (por defecto \"text/plain\")\n* ''servetype'' - tipo de contenido con el que se sirve el tiddler raíz (por defecto \"text/html\")\n* ''username'' - nombre de usuario por defecto que firma la edición\n* ''password'' - contraseña opcional para autenticación básica\n* ''host'' - nombre opcional del servidor desde el que se sirve (por defecto, \"127.0.0.1\" o \"localhost\")\n* ''pathprefix'' - prefijo opcional para rutas\n\nSi se ha definido contraseña, el navegador pedirá que se introduzca nombre y contraseña. <br>Nótese que la contraseña se transmite en modo texto por lo que esta implementación no es apropiada para uso general.\n\nPor ejemplo:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nEl nombre de usuario y la contraseña pueden ser especificados como cadenas de símbolos vacías si se necesita configurar el nombre del servidor o prefijo de ruta y no se requiere contraseña:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nPara ejecutar simultáneamente múltiples servidores TiddlyWiki, deberán configurarse cada uno en un puerto diferente\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepara tiddlers externos para su uso",
"text": "//Téngase en cuenta que este comando es experimental y puede cambiar o ser reemplazado//\n\nConfigura el campo especificado de un grupo de tiddlers como resultado de una plantilla con la variable `currentTiddler`\n\n```\n--setfield <filter><fieldname><templatetitle><rendertype>\n```\n\nSus parámetros son:\n\n* ''filter'' - filtro que identifica los tiddlers que se verán afectados\n* ''fieldname'' - el campo que será modificado (por defecto, \"text\")\n* ''templatetitle'' - el tiddler a ''wikify'' en el campo especificado. Si se deja en blanco o está ausente, el campo especificado es borrado. \n* ''rendertype'' - el tipo de texto a generar (por defecto, \"text/plain\"; se puede usar también \"text/html\" para incluir etiquetas HTML)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Desenpaqueta los tiddlers de carga de un plugin",
"text": "Extrae los tiddlers de un plugin y los presenta como tiddlers ordinarios\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Activa el modo de salida como texto indefinido",
"text": "Genera texto aleatorio, útil para depurar errores\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Muestra el número de versión de TiddlyWiki",
"text": "Muestra el número de versión de TiddlyWiki\n\n```\n--version\n```\n"
"text": "Este tiddler está escrito en formato de texto de una versión de TiddlyWiki Classic que no es totalmente compatible con la versión 5 de TiddlyWiki<br>"
},
"$:/language/Visite https": {
"title": "$:/language/Visite https",
"text": "/tiddlywiki.com/static/Upgrading.html para más información"
"text": "Caracteres ilegales en el campo \"<$text text=<<fieldName>>/>\"<br>"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Cargando texto externo desde ''<$text text={{!!_canonical_uri}}/>''</p><p>Si este mensaje no desaparece, puede que se deba a que estás usando un navegador que con esta configuración no permite texto externo</br>"
},
"$:/language/Vea https": {
"title": "$:/language/Vea https",
"text": "/tiddlywiki.com/#ExternalText</p>"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "El tiddler \"<$text text=<<currentTiddler>>/>\" no existe - haz clic en {{||$:/core/ui/Buttons/edit}} para crearlo"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Librería de plugins oficiales de ~TiddlyWiki"
"text": "Tu navegador sólo permite guardar manualmente\n\nPara guardar el wiki, haz clic con el botón derecho en el enlace de más abajo y selecciona \"Descargar archivo\" o \"Guardar enlace como...\" y selecciona a continuación la carpeta y el nombre que quieres darle\n\n//Puedes acelerar ligeramente estas acciones haciendo clic en el enlace conjuntamente con la tecla \"Control\" (Windows) o con la tecla \"Option\" (Mac OS X)<br>\nNo se te pedirán carpeta ni nombre, sino que se asignará automáticamente un nombre probablemente irreconocible -- necesitarás cambiar el nombre y darle extensión `.html` para usarlo//\n\nEn el caso de teléfonos móviles que no permiten la descarga de archivos, puedes marcar el enlace como favorito y luego sincronizar favoritos con tu ordenador y descargarlo normalmente desde ahí\n"
"text": "Los cambios realizados a este wiki necesitan ser guardados como archivo ~TiddlyWiki HTML.\n\n!!! Navegadores de ordenador\n\n# Selecciona ''Guardar como'' en el menú ''Archivo''\n# Elige nombre de archivo y directorio\n#* Algunos navegadores también piden que especifiques el formato como ''Página web, sólo HTML'' o similar\n# Cierra esta pestaña\n\n!!! Navegadores en teléfonos o tabletas\n\n# Añade la página a tus favoritos\n#* Si tienes iCloud o Google Sync los favoritos se sincronizarán automáticamente con tu ordenador, desde donde puedes abrirlos o guardarlos como se explica más arriba\n# Cierra esta pestaña\n\n//Si en Mobile Safari vuelves a abrir los favoritos, volverás a ver este mensaje. Si quieres continuar y usar el archivo, simplemente cierra haciendo clic en el boton de cerrar indicado abajo.//\n"
"text": "Búsqueda por medio de [[expresiones de filtrado|https://tiddlywiki.com/static/Filters.html]] <small> (instrucciones en inglés)</small>"
"text": "/*\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\ntype: application/javascript\nmodule-type: widget\n\nThis widgets adds an double click event listener to its parent\n\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ClickListener = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nClickListener.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nClickListener.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar self = this;\n /*Since the event listener have been added to the parent, the \"this\" property is pointing to the\n wrong object, we should call our edit function with our widget object set as the this property.*/\n parent.addEventListener(\"dblclick\",function(event){self.editTiddler.call(self,event)});\n};\n\nClickListener.prototype.editTiddler = function(event) {\n this.dispatchEvent({type: \"tm-edit-tiddler\", param: this.getVariable(\"currentTiddler\")}); \n};\n\n/*\nCompute the internal state of the widget\n*/\nClickListener.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nClickListener.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.click = ClickListener;\n\n})();",
"text": "This plugin adds the ability to edit tiddlers by double clicking on its body.\nJust try to edit any tiddler shown here by double clicking on it.\n\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \nfor it officially.\n"
"text": "!Usage\n\nAfter installing the plugin you will have a new tab in [[$:/AdvancedSearch]] called [[Context Search]]. If you want this functionality in other places you will have to edit the desired tiddler yourself adding the ''context widget''. For more details about using the widget see the section below.\n\n!!Using the widget\n\nThe very basic usage of the widget is the following:\n\n```\r\n<$context term=\"lorem\"/>\r\n```\r\nWhich will render as:\r\n<$context term=\"lorem\"/>\n\nThe widgets will search inside the current tiddler by default. Because that you see the same content twice here. This example is not very useful. Other more meaningful would be:\n\n```\r\n<$list filter=\"[search{$:/temp/advancedsearch}sort[title]limit[250]]\">\r\n{{!!title||$:/core/ui/ListItemTemplate}}\r\n<$context term={{$:/temp/advancedsearch}}/>\r\n</$list>\r\n```\n\nThat will search for tiddlers containing the text specified in [[$:/temp/advancedsearch]] and will display a link to the matching tiddlers plus a preview of the matching content. Something very similar is used in [[Context Search]]. Below you can find a complete list of parameters and their default values.\n\n|! parameter |! description | !default |\r\n| term | The term you want to search ||\r\n| searchTerm | An alias for the previous one ||\r\n| tiddler | The tiddler's name to look into | current tiddler |\r\n| length | Number of context characters to show | 50 |\r\n| before | Number of characters before the matched term to show | the value of the length parameter |\r\n| after | Number of characters after the matched term to show | the value of the length parameter |\r\n| maxMatches | maximun number of matched elements to show. Incrementing this can cause several performance issues | 10 |\r\n| element | Node element to create. This element will contain the results of the search. If you want to style it its class is `tw-context` | `<pre>` |\r\n| matchClass | The css class to assign to the matched terms in the results. This is used to highlight the results | matched |\n\n!Customizing the output\r\nThere are not many ways to customize the output of this widget. You can specify ''what type of node you want to create'' to wrap the results (div,span...). The default is `<pre>`. This container is created with the class `tw-context` so you can easily apply styles to it. Something similar happens to the ''highlighted'' words. You can specify the name of the class to assign to it and also you can apply styles to that class.\n\nA very basic example of customization could be:\n\n# Create a tiddler, for example [[$/plugins/danielo515/context/css]]\r\n# Paste the following text or any css rule you want: \"\"\"\n\n<pre>\r\n.matched{background-color:yellow}\r\n.tw-context {\r\n border:1px solid blue;\r\n word-break: break-all; word-wrap: break-word;}\r\n</pre>\r\n\"\"\"\r\n# Tag it with `$:/tags/stylesheet`\r\n# Save the tiddler"
}
}
}</pre>
</div>
<divauthor="Felix Küppers"core-version=">=5.1.5"dependents=""description="HotZone – Be notified when tiddlers are scrolled into view"list="Configuration License Readme"plugin-type="plugin"released=""source="https://github.com/felixhayashi/TW5-HotZone"title="$:/plugins/felixhayashi/hotzone"type="application/json"version="0.0.3">
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Focus offset:</th>\n <td><$edit-text tiddler=\"$:/config/hotzone/focusOffset\" tag=\"input\" default=\"71px\" /></td>\n </tr>\n</table>"
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information."
}
}
}</pre>
</div>
<divauthor="Felix Küppers"core-version=">=5.1.5"dependents=""description="Respawn – Open default tiddlers when river is empty"list="Configuration License Readme"plugin-type="plugin"released=""source="https://github.com/felixhayashi/TW5-respawn"title="$:/plugins/felixhayashi/respawn"type="application/json"version="0.0.3">
"text": "<!-- The config output is not written to this tiddler! -->\n\nPlease see the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information on the options.\n\nYou may have to save and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Delay (seconds):</th>\n <td>\n <$edit-text\n tiddler=\"$:/plugins/felixhayashi/respawn/config\"\n field=\"delay\"\n tag=\"input\"\n default=\"500\" />\n </td>\n </tr>\n</table>"
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information."
}
}
}</pre>
</div>
<divauthor="Felix Küppers"core-version=">=5.1.5"dependents="$:/plugins/felixhayashi/vis"depends="$:/plugins/felixhayashi/vis"description="TiddlyMap – Map drawing and topic visualization for your wiki"list="readme license"modified="20210725025902954"plugin-type="plugin"released="Sun, 25 Aug 2019 22:19:25 GMT"source="https://github.com/felixhayashi/TW5-TiddlyMap"suggested="$:/plugins/felixhayashi/topstoryview"title="$:/plugins/felixhayashi/tiddlymap"type="application/json"version="0.16.1+9773">
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(r,t,i){if(t)e(r.prototype,t);if(i)e(r,i);return r}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _Edge=require(\"$:/plugins/felixhayashi/tiddlymap/js/Edge\");var _Edge2=_interopRequireDefault(_Edge);var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");var _AbstractRefEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\");var _AbstractRefEdgeTypeSubscriber2=_interopRequireDefault(_AbstractRefEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,r){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return r&&(typeof r===\"object\"||typeof r===\"function\")?r:e}function _inherits(e,r){if(typeof r!==\"function\"&&r!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof r)}e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(r)Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var AbstractMagicEdgeTypeSubscriber=function(e){_inherits(r,e);function r(e,t){_classCallCheck(this,r);var i=_possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,t));i.edgeTypesByFieldName=_utils2.default.makeHashMap();for(var a in e){var n=e[a];if(i.canHandle(n)){i.edgeTypesByFieldName[n.name]=n}}return i}_createClass(r,[{key:\"getReferencesFromField\",value:function e(r,t,i){throw new _exception.MissingOverrideError(this,\"getReferencesFromField\")}},{key:\"getReferences\",value:function e(r,t,i){var a=_utils2.default.makeHashMap();var n=r.fields;for(var s in n){var u=this.edgeTypesByFieldName[s];if(!u||i&&!i[u.id])continue;var o=this.getReferencesFromField(r,s,t);if(o&&o.length){a[u.id]=o}}return a}}]);return r}(_AbstractRefEdgeTypeSubscriber2.default);exports.default=AbstractMagicEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractMagicEdgeTypeSubscriber.js.map\n",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.LinkEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var _AbstractRefEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\");var _AbstractRefEdgeTypeSubscriber2=_interopRequireDefault(_AbstractRefEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var LinkEdgeTypeSubscriber=function(e){_inherits(t,e);function t(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,_extends({priority:20},r)))}_createClass(t,[{key:\"canHandle\",value:function e(t){return t.id===\"tw-body:link\"}},{key:\"getReferences\",value:function e(t,r,n){if(n&&!n[\"tw-body:link\"]){return}var i=$tw.wiki.getTiddlerLinks(t.fields.title);if(!i||!i.length){return}return{\"tw-body:link\":i}}}]);return t}(_AbstractRefEdgeTypeSubscriber2.default);exports.LinkEdgeTypeSubscriber=LinkEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/refEdgeTypeSubscriber/LinkEdgeTypeSubscriber.js.map\n",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.TranscludeEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t){if(Object.prototype.hasOwnProperty.call(t,n)){e[n]=t[n]}}}return e};var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(r,t,n){if(t)e(r.prototype,t);if(n)e(r,n);return r}}();var _AbstractRefEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\");var _AbstractRefEdgeTypeSubscriber2=_interopRequireDefault(_AbstractRefEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,r){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return r&&(typeof r===\"object\"||typeof r===\"function\")?r:e}function _inherits(e,r){if(typeof r!==\"function\"&&r!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof r)}e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(r)Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var TranscludeEdgeTypeSubscriber=function(e){_inherits(r,e);function r(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,r);return _possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,_extends({priority:20,ignore:typeof $tw.wiki.getTiddlerTranscludes!==\"function\"},t)))}_createClass(r,[{key:\"canHandle\",value:function e(r){return r.id===\"tw-body:transclude\"}},{key:\"getReferences\",value:function e(r,t,n){if(n&&!n[\"tw-body:transclude\"]){return}var i=$tw.wiki.getTiddlerTranscludes(r.fields.title);if(!i||!i.length){return}return{\"tw-body:transclude\":i}}}]);return r}(_AbstractRefEdgeTypeSubscriber2.default);exports.TranscludeEdgeTypeSubscriber=TranscludeEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/refEdgeTypeSubscriber/TranscludeEdgeTypeSubscriber.js.map\n",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var _MapElementType2=require(\"$:/plugins/felixhayashi/tiddlymap/js/MapElementType\");var _MapElementType3=_interopRequireDefault(_MapElementType2);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/NodeType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var NodeType=function(e){_inherits(t,e);function t(e,r){_classCallCheck(this,t);e=typeof e===\"string\"?_utils2.default.getWithoutPrefix(e,$tm.path.nodeTypes+\"/\"):\"tmap:unknown\";var n=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,$tm.path.nodeTypes,t.fieldMeta,r));Object.freeze(n);return n}_createClass(t,[{key:\"getInheritors\",value:function e(t){return this.scope?_utils2.default.getMatches(this.scope,t||$tw.wiki.allTitles()):[]}}]);return t}(_MapElementType3.default);NodeType.getInstance=function(e){return e instanceof NodeType?e:new NodeType(e)};NodeType.fieldMeta=_extends({},_MapElementType3.default.fieldMeta,{view:{},priority:{parse:function e(t){return isNaN(t)?1:parseInt(t)},stringify:function e(t){return _utils2.default.isInteger(t)?t.toString():\"1\"}},scope:{stringify:_utils2.default.getWithoutNewLines},\"fa-icon\":{},\"tw-icon\":{}});exports.default=NodeType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/NodeType.js.map\n",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function r(r,t){for(var e=0;e<t.length;e++){var o=t[e];o.enumerable=o.enumerable||false;o.configurable=true;if(\"value\"in o)o.writable=true;Object.defineProperty(r,o.key,o)}}return function(t,e,o){if(e)r(t.prototype,e);if(o)r(t,o);return t}}();function _classCallCheck(r,t){if(!(r instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(r,t){if(!r){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:r}function _inherits(r,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}r.prototype=Object.create(t&&t.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(r,t):r.__proto__=t}\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/exception\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var TiddlyMapError=function(r){_inherits(t,r);function t(r,e){_classCallCheck(this,t);var o=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,r));o.payload=e;return o}_createClass(t,[{key:\"getPayload\",value:function r(){return this.payload}}]);return t}(Error);var EnvironmentError=exports.EnvironmentError=function(r){_inherits(t,r);function t(r){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"Critical parts of the underlying system changed: \"+r))}return t}(TiddlyMapError);var DependencyError=exports.DependencyError=function(r){_inherits(t,r);function t(r){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"TiddlyMap cannot run without: : \"+r))}return t}(TiddlyMapError);var MissingOverrideError=exports.MissingOverrideError=function(r){_inherits(t,r);function t(r,e){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,r.constructor.name+' does not override method \"'+e+'\"'))}return t}(TiddlyMapError);var ResourceNotFoundException=exports.ResourceNotFoundException=function(r){_inherits(t,r);function t(r){_classCallCheck(this,t);for(var e=arguments.length,o=Array(e>1?e-1:0),n=1;n<e;n++){o[n-1]=arguments[n]}return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"Cannot resolve \"+r,o))}return t}(TiddlyMapError);var InvalidArgumentException=exports.InvalidArgumentException=function(r){_inherits(t,r);function t(){_classCallCheck(this,t);for(var r=arguments.length,e=Array(r),o=0;o<r;o++){e[o]=arguments[o]}return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"Invalid or missing argument provided\",e))}return t}(TiddlyMapError);\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/exceptions.js.map\n",
"text": "\"use strict\";var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _widget=require(\"$:/core/modules/widgets/widget.js\");var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var EdgeListItemWidget=function(e){_inherits(t,e);function t(e,r){_classCallCheck(this,t);var i=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r));i.arrows=$tm.misc.arrows;return i}_createClass(t,[{key:\"execute\",value:function e(){var t=this.parseTreeNode;var r=$tm.tracker.getTiddlerById(t.neighbour.id);var i=_utils2.default.flatten(t.edge);for(var o in i){if(typeof i[o]===\"string\"){this.setVariable(\"edge.\"+o,i[o])}}this.setVariable(\"currentTiddler\",r);this.setVariable(\"neighbour\",r);var n=$tm.indeces.allETy[i.type];var s=i.to===t.neighbour.id?\"to\":\"from\";var a=s;if(n.biArrow){a=\"bi\"}else{if(s===\"to\"&&n.invertedArrow){a=\"from\"}else if(s===\"from\"&&n.invertedArrow){a=\"to\"}}this.setVariable(\"direction\",a);this.setVariable(\"directionSymbol\",a===\"bi\"?this.arrows.bi:a===\"from\"?this.arrows.in:this.arrows.out);this.makeChildWidgets()}},{key:\"refresh\",value:function e(t){return this.refreshChildren(t)}}]);return t}(_widget.widget);exports[\"tmap-edgelistitem\"]=EdgeListItemWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/EdgeListItemWidget.js.map\n",
"text": "* Please refer to the project-readme hosted at [[https://github.com/felixhayashi/TW5-TiddlyMap]].\n* A demo with several examples and explanations can be found at [[http://tiddlymap.org]]."
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-plain\">\n Please visit the [[online docs|http://tiddlymap.org/Documentation]]\n for more information about the available global options.\n</div>\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Plugin version</th>\n <td><<pluginVersion>></td>\n </tr>\n<!--\n <tr>\n <th align=\"left\">Datastructure version</th>\n <td><<dataStructureVersion>></td>\n </tr>\n-->\n <tr>\n <th align=\"left\">Nodes in system</th>\n <td><<numberOfNodes>></td>\n </tr>\n <tr>\n <th align=\"left\">Edges in system</th>\n <td><<numberOfEdges>></td>\n </tr>\n</table>"
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Neighbour&shy;hood menu\"\n field:\"config.sys.editorMenuBar.showNeighScopeButton\"\n descr:\"Show or hide the neighbourhood menu button.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Screen&shy;shot menu\"\n field:\"config.sys.editorMenuBar.showScreenshotButton\"\n descr:\"Show or hide the screenshot menu button.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Raster&shy; menu\"\n field:\"config.sys.editorMenuBar.showRasterMenuButton\"\n descr:\"Show or hide the raster menu button.\">>\n</table>\n"
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"Node-icon field\"\n field:\"config.sys.field.nodeIcon\" \n descr:\"Local image used as node image in the graphs.\">>\n <<tmap-row type:\"input-text\"\n title:\"Node-label field\"\n field:\"config.sys.field.nodeLabel\" \n descr:\"Alternative node label to use instead of the title.\">>\n <<tmap-row type:\"input-text\"\n title:\"Node-info field\"\n field:\"config.sys.field.nodeInfo\" \n descr:\"Field used as tooltip when hovering over a node in a graph.\"\n note:\"It is prohibited to use the text field here.\">>\n</table> \n\n"
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Default startup view\"\n field=\"config.sys.defaultView\"\n nochoice=\"Last view used at startup\"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to display at startup\" />\n <<tmap-row type:\"input-checkbox\"\n title:\"Show popups\"\n field:\"config.sys.popups.enabled\"\n descr:\"Set this to true if you want to see automatic\n popups in the map.\">>\n <$list filter=\"[config.sys.popups.enabled[true]]\">\n <<tmap-row type:\"input-text\"\n title:\"Popup delay\"\n field:\"config.sys.popups.delay\"\n descr:\"The time in miliseconds that needs to pass after\n a tooltip is triggered.\">>\n <<tmap-row type:\"input-text\"\n title:\"Popup width\"\n field:\"config.sys.popups.width\"\n descr:\"The default max-width of the popup.\"\n note:\"Make sure you added the desired unit (e.g. `px`).\n Requires a wiki refresh.\">>\n <<tmap-row type:\"input-text\"\n title:\"Popup height\"\n field:\"config.sys.popups.height\"\n descr:\"The default max-height of the popup.\"\n note:\"Make sure you added desired the unit (e.g. `px`).\n Requires a wiki refresh.\">>\n </$list>\n <<tmap-row type:\"input-checkbox\"\n title:\"Allow single click mode\"\n field:\"config.sys.singleClickMode\"\n descr:\"A single click on a node is sufficient to open the\n corresponding tiddler.\"\n note:\"Drag and drop will still work and does not cause a\n tiddler to be opened. Single click is never active in\n the map editor.\">>\n <<tmap-row type:\"input-select\"\n title:\"Edge click behaviour\"\n field:\"config.sys.edgeClickBehaviour\"\n selectFilter:\"[[nothing|Nothing]]\n [[manager|Open edge-type manager]]\"\n descr:\"What should happen when you click on an edge?\">>\n <<tmap-row type:\"input-select\" title:\"Raster size\" field:\"config.sys.raster\"\n selectFilter:\"[[|disabled]] [[5|5px]] [[10|10px]] [[15|15px]] [[20|20px]] [[30|30px]] [[40|40px]]\"\n descr:\"Snap nodes to an invisible raster of the given size after drag'n'drop.\"\n note:\"Only works when the view is not in floating mode\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Apply node-filter to neighbours\"\n field:\"config.sys.nodeFilterNeighbours\"\n descr:\"If checked, neighbours displayed in the map will be filtered\n by the view's node-filter. Otherwise the node-filter will only be used\n to filter the original set of nodes in the map\">>\n</table>\n\n!! Suppressed dialogs\n\n<div class=\"tmap-flash-message tmap-plain\">\n Dialogs that you decided to suppress in the past are listed here.\n Remove the checkmark to enable dialogs again.\n</div>\n\n<table class=\"tmap-config-table\">\n <$list\n filter=\"[<output>fields[]prefix[config.sys.suppressedDialogs]]\"\n emptyMessage=\"–\">\n <$set name=\"dialogName\" value=<<tmap basename \".\">>>\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Suppress '$(dialogName)$' dialog\"\n field=<<currentTiddler>> />\n </$set>\n <br />\n </$list>\n</table>\n"
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Live tab\"\n field:\"liveTab\" \n descr:\"Show or hide the live tab in the sidebar.\">>\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Fallback view\"\n field=\"config.sys.liveTab.fallbackView\" \n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to display in the sidebar's live tab in\n case the current tiddler did not specify a view\n to open.\" />\n</table>"
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-plain\">\n Here you can restrict the system's talkativeness.\n</div>\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Debug output\"\n field:\"config.sys.debug\" \n descr:\"Set this to true if you want debug information to be\n displayed in the browser console.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show notifications\"\n field:\"config.sys.notifications\" \n descr:\"Set this to true if you want to receive fade-out\n notifications for important events.\">>\n</table> "
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The global vis configurations will affect all views and their\n elements (nodes and edges) unless they are overridden on a lower\n level. All options below are documented at\n [[vis.js.org|http://visjs.org/docs/network]].\n</div>\n<div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n</div>\n<$tmap-config\n mode=\"manage-config\"\n inherited=\"vis-inherited\"\n extension=\"config.vis\" />"
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n Completely new to filters? Please read\n [[Introduction to filter notation|http://tiddlywiki.com/#Introduction%20to%20filter%20notation]]\n first.\n</div>\n\n<fieldset>\n <legend>Filters <sup>[1]</sup></legend>\n <table class=\"tmap-config-table tmap-large-input\">\n <<tmap-row type:\"input-textarea\"\n title:\"Node filter\"\n field:\"filter.prettyNodeFltr\"\n descr:\"In the map, only those tiddlers that match this filter\n are shown. Drafts and system tiddlers are automatically\n excluded.\">>\n <<tmap-row type:\"input-textarea\"\n title:\"Edge-type filter\"\n field:\"filter.prettyEdgeFltr\" \n descr:\"Only edges with a type that matches the filter are shown.\">>\n </table> \n</fieldset>\n\n---\n\n<sup>[1]</sup> In the editors above, a new line is equivalent to a space symbol.<br />\n<sup>[2]</sup> It is suggested to read\n[[Node and edge-type filters|http://tiddlymap.org#Node%20and%20edge-type%20filters]]\nand [[Edge-type namespaces|http://tiddlymap.org#Node%20and%20edge-type%20filters]]\nbefore using Tiddlymap's filter editor."
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Floating nodes\"\n field:\"config.physics_mode\" \n descr:\"Set this to true if you want your nodes to freely\n swirl around.\">>\n <<tmap-row type:\"input-text\"\n title:\"Background image\"\n field:\"config.background_image\" \n descr:\"The title of an image tiddler to be used as background\n in the view.\"\n note:\"You can also use an image url directly, however, the\n image needs be stored under the same domain as your wiki.\n Otherwise, it won't be displayed!\">>\n</table>"
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table tmap-small-input\">\n <<tmap-row type:\"input-text\"\n title:\"Edge-type namespace\"\n field:\"config.edge_type_namespace\" \n descr:\"A namespace (like `foaf` in `foaf:knows`) that will be\n automatically added to all edge types you create in\n this view. The namespace is only added if the types\n do not exist yet and do not have a namespace assigned yet.\n Namespaces are always hidden in the graph.\"\n note:\"Most likely, you don't want the edges created with this\n namespace to leak into other views, moreover, you don't\n want edges that do not possess the namespace ever to be\n shown here. In this case, use a private marker (`_`)\n in front of your namespace, e.g. `_mynamespace` and use\n an appropriate edge type filter, i.e. `+[prefix[_mynamespace]]`\n For further information see:\n \n * [[Edge-type namespaces|http://tiddlymap.org/#Edge-type%20namespaces]]\n * [[Private edge types|http://tiddlymap.org/#Private%20edge%20types]]\n \">>\n</table>\n"
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The local vis configurations will affect all\n elements (nodes and edges) of this view, unless they are\n overridden on a lower level. All options below are documented at\n [[vis.js.org|http://visjs.org/docs/network]].\n</div>\n<div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on the\n graph. Other options are visible, yet, inactive.\n</div>\n<$tmap-config\n mode=\"manage-config\"\n inherited=\"vis-inherited\"\n extension=\"config.vis\" />"
"subtitle": "{{$:/core/images/locked-padlock}} You cannot delete this view!",
"buttons": "ok",
"text": "\\rules except wikilink\n\nIt is not possible to delete the current view as ''<<count>>'' tiddlers\nare referencing it. To delete the view you must first remove the tiddlymap\nwidgets in the tiddlers listed below or change their view attributes.\n\n''References''\n\n<ul>\n<$list filter=<<refFilter>> variable=\"item\">\n <li><$link><<item>></$link></li>\n</$list>\n</ul>\n\nAfter the references are removed, you may delete the view.\n"
"subtitle": "{{$:/core/images/new-button}} Creating a new view",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"View name\"\n field:\"name\"\n focus:\"true\"\n class:\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\"\n descr:\"The name for the new view. If no name is entered,\n the program will invent one for you.\"\n note:\"You cannot override an existing view. In this case,\n you need to delete the old view first! You must no use\n slashes (`/`) in the name.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Clone view\"\n field:\"clone\"\n descr:\"Use the view that is currently displayed in the\n editor as blueprint. The view will be an __exact__\n clone of the current one, only with a different\n name.\">>\n</table>\n"
"subtitle": "{{$:/core/images/delete-button}} You are about to delete <<count>> nodes",
"text": "\\rules except wikilink\n\n''Please choose an option or abort:''\n\n<$radio tiddler=<<output>> field=\"delete-from\" value=\"system\">\n Delete nodes from system <sup>[1]</sup>\n</$radio><br />\n<$radio tiddler=<<output>> field=\"delete-from\" value=\"filter\">\n Delete nodes from graph's filter <sup>[2]</sup>\n</$radio>\n\nThe following nodes will be deleted:\n\n<ul>\n<$list filter=<<tiddlers>>>\n <li><$view tiddler={{!!title}} field=\"title\" /></li>\n</$list>\n</ul>\n\n---\n\n<sup>[1]</sup>\n<small>This will delete all nodes, their corresponding tiddlers and all connected edges.</small><br/>\n<sup>[2]</sup>\n<small>''Important:'' Removing a node from the graph's filter only works, if the node has been added in the map editor per double click or via \"Add Node\". If the node hasn't been added as mentioned above, you need to change the underlying tiddler in a way that it doesn't match your filter anymore, if you don't want it to be displayed in the graph.</small>"
"subtitle": "{{$:/core/images/info-button}} Dublicate id detected",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nTiddlyMap requires the value of the id field (\"tmap.id\") to be\nunique in order to correctly identify nodes and tiddlers.\n\nThe id of the \"<<param.changedTiddler>>\" already exists for these tiddlers:\n\n<ul>\n<$list filter=<<param.filter>> variable=\"item\">\n <li><$link><<item>></$link></li>\n</$list>\n</ul>\n\nTherefore TiddlyMap\n\n* assigned a new id to tiddler \"<<param.changedTiddler>>\"\n* removed all edges from \"<<param.changedTiddler>>\"\n"
"subtitle": "{{$:/core/images/info-button}} Edge will not be visible in view \"<<view>>\"",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nYou just created an edge of type\n<code><$text text=<<type>> /></code> that will not be\nvisible in this view because it doesn't match your\nedge-type filter settings.\n\nThe current edge-type filter of view \"<<view>>\" looks like this:\n\n<pre><code><$text text=<<eTyFilter>> /></code></pre>\n\nTo have the newly added type displayed in your view, adjust your\nedge-type filter accordingly. \n\nSome suggestions:\n\n<ul>\n <li>\n Explicitly add the type to the filter:\n <code><$text text=\"[[\" /><$text text=<<type>> /><$text text=\"]]\" /></code>\n </li>\n <li>\n <$set\n filter=\"[<type>regexp[:]splitbefore[:]]\"\n name=\"prefix\"\n emptyValue=<<tmap halfOfString \"$(type)$\">>>\n Add a filter rule (e.g. a prefix filter) that will match\n your type: <code>[prefix[<<prefix>>]]</code>\n </$set>\n </li>\n <li>Make your current view-filter less restrictive.</li>\n</ul>\n\nFor further information, please see:\n[[Node and edge-type filters|http://tiddlymap.org#Node%20and%20edge-type%20filters]]."
"text": "\\rules except wikilink\n \n<div class=\"tmap-flash-message tmap-info\">\n The ''local node configuration'' \n (also referred to as //view-specific node configuration//)\n overrides the //global individual configuration// and only affects\n the node's appearance and behaviour in the current view.\n</div>\n<<maybeShowTidColorWarning>>\n\n<fieldset>\n <legend>Behaviour</legend>\n <table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Open view\"\n field=\"local.open-view\"\n nochoice=\"Disabled\"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"Clicking on this node will open the specified\n view instead of the tiddler represented by this node.\" />\n </table>\n</fieldset>\n\n<$macrocall $name=\"sharedSettings\"\n twIconField=\"local.tw-icon\"\n faIconField=\"local.fa-icon\"\n labelField=\"local.label\" />\n \n<$macrocall $name=\"visConfiguration\"\n mode=\"manage-node-types\"\n extensionField=\"local-node-style\"\n styleName=\"node's local style\"\n inheritedList=\"[[inherited-global-default-style]]\n [[inherited-local-default-style]]\n [[inherited-group-styles]]\n [[global.tmap.style]]\" />"
"subtitle": "{{$:/core/images/edit-button}} Editing style of node \"<<tiddler>>\"",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define maybeShowTidColorWarning()\n <$list filter=\"[<tidColor>regexp[.+]]\">\n <div class=\"tmap-flash-message tmap-warning\">\n You have set the tiddler's color\n field to \"<<tidColor>>\". This value will be completely ignored\n when you change node's color properties in the vis editor below.\n </div>\n </$list>\n\\end\n\n\\define iconSettings(twIconField, faIconField)\n <fieldset>\n <legend>Icon Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"TW-icon\"\n field:\"$twIconField$\"\n descr:\"A tiddlywiki image reference.\n For example '$:/core/icon' for Movotun Jack.\">>\n <<tmap-row type:\"input-text\"\n title:\"FA-icon\"\n field:\"$faIconField$\"\n descr:\"A Font Awesome icon code.\n For example 'f206' for the bicycle symbol.\">>\n </table>\n </fieldset>\n\\end\n\n\\define sharedSettings(twIconField, faIconField, labelField)\n <fieldset>\n <legend>General Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"Label\"\n field:\"$labelField$\"\n descr:\"Use this value as node label.\">>\n </table>\n </fieldset>\n <!-- display icon fieldset -->\n <<iconSettings \"$twIconField$\" \"$faIconField$\">> \n\\end\n\n<$macrocall\n $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
"subtitle": "{{$:/core/images/info-button}} The field \"<<name>>\" changed",
"text": "\\rules except wikilink\n\nYou changed the field \"<<name>>\" from \"<<oldValue>>\" to \"<<newValue>>\".\n\nIt is recommended to let TiddlyMap copy all values from the former field \"<<oldValue>>\" to the new field \"<<newValue>>\" so the data stored in \"<<oldValue>>\" is not lost. This operation has to be done now or never.\n\nDo you want to move each tiddler's existing \"<<oldValue>>\" value to \"<<newValue>>\"? Please note that any value currently stored in \"<<newValue>>\" would consequently be overridden and the old field \"<<oldValue>>\" would be eventually removed!"
"subtitle": "{{$:/core/images/info-button}} Your machine does not support fullscreen",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nPlease have a look [[here|http://caniuse.com/#feat=fullscreen]] to see a list of supported devices/browsers.\n\nSorry for this :("
"subtitle": "{{$:/core/images/tag-button}} Please specify a view name",
"text": "\\rules except wikilink\n\n''Name:''\n<$edit-text focus=\"true\" tiddler=<<output>> field=\"text\" type=\"text\" tag=\"input\" default=\"\"\n class=\"tmap-trigger-field tmap-triggers-ok-button-on-enter\" />\n\nNote that ''<<count>>'' tiddlers are referencing this view.\n\n<$reveal type=\"nomatch\" text=\"0\" default=<<count>>>\n\nRenaming the view will cause the reference to be invalid.\nIt is recommended to first remove the tiddlymap widgets in\nthe tiddlers listed below or change their view attributes\naccordingly.\n\n''References''\n\n<ul>\n<$list filter=<<refFilter>> variable=\"item\">\n <li><$text text=<<item>> /></li>\n</$list>\n</ul>\n\n</$reveal>\n"
"subtitle": "{{$:/core/images/options-button}} Save a snapshot image of view \"<<view>>\"",
"text": "\\rules except wikilink\n\n\\define preview()\n<div class=\"tmap-save-canvas-preview\">\n <$transclude tiddler=<<snapshot>> /><br />\n Measures: <<width>>×<<height>>\n</div>\n\\end\n\n<table class=\"tmap-config-table\">\n<!--\n <<tmap-row type:\"input-text\"\n title:\"Name\"\n field:\"name\">\n-->\n<$macrocall $name=\"tmap-row\"\n type=\"input-text\"\n title=\"Name\"\n field=\"name\"\n descr=<<preview>> />\n</table>\n\n<fieldset><legend>Options</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-radio\"\n title:\"Action\"\n field:\"action\" \n selectFilter:\"[[download|Download]]\n [[wiki|Save in wiki]]\n [[placeholder|Use as placeholder for this view]]\"\n descr:\"Save the image by downloading it to your computer or\n save it as a tiddler in your wiki.<br /><br />\n A third option is to make TiddlyMap use this image as\n placeholder for the current view. Placeholders are used\n when tiddlers are exported in form of static html\n or when editing a tiddler while having the preview\n shown. In this case the title input is ignored.\">>\n </table>\n</fieldset>"
"text": "\\rules except wikilink\n\nIt seems that you freshly installed TiddlyMap.\n\n* In case you need any help, please consult the [[online docs|http://tiddlymap.org#Documentation]] first.\n* You are welcome to create an [[issue|https://github.com/felixhayashi/TW5-TiddlyMap/issues]] at GitHub for any bug you discover.\n* Make sure to revisit the [[demo site|http://tiddlymap.org]] to see whether your version is up-to-date.\n* If you like TiddlyMap, please give it a star at [[GitHub|https://github.com/felixhayashi/TW5-TiddlyMap]] or tell your friends about it :)\n* ''Please note:'' TiddlyMap is distributed under the [[BSD 2-Clause License|http://opensource.org/licenses/BSD-2-Clause]], which belongs to the same license family, as the license used by TiddlyWiki. By using this plugin you agree to the product's [[License Terms|https://github.com/felixhayashi/TW5-TiddlyMap/blob/master/LICENSE]].\n\nEnjoy!\n\n---\n\nTiddlyMap will configure your wiki for optimal use. Everything can be changed back later by you, via the TiddlyWiki configurations panel, so no worries. If you checked some of the options below, please save &amp; restart after closing this dialog.\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize storyview\"\n field:\"config.storyview\"\n descr:\"Sets the storyview to 'top' for optimal scrolling.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize sidebar\"\n field:\"config.sidebar\"\n descr:\"Sets sidebar layout to 'fixed-fluid' for larger editor.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize navigation\"\n field:\"config.navigation\"\n descr:\"Sets navigation style to open tiddlers at top for better map navigation.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Create demo welcome map\"\n field:\"config.demo\"\n descr:\"Creates a little hello world welcome map for you.\">>\n</table>\n"
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n Use the code below to embed a view in a tiddler.\n</div>\n\n<pre style=\"white-space: normal;\">\n&lt;$tmap\n\n<$list filter=\"[<output>has[var.view]]\">\n view=\"<$view field='var.view' />\"</$list>\n<$list filter=\"[<output>field:var.click-to-use[true]]\">\n click-to-use=\"true\"</$list>\n<$list filter=\"[<output>has[var.editor]]\">\n editor=\"<$view field='var.editor' />\"</$list>\n<$list filter=\"[<output>has[var.width]]\">\n width=\"<$view field='var.width' />\"</$list>\n<$list filter=\"[<output>has[var.height]]\">\n height=\"<$view field='var.height' />\"</$list>\n<$list filter=\"[<output>has[var.class]]\">\n class=\"<$view field='var.class' />\"</$list>\n<$list filter=\"[<output>field:var.show-buttons[false]]\">\n show-buttons=\"false\"</$list>\n<$list filter=\"[<output>has[var.design]]\">\n design=\"<$view field='var.design' />\"</$list>&gt;&lt;/$tmap&gt;\n</pre>\n\n<fieldset>\n <legend>Parameters</legend> \n <table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"View\"\n field=\"var.view\"\n nochoice=\" \"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to bind the wiedget to\" />\n <<tmap-row type:\"input-select\"\n title:\"Editor bar\"\n field:\"var.editor\"\n selectFilter:\"[[|Hidden]]\n [[vis|Simple]]\n [[advanced|Advanced]]\"\n descr:\"Whether the widget should act as an editor or not.\">>\n <<tmap-row type:\"input-select\"\n title:\"Design\"\n field:\"var.design\"\n selectFilter:\"[[|Normal]]\n [[plain|Plain]]\"\n descr:\"Usually a header is displayed and borders. Plain\n design will only show the mere graph.\">>\n <<tmap-row type:\"input-text\"\n title:\"Height\"\n field:\"var.height\"\n descr:\"Graph's height in css units. Defaults to '300px'.\">>\n <<tmap-row type:\"input-text\"\n title:\"Width\"\n field:\"var.width\"\n descr:\"Graph's width in css units. Defaults to '100%'.\">>\n <<tmap-row type:\"input-text\"\n title:\"Class\"\n field:\"var.class\"\n descr:\"A custom class to apply your own css.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Click to use\"\n field:\"var.click-to-use\"\n default:\"false\"\n descr:\"A click is needed to enable the graph.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show buttons\"\n field:\"var.show-buttons\"\n default:\"true\"\n descr:\"Show or hide the graph's navigation buttons.\">>\n </table>\n</fieldset>"
"text": "\\rules except wikilink\n\n\\define footer() $:/plugins/felixhayashi/tiddlymap/dialogFooter/$(buttons)$\n\n<$transclude tiddler=<<footer>> />\n\n<!-- we need this button to be able to close a tiddler from outside programmatically -->\n<$button class=\"tmap-hidden-close-button\" message=\"tm-close-tiddler\" />"
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Delete type\"\n field=\"temp.deleteType\"\n default={{!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"If you want to delete this type, set this to true\n and click the save button afterwards. Predefined system\n types cannot be deleted.\" note=\"Consequently, all edges\n of this type will be deleted.\" />\n\\end\n\n\\define manage-node-types()\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Delete type\"\n field=\"temp.deleteType\"\n default={{!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"If you want to delete this type, set this to true and\n click the save button afterwards. Predefined system\n types cannot be deleted.\" />\n\\end\n\n<table class=\"tmap-config-table\"><$macrocall $name=<<mode>> /></table>"
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <<tmap-row type:\"input-textarea\"\n title:\"Description\"\n field:\"description\"\n descr:\"An optional description for this type. The\n description will be displayed as tooltip when\n moving the mouse over an edge of this type.\">>\n\\end\n\n\\define manage-node-types()\n <<tmap-row type:\"input-textarea\"\n title:\"Description\"\n field:\"description\" \n descr:\"An optional description for this type.\">>\n\\end\n\n<table class=\"tmap-config-table\">\n <$macrocall $name=<<mode>> />\n</table>\n\n"
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <<tmap-row type:\"input-text\"\n title:\"Label\"\n field:\"label\" \n descr:\"An optional alias used as edge-label.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show label\"\n field:\"show-label\"\n default:\"true\"\n descr:\"If unchecked, no edge label will be displayed.\">>\n\\end\n\\define manage-node-types()\n <$list filter=\"[<currentTiddler>!regexp:id[tmap:]]\">\n <<tmap-row type:\"input-textarea\"\n title:\"Scope\"\n field:\"scope\" \n descr:\"A filter expression that defines, which nodes inherit\n this node-type and its style.\">>\n </$list>\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\" \n title=\"Priority\"\n field=\"priority\"\n selectFilter=<<tmap \"scale\" \"100\">>\n descr=\"When a type has a a higher priority than another type,\n its style will override the other style\" />\n\\end\n\n<table class=\"tmap-config-table\">\n <$macrocall\n $name=\"tmap-row\"\n title=\"Identifier\"\n field=\"temp.newId\"\n type=\"input-text\"\n default={{!!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"A unique identifier\"\n />\n <$macrocall $name=<<mode>> />\n</table>"
"text": "\\rules except wikilink\n\n\\define url()\n <$set\n filter=\"[<mode>prefix[manage-edge-types]]\"\n name=\"module\"\n value=\"edges\"\n emptyValue=\"nodes\">\n [[visjs.org|http://visjs.org/docs/network/$(module)$]]\n </$set>\n\\end\n\n<fieldset class=\"tmap-node-type-specific\">\n <legend>Icon Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"TW-icon\"\n field:\"tw-icon\"\n descr:\"A tiddlywiki image reference.\n For example '$:/core/icon' for Movotun Jack.\">>\n <<tmap-row type:\"input-text\"\n title:\"FA-icon\"\n field:\"fa-icon\"\n descr:\"A Font Awesome icon code.\n For example 'f206' for the bicycle symbol.\">>\n </table>\n</fieldset>\n\n<fieldset><legend>Visjs styles</legend>\n <div class=\"tmap-flash-message tmap-info\">\n All visjs options below are documented at <<url>>.\n </div>\n <div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n </div>\n <$tmap-config\n mode=<<mode>>\n inherited=\"vis-inherited\"\n extension=\"style\" />\n</fieldset>"
"description": "Neighbours are all nodes that are not part of the original set of nodes (\"matches\") but are connected (either outgoing or incoming) to a node of the original set.",
<divdescription="Automatically assigned to an edge that does not have a type assigned"modified="20210722082324364"modifier="M0"show-label="false"style="{"color":{"opacity":0},"arrows":{"to":{"enabled":false}}}"title="$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tmap:unknown">
<pre></pre>
</div>
<divcreated="20200401194121025"description="A link that is contained in the tiddler's body pointing to another resource."label="links to"modified="20210722081656894"modifier="M0"show-label="false"style="{"color":{"opacity":0},"dashes":false,"smooth":{"enabled":false},"arrows":{"to":{"enabled":false}},"width":0,"font":{"strokeWidth":0,"size":0}}"title="$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-body:link">
<pre></pre>
</div>
<divcreated="20210719050521122"description="Contained in a list of this tiddler"label="listed in"modified="20210719053421079"show-label="false"style="{"color":{"opacity":0},"dashes":false,"arrows":{"to":{"enabled":false}},"smooth":{"enabled":false},"font":{"size":0,"strokeWidth":0},"width":0}"title="$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:list">
<pre></pre>
</div>
<divcreated="20210719050511081"description="A tag that refers to a tiddler of the same name."label="tagged with"modified="20210725041813319"show-label="false"style="{"arrows":{"to":{"enabled":false},"from":true},"shadow":{"enabled":false},"font":{"strokeColor":"rgba(255,254,0,1)","size":0,"strokeWidth":25,"align":"bottom","background":"rgba(92,255,97,1)"},"color":{"color":"rgba(255,247,88,1)","opacity":0.2,"highlight":"rgba(255,248,32,1)","hover":"rgba(255,252,18,1)","inherit":true},"width":10,"smooth":{"type":"dynamic","roundness":0.65}}"title="$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:tags">
<divdescription="The style is applied to the node that you marked as central topic in a map."modified="20210722060551017"modifier="M0"priority="1"style="{"font":{"size":58,"color":"rgba(0,0,0,1)"},"shape":"star"}"title="$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:central-topic">
<pre></pre>
</div>
<divdescription="Neighbours are all nodes that are not part of the original set of nodes ("matches") but are connected (either outgoing or incoming) to a node of the original set."modified="20210724125023169"modifier="M0"priority="1"style="{"color":{"border":"rgba(141,252,98,1)"},"shape":"dot","size":21,"font":{"size":25}}"title="$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:neighbour">
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Scroll offset:</th>\n <td><$edit-text tiddler=\"$:/config/topStoryView\" field=\"scroll-offset\" tag=\"input\" default=\"150px\" /></td>\n </tr>\n</table>"
"text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE"
<divauthor="Felix Küppers"core-version=">=5.0.0"dependents=""description="Visjs – TiddlyWiki5 plugin for the vis.js library"list="readme"plugin-type="plugin"source="https://github.com/felixhayashi/TW5-Vis.js"title="$:/plugins/felixhayashi/vis"type="application/json"version="4.21.0-SNAPSHOT">
"text": "/*\\\ntitle: $:/plugins/felixhayashi/vis/vis.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\\*/\n\n/*** TO AVOID STRANGE LIB ERRORS FROM BUBBLING UP *****************/\n\nif($tw.boot.tasks.trapErrors) {\n\n var defaultHandler = window.onerror;\n window.onerror = function(errorMsg, url, lineNumber) {\n \n if(errorMsg.indexOf(\"NS_ERROR_NOT_AVAILABLE\") !== -1\n && url == \"$:/plugins/felixhayashi/vis/vis.js\") {\n \n var text = \"Strange firefox related vis.js error (see #125)\";\n console.error(text, arguments);\n \n } else if(errorMsg.indexOf(\"Permission denied to access property\") !== -1) {\n \n var text = \"Strange firefox related vis.js error (see #163)\";\n console.error(text, arguments);\n \n } else if(defaultHandler) {\n \n defaultHandler.apply(this, arguments);\n \n }\n \n }\n \n}\n\n/******************************************************************/\n\n/**\n * vis.js\n * https://github.com/almende/vis\n *\n * A dynamic, browser-based visualization library.\n *\n * @version 4.21.0\n * @date 2017-10-12\n *\n * @license\n * Copyright (C) 2011-2017 Almende B.V, http://almende.com\n *\n * Vis.js is dual licensed under both\n *\n * * The Apache 2.0 License\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * and\n *\n * * The MIT License\n * http://opensource.org/licenses/MIT\n *\n * Vis.js may be distributed under either license.\n */\n\"use strict\";(function webpackUniversalModuleDefinition(root,factory){if(typeof exports===\"object\"&&typeof module===\"object\")module.exports=factory();else if(typeof define===\"function\"&&define.amd)define([],factory);else if(typeof exports===\"object\")exports[\"vis\"]=factory();else root[\"vis\"]=factory()})(this,function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module[\"default\"]}:function getModuleExports(){return module};__webpack_require__.d(getter,\"a\",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p=\"\";return __webpack_require__(__webpack_require__.s=123)}([function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;exports.default=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\")}}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _defineProperty=__webpack_require__(169);var _defineProperty2=_interopRequireDefault(_defineProperty);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if(\"value\"in descriptor)descriptor.writable=true;(0,_defineProperty2.default)(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}()},function(module,exports,__webpack_require__){\"use strict\";var _getIterator2=__webpack_require__(77);var _getIterator3=_interopRequireDefault(_getIterator2);var _create=__webpac
"type": "application/javascript",
"module-type": "library"
}
}
}</pre>
</div>
<divauthor="Flibbles"bag="default"core-version=">=5.1.22"created="20210324034859173"demo="http://flibbles.github.io/tw5-relink/"dependents=""description="Flexibility when relinking renamed tiddlers"list="readme configuration license"modified="20210502175045375"name="Relink"plugin-type="plugin"revision="0"source="https://github.com/flibbles/tw5-relink"tags="rr-TW5 rr-plugins"title="$:/plugins/flibbles/relink"type="application/json"version="2.0.0">
<pre>{
"tiddlers": {
"$:/plugins/flibbles/relink/js/bulkops.js": {
"text": "/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n * This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\toptions = options || {};\n\tvar failures = [];\n\tvar indexer = utils.getIndexer(this);\n\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\n\tfor (var title in records) {\n\t\tvar entries = records[title],\n\t\t\tchanges = Object.create(null),\n\t\t\tupdate = false,\n\t\t\tfails = false;\n\t\tfor (var field in entries) {\n\t\t\tvar entry = entries[field];\n\t\t\tfails = fails || entry.impossible;\n\t\t\tif (entry.output) {\n\t\t\t\tchanges[field] = entry.output;\n\t\t\t\tupdate = true;\n\t\t\t}\n\t\t}\n\t\tif (fails) {\n\t\t\tfailures.push(title);\n\t\t}\n\t\t// If any fields changed, update tiddler\n\t\tif (update) {\n\t\t\tconsole.log(\"Renaming '\"+fromTitle+\"' to '\"+toTitle+\"' in '\" + title + \"'\");\n\n\t\t\tvar tiddler = this.getTiddler(title);\n\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,this.getModificationFields())\n\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\tthis.addTiddler(newTiddler);\n\t\t\t// If the title changed, we need to perform a nested rename\n\t\t\tif (newTiddler.fields.title !== title) {\n\t\t\t\tthis.deleteTiddler(title);\n\t\t\t\tthis.relinkTiddler(title, newTiddler.fields.title,options);\n\t\t\t}\n\t\t}\n\t};\n\tif (failures.length > 0) {\n\t\tvar options = $tw.utils.extend(\n\t\t\t{ variables: {to: toTitle, from: fromTitle},\n\t\t\t wiki: this},\n\t\t\toptions );\n\t\tlanguage.reportFailures(failures, options);\n\t}\n};\n\n})();\n",
"text": "/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar utils = require('./utils');\n\n///// Legacy. You used to be able to access the type from utils.\nexports.getType = utils.getType;\n/////\n",
"text": "/*\\\nmodule-type: library\n\nUtility methods for relink.\n\n// TODO: The lists of plugins should neither be relinked nor reported.\n\\*/\n\nvar macroFilter = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\n * except that this also takes care of migrating V1 relink modules.\n */\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\n\tvar results = Object.create(null);\n\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\n\t\tvar key = module[nameField];\n\t\tif (key !== undefined) {\n\t\t\tresults[key] = module;\n\t\t} else {\n\t\t\tfor (var entry in module) {\n\t\t\t\tresults[entry] = {\n\t\t\t\t\trelink: module[entry],\n\t\t\t\t\treport: function() {}};\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\n\tvar tiddler = wiki.getTiddler(title),\n\t\treferences = Object.create(null),\n\t\toptions = {settings: context, wiki: wiki};\n\tif (tiddler) {\n\t\ttry {\n\t\t\tfor (var relinker in getRelinkOperators()) {\n\t\t\t\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\n\t\t\t\t\treferences[title] = references[title] || [];\n\t\t\t\t\treferences[title].push(blurb);\n\t\t\t\t}, options);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (e.message) {\n\t\t\t\te.message = e.message + \"\\nWhen reporting '\" + title + \"' Relink references\";\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t}\n\treturn references;\n};\n\n/** Returns a pair like this,\n * { title: {field: entry, ... }, ... }\n */\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle) {\n\t\tif (tiddlerList === undefined) {\n\t\t\ttiddlerList = wiki.getRelinkableTitles();\n\t\t}\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif(tiddler && !tiddler.fields[\"plugin-type\"]) {\n\t\t\t\ttry {\n\t\t\t\t\tvar entries = Object.create(null),\n\t\t\t\t\t\toperators = getRelinkOperators();\n\t\t\t\t\toptions.settings = new Contexts.tiddler(wiki, context, title);\n\t\t\t\t\tfor (var operation in operators) {\n\t\t\t\t\t\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\n\t\t\t\t\t}\n\t\t\t\t\tfor (var field in entries) {\n\t\t\t\t\t\t// So long as there is one key,\n\t\t\t\t\t\t// add it to the change list.\n\t\t\t\t\t\tchangeList[title] = entries;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn changeList;\n};\n\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\n\nexports.getContext = function(name) {\n\treturn Contexts[name];\n};\n\nexports.getWikiContext = function(wiki) {\n\t// This gives a fresh context every time. It is up to the indexer or\n\t// the cache to preserve those contexts for as long as needed.\n\tvar whitelist = new Contexts.whitelist(wiki);\n\treturn new Contexts.import(wiki, whitelist, macroFilter);\n};\n\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\n */\nexports.getIndexer = function(wiki) {\n\tif (!wiki._relink_indexer) {\n\t\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\"RelinkIndexer\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\n\t}\n\treturn wiki._relink_indexer;\n};\n\n/**Relinking supports a cache that persists throughout a whole relink op.\n * This is because the Tiddlywiki caches may get wiped multiple ti
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n`relink:backreferences[]]`\n`relink:references[]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\n\\*/\n\nvar LinkedList = $tw.utils.LinkedList;\n\nif (!LinkedList) {\n\t/* If the linked list isn't available, make a quick crappy version. */\n\tLinkedList = function() {this.array=[];};\n\n\tLinkedList.prototype.pushTop = function(array) {\n\t\t$tw.utils.pushTop(this.array, array);\n\t};\n\n\tLinkedList.prototype.toArray = function() {\n\t\treturn this.array;\n\t};\n};\n\nexports.backreferences = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\n\t});\n\treturn results.toArray();\n};\n\nexports.references = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\n\t\tif (refs) {\n\t\t\tresults.pushTop(Object.keys(refs));\n\t\t}\n\t});\n\treturn results.toArray();\n};\n",
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns a string for each occurrence of that title\nwithin each input title.\n\n[[title]] +[relink:report[fromTiddler]]`\n\nReturns string representation of fromTiddler occurrences in title.\n\\*/\n\nexports.report = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\n\t\tsource(function(tiddler, title) {\n\t\t\tif (blurbs[title]) {\n\t\t\t\tresults = results.concat(blurbs[title]);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n",
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nwouldchange: Generator.\n\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\n\nimpossible: filters all source titles for ones that encounter errors on failure.\n\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\n\n\\*/\n\nvar language = require(\"$:/plugins/flibbles/relink/js/language.js\");\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.wouldchange = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\treturn Object.keys(records);\n};\n\nexports.impossible = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tresults = [],\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\tsource(function(tiddler, title) {\n\t\tvar fields = records[title];\n\t\tif (fields) {\n\t\t\tfor (var field in fields) {\n\t\t\t\tif (fields[field].impossible) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n",
"text": "/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nexports.name = \"list\";\n\nexports.report = function(value, callback, options) {\n\tvar list = $tw.utils.parseStringArray(value);\n\tfor (var i = 0; i < list.length; i++) {\n\t\tcallback(list[i]);\n\t}\n};\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n * types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\tvar entry = {name: \"list\"};\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tentry.impossible = true;\n\t\t} else if (actualList) {\n\t\t\tentry.output = list;\n\t\t} else {\n\t\t\tentry.output = $tw.utils.stringifyList(list);\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n",
"text": "/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n// alpha characters only.\nexports.name = 'title';\n\nexports.report = function(value, callback, options) {\n\tcallback(value);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn {output: toTitle};\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n",
"text": "/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.name = 'text';\n\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\n// $:/DefaultTiddlers is a tiddler which has type \"text/vnd.tiddlywiki\",\n// but it lies. It doesn't contain wikitext. It contains a filter, so\n// we pretend it has a filter type.\n// If you want to be able to add more exceptions for your plugin, let me know.\nvar exceptions = {\n\t\"$:/DefaultTiddlers\": \"text/x-tiddler-filter\"\n};\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\tvar entry = textOperators[type].report(tiddler, callback, options);\n\t\t}\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\tvar entry = textOperators[type].relink(tiddler, fromTitle, toTitle, options);\n\t\t\tif (entry) {\n\t\t\t\tchanges.text = entry;\n\t\t\t}\n\t\t}\n\t}\n};\n",
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles code blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"`` [[Renamed Title]] ``\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"codeinline\", \"codeblock\"];\n\nexports.relink = function(text) {\n\tvar reEnd;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// I'm lazy. This relink method works for both codeblock and codeinline\n\tif (this.match[0].length > 2) {\n\t\t// Must be a codeblock\n\t\treEnd = /\\r?\\n```$/mg;\n\t} else {\n\t\t// Must be a codeinline\n\t\treEnd = new RegExp(this.match[1], \"mg\");\n\t}\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(text);\n\tif (match) {\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn undefined;\n};\n\n// Same thing. Just skip the pos ahead.\nexports.report = exports.relink;\n",
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar filterRelinker = utils.getType('filter');\nvar ImportContext = utils.getContext('import');\n\nexports.name = \"import\";\n\nexports.report = function(text, callback, options) {\n\t// This moves the pos for us\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value || '';\n\tfilterRelinker.report(filter, function(title, blurb) {\n\t\tif (blurb) {\n\t\t\tblurb = '\\\\import ' + blurb;\n\t\t} else {\n\t\t\tblurb = '\\\\import';\n\t\t}\n\t\tcallback(title, blurb);\n\t}, options);\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex,\n\t\tparseTree = this.parse(),\n\t\tfilter = parseTree[0].attributes.filter.value || '',\n\t\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\n\tif (entry !== undefined && entry.output) {\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = entry.output;\n\t\tentry.output = \"\\\\import \" + filter + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n\n\treturn entry;\n};\n",
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() {\n\tthis.parse();\n\treturn undefined;\n};\n\n// Same deal\nexports.report = exports.relink;\n",
"text": "/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\nexports.makeWidget = function(parser, tag, attributes, body) {\n\tif (!parser.context.allowWidgets()) {\n\t\treturn undefined;\n\t}\n\tvar string = '<' + tag;\n\tfor (var attr in attributes) {\n\t\tvar value = attributes[attr];\n\t\tif (value !== undefined) {\n\t\t\tvar quoted = exports.wrapAttributeValue(value);\n\t\t\tif (!quoted) {\n\t\t\t\tif (!parser.options.placeholder) {\n\t\t\t\t\t// It's not possible to make this widget\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tvar category = getPlaceholderCategory(parser.context, tag, attr);\n\t\t\t\tquoted = '<<' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\n\t\t\t}\n\t\t\tstring += ' ' + attr + '=' + quoted;\n\t\t}\n\t}\n\tif (body !== undefined) {\n\t\tstring += '>' + body + '</' + tag + '>';\n\t} else {\n\t\tstring += '/>';\n\t}\n\treturn string;\n};\n\nfunction getPlaceholderCategory(context, tag, attribute) {\n\tvar element = context.getAttribute(tag);\n\tvar rule = element && element[attribute];\n\t// titles go to relink-\\d\n\t// plaintext goes to relink-plaintext-\\d\n\t// because titles are way more common, also legacy\n\tif (rule === undefined) {\n\t\treturn 'plaintext';\n\t} else {\n\t\trule = rule.fields.text;\n\t\tif (rule === 'title') {\n\t\t\trule = undefined;\n\t\t}\n\t\treturn rule;\n\t}\n};\n\nexports.makePrettylink = function(parser, title, caption) {\n\tvar output;\n\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\n\t\tif (caption !== undefined) {\n\t\t\toutput = \"[[\" + caption + \"|\" + title + \"]]\";\n\t\t} else {\n\t\t\toutput = \"[[\" + title + \"]]\";\n\t\t}\n\t} else if (caption !== undefined) {\n\t\tvar safeCaption = sanitizeCaption(parser, caption);\n\t\tif (safeCaption !== undefined) {\n\t\t\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\n\t\t}\n\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\n\t\toutput = exports.makeWidget(parser, '$link', {to: title});\n\t} else if (parser.context.allowWidgets() && parser.placeholder) {\n\t\t// If we don't have a caption, we must resort to\n\t\t// placeholders anyway to prevent link/caption desync\n\t\t// from later relinks.\n\t\t// It doesn't matter whether the tiddler is quotable.\n\t\tvar ph = parser.placeholder.getPlaceholderFor(title);\n\t\toutput = \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t}\n\treturn output;\n};\n\n/**In version 5.1.20, Tiddlywiki made it so <$link to\"something\" /> would\n * use \"something\" as a caption. This is preferable. However, Relink works\n * going back to 5.1.14, so we need to have different handling for both\n * cases.\n */\nvar _supported;\nexports.shorthandPrettylinksSupported = function(wiki) {\n\tif (_supported === undefined) {\n\t\tvar test = wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<$link to=test/>\");\n\t\t_supported = (test === \"test\");\n\t}\n\treturn _supported;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nfunction canBePrettylink(value, customCaption) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') < 0);\n};\n\nfunction sanitizeCaption(parser, caption) {\n\tvar plaintext = parser.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", caption);\n\tif (plaintext === caption && caption.indexOf(\"</$link>\") <= 0) {\n\t\treturn caption;\n\t} else {\n\t\treturn exports.makeWidget(parser, '$text', {text: caption});\n\t}\n};\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value,
"text": "/*\\\n\nBase class for relink contexts.\n\n\\*/\n\nfunction Context() {\n};\n\nexports.context = Context;\n\n// This class does no special handling of fields, operators, or attributes.\n// we pass it along to the parent.\nContext.prototype.getFields = function() {\n\treturn this.parent.getFields();\n};\n\nContext.prototype.getOperator = function(name, index) {\n\treturn this.parent.getOperator(name, index);\n};\n\nContext.prototype.getOperators = function() {\n\treturn this.parent.getOperators();\n};\n\nContext.prototype.getAttribute = function(elementName) {\n\treturn this.parent.getAttribute(elementName);\n};\n\nContext.prototype.getAttributes = function() {\n\treturn this.parent.getAttributes();\n};\n\nContext.prototype.getMacro = function(macroName) {\n\treturn this.parent.getMacro(macroName);\n};\n\nContext.prototype.getMacros = function() {\n\treturn this.parent.getMacros();\n};\n\nContext.prototype.allowPrettylinks = function() {\n\treturn this.parent.allowPrettylinks();\n};\n\nContext.prototype.allowWidgets = function() {\n\treturn this.parent.allowWidgets();\n};\n\nContext.prototype.hasImports = function(value) {\n\treturn this.parent.hasImports(value);\n};\n",
"text": "/*\\\n\nContext for a tiddler. Defines nothing but makes an entry point to test if\na tiddler must be refreshed.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction TiddlerContext(wiki, parentContext, title) {\n\tthis.title = title;\n\tthis.parent = parentContext;\n\tvar globalWidget = parentContext && parentContext.widget;\n\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\n\tparentWidget.setVariable('currentTiddler', title);\n\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\n};\n\nexports.tiddler = TiddlerContext;\n\nTiddlerContext.prototype = new WidgetContext();\n\nTiddlerContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes);\n};\n\n// By default, a tiddler context does not use imports, unless an import\n// statement is later discovered somewhere in the fields.\nTiddlerContext.prototype.hasImports = function(value) {\n\treturn this._hasImports || (this._hasImports = value);\n};\n",
"text": "/*\\\n\nThis handles the context for variables. Either from $set, $vars, or \\define\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction VariableContext(parent, setParseTreeNode) {\n\tthis.parent = parent;\n\t// Now create a new widget and attach it.\n\tvar attachPoint = parent.widget;\n\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\n\tattachPoint.children.push(setWidget);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\t// point our widget to bottom, where any other contexts would attach to\n\tthis.widget = this.getBottom(setWidget);\n};\n\nexports.variable = VariableContext;\n\nVariableContext.prototype = new WidgetContext();\n",
"text": "/*\\\n\nThis top-level context manages settings inside the whitelist. It never has\na parent.\n\n\\*/\n\nvar utils = require('../utils');\nvar Context = require('./context').context;\n\nvar prefix = \"$:/config/flibbles/relink/\";\n\nfunction WhitelistContext(wiki) {\n\tbuild(this, wiki);\n};\n\nexports.whitelist = WhitelistContext;\n\nWhitelistContext.prototype = new Context();\n\n/**Hot directories are directories for which if anything changes inside them,\n * then Relink must completely rebuild its index.\n * By default, this includes the whitelist settings, but relink-titles also\n * includes its rules disabling directory.\n * This is the FIRST solution I came up with to this problem. If you're\n * looking at this, please make a github issue so I have a chance to understand\n * your needs. This is currently a HACK solution.\n */\nWhitelistContext.hotDirectories = [prefix];\n\nWhitelistContext.prototype.getAttribute = function(elementName) {\n\treturn this.attributes[elementName];\n};\n\nWhitelistContext.prototype.getAttributes = function() {\n\treturn flatten(this.attributes);\n};\n\nWhitelistContext.prototype.getFields = function() {\n\treturn this.fields;\n};\n\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\n\tvar op = this.operators[operatorName];\n\treturn op && op[operandIndex || 1];\n};\n\nWhitelistContext.prototype.getOperators = function() {\n\tvar signatures = Object.create(null);\n\tfor (var op in this.operators) {\n\t\tvar operandSet = this.operators[op];\n\t\tfor (var index in operandSet) {\n\t\t\tvar entry = operandSet[index];\n\t\t\tsignatures[entry.key] = entry;\n\t\t}\n\t}\n\treturn signatures;\n};\n\nWhitelistContext.prototype.getMacro = function(macroName) {\n\treturn this.macros[macroName];\n};\n\nWhitelistContext.prototype.getMacros = function() {\n\treturn flatten(this.macros);\n};\n\nWhitelistContext.prototype.changed = function(changedTiddlers) {\n\tfor (var i = 0; i < WhitelistContext.hotDirectories.length; i++) {\n\t\tvar dir = WhitelistContext.hotDirectories[i];\n\t\tfor (var title in changedTiddlers) {\n\t\t\tif (title.substr(0, dir.length) === dir) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nWhitelistContext.prototype.hasImports = function(value) {\n\t// We don't care if imports are used. This is the global level.\n\treturn false;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nvar factories = {\n\tattributes: function(attributes, data, key) {\n\t\tvar elem = root(key);\n\t\tvar attr = key.substr(elem.length+1);\n\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\tattributes[elem][attr] = data;\n\t},\n\tfields: function(fields, data, name) {\n\t\tfields[name] = data;\n\t},\n\tmacros: function(macros, data, key) {\n\t\t// We take the last index, not the first, because macro\n\t\t// parameters can't have slashes, but macroNames can.\n\t\tvar name = dir(key);\n\t\tvar arg = key.substr(name.length+1);\n\t\tmacros[name] = macros[name] || Object.create(null);\n\t\tmacros[name][arg] = data;\n\t},\n\toperators: function(operators, data, key) {\n\t\t// We take the last index, not the first, because the operator\n\t\t// may have a slash to indicate parameter number\n\t\tvar pair = key.split('/');\n\t\tvar name = pair[0];\n\t\tdata.key = key;\n\t\toperators[name] = operators[name] || Object.create(null);\n\t\toperators[name][pair[1] || 1] = data;\n\t}\n};\n\nfunction build(settings, wiki) {\n\tfor (var
"text": "/*\\\n\nThis is a virtual subclass of context for contexts that exist within widgets\nof a specific tiddler.\n\nAll widget contexts must have a widget member.\n\n\\*/\n\nvar Context = require('./context.js').context;\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nfunction WidgetContext() {};\n\nexports.widget = WidgetContext;\n\nWidgetContext.prototype = new Context();\n\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\n\t// widget.variables is prototyped, so it looks up into all its parents too\n\treturn this.widget.variables[variableName] || $tw.macros[variableName];\n};\n\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\n\tthis.macros = this.macros || Object.create(null);\n\tvar macro = this.macros[macroName];\n\ttype = type || utils.getDefaultType(wiki);\n\tif (macro === undefined) {\n\t\tmacro = this.macros[macroName] = Object.create(null);\n\t}\n\tvar handler = utils.getType(type);\n\tif (handler) {\n\t\thandler.source = sourceTitle;\n\t\t// We attach the fields of the defining tiddler for the benefit\n\t\t// of any 3rd party field types that want access to them.\n\t\tvar tiddler = wiki.getTiddler(sourceTitle);\n\t\thandler.fields = tiddler.fields;\n\t\tmacro[parameter] = handler;\n\t}\n};\n\nWidgetContext.prototype.getMacros = function() {\n\tvar signatures = this.parent.getMacros();\n\tif (this.macros) {\n\t\tfor (var macroName in this.macros) {\n\t\t\tvar macro = this.macros[macroName];\n\t\t\tfor (var param in macro) {\n\t\t\t\tsignatures[macroName + \"/\" + param] = macro[param];\n\t\t\t}\n\t\t}\n\t}\n\treturn signatures;\n};\n\n/**This does strange handling because it's possible for a macro to have\n * its individual parameters whitelisted in separate places.\n * Don't know WHY someone would do this, but it can happen.\n */\nWidgetContext.prototype.getMacro = function(macroName) {\n\tvar theseSettings = this.macros && this.macros[macroName];\n\tvar parentSettings;\n\tif (this.parent) {\n\t\tparentSettings = this.parent.getMacro(macroName);\n\t}\n\tif (theseSettings && parentSettings) {\n\t\t// gotta merge them without changing either. This is expensive,\n\t\t// but it'll happen rarely.\n\t\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\n\t\treturn rtnSettings;\n\t}\n\treturn theseSettings || parentSettings;\n};\n\n/**Returns the deepest descendant of the given widget.\n */\nWidgetContext.prototype.getBottom = function(widget) {\n\twhile (widget.children.length > 0) {\n\t\twidget = widget.children[0];\n\t}\n\treturn widget;\n};\n",
"text": "/*\\\n\nContext for wikitext. It can contain rules about what's allowed in this\ncurrent layer of wikitext.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction WikitextContext(parentContext) {\n\tthis.parent = parentContext;\n\tthis.widget = parentContext.widget;\n};\n\nexports.wikitext = WikitextContext;\n\nWikitextContext.prototype = new WidgetContext();\n\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\nWikitextContext.prototype.allowWidgets = enabled;\nWikitextContext.prototype.allowPrettylinks = enabled;\n\nfunction enabled() { return true; };\n",
"text": "/*\\\nmodule-type: library\n\nThis is a backup indexer Relink uses if the real one is disabled, or we're\n<V5.1.23. It's not nearly as good, but it caches some.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\n// This is the indexer we use if the current wiki doesn't support indexers.\nfunction BackupIndexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nmodule.exports = BackupIndexer;\n\nBackupIndexer.prototype.lookup = function(title) {\n\treturn getCache(this.wiki).lookup[title];\n};\n\nBackupIndexer.prototype.reverseLookup = function(title) {\n\tvar index = getCache(this.wiki);\n\tif (!index.reverse[title]) {\n\t\tvar record = Object.create(null);\n\t\tfor (var other in index.lookup) {\n\t\t\tif (index.lookup[other][title]) {\n\t\t\t\trecord[other] = index.lookup[other][title];\n\t\t\t}\n\t\t}\n\t\tindex.reverse[title] = record;\n\t}\n\treturn index.reverse[title];\n};\n\n/* The backup indexer doesn't bother caching relink reports. It would always\n * be called after a draft tiddler had changed, which would defeat the point.\n */\nBackupIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tvar cache = getCache(this.wiki);\n\tif (cache.lastRelinkFrom === fromTitle && cache.lastRelinkTo === toTitle) {\n\t\toptions.cache = cache.lastRelinkCache;\n\t\treturn cache.lastRelink;\n\t}\n\tcache.lastRelink = utils.getRelinkResults(this.wiki, fromTitle, toTitle, cache.context, undefined, options);\n\tcache.lastRelinkFrom = fromTitle;\n\tcache.lastRelinkTo = toTitle;\n\tcache.lastRelinkCache = options.cache;\n\treturn cache.lastRelink;\n};\n\nfunction getCache(wiki) {\n\treturn wiki.getGlobalCache('relink', function() {\n\t\tvar tiddlerList = wiki.getRelinkableTitles();\n\t\tvar index = Object.create(null);\n\t\tvar wikiContext = utils.getWikiContext(wiki);\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif (tiddler && !tiddler.fields[\"plugin-type\"]) {\n\t\t\t\tvar context = new TiddlerContext(wiki, wikiContext, title);\n\t\t\t\tindex[title] = utils.getTiddlerRelinkReferences(wiki, title, context);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tlookup: index,\n\t\t\treverse: Object.create(null),\n\t\t\tcontext: wikiContext};\n\t});\n};\n",
"text": "/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n",
"text": "Illegal characters in attribute name \"<$text text=<<attributeName>>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"
"text": "Illegal characters in element/widget name \"<$text text=<<elementName>>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"
"text": "Illegal characters in parameter name \"<$text text=<<parameterName>>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"
"text": "Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"
"text": "The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\n"
},
"$:/plugins/flibbles/relink/readme": {
"title": "$:/plugins/flibbles/relink/readme",
"type": "text/vnd.tiddlywiki",
"text": "When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee <a href={{$:/plugins/flibbles/relink!!source}}>the tw5-relink website</a> for more details and examples.\n"
"text": "For wikis set up hierarchically using `/`, like a filesystem. This option will update all tiddlers nested inside the target tiddler. i.e. `fromTiddler/path/file` becomes `toTiddler/path/file`."
"text": "See the <a href={{{ [{$:/plugins/flibbles/relink-titles!!demo}addsuffix[#Plugins/Titles]] }}}>//Relink-titles// documentation page</a> for details."
"text": "Highly customizable relinking of tiddler titles //related// to the renamed tiddler.\n\n* Rename a hierarchy of subtiddlers when renaming a root tiddler.\n* Make custom filter rules to rename other tiddlers the way you want when Relinking.\n* Integrates with other plugins for plugin-specific rules.\n\nSee <a href={{$:/plugins/flibbles/relink-titles!!source}}>the tw5-relink website</a> for more details and examples.\n\n{{$:/core/images/warning}} ''Warning:'' You must use //Relink// v1.10.2 or greater with this, or this plugin may delete some tiddler bodies while trying to relink titles.\n"
<divauthor="Mohammad Rahmani"core-version=">=5.1.21"dependents=""description="extended markups, styles, images, tables, and macros"list="readme license history"name="Shiraz"plugin-type="plugin"source="https://github.com/kookma/TW-Shiraz"title="$:/plugins/kookma/shiraz"type="application/json"version="2.2.0">
<pre>{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"title":"$:/plugins/kookma/shiraz/history","created":"20210225163850252","modified":"20210226190112050","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\n* ''2.2.0'' -- 2021.02.26 -- upated to TW 5.1.23 and pagination added to dynamic tables\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\n* ''1.0.0'' -- 2018.10.05 -- first public release\n"},"$:/plugins/kookma/shiraz/license":{"title":"$:/plugins/kookma/shiraz/license","created":"20210225163850253","modified":"20210225164033716","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"title":"$:/plugins/kookma/shiraz/macros/alerts","created":"20180821095049685","modified":"20210225164756860","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"title":"$:/plugins/kookma/shiraz/macros/badge","created":"20181124042103310","modified":"20210225164756871","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n<span class=\"badge badge-$type$\">$src$</span>\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n<span class=\"badge badge-pill badge-$type$\">$src$</span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"title":"$:/plugins/kookma/shiraz/macros/card","created":"20181124111624466","modified":"20210225164756878","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n<div class=\"card mb-3 $class$\" style=\"width:$width$;\">\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>>>\n <div class=\"card-header\">$header$</div>\n</$reveal>\n<div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>>>\n <div class=\"h5 card-title\">$title$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>>>\n <div class=\"h6 card-subtitle mb-2 text-muted\">$subtitle$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>>>\n <div class=\"card-text\"><<__text__>&
<pre>{"tiddlers":{"$:/plugins/kookma/utility/author/author-tools":{"title":"$:/plugins/kookma/utility/author/author-tools","created":"20190912082519234","key":"((author-tools))","modified":"20200316130508400","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/kookma/utility/author/modal\" />"},"$:/plugins/kookma/utility/author/exclude-items":{"title":"$:/plugins/kookma/utility/author/exclude-items","caption":"Exclude items","created":"20200313124437263","modified":"20200322115519909","tags":"","type":"text/vnd.tiddlywiki","text":"\\define showItems(label, filter)\n<h2>$label$</h2>\n<$list filter=<<__filter__>>>\n<$checkbox tiddler=<<currentTiddler>> tag=\"excluded\"/>&nbsp;<$link to=<<currentTiddler>>><$text text=<<currentTiddler>>/></$link><br>\n</$list>\n\\end\n<!-- drag and drop -->\n<<showItems label:\"Disable drag and drop\" filter:\"[title[$:/config/DragAndDrop/Enable]]\">>\n<!-- side bar items -->\n<<showItems label:\"Sidebar tabs\" filter:\"[all[shadows+tiddlers]]+[tag[$:/tags/SideBar]]\">>\n<!-- viewtoolbar items -->\n<<showItems label:\"View toolbars\" filter:\"[all[shadows+tiddlers]prefix[$:/config/ViewToolbarButtons/Visibility]]\">>\n<!-- Page controls -->\n<<showItems label:\"Page controls\" filter:\"[all[shadows+tiddlers]prefix[$:/config/PageControlButtons/Visibility]]\">>\n<$list filter=\"\">"},"$:/plugins/kookma/utility/author/individual-items":{"title":"$:/plugins/kookma/utility/author/individual-items","caption":"Hide individual UI element","created":"20200313141533701","modified":"20200322130601872","tags":"","type":"text/vnd.tiddlywiki","text":"Select individual items to hide in reader mode.\n\n! Site options\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-title\" tag=\"$:/tags/SideBarSegment\"/> Show site title<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-subtitle\" tag=\"$:/tags/SideBarSegment\"/> Show site subtitle<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/page-controls\" tag=\"$:/tags/SideBarSegment\"/> Show page controls<br/>\n\n! Right sidebar elements\n<$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> Show right sidebar toggle button<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/search\" tag=\"$:/tags/SideBarSegment\"/> Show search bar<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/tabs\" tag=\"$:/tags/SideBarSegment\"/> Show sidebar tabs<br/>\n<!-- reserved\n<$checkbox tiddler=\"$:/config/custom-segment\" tag=\"$:/tags/SideBarSegment\"/> Show custom menu -->\n\n! Sidebar tabs\n<$checkbox tiddler=\"$:/core/ui/SideBar/Open\" tag=\"$:/tags/SideBar\"/> Show Open tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/Recent\" tag=\"$:/tags/SideBar\"/> Show Recent tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/Tools\" tag=\"$:/tags/SideBar\"/> Show Tools tab<br/>\n<$checkbox tiddler=\"$:/core/ui/SideBar/More\" tag=\"$:/tags/SideBar\"/> Show More tab<br/>\n\n! Tiddler options\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit\" field=text checked=show unchecked=hide default=show /> Show edit button in the tiddler toolbar<br/>\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close\" field=text checked=show unchecked=hide default=show /> Show close button in the tiddler toolbar<br/>\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions\" field=text checked=show unchecked=hide default=show /> Show more actions button in the tiddler toolbar\n\n! Other items\n<$checkbox tiddler=\"$:/config/DragAndDrop/Enable\" field=text checked=no unchecked=yes default=yes /> Disable page dropzone\n"},"$
<pre><pre>/* TW-version added to site title */
.tc-site-title:before {
content:"TW <<version>>";
position:absolute;
margin-top:-1.9em;
color:silver;
font-size:13px;
}
</pre></pre>
</div>
<divcreated="20181010162537613"description="Toggle field handling in view mode"list-after="$:/core/ui/ViewTemplate/tags"modified="20210426054147590"tags=""title="$:/plugins/kookma/utility/viewtemplate/view-fields"type="text/vnd.tiddlywiki">
<divauthor="Saq Imtiaz"bag="default"core-version=">=5.1.23"created="20210502055536223"dependents=""description="Streams - a different way to write"list="Settings"modified="20210502173153901"plugin-priority="1"plugin-type="plugin"revision="1"source="https://saqimtiaz.github.io/streams/"tags="rr-TW5 rr-plugins"title="$:/plugins/sq/streams"type="application/json"version="0.2.12">
"text": "\\define delete-children()\n\t<$list filter=\"[enlist{!!stream-list}]\">\n\t\t<<delete-children>>\n\t</$list>\n\t<<$action-deletetiddler $filter=\"[enlist{!!stream-list}]\"/>\n\\end\n\n<$list filter=\"[<currentTiddler>has[stream-type]]\">\n\t<$list filter=\"[<currentTiddler>has[parent]]\">\n\t\t<$action-listops $tiddler={{!!parent}} $field=\"stream-list\" $subfilter=\"-[<currentTiddler>]\" />\n\t</$list>\n\t<$list variable=\"count\" filter=\"[enlist{!!stream-list}count[]!match[0]]\">\n\t\t<$action-confirm $message=\"Do you wish to delete all tiddlers descended from this tiddler?\">\n\t\t\t<<delete-children>>\n\t\t</$action-confirm>\n\t</$list>\n</$list>"
"text": "!! Streams keyboard shortcuts\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]]\">\n<tr>\n<td>{{!!text}}</td>\n<td><$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{{[<currentTiddler>removeprefix[$:/config/ShortcutInfo/]addprefix[((]addsuffix[))]]}}} prefix=\"\" separator=\" \" suffix=\"\"/></td>\n</tr>\n</$list>\n</tbody>\n</table>\n\nShortcuts can be customized in the [[Control Panel|$:/core/ui/ControlPanel/KeyboardShortcuts]]\n\n''Drag and drop''\n\n* hold <kbd>control</kbd> key to drag and drop and create a copy of the node in another stream tiddler\n* hold <kbd>shift</kbd> key to drag and drop and create a node that transcludes the contents of this node, in another stream tiddler\n\n''for the moment it is a design decision to disallow copying/transcluding the node inside the same root (story) tiddler''\n\n//Note that it is a known limitation that copying a node or transcluding it does not apply to the children of the node. This is on the [[list of things to implement|Roadmap]].//"
"text": "\\import [[$:/plugins/sq/streams/action-macros]] [all[shadows+tiddlers]tag[$:/tags/streams/actionmacros]] [all[shadows+tiddlers]tag[$:/tags/streams/user-actionmacros]]\n\\whitespace trim\n\n<$vars stream-root-title=<<currentTiddler>>\n\tcontextmenu-state=<<qualify \"$:/state/sq-context-popup\">>\n\trow-edit-state=<<qualify \"$:/state/sq/streams/current-edit-tiddler\">>\n\tdrag-title-state=<<qualify \"$:/state/sq/streams/current-drag-title\">>\n\tdrag-title-nextsibling-state=<<qualify \"$:/state/sq/streams/current-drag-nextsibling\">> \n>\n\t<$eventcatcher\n\t\tevents=\"click\"\n\t\tselector=\".stream-node-ctrl-btn\"\n\t\tactions-click=<<node-ctrl-btn-actions>>\n\t\ttag=\"div\"\n\t>\n\t<$eventcatcher\n\t\tevents=\"dblclick swiped-right swiped-left\"\n\t\ttag=\"div\"\n\t\tselector=\".stream-row\"\n\t\tactions-dblclick=<<toggle-row-edit-state>>\n\t\tactions-swiped-right=<<swiped-right-actions>>\n\t\tactions-swiped-left=<<swiped-left-actions>>\n\t>\n\t<$eventcatcher\n\t\ttag=\"div\"\n\t\tevents=\"contextmenu\"\n\t\tselector=\".sq-contextmenu-container\"\n\t\tactions-contextmenu=<<oncontext-menu-actions>>\n\t>\n\t<$swiper\n\t\ttag=\"div\"\n\t\tenable={{$:/config/sq/streams/swipe-enabled}}\n\t\tswipethreshold={{$:/config/sq/streams/swipe-threshold}}\n\t>\n\t<div class={{{ stream-root [{$:/state/sq/nodes/global-drag-state}match[yes]then[stream-dragactive]] [<currentTiddler>!has[stream-list]then[stream-newlist]] +[join[ ]] }}}>\n\t\t{{||$:/plugins/sq/streams/templates/stream-root-template}}\n\t\t<$list filter=\"[all[current]match<stream-root-title>]\" variable=\"_NULL\">\n\t\t\t<!-- if we are the root, add a button to add more nodes-->\n\t\t\t<div class=\"stream-row\">\n\t\t\t\t<div class=\"stream-node-control stream-node-control-addnew\">\n\t\t\t\t\t<div class=\"stream-node-collapser\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"stream-node-handle\">\n\t\t\t\t\t\t<$button tag=\"div\" class=\"tc-btn-invisible\" tooltip=\"add node\" actions=<<add-node-actions>>>\n\t\t\t\t\t\t\t{{$:/plugins/sq/streams/icons/new-node-btn}}\n\t\t\t\t\t\t</$button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stream-node-block\">\n\t\t\t\t\t<!--consider moving last child dropzone in here, though thats for children too-->\n\t\t\t\t</div>\n\t\t\t</div>\t\t\t\t\n\t\t\t<$set name=\"currentTiddler\" filter={{{[<contextmenu-state>get[current]]}}}>\n\t\t\t\t{{||$:/plugins/sq/streams/contextmenu/contextmenu-template}}\n\t\t\t</$set>\n\t\t</$list>\t\n\t</div>\n\t</$swiper>\n\t</$eventcatcher>\n\t</$eventcatcher>\n\t</$eventcatcher>\n</$vars>"
"text": "\\whitespace trim\n<$vars dropTargetTiddler=<<currentTiddler>>>\n\t<$list filter=\"[list[!!stream-list]!is[missing]]\">\n\t\t<$set name=\"enable-dnd\" filter=\"[<enable-dnd>match[no]] ~[<drag-title-state>get[text]match<currentTiddler>then[no]]\" select=\"0\">\n\t\t\t{{||$:/plugins/sq/streams/templates/stream-row-template}}\n\t\t</$set>\n\t</$list>\n\t<$tiddler tiddler=\"\">\n\t\t<!-- to drop after the last child of any list level-->\n\t\t<$droppable\n\t\t\tactions=<<stream-drop-actions>>\n\t\t\ttag=\"div\"\n\t\t\tenable=<<enable-dnd>>\n\t\t\tclass=\"stream-droppable stream-droppable-terminal\"\n\t\t\tdisabledClass=\"stream-node-disabled\"\n\t\t>\n\t\t\t<div class=\"tc-droppable-placeholder\">\n\t\t\t&nbsp;\n\t\t\t</div><!-- idea only want below div with height when its a child with no more children-->\n\t\t\t<$list filter=\"[<currentTiddler>!has[stream-list]]\" variable=\"_NULL\"><div class=\"stream-droppable-spacer\"/></$list>\n\t\t</$droppable>\n\t</$tiddler>\n</$vars>"
"text": "/*\\\n\ntitle: $:/plugins/sq/streams/action-unselect.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar UnselectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nUnselectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nUnselectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nUnselectWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nUnselectWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nUnselectWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tif (window.getSelection) {\n\t\twindow.getSelection().removeAllRanges();\n\t} else if (document.selection) {\n\t\tdocument.selection.empty();\n\t}\n\treturn true;\n};\n\nUnselectWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-unselect\"] = UnselectWidget;\n\n})();",
"text": "/*\\\n\ntitle: $:/plugins/sq/streams/action-withinput.js\ntype: application/javascript\nmodule-type: widget\n\nPrompt user for input before executing actions contained inside the widget.\nThe string entered by the user is available in the variable userInput in the actions contained in the widget.\n\nPrompt user for confirmation before executing actions contained inside the widget.\nIf the user cancels, the actions are not executed.\n\nExample:\n<$button>go\n<$action-withinput message=\"What is your name?\" actions=\"\"\"<$action-setfield $tiddler=\"name\" $value=<<userInput>>/>\"\"\" />\n</$button>\n\nParameters:\nmessage : message to display\ndefault: default value, defaults to an empty string\n\n\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WithInputWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWithInputWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWithInputWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWithInputWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"message\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nWithInputWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"message\"] || changedAttributes[\"default\"] || changedAttributes[\"actions\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nWithInputWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tif(this.message && this.actions) {\n\t\tvar userData = prompt(this.message,this.defaultValue);\n\t\tif(userData != null) {\n\t\t\tthis.setVariable(\"userInput\",userData);\n\t\t\tthis.invokeActionString(this.actions,this,event);\n\t\t\treturn true;\n\t\t}\n\t}\n};\n\nWithInputWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-withinput\"] = WithInputWidget;\n\n})();",
"text": "\"\"\"\n~CodeMirror, copyright (c) by Marijn Haverbeke and others\nDistributed under an MIT license: http://codemirror.net/LICENSE\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2018, UnaMesa Association\nDistributed under an BSD license: https://tiddlywiki.com/#License\n\"\"\"\n"
"text": "This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. The basic configuration is designed to be as lightweight as possible and is just around 235kb of size. Additional features can be installed with ~CodeMirror ~AddOns from the plugin library.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/codemirror]]\n\nBased on ~CodeMirror version 5.58.3\n"
"text": "! Configuration\n\nConfiguration for the ~CodeMirror text-editor can be done from within the CodeMirror Settings Tab in the [[ControlPanel|$:/ControlPanel]] (Settings - ~CodeMirror)\n\n\n!!Setting a different Theme\n\n~CodeMirror themes are available in the [ext[official GitHub repository|https://github.com/codemirror/CodeMirror/tree/master/theme]]\n\nMore themes can be found at https://github.com/FarhadG/code-mirror-themes/tree/master/themes and previewed [ext[here|http://farhadg.github.io/code-mirror-themes/]]\n\n\nTo add a theme to your wiki, follow these four steps:\n\n* choose one of the CSS files and copy its content to a new tiddler\n* remove all comments from the top and tag the tiddler with <<tag-pill \"$:/tags/Stylesheet\">>\n* add a field \"module-type\" with the value \"codemirror-theme\". add a field \"name\" with the exact ''name'' of the theme as value\n* save the tiddler and go to the Settings tab in $:/ControlPanel - look for the \"theme\" dropdown to select your newly added theme\n\n\n!!Line Numbers\n\nTo show or hide the Line Numbers at the left, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Line Numbers\" checkbox\n\n\n!!Line Wrapping\n\nControls if long lines get visually wrapped to a new line if they're too long to fit the editor width or if the editor should scroll horizontally\n\nTo change the line-wrapping behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Line Wrapping\" checkbox\n\n\n!!Show Cursor when selecting\n\nDefines whether the Mouse cursor should be visually shown or hidden when making a text-selection\n\nTo change the show-cursor-when-selecting behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Show cursor when selecting\" checkbox\n\n\n!!~CodeMirror Font Family\n\nThe Font-Family used within the ~CodeMirror text-editor defaults to \"monospace\" which will choose your configured monospace system-font\n\nThat setting can be overridden entering one or more Font-Families in the \"Font Family\" input field at ~ControlPanel - Settings - ~CodeMirror\n\n* The entries must be separated by semicolons ','\n* Font-Family Names that contain spaces must be quoted like \"My Font\"\n* If a list of Font-Families is specified, the last Font-Family found on the user-system gets used, non-existing fonts get ignored\n* If none of the specified Font-Families is available, ~CodeMirror uses the default \"monospace\"\n\n\n!!\"Hidden\" Settings:\n\n!!!Cursor Blink Rate\n\nThe cursor blink-rate defines how fast (in milliseconds) the cursor blinks inside the textarea\n\nYou can change it by editing $:/config/codemirror/cursorBlinkRate\n\"0\" disables blinking\n\n!!!Tabsize\n\nThe Tabsize defines the width of a tab character. Default is 4.\n\nYou can change it by editing $:/config/codemirror/tabSize\n\n!!!Indent Unit\n\nNot enabled for vnd.tiddlywiki and x-tiddlywiki\n\nDefines how many spaces a text-block should be indented. Defaults to 2.\n\nYou can change it by editing $:/config/codemirror/indentUnit\n\n"
}
}
}</pre>
</div>
<divdependents="$:/plugins/tiddlywiki/codemirror-mode-css"description="Autocompletion for CodeMirror"list="readme"name="CodeMirror Autocomplete"parent-plugin="$:/plugins/tiddlywiki/codemirror"plugin-type="plugin"title="$:/plugins/tiddlywiki/codemirror-autocomplete"type="application/json"version="5.1.23">
"text": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n!function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\"),require(\"../../mode/css/css\")):\"function\"==typeof define&&define.amd?define([\"../../lib/codemirror\",\"../../mode/css/css\"],e):e(CodeMirror)}(function(f){\"use strict\";var p={active:1,after:1,before:1,checked:1,default:1,disabled:1,empty:1,enabled:1,\"first-child\":1,\"first-letter\":1,\"first-line\":1,\"first-of-type\":1,focus:1,hover:1,\"in-range\":1,indeterminate:1,invalid:1,lang:1,\"last-child\":1,\"last-of-type\":1,link:1,not:1,\"nth-child\":1,\"nth-last-child\":1,\"nth-last-of-type\":1,\"nth-of-type\":1,\"only-of-type\":1,\"only-child\":1,optional:1,\"out-of-range\":1,placeholder:1,\"read-only\":1,\"read-write\":1,required:1,root:1,selection:1,target:1,valid:1,visited:1};f.registerHelper(\"hint\",\"css\",function(e){var t=e.getCursor(),r=e.getTokenAt(t),o=f.innerMode(e.getMode(),r.state);if(\"css\"==o.mode.name){if(\"keyword\"==r.type&&0==\"!important\".indexOf(r.string))return{list:[\"!important\"],from:f.Pos(t.line,r.start),to:f.Pos(t.line,r.end)};var i=r.start,s=t.ch,n=r.string.slice(0,s-i);/[^\\w$_-]/.test(n)&&(n=\"\",i=s=t.ch);var a=f.resolveMode(\"text/css\"),d=[],l=o.state.state;return\"pseudo\"==l||\"variable-3\"==r.type?c(p):\"block\"==l||\"maybeprop\"==l?c(a.propertyKeywords):\"prop\"==l||\"parens\"==l||\"at\"==l||\"params\"==l?(c(a.valueKeywords),c(a.colorKeywords)):\"media\"!=l&&\"media_parens\"!=l||(c(a.mediaTypes),c(a.mediaFeatures)),d.length?{list:d,from:f.Pos(t.line,i),to:f.Pos(t.line,s)}:void 0}function c(e){for(var t in e)n&&0!=t.lastIndexOf(n,0)||d.push(t)}})});\n",
"text": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n!function(l){\"object\"==typeof exports&&\"object\"==typeof module?l(require(\"../../lib/codemirror\"),require(\"./xml-hint\")):\"function\"==typeof define&&define.amd?define([\"../../lib/codemirror\",\"./xml-hint\"],l):l(CodeMirror)}(function(n){\"use strict\";var l=\"ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu\".split(\" \"),t=[\"_blank\",\"_self\",\"_top\",\"_parent\"],e=[\"ascii\",\"utf-8\",\"utf-16\",\"latin1\",\"latin1\"],a=[\"get\",\"post\",\"put\",\"delete\"],r=[\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"text/plain\"],o=[\"all\",\"screen\",\"print\",\"embossed\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"speech\",\"3d-glasses\",\"resolution [>][<][=] [X]\",\"device-aspect-ratio: X/Y\",\"orientation:portrait\",\"orientation:landscape\",\"device-height: [X]\",\"device-width: [X]\"],s={attrs:{}},u={a:{attrs:{href:null,ping:null,type:null,media:o,target:t,hreflang:l}},abbr:s,acronym:s,address:s,applet:s,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:o,hreflang:l,type:null,shape:[\"default\",\"rect\",\"circle\",\"poly\"]}},article:s,aside:s,audio:{attrs:{src:null,mediagroup:null,crossorigin:[\"anonymous\",\"use-credentials\"],preload:[\"none\",\"metadata\",\"auto\"],autoplay:[\"\",\"autoplay\"],loop:[\"\",\"loop\"],controls:[\"\",\"controls\"]}},b:s,base:{attrs:{href:null,target:t}},basefont:s,bdi:s,bdo:s,big:s,blockquote:{attrs:{cite:null}},body:s,br:s,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[\"\",\"autofocus\"],disabled:[\"\",\"autofocus\"],formenctype:r,formmethod:a,formnovalidate:[\"\",\"novalidate\"],formtarget:t,type:[\"submit\",\"reset\",\"button\"]}},canvas:{attrs:{width:null,height:null}},caption:s,center:s,cite:s,code:s,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[\"command\",\"checkbox\",\"radio\"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[\"\",\"disabled\"],checked:[\"\",\"checked\"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[\"\",\"disabled\"],multiple:[\"\",\"multiple\"]}},datalist:{attrs:{data:null}},dd:s,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[\"\",\"open\"]}},dfn:s,dir:s,div:s,dl:s,dt:s,em:s,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[\"\",\"disabled\"],form:null,name:null}},figcaption:s,figure:s,font:s,footer:s,form:{attrs:{action:null,name:null,\"accept-charset\":e,autocomplete:[\"on\",\"off\"],enctype:r,method:a,novalidate:[\"\",\"novalidate\"],target:t}},frame:s,frameset:s,h1:s,h2:s,h3:s,h4:s,h5:s,h6:s,head:{attrs:{},children:[\"title\",\"base\",\"link\",\"style\",\"meta\",\"script\",\"noscript\",\"command\"]},header:s,hgroup:s,hr:s,html:{attrs:{manifest:null},children:[\"head\",\"body\"]},i:s,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[\"allow-top-navigation\",\"allow-same-origin\",\"allow-forms\",\"allow-scripts\"],seamless:[\"\",\"seamless\"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[\"anonymous\",\"use-credentials\"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[\"audio/*\",\"video/*\",\"image/*\"],autoc
"text": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n!function(t){\"object\"==typeof exports&&\"object\"==typeof module?t(require(\"../../lib/codemirror\")):\"function\"==typeof define&&define.amd?define([\"../../lib/codemirror\"],t):t(CodeMirror)}(function(f){var c=f.Pos;function g(t,e){for(var r=0,n=t.length;r<n;++r)e(t[r])}function r(t,e,r,n){var i=t.getCursor(),o=r(t,i);if(!/\\b(?:string|comment)\\b/.test(o.type)){var s=f.innerMode(t.getMode(),o.state);if(\"json\"!==s.mode.helperType){o.state=s.state,/^[\\w$_]*$/.test(o.string)?o.end>i.ch&&(o.end=i.ch,o.string=o.string.slice(0,i.ch-o.start)):o={start:i.ch,end:i.ch,string:\"\",state:o.state,type:\".\"==o.string?\"property\":null};for(var a=o;\"property\"==a.type;){if(\".\"!=(a=r(t,c(i.line,a.start))).string)return;a=r(t,c(i.line,a.start));var l=l||[];l.push(a)}return{list:function(t,e,r,n){var i=[],o=t.string,s=n&&n.globalScope||window;function a(t){0!=t.lastIndexOf(o,0)||function(t,e){if(Array.prototype.indexOf)return-1!=t.indexOf(e);for(var r=t.length;r--;)if(t[r]===e)return 1}(i,t)||i.push(t)}function l(t){\"string\"==typeof t?g(y,a):t instanceof Array?g(h,a):t instanceof Function&&g(v,a),function(t,e){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}(t,a)}if(e&&e.length){var f,c=e.pop();for(c.type&&0===c.type.indexOf(\"variable\")?(n&&n.additionalContext&&(f=n.additionalContext[c.string]),n&&!1===n.useGlobalScope||(f=f||s[c.string])):\"string\"==c.type?f=\"\":\"atom\"==c.type?f=1:\"function\"==c.type&&(null==s.jQuery||\"$\"!=c.string&&\"jQuery\"!=c.string||\"function\"!=typeof s.jQuery?null!=s._&&\"_\"==c.string&&\"function\"==typeof s._&&(f=s._()):f=s.jQuery());null!=f&&e.length;)f=f[e.pop().string];null!=f&&l(f)}else{for(var p=t.state.localVars;p;p=p.next)a(p.name);for(var u=t.state.context;u;u=u.prev)for(p=u.vars;p;p=p.next)a(p.name);for(p=t.state.globalVars;p;p=p.next)a(p.name);if(n&&null!=n.additionalContext)for(var d in n.additionalContext)a(d);n&&!1===n.useGlobalScope||l(s),g(r,a)}return i}(o,l,e,n),from:c(i.line,o.start),to:c(i.line,o.end)}}}}function n(t,e){var r=t.getTokenAt(e);return e.ch==r.start+1&&\".\"==r.string.charAt(0)?(r.end=r.start,r.string=\".\",r.type=\"property\"):/^\\.[\\w$_]*$/.test(r.string)&&(r.type=\"property\",r.start++,r.string=r.string.replace(/\\./,\"\")),r}f.registerHelper(\"hint\",\"javascript\",function(t,e){return r(t,i,function(t,e){return t.getTokenAt(e)},e)}),f.registerHelper(\"hint\",\"coffeescript\",function(t,e){return r(t,o,n,e)});var y=\"charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search\".split(\" \"),h=\"length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight \".split(\" \"),v=\"prototype apply call bind\".split(\" \"),i=\"break case catch class const continue debugger default delete do else export extends false finally for function if in import instanceof new null return super switch this throw true try typeof var void while with yield\".split(\" \"),o=\"and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes\".split(\" \")});\n",
"text": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n!function(t){\"object\"==typeof exports&&\"object\"==typeof module?t(require(\"../../lib/codemirror\")):\"function\"==typeof define&&define.amd?define([\"../../lib/codemirror\"],t):t(CodeMirror)}(function(H){\"use strict\";var R=H.Pos;function z(t,e,r){return r?0<=t.indexOf(e):0==t.lastIndexOf(e,0)}H.registerHelper(\"hint\",\"xml\",function(t,e){var r=e&&e.schemaInfo,n=e&&e.quoteChar||'\"',s=e&&e.matchInMiddle;if(r){var i=t.getCursor(),o=t.getTokenAt(i);if(o.end>i.ch&&(o.end=i.ch,o.string=o.string.slice(0,i.ch-o.start)),(p=H.innerMode(t.getMode(),o.state)).mode.xmlCurrentTag){var a,l,g,c=[],f=!1,h=/\\btag\\b/.test(o.type)&&!/>$/.test(o.string),u=h&&/^\\w/.test(o.string);u?(M=t.getLine(i.line).slice(Math.max(0,o.start-2),o.start),(g=/<\\/$/.test(M)?\"close\":/<$/.test(M)?\"open\":null)&&(l=o.start-(\"close\"==g?2:1))):h&&\"<\"==o.string?g=\"open\":h&&\"</\"==o.string&&(g=\"close\");var d=p.mode.xmlCurrentTag(p.state);if(!h&&!d||g){u&&(a=o.string),f=g;var p,m=p.mode.xmlCurrentContext?p.mode.xmlCurrentContext(p.state):[],v=(p=m.length&&m[m.length-1])&&r[p],y=p?v&&v.children:r[\"!top\"];if(y&&\"close\"!=g)for(var x=0;x<y.length;++x)a&&!z(y[x],a,s)||c.push(\"<\"+y[x]);else if(\"close\"!=g)for(var C in r)!r.hasOwnProperty(C)||\"!top\"==C||\"!attrs\"==C||a&&!z(C,a,s)||c.push(\"<\"+C);p&&(!a||\"close\"==g&&z(p,a,s))&&c.push(\"</\"+p+\">\")}else{var b=(v=d&&r[d.name])&&v.attrs,O=r[\"!attrs\"];if(!b&&!O)return;if(b){if(O){var w={};for(var A in O)O.hasOwnProperty(A)&&(w[A]=O[A]);for(var A in b)b.hasOwnProperty(A)&&(w[A]=b[A]);b=w}}else b=O;if(\"string\"==o.type||\"=\"==o.string){var M,P,$,I,T,j=(M=t.getRange(R(i.line,Math.max(0,i.ch-60)),R(i.line,\"string\"==o.type?o.start:o.end))).match(/([^\\s\\u00a0=<>\\\"\\']+)=$/);if(!j||!b.hasOwnProperty(j[1])||!(P=b[j[1]]))return;\"function\"==typeof P&&(P=P.call(this,t)),\"string\"==o.type&&(a=o.string,$=0,/['\"]/.test(o.string.charAt(0))&&(n=o.string.charAt(0),a=o.string.slice(1),$++),I=o.string.length,/['\"]/.test(o.string.charAt(I-1))&&(n=o.string.charAt(I-1),a=o.string.substr($,I-2)),!$||(T=t.getLine(i.line)).length>o.end&&T.charAt(o.end)==n&&o.end++,f=!0);var q=function(t){if(t)for(var e=0;e<t.length;++e)a&&!z(t[e],a,s)||c.push(n+t[e]+n);return k()};return P&&P.then?P.then(q):q(P)}for(var L in\"attribute\"==o.type&&(a=o.string,f=!0),b)!b.hasOwnProperty(L)||a&&!z(L,a,s)||c.push(L)}return k()}}function k(){return{list:c,from:f?R(i.line,null==l?o.start:l):i,to:f?R(i.line,o.end):i}}})});\n",
"text": "This plugin enhances the [[CodeMirror|http://codemirror.net]] text editor with Autocompletion functionality. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\nIt adds Autocompletion for ''html'', ''javascript'' and ''xml'' and also for ''already present words'' within a text-editor instance\n\nThe ''Keyboard Shortcut'' for autocompletion is `Ctrl+Space`\n\n"
}
}
}</pre>
</div>
<divdependents=""description="Fullscreen editing for CodeMirror"list="readme"name="CodeMirror Fullscreen"parent-plugin="$:/plugins/tiddlywiki/codemirror"plugin-type="plugin"title="$:/plugins/tiddlywiki/codemirror-fullscreen"type="application/json"version="5.1.23">
"text": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n!function(e){\"object\"==typeof exports&&\"object\"==typeof module?e(require(\"../../lib/codemirror\")):\"function\"==typeof define&&define.amd?define([\"../../lib/codemirror\"],e):e(CodeMirror)}(function(i){\"use strict\";i.defineOption(\"fullScreen\",!1,function(e,t,o){var r,l;o==i.Init&&(o=!1),!o!=!t&&(t?(l=(r=e).getWrapperElement(),r.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:l.style.width,height:l.style.height},l.style.width=\"\",l.style.height=\"auto\",l.className+=\" CodeMirror-fullscreen\",document.documentElement.style.overflow=\"hidden\",r.refresh()):function(e){var t=e.getWrapperElement();t.className=t.className.replace(/\\s*CodeMirror-fullscreen\\b/,\"\"),document.documentElement.style.overflow=\"\";var o=e.state.fullScreenRestore;t.style.width=o.width,t.style.height=o.height,window.scrollTo(o.scrollLeft,o.scrollTop),e.refresh()}(e))})});\n",
"text": "This plugin adds a ''Fullscreen editing Mode'' to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\nPressing ''F11'' with the focus within the editor-textarea will make the editor go fullscreen, pressing ''F11'' again leaves fullscreen-mode\n\n"
}
}
}</pre>
</div>
<divdependents=""description="CSS highlighting mode for CodeMirror"list="readme"name="CodeMirror Mode CSS"parent-plugin="$:/plugins/tiddlywiki/codemirror"plugin-type="plugin"title="$:/plugins/tiddlywiki/codemirror-mode-css"type="application/json"version="5.1.23">
"text": "This plugin adds Syntax Highlighting for CSS tiddlers (text/css) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\n\n"
}
}
}</pre>
</div>
<divdependents=""description="JavaScript highlighting mode for CodeMirror"list="readme"name="CodeMirror Mode JavaScript"parent-plugin="$:/plugins/tiddlywiki/codemirror"plugin-type="plugin"title="$:/plugins/tiddlywiki/codemirror-mode-javascript"type="application/json"version="5.1.23">
"text": "This plugin adds Syntax Highlighting for Javascript tiddlers (application/javascript) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\n"
"text": "var hljs = require(\"$:/plugins/tiddlywiki/highlight/highlight.js\");\n/*! highlight.js v9.18.1 | BSD3 License | git.io/hljslicense */\n!function(e){var n=\"object\"==typeof window&&window||\"object\"==typeof self&&self;\"undefined\"==typeof exports||exports.nodeType?n&&(n.hljs=e({}),\"function\"==typeof define&&define.amd&&define([],function(){return n.hljs})):e(exports)}(function(a){var f=[],i=Object.keys,_={},c={},C=!0,n=/^(no-?highlight|plain|text)$/i,l=/\\blang(?:uage)?-([\\w-]+)\\b/i,t=/((^(<[^>]+>|\\t|)+|(?:\\n)))/gm,r={case_insensitive:\"cI\",lexemes:\"l\",contains:\"c\",keywords:\"k\",subLanguage:\"sL\",className:\"cN\",begin:\"b\",beginKeywords:\"bK\",end:\"e\",endsWithParent:\"eW\",illegal:\"i\",excludeBegin:\"eB\",excludeEnd:\"eE\",returnBegin:\"rB\",returnEnd:\"rE\",variants:\"v\",IDENT_RE:\"IR\",UNDERSCORE_IDENT_RE:\"UIR\",NUMBER_RE:\"NR\",C_NUMBER_RE:\"CNR\",BINARY_NUMBER_RE:\"BNR\",RE_STARTERS_RE:\"RSR\",BACKSLASH_ESCAPE:\"BE\",APOS_STRING_MODE:\"ASM\",QUOTE_STRING_MODE:\"QSM\",PHRASAL_WORDS_MODE:\"PWM\",C_LINE_COMMENT_MODE:\"CLCM\",C_BLOCK_COMMENT_MODE:\"CBCM\",HASH_COMMENT_MODE:\"HCM\",NUMBER_MODE:\"NM\",C_NUMBER_MODE:\"CNM\",BINARY_NUMBER_MODE:\"BNM\",CSS_NUMBER_MODE:\"CSSNM\",REGEXP_MODE:\"RM\",TITLE_MODE:\"TM\",UNDERSCORE_TITLE_MODE:\"UTM\",COMMENT:\"C\",beginRe:\"bR\",endRe:\"eR\",illegalRe:\"iR\",lexemesRe:\"lR\",terminators:\"t\",terminator_end:\"tE\"},m=\"</span>\",O=\"Could not find the language '{}', did you forget to load/include a language module?\",B={classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:void 0},o=\"of and for in not or if then\".split(\" \");function x(e){return e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")}function g(e){return e.nodeName.toLowerCase()}function u(e){return n.test(e)}function s(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function E(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:\"start\",offset:t,node:r}),t=e(r,t),g(r).match(/br|hr|img|input/)||a.push({event:\"stop\",offset:t,node:r}));return t}(e,0),a}function d(e,n,t){var r=0,a=\"\",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:\"start\"===n[0].event?e:n:e.length?e:n}function c(e){a+=\"<\"+g(e)+f.map.call(e.attributes,function(e){return\" \"+e.nodeName+'=\"'+x(e.value).replace(/\"/g,\"&quot;\")+'\"'}).join(\"\")+\">\"}function l(e){a+=\"</\"+g(e)+\">\"}function u(e){(\"start\"===e.event?c:l)(e.node)}for(;e.length||n.length;){var s=o();if(a+=x(t.substring(r,s[0].offset)),r=s[0].offset,s===e){for(i.reverse().forEach(l);u(s.splice(0,1)[0]),(s=o())===e&&s.length&&s[0].offset===r;);i.reverse().forEach(c)}else\"start\"===s[0].event?i.push(s[0].node):i.pop(),u(s.splice(0,1)[0])}return a+x(t.substr(r))}function R(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return s(n,{v:null},e)})),n.cached_variants?n.cached_variants:function e(n){return!!n&&(n.eW||e(n.starts))}(n)?[s(n,{starts:n.starts?s(n.starts):null})]:Object.isFrozen(n)?[s(n)]:[n]}function p(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(p)}}function v(n,r){var a={};return\"string\"==typeof n?t(\"keyword\",n):i(n).forEach(function(e){t(e,n[e])}),a;function t(t,e){r&&(e=e.toLowerCase()),e.split(\" \").forEach(function(e){var n=e.split(\"|\");a[n[0]]=[t,function(e,n){return n?Number(n):function(e){return-1!=o.indexOf(e.toLowerCase())}(e)?0:1}(n[0],n[1])]})}}function S(r){function s(e){return e&&e.source||e}function f(e,n){return new RegExp(s(e),\"m\"+(r.cI?\"i\":\"\")+(n?\"g\":\"\"))}function a(a){var i,e,o={},c=[],l={},t=1;function n(e,n){o[t]=e,c.push([e,n]),t+=function(e){return new RegExp(e.toS
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/highlight/highlightblock.js\ntype: application/javascript\nmodule-type: widget\n\nWraps up the fenced code blocks parser for highlight and use in TiddlyWiki5\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TYPE_MAPPINGS_BASE = \"$:/config/HighlightPlugin/TypeMappings/\";\n\nvar CodeBlockWidget = require(\"$:/core/modules/widgets/codeblock.js\").codeblock;\n\nvar hljs = require(\"$:/plugins/tiddlywiki/highlight/highlight.js\");\n\nhljs.configure({tabReplace: \" \"});\t\n\nCodeBlockWidget.prototype.postRender = function() {\n\tvar domNode = this.domNodes[0],\n\t\tlanguage = this.language,\n\t\ttiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language);\n\tif(tiddler) {\n\t\tlanguage = tiddler.fields.text || \"\";\n\t}\n\tif(language && hljs.getLanguage(language)) {\n\t\tdomNode.className = language.toLowerCase() + \" hljs\";\n\t\tif($tw.browser && !domNode.isTiddlyWikiFakeDom) {\n\t\t\thljs.highlightBlock(domNode);\t\t\t\n\t\t} else {\n\t\t\tvar text = domNode.textContent;\n\t\t\tdomNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language,text).value);\n\t\t\t// If we're using the fakedom then specially save the original raw text\n\t\t\tif(domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tdomNode.children[0].textInnerHTML = text;\n\t\t\t}\n\t\t}\n\t}\t\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/tiddlywiki/highlight/howto": {
"title": "$:/plugins/tiddlywiki/highlight/howto",
"text": "! Supporting Additional Languages\n \nThe [[highlight.js|https://github.com/highlightjs/highlight.js]] project supports many languages. Only a subset of these languages are supported by the plugin. It is possible for users to change the set of languages supported by the plugin by following these steps:\n \n# Go to the highlight.js project [[download page|https://highlightjs.org/download/]], select the language definitions to include, and press the Download button to download a zip archive containing customised support files for a highlight.js syntax highlighting server.\n# Locate the `highlight.pack.js` file in the highlight plugin -- on a stock Debian 8 system running Tiddlywiki5 under node-js it is located at `/usr/local/lib/node_modules/tiddlywiki/plugins/tiddlywiki/highlight/files/highlight.pack.js`.\n# Replace the plugin `highlight.pack.js` file located in step 2 with the one from the downloaded archive obtained in step 1.\n# Restart the Tiddlywiki server.\n"
"text": "Copyright (c) 2006, Ivan Sagalaev\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n * Neither the name of highlight.js nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
"text": "This plugin provides syntax highlighting of code blocks using v9.18.1 of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev.\n\n! Usage\n\nWhen the plugin is installed it automatically applies highlighting to all codeblocks defined with triple backticks or with the CodeBlockWidget.\n\nThe language can optionally be specified after the opening triple braces:\n\n<$codeblock code=\"\"\"```css\n * { margin: 0; padding: 0; } /* micro reset */\n\nhtml { font-size: 62.5%; }\nbody { font-size: 14px; font-size: 1.4rem; } /* =14px */\nh1 { font-size: 24px; font-size: 2.4rem; } /* =24px */\n```\"\"\"/>\n\nIf no language is specified highlight.js will attempt to automatically detect the language.\n\n! Built-in Language Brushes\n\nThe plugin includes support for the following languages (referred to as \"brushes\" by highlight.js):\n\n* apache\n* arduino\n* arm assembly\n* asciidoc\n* autohotkey\n* awk\n* bash\n* cmake\n* coffeescript\n* cpp\n* cs\n* css\n* diff\n* dockerfile\n* erlang\n* elixir\n* fortran\n* go\n* gradle\n* haskell\n* html\n* http\n* ini\n* intel x86 assembly\n* java\n* javascript\n* json\n* kotlin\n* less\n* lua\n* makefile\n* markdown\n* mathematica\n* matlab\n* nginx\n* objectivec\n* perl\n* php\n* plaintext\n* powershell\n* properties\n* python\n* R\n* ruby\n* rust\n* scss\n* shell session\n* sql\n* swift\n* toml\n* typescript\n* vala\n* vim script\n* xml\n* yaml\n\nYou can also specify the language as a MIME content type (eg `text/html` or `text/css`). The mapping is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`.\n"
"text": "! Usage\n\nFenced code blocks can have a language specifier added to trigger highlighting in a specific language. Otherwise heuristics are used to detect the language.\n\n```\n ```js\n var a = b + c; // Highlighted as JavaScript\n ```\n```\n! Adding Themes\n\nYou can add themes from highlight.js by copying the CSS to a new tiddler and tagging it with [[$:/tags/Stylesheet]]. The available themes can be found on GitHub:\n\nhttps://github.com/isagalaev/highlight.js/tree/master/src/styles\n"
}
}
}</pre>
</div>
<divdependents=""description="Markdown parser based on remarkable by Jon Schlinkert"list="readme usage"name="Markdown"plugin-type="plugin"title="$:/plugins/tiddlywiki/markdown"type="application/json"version="5.1.23-prerelease">
"text": "This is a TiddlyWiki plugin for parsing Markdown text, using the [[Remarkable|https://github.com/jonschlinkert/remarkable]] library.\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\n"
},
"$:/plugins/tiddlywiki/markdown/usage": {
"title": "$:/plugins/tiddlywiki/markdown/usage",
"text": "! Plugin Configuration\n\n|!Config |!Default |!Description |\n| <code>[[breaks|$:/config/markdown/breaks]]</code>| ``false``|Remarkable library config: Convert '\\n' in paragraphs into ``<br>`` |\n| <code>[[linkify|$:/config/markdown/linkify]]</code>| ``false``|Remarkable library config: Autoconvert URL-like text to links |\n| <code>[[linkNewWindow|$:/config/markdown/linkNewWindow]]</code>| ``true``|For external links, should clicking on them open a new window/tab automatically? |\n| <code>[[quotes|$:/config/markdown/quotes]]</code>| ``“”‘’``|Remarkable library config: Double + single quotes replacement pairs, when ``typographer`` enabled |\n| <code>[[renderWikiText|$:/config/markdown/renderWikiText]]</code>| ``true``|After Markdown is parsed, should any text elements be handed off to the ~WikiText parser for further processing? |\n| <code>[[renderWikiTextPragma|$:/config/markdown/renderWikiTextPragma]]</code>| ``\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock``|When handing off to the ~WikiText parser, what pragma rules should it follow? |\n| <code>[[typographer|$:/config/markdown/typographer]]</code>| ``false``|Remarkable library config: Enable some language-neutral replacement + quotes beautification |\n\n! Creating ~WikiLinks\n\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\n\n```\n[link text](#TiddlerTitle)\n```\n\nIf the target tiddler has a space in its name, that name must be URL-escaped to be detected as a URL:\n\n```\n[link text](#Test%20Tiddler)\n```\n\n! Images\n\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\n\n```\n![alt text](/path/to/img.jpg \"Title\")\n\n![alt text](Motovun Jack.jpg \"Title\")\n```\n"
"text": "\\define config-base() $:/config/plugins/menubar/MenuItems/Visibility/\n\n! Menu Bar Configuration\n\n!! Menu Items\n\nSelect which menu items will be shown. You can also drag items to reorder them.\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/MenuBar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n\n!! Breakpoint Position\n\nThe breakpoint position between narrow and wide screens. Should include CSS units (eg. `400px`).\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/breakpoint\" default=\"\" tag=\"input\"/>\n\n!! Contents Tag\n\nThe tag for the ~TableOfContents used in the Contents dropdown\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/TableOfContents/Tag\" default=\"\" tag=\"input\"/>\n\n!! Menu Bar Colours\n\nTo change the colour of the menu bar, define the colours `menubar-foreground` and `menubar-background` in the currently selected palette\n"
"text": "<!-- The menubar plugin overrides this tiddler to remove the core top left menu. The menu items that it would include are instead included in the menubar -->"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"text": "<!-- The menubar plugin overrides this tiddler to remove the core top right menu. The menu items that it would include are instead included in the menubar -->"
},
"$:/plugins/tiddlywiki/menubar/readme": {
"title": "$:/plugins/tiddlywiki/menubar/readme",
"text": "!! Introduction\n\nThis plugin provides a menu bar with the following features:\n\n* Menu items take the form of simple text links, dropdowns, or entirely custom content\n* Menu items can be individually enabled via the control panel\n* Responds to reduced screen width by abbreviating the menu items to a \"hamburger\" dropdown\n\n!! Menu Item Tiddlers\n\nMenu items are tagged <<tag $:/tags/MenuBar>>. The following fields are used by this plugin:\n\n|!Field Name |!Purpose |\n|title |Each menu item must have a unique title (not shown to the user) |\n|description |Description for use in listings |\n|tags |Must contain `$:/tags/MenuBar` |\n|caption |The text that is displayed for the menu item. Avoid links, using `~` to suppress CamelCase links if required |\n|target |For simple link menu items specifies a tiddler title as the target of the link |\n|is-dropdown |Set to `yes` to indicate a dropdown menu item |\n|text |For dropdown menu items, specifies the body of the dropdown |\n|custom-menu-content |Optional wikitext to be displayed in place of the caption |\n|custom-menu-styles-wide |Optional string of styles to be applied to menu item when the menubar is wide |\n|custom-menu-styles-narrow |Optional string of styles to be applied to menu item when the menubar is narrow |\n\nCustom menu items should make sure that the clickable link or button is an immediate child, and not wrapped in another element.\n\nNote that menu items can be pushed to the right of the menu bar setting the ''custom-menu-styles'' field to `float: right;`.\n"
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/components.js\ntype: application/javascript\nmodule-type: library\n\nComponents of a railroad diagram.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar railroad = require(\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\");\n\n/////////////////////////// Base component\n\nvar Component = function() {\n\tthis.type = \"Component\";\n};\n\n// Set up a leaf component\nComponent.prototype.initialiseLeaf = function(type,text) {\n\tthis.type = type;\n\tthis.text = text;\n};\n\n// Set up a component with a single child\nComponent.prototype.initialiseWithChild = function(type,content) {\n\tthis.type = type;\n\tthis.child = toSingleChild(content);\n};\n\n// Set up a component with an array of children\nComponent.prototype.initialiseWithChildren = function(type,content) {\n\tthis.type = type;\n\t// Force the content to be an array\n\tthis.children = $tw.utils.isArray(content) ? content : [content];\n}\n\n// Return an array of the SVG strings of an array of children\nComponent.prototype.getSvgOfChildren = function() {\n\treturn this.children.map(function(child) {\n\t\treturn child.toSvg();\n\t});\n}\n\nComponent.prototype.toSvg = function() {\n\treturn \"\";\n}\n\nComponent.prototype.debug = function(output,indent) {\n\toutput.push(indent);\n\toutput.push(this.type);\n\t// Add the text of a leaf component\n\tif(this.text && this.text !== \"\") {\n\t\toutput.push(\": \");\n\t\toutput.push(this.text);\n\t}\n\t// Flag the normal route\n\tif(this.normal !== undefined) {\n\t\tif(this.normal === true) {\n\t\t\toutput.push(\" (normal)\");\n\t\t} else if(this.normal !== false) {\n\t\t\toutput.push(\" (normal: \");\n\t\t\toutput.push(this.normal);\n\t\t\toutput.push(\")\");\n\t\t}\n\t}\n\toutput.push(\"\\n\");\n\tvar contentIndent = indent + \" \";\n\t// Add the one child\n\tif(this.child) {\n\t\tthis.child.debug(output,contentIndent);\n\t}\n\t// Add the array of children\n\tif(this.children) {\n\t\tthis.debugArray(this.children,output,contentIndent);\n\t}\n \t// Add the separator if there is one\n\tif(this.separator) {\n\t\toutput.push(indent);\n\t\toutput.push(\"(separator)\\n\");\n\t\tthis.separator.debug(output,contentIndent);\n\t}\n};\n\nComponent.prototype.debugArray = function(array,output,indent) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tvar item = array[i];\n\t\t// Choice content is a special case: we number the branches\n\t\tif(item.isChoiceBranch) {\n\t\t\toutput.push(indent);\n\t\t\toutput.push(\"(\");\n\t\t\toutput.push(i);\n\t\t\toutput.push(\")\\n\");\n\t\t\titem.debug(output,\" \"+indent);\n\t\t} else {\n\t\t\titem.debug(output,indent);\n\t\t}\n\t}\n}\n\nvar toSingleChild = function(content) {\n\tif($tw.utils.isArray(content)) {\n\t\t// Reduce an array of one child to just the child\n\t\tif(content.length === 1) {\n\t\t\treturn content[0];\n\t\t} else {\n\t\t\t// Never allow an empty sequence\n\t\t \tif(content.length === 0) {\n \t\t\t\tcontent.push(new Dummy());\n\t\t \t}\n\t\t\t// Wrap multiple children into a single sequence component\n\t\t\treturn new Sequence(content);\n\t\t}\n\t} else {\n\t\t// Already single\n\t\treturn content;\n\t}\n}\n\n/////////////////////////// Leaf components\n\nvar Comment = function(text) {\n\tthis.initialiseLeaf(\"Comment\",text);\n};\n\nComment.prototype = new Component();\n\nComment.prototype.toSvg = function() {\n\treturn railroad.Comment(this.text);\n}\n\nvar Dummy = function() {\n\tthis.initialiseLeaf(\"Dummy\");\n};\n\nDummy.prototype = new Component();\n\nDummy.prototype.toSvg = function() {\n\treturn railroad.Skip();\n}\n\nvar Nonterminal = function(text) {\n\tthis.initialiseLeaf(\"Nonterminal\",text);\n};\n\nNonterminal.prototype = new Component();\n\nNonterminal.prototype.toSvg = function() {\n\treturn railroad.NonTerminal(this.text);\n}\n\nvar Terminal = function(text) {\n\tthis.initialiseLeaf(\"Terminal\",text);\n};\n\nTerminal.prototype = new Component();\n\nTerminal.prototype.toSvg = function() {\n\treturn railroad.Terminal(thi
"text": "This plugin provides a `<$railroad>` widget for generating railroad diagrams as SVG images.\n\nAlternatively, the [[diagram notation|$:/plugins/tiddlywiki/railroad/syntax]] can be stored in a dedicated tiddler with its `type` field set to `text/vnd.tiddlywiki.railroad`, and that tiddler can simply be transcluded to wherever it is needed.\n\nThe plugin is based on [[a library by Tab Atkins|https://github.com/tabatkins/railroad-diagrams]], and has been extended to make it more flexible, including allowing components of a diagram to function as links or be transcluded from other tiddlers.\n"
"text": "('\"' text '\"' | \"'\" text \"'\" | '\"\"\"' text '\"\"\"')"
},
"$:/plugins/tiddlywiki/railroad/syntax": {
"title": "$:/plugins/tiddlywiki/railroad/syntax",
"created": "20150103184022184",
"modified": "20150119220342000",
"text": "The railroad widget uses a special notation to construct the components defined below.\n\n`x` and `y` here stand for any component.\n\nNames (as opposed to quoted strings) are available when a value starts with a letter and contains only letters, digits, underscores, dots and hyphens.\n\n---\n\n; sequence\n: <$railroad text=\"\"\" [\"<-\"] {x} [\"->\"] \"\"\"/>\n* A sequence of components\n* The `<-` and `->` delimiters allow you to force a single component to be treated as a sequence. This is occasionally useful for spacing a diagram out\n\n---\n\n; optional\n: <$railroad text=\"\"\" \"[\" [\":\"] x \"]\" \"\"\"/>\n* A component that can be omitted\n* The colon makes `x` appear straight ahead\n\n---\n\n; repeated\n: <$railroad text=\"\"\" \"{\" x [:\"+\" y] \"}\" \"\"\"/>\n* A list of one or more `x`\n* The `+` suffix adds `y` as a separator between each `x` and the next\n\n---\n\n; optional repeated\n: <$railroad text=\"\"\" \"[{\" [\":\"] x [:\"+\" y] \"}]\" \"\"\"/>\n* An optional list of `x`, i.e. a list of zero or more `x`\n\n---\n\n; choice\n: <$railroad text=\"\"\" \"(\" {[:\":\"] x +\"|\"} \")\" \"\"\"/>\n* A set of alternatives\n* The colon indicates which branch appears straight ahead. By default, it's the first branch\n\n---\n\n; string / terminal\n: <$railroad text={{$:/plugins/tiddlywiki/railroad/syntax-string}}/>\n* A literal or terminal component\n* This follows the normal ~TiddlyWiki rules for quoted strings\n\n---\n\n; nonterminal\n: <$railroad text=\"\"\" (name | \"<\" string \">\") \"\"\"/>\n* A nonterminal component, i.e. the name of another diagram\n\n---\n\n; comment\n: <$railroad text=\"\"\" \"/\" string \"/\" \"\"\"/>\n* A comment\n\n---\n\n; dummy\n: <$railroad text=\"\"\" \"-\" \"\"\"/>\n* The absence of a component\n\n---\n\n; link\n: <$railroad text=\"\"\" \"[[\" x \"|\" (name|string) \"]]\" \"\"\"/>\n* A link to the tiddler title or URI given by the string or name\n\n---\n\n; transclusion\n: <$railroad text=\"\"\" \"{{\" (name|string) \"}}\" \"\"\"/>\n* Treats the content of another tiddler as diagram syntax and transcludes it into the current diagram\n\n---\n\n; arrow pragma\n: <$railroad text=\"\"\" \"\\arrow\" (\"yes\" | \"no\") \"\"\"/>\n* Controls whether repeat paths have an arrow on them\n* Can be toggled on and off in mid-diagram, if desired\n\n---\n\n; debug pragma\n: <$railroad text=\"\"\" \"\\debug\" \"\"\"/>\n* Causes the diagram to display its parse tree\n\n---\n\n; start/end pragma\n: <$railroad text=\"\"\" (\"\\start\" |: \"\\end\") (\"none\" |: \"single\" | \"double\") \"\"\"/>\n* Controls the style of the diagram's startpoint or endpoint\n"
},
"$:/plugins/tiddlywiki/railroad/usage": {
"title": "$:/plugins/tiddlywiki/railroad/usage",
"created": "20150102163222184",
"modified": "20150119231005000",
"text": "The content of the `<$railroad>` widget is ignored.\n\n|!Attribute |!Description |!Default |\n|text |Text in a special notation that defines the diagram's layout |-- |\n|arrow |If set to `no`, repeat paths do not have an arrow on them |`yes` |\n|start |Style of the startpoint: `single`, `double`, `none` |`single` |\n|end |Style of the endpoint: `single`, `double`, `none` |`single` |\n|debug |If set to `yes`, the diagram displays its parse tree |`no` |\n\nThese options can also be specified via pragmas in the diagram notation, or globally via a dictionary tiddler called `$:/config/railroad`:\n\n```\narrow: yes\nstart: single\nend: single\ndebug: no\n```\n"
"text": "(function(document) {\n/* TiddlyWiki: modifications to the original library are commented like this */\n\n/*\nRailroad Diagrams\nby Tab Atkins Jr. (and others)\nhttp://xanthir.com\nhttp://twitter.com/tabatkins\nhttp://github.com/tabatkins/railroad-diagrams\n\nThis document and all associated files in the github project are licensed under CC0: http://creativecommons.org/publicdomain/zero/1.0/\nThis means you can reuse, remix, or otherwise appropriate this project for your own use WITHOUT RESTRICTION.\n(The actual legal meaning can be found at the above link.)\nDon't ask me for permission to use any part of this project, JUST USE IT.\nI would appreciate attribution, but that is not required by the license.\n*/\n\n/*\nThis file uses a module pattern to avoid leaking names into the global scope.\nThe only accidental leakage is the name \"temp\".\nThe exported names can be found at the bottom of this file;\nsimply change the names in the array of strings to change what they are called in your application.\n\nAs well, several configuration constants are passed into the module function at the bottom of this file.\nAt runtime, these constants can be found on the Diagram class.\n*/\n\nvar temp = (function(options) {\n\tfunction subclassOf(baseClass, superClass) {\n\t\tbaseClass.prototype = Object.create(superClass.prototype);\n\t\tbaseClass.prototype.$super = superClass.prototype;\n\t}\n\n\tfunction unnull(/* children */) {\n\t\treturn [].slice.call(arguments).reduce(function(sofar, x) { return sofar !== undefined ? sofar : x; });\n\t}\n\n\tfunction determineGaps(outer, inner) {\n\t\tvar diff = outer - inner;\n\t\tswitch(Diagram.INTERNAL_ALIGNMENT) {\n\t\t\tcase 'left': return [0, diff]; break;\n\t\t\tcase 'right': return [diff, 0]; break;\n\t\t\tcase 'center':\n\t\t\tdefault: return [diff/2, diff/2]; break;\n\t\t}\n\t}\n\n\tfunction wrapString(value) {\n\t\treturn ((typeof value) == 'string') ? new Terminal(value) : value;\n\t}\n\n\n\tfunction SVG(name, attrs, text) {\n\t\tattrs = attrs || {};\n\t\ttext = text || '';\n\t\tvar el = document.createElementNS(\"http://www.w3.org/2000/svg\",name);\n\t\tfor(var attr in attrs) {\n\t\t\tel.setAttribute(attr, attrs[attr]);\n\t\t}\n\t\tel.textContent = text;\n\t\treturn el;\n\t}\n\n\tfunction FakeSVG(tagName, attrs, text){\n\t\tif(!(this instanceof FakeSVG)) return new FakeSVG(tagName, attrs, text);\n\t\tif(text) this.children = text;\n\t\telse this.children = [];\n\t\tthis.tagName = tagName;\n\t\tthis.attrs = unnull(attrs, {});\n\t\treturn this;\n\t};\n\tFakeSVG.prototype.format = function(x, y, width) {\n\t\t// Virtual\n\t};\n\tFakeSVG.prototype.addTo = function(parent) {\n\t\tif(parent instanceof FakeSVG) {\n\t\t\tparent.children.push(this);\n\t\t\treturn this;\n\t\t} else {\n\t\t\tvar svg = this.toSVG();\n\t\t\tparent.appendChild(svg);\n\t\t\treturn svg;\n\t\t}\n\t};\n\tFakeSVG.prototype.toSVG = function() {\n\t\tvar el = SVG(this.tagName, this.attrs);\n\t\tif(typeof this.children == 'string') {\n\t\t\tel.textContent = this.children;\n\t\t} else {\n\t\t\tthis.children.forEach(function(e) {\n\t\t\t\tel.appendChild(e.toSVG());\n\t\t\t});\n\t\t}\n\t\treturn el;\n\t};\n\tFakeSVG.prototype.toString = function() {\n\t\tvar str = '<' + this.tagName;\n\t\tvar group = this.tagName == \"g\" || this.tagName == \"svg\";\n\t\tfor(var attr in this.attrs) {\n\t\t\tstr += ' ' + attr + '=\"' + (this.attrs[attr]+'').replace(/&/g, '&amp;').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\t\tstr += '>';\n\t\tif(group) str += \"\\n\";\n\t\tif(typeof this.children == 'string') {\n\t\t\tstr += this.children.replace(/&/g, '&amp;').replace(/</g, '&lt;');\n\t\t} else {\n\t\t\tthis.children.forEach(function(e) {\n\t\t\t\tstr += e;\n\t\t\t});\n\t\t}\n\t\tstr += '</' + this.tagName + '>\\n';\n\t\treturn str;\n\t}\n\n\tfunction Path(x,y,attrs) {\n\t\tif(!(this instanceof Path)) return new Path(x,y,attrs);\n\t\tFakeSVG.call(this, 'path', attrs);\n\t\tthis.attrs.d = \"M\"+x+' '+y;\n\t}\n\tsubclassOf(Path, FakeSVG);\n\tPath.prototype.m = function(x,y) {\n\t\tthis.
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `railroad-diagrams.js` that provides a `<$railroad>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Parser = require(\"$:/plugins/tiddlywiki/railroad/parser.js\").parser,\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RailroadWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\nvar RAILROAD_OPTIONS = \"$:/config/railroad\";\n\n/*\nInherit from the base widget class\n*/\nRailroadWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRailroadWidget.prototype.render = function(parent,nextSibling) {\n\t// Housekeeping\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Get the source text\n\tvar source = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\t// Create a div to contain the SVG or error message\n\tvar div = this.document.createElement(\"div\");\n\ttry {\n\t\t// Initialise options from the config tiddler or widget attributes\n\t\tvar config = this.wiki.getTiddlerData(RAILROAD_OPTIONS,{});\n\t\tvar options = {\n\t\t\tarrow: this.getAttribute(\"arrow\", config.arrow || \"yes\") === \"yes\",\n\t\t\tdebug: this.getAttribute(\"debug\", config.debug || \"no\") === \"yes\",\n\t\t\tstart: this.getAttribute(\"start\", config.start || \"single\"),\n\t\t\tend: this.getAttribute(\"end\", config.end || \"single\")\n\t\t};\n\t\t// Parse the source\n\t\tvar parser = new Parser(this,source,options);\n\t\t// Generate content into the div\n\t\tif(parser.options.debug) {\n\t\t\tthis.renderDebug(parser,div);\n\t\t} else {\n\t\t\tthis.renderSvg(parser,div);\n\t\t}\n\t} catch(ex) {\n\t\tdiv.className = \"tc-error\";\n\t\tdiv.textContent = ex;\n\t}\n\t// Insert the div into the DOM\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\n};\n\nRailroadWidget.prototype.renderDebug = function(parser,div) {\n\tvar output = [\"<pre>\"];\n\tparser.root.debug(output, \"\");\n\toutput.push(\"</pre>\");\n\tdiv.innerHTML = output.join(\"\");\n};\n\nRailroadWidget.prototype.renderSvg = function(parser,div) {\n\t// Generate a model of the diagram\n\tvar fakeSvg = parser.root.toSvg(parser.options);\n\t// Render the model into a tree of SVG DOM nodes\n\tvar svg = fakeSvg.toSVG();\n\t// Fill in the remaining attributes of any link nodes\n\tthis.patchLinks(svg);\n\t// Insert the SVG tree into the div\n\tdiv.appendChild(svg);\n};\n\nRailroadWidget.prototype.patchLinks = function(node) {\n\tvar self = this;\n\tif(!$tw.node && node.hasChildNodes()) {\n\t\tvar children = node.childNodes;\n\t\tfor(var i=0; i<children.length; i++) {\n\t\t\tvar child = children[i];\n\t\t\tvar attributes = child.attributes;\n\t\t\tif(attributes) {\n\t\t\t\t// Find each element that has a data-tw-target attribute\n\t\t\t\tvar target = child.attributes[\"data-tw-target\"];\n\t\t\t\tif(target !== undefined) {\n\t\t\t\t\ttarget = target.value;\n\t\t\t\t\tif(child.attributes[\"data-tw-external\"]) {\n\t\t\t\t\t\t// External links are straightforward\n\t\t\t\t\t\tchild.setAttribute(\"target\",\"_blank\");\n\t\t\t\t\t\tchild.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Each internal link gets its own onclick handler, capturing its own copy of target\n\t\t\t\t\t\t(function(myTarget) {\n\t\t\t\t\t\t\tchild.onclick = function(event) {\n\t\t\t\t\t\t\t\tself.dispatchLink(myTarget,event);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})(target);\n\t\t\t\t\t\ttarget = \"#\" + target;\n\t\t\t\t\t}\n\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",target);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.patchLinks(child);\n\t\t}\n\t}\n};\n\nRailroadWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text || changedTiddlers[RAILROAD_OPTIONS]) {\n\t\tthis.refreshSelf();\
<divauthor="Mario Pietsch"core-version=">=5.1.15"dependents=""description="Internal links are added to tabs if selected"icon="$:/plugins/wikilabs/link-to-tabs/icon"list="readme license history"name="Link to Tabs"plugin-type="plugin"title="$:/plugins/wikilabs/link-to-tabs"type="application/json"version="2.0.1">
<pre>{"tiddlers":{"$:/core/macros/tabs":{"tags":"$:/tags/Macro","text":"\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$set name=\"tabsState\" filter=\"[<__explicitState__>minlength[1]] ~[<qualifiedState>]\">\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button><span class=\"wltc-link-to-tab\"><$link overrideClass=\"\" to=<<currentTiddler>>>{{$:/core/images/link}}</$link></span></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$set>\n</$set>\n\\end\n"},"$:/core/ui/ControlPanel/Settings/link-to-tabs":{"caption":"Link-to-Tabs plugin","created":"20190712133607244","modified":"20190714104631250","tags":"$:/tags/ControlPanel/Settings","type":"text/vnd.tiddlywiki","text":"<$checkbox tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"show-all-links\" checked=\"inline-block\" unchecked=\"none\" default=\"none\"> Show internal tab link for ''all tabs''</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"show-single-link\" checked=\"inline-block\" unchecked=\"none\" default=\"inline-block\"> Show internal tab link for ''selected tabs''</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"initial-opacity\" checked=\"0\" unchecked=\"0.7\" default=\"0.7\"> Tab links are initially hidden and need mouse hover to become visible.</$checkbox> The transition time in seconds is: <$edit-text tiddler=\"$:/plugins/wikilabs/link-to-tabs/config\" field=\"transition\" default=\"0.3\"/>\n\n<$button message=\"tm-delete-tiddler\" param=\"$:/plugins/wikilabs/link-to-tabs/config\">\nReset to Default!\n</$button>"},"$:/plugins/wikilabs/link-to-tabs/config":{"created":"20190712133008077","initial-opacity":"0.7","modified":"20190714104541701","show-all-links":"none","show-single-link":"inline-block","transition":"0.3","type":"text/vnd.tiddlywiki","text":"This tiddler is used to configure the \"Link-to-tabs\" plugin behaviour. \n\nThere are 4 fields, which are used by [[$:/plugins/wikilabs/link-to-tabs/styles]] enable and disable the internal links. \n\n* show-all-links: {{!!show-all-links}}\n* show-single-link: {{!!show-single-link}}\n* initial-opacity: {{!!initial-opacity}}\n* transition time in seconds: {{!!transition}}\n"},"$:/plugins/wikilabs/link-to-tabs/history":{"text":"V 2.0.1 - 2020-12-25\n\n* update license\n\nV 2.0.0 - 2020.12.05\n\n* Update $:/core/macros/tabs to V5.1.23\n\nV 1.1.1 - 2020.01.19\n\n* Update license link/text\n\nV 1.1.0 - 2019.07.14\n\n* A
</div>
<divcreated="20170510152735336"creator="Mat von TWaddle"modified="20170515062245651"modifier="Mat von TWaddle"tags=""title="$:/richlink/.dictionary"type="application/x-tiddler-dictionary">
<pre>www.youtube.com: richlink/youtube
soundcloud.com: richlink/soundcloud
en.wikipedia.org: richlink/wikipedia
tiddlywiki.com: richlink/docs
twitter.com: richlink/tweet
github.com: richlink/github
jsfiddle.net: richlink/jsfiddle
disq.us: richlink/disqus
pdf: richlink/iframe
txt: richlink/txt
jpg: richlink/img
JPG: richlink/img
png: richlink/img
mp3: richlink/audio
ogg: richlink/audio
wav: richlink/audio
flac: richlink/audio
mp4: richlink/video
ogv: richlink/video
webm: richlink/video</pre>
</div>
<divcreated="20170512211451944"creator="Mat von TWaddle"modified="20170512214408708"modifier="Mat von TWaddle"tags=""title="$:/richlink/audio">
<divcreated="20210917064710317"modified="20210917064710317"title="$:/state/toc/Project/Cuba con Impresoras 3D-Impresora Copincha--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917073954159"modified="20210917081458003"title="$:/state/toc/Project/Jardines Digitales de Bolsillo-Archivo informal--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917073453878"modified="20210917081500628"title="$:/state/toc/Project/Jardines Digitales de Bolsillo-Cartografias de bolsillo--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917073654319"modified="20210917081449763"title="$:/state/toc/Project/Jardines Digitales de Bolsillo-Copinchapedia--1378386848">
<divcreated="20210917070138042"modified="20210917070157554"title="$:/state/toc/Project/Plástico Leal-Plástico Leal - La Conexión--1378386848">
<pre>close</pre>
</div>
<divcreated="20210917065132182"modified="20210917065133327"title="$:/state/toc/Project/Plástico Leal-Plástico Leal - La Conexión-1568814661">
<pre>close</pre>
</div>
<divcreated="20210917064417700"modified="20210917070202322"title="$:/state/toc/Project/Plástico Leal-Plástico Leal - La Maquinaria--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917070205354"modified="20210917070205354"title="$:/state/toc/Project/Plástico Leal/Plástico Leal - La Maquinaria-Extrusora Precious Plastic--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917070225074"modified="20210917072024776"title="$:/state/toc/Project/Plástico Leal/Plástico Leal - La Maquinaria-Impresora Copincha--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917071018885"modified="20210917071020333"title="$:/state/toc/Project/Precious Plastic La Habana-Mapa digital - reciclaje plástico--1378386848">
<pre>close</pre>
</div>
<divcreated="20210917071421446"modified="20210917071421446"title="$:/state/toc/Project/Precious Plastic La Habana-Mapa digital para el reciclaje plástico--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917070434090"modified="20210917072110610"title="$:/state/toc/Project/Precious Plastic La Habana-Máquinas para reciclar plásticos--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917064917613"modified="20210917064918782"title="$:/state/toc/Project/Precious Plastic La Habana-Máquinas para reciclar plásticos-1568814661">
<pre>close</pre>
</div>
<divcreated="20210917070437099"modified="20210917071150357"title="$:/state/toc/Project/Precious Plastic La Habana-Máquinas Precious Plastic--1378386848">
<pre>close</pre>
</div>
<divcreated="20210917064731349"modified="20210917072117481"title="$:/state/toc/Project/Precious Plastic La Habana-Plástico Leal--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917065126582"modified="20210917065129583"title="$:/state/toc/Project/Precious Plastic La Habana-Plástico Leal-1568814661">
<pre>close</pre>
</div>
<divcreated="20210917072352690"modified="20210917081758124"title="$:/state/toc/Project/Precious Plastic La Habana/Máquinas para reciclar plásticos-Máquinas Precious Plastic--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917064733486"modified="20210917081837451"title="$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal-Plástico Leal - La Maquinaria--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917064735302"modified="20210917064735302"title="$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria-Impresora Copincha--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917072413073"modified="20210917081845469"title="$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria-Máquinas para reciclar plásticos--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917081852620"modified="20210917081852620"title="$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria/Máquinas para reciclar plásticos-Impresora Copincha--1378386848">
<pre>open</pre>
</div>
<divcreated="20210917081901164"modified="20210917081901164"title="$:/state/toc/Project/Precious Plastic La Habana/Plástico Leal/Plástico Leal - La Maquinaria/Máquinas para reciclar plásticos-Máquinas Precious Plastic--1378386848">
<divauthor="JeremyRuston"bag="default"core-version=">=5.0.0"created="20201227095110795"dependents="$:/themes/tiddlywiki/vanilla"description="Removes borders from tiddlers"modified="20210301164504315"name="Seamless"plugin-type="theme"revision="0"tags="rr-TW5 rr-plugins"title="$:/themes/tiddlywiki/seamless"type="application/json"version="5.1.23">
<divcreated="20201210171047824"dark-palette="$:/palettes/SolarFlare"description="Toggle between light/dark colour palette"light-palette="$:/palettes/Vanilla"modified="20201214210650767"tags="$:/tags/PageControls"title="$:/utility/ui/Button/SwitchPalette"type="text/vnd.tiddlywiki">
"Edit textbox to append text to another tiddler": "2",
"Compress and Optimize": "3",
"Empty Story": "0",
"TW widget tutorials": "5",
"¡Hola, bienvenido a Copinchapedia!": "0"
}</pre>
</div>
<divcategory="grupo"created="20210313033752757"list="[[Impresora Anycubic]] [[Impresora Ale]] [[Impresora Jonathan]] Hangprinter [[Impresora Acevedo]] [[Impresora Copincha]]"modified="20210917065235944"tags="Project todo"title="3D a lo cubano"tmap.id="4fb0c24f-ce64-489e-ba68-4b4b27291235">
<pre>{{Cuba con Impresoras 3D - Descripcion}}</pre>
</div>
<divcreated="20210323160802048"modified="20210323160802053"tags="[[encargar tornillo con tornero en cuba]] todo"title="acordar precio"tmap.id="34e01096-fef8-4980-a4d8-f178280f598e">
<pre></pre>
</div>
<divcreated="20200810064450648"creator="Adithya_"description="Precision Dark colors for machines and people"license="MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE"modified="20200810103104767"modifier="adithyb_tspot"name="SolarizedLight 2"tags="$:/tags/Palette tiddlywiki"title="adithyab/palettes/SolarizedLight"tmap.id="b0400b13-264f-4144-8b34-636dac75303d"type="application/x-tiddler-dictionary">
* el gobierno ha venido promocion de la agricultura urbana como forma de ...
incremento de la agricultura urbana
! Necesidades:
* insumos para fertilizar el suelo
* insumos para mejorar la calidad del suelo
insumos para
materia organica
mal manejo
desecho organico
gallinaza
problemas de suelo</pre>
</div>
<divcreated="20210323204716471"modified="20210613224121442"tags="ideas"title="Aportar en prototipado"tmap.id="c6290188-e610-44c7-b8ca-2f5ef6cdceec">
<pre>Colaboracion en el prototipado</pre>
</div>
<divcaption="Archivo Informal"category="documentación"created="20210323133658286"description=""list="[[Consegir cilindro central de montacargas]] [[Construir cilindros]]"modified="20210917071908600"tags="[[Jardines Digitales de Bolsillo]] Project"title="Archivo informal"tmap.id="b5df3fb6-ba2d-46c2-a2c7-70dec34a3f0d">
<pre>Archivo Informal (iA) es un proyecto artístico que se centra en la creatividad social, el patrimonio vivo, la tradición, la cultura popular y la cultura de la sobrevivencia que se manifiestan en contextos socioeconómicos deprimidos en donde suelen emerger alternativas creativas, así como en otros en que, sin tener una condición económica desfavorable, las prácticas creativas han devenido costumbres.
La creatividad es la capacidad que tenemos todos los seres humanos para generar nuevas ideas y tiende a florecer en situaciones extremas o de crisis, aunque no únicamente. También se resuma creatividad en espacios donde se aboga por un concepto de vida sustentable, en armonía con el medioambiente. Cuando surge como respuesta a emergencias prácticas, adquiere predominancia en todos los órdenes de la organización cultural, económica y social, como es el caso de Cuba.
Este proyecto desarrolla su investigación tomando de base las prácticas y acciones desarrolladas durante la crisis económica
de los años 90' del pasado siglo, conocido con el eufemístico nombre de «Período especial en tiempos de paz». Tras la caída del campo socialista en 1990 y el recrudecimiento del embargo estadounidense a Cuba, se produjo un colapso de la economía, lo que provocó una recesión sin parangón de la cual el país aún no
se recupera. Como resultado, las practicas creativas se acentuaron y se hicieron imprescindibles para garantizar lo básico.
Las habilidades de reparación y de reciclaje se entronizaron en la sociedad, e incluso, se institucionalizó a través de un movimiento
llamado Asociación Nacional de Innovadores y Racionalizadores. En 1992 la revista Verde Olivo, un órgano de las Fuerzas Armadas,
publicó el libro Con nuestros propios esfuerzos, un compendio de hacks de la vida cotidiana para soliviantar la escasez, la precariedad y la ausencia de productos industriales de uso
hogareño por medio de la reparación y la innovación. </pre>
<divcreated="20210720093856849"modified="20210726163903763"tags="[[Yusnier Mentado]] Arte DOTS SubProject"title="Autopoiesis"tmap.id="7050c1c0-f0ae-499a-ab39-1bab1ef289b1">
<pre>La obra consiste en un brazo robótico que reproduce en el espacio expositivo los mismos movimientos realizados por el artista en el momento en que estaba siendo creado; esto es posible gracias a unos sensores instalados en su brazo y en un guante que este llevaba puesto, y que a su vez se encontraba conectado a un ordenador que registraba todas las acciones de su extremidad mientras trabaja.
La posibilidad de auto "replicarse", de multiplicarse, es una de las principales características de esta obra, que nos expone la idea de obsolescencia y decadencia del cuerpo biológico, y la inminencia de un mundo programado.
Realizada con Arduino Mega, servo motores, acrílico y piezas recicladas de otros equipos electrónicos.
<divcreated="20210720100042359"modified="20210726163344077"tags="[[Yusnier Mentado]] Arte DOTS SubProject"title="Bluebox"tmap.id="793a4813-f79c-4c35-850c-76349271f11a">
<pre><<<
(...)las llamadas gratis no son al principio tan excitantes como la sensación de poder que te da el tener una de estas blue box en la palma de tu mano.(...)
<<<
La reaparición de un artefacto creado para subvertir los mecanismo de poder y control de las comunicaciones (telefónicas en este caso) en los comienzos de una nueva era que se nos viene encima, donde la telefonía móvil y el correo electrónico ya hoy en nuestros celulares, deviene en el mecanismo de control actual con mayor repercusión en la sociedad; constituye una amenaza, sino física al menos conceptual, para todos aquellos sistemas controladores de la individualidad colectiva.
Realizada con Arduino Uno, acrílico y piezas recicladas de otros equipos electrónicos.
<divcreated="20210322231158784"modified="20210719153727558"tags="[[Tutorial Copinchapedia]]"title="Botones con imagen en miniaura"tmap.id="74e0e18c-2a8f-4eb9-a81f-a7746337ed37">
<pre>Creamos un tiddler para la lista de botones de imagen en miniatura
Es un espacio para narrar experiencias sobre el uso de tecnologías, sobre las maneras de dar solución a problemas comunes.
!Calendario
{{Encuentros - Calendario}}
! Recomendaciones
!!Para lograr un mejor sonido desde casa:
*Localizar la habitación más alejada de la calle y de otros sonidos fuertes.
* De ser posible habitaciones con alfombras, colchones de espuma y, cortinas.
*Las habitaciones con muebles rompen las paralelas y también mejoran la sonoridad.
* las esteras de yoga, las toallas son fáciles de mover y también ayudarán a reducir los ruidos en la comunicación.
* Nunca se pegue directamente al microfono. Esto produce sonidos un poco molestos como las "P" y las "S" que son sonidos que estan en las bajas y altas frecuencias. Recomendamos hablar hacia la pantalla del teléfono y si necesitan más volumen se acerquen el teléfono en la misma posición.</pre>
<divcreated="20210520154321129"modified="20210917052913916"orden="03"tags="[[Cafe Sorpresa]]"title="Cafe Sorpresa - 14 de mayo de 2021"tmap.id="1977674c-cd81-4bae-8dbe-e4f50a91d1aa">
<pre>[img [Cafe Sorpresa - 14 5 2021.png]]</pre>
</div>
<divcreated="20210520154359507"modified="20210917052913916"orden="04"tags="[[Cafe Sorpresa]]"title="Cafe Sorpresa - 21 de mayo de 2021"tmap.id="4c156b5a-9327-48de-86ee-29d757f76485">
Mi nombre es Mauri, soy cubano, disenador industrial y soy fundador de Copincha, un hackerspace en La habana.
Este Cafe Sorpresa se titula Tiddlywiki pa Copinchapedia. Pero vamos a hablar fundamentalmente sobre cuadernos de notas.
!! Copincha y la necesidad de documentar
Copincha nacio en junio de 2018 con un curso sobre Arduino. En muy breve tiempo ha venido reuniendo conocimientos y experiencias de las personas que les permitan socializar soluciones para el beneficio comun. Siempre con un caracter colaborativo y abierto.
En la busqueda por hacer mas accesible estas experiencias a la comunidad comenzamos a trabajar en la documentacion y archivo, y en su publicacion en una wiki que hemos nombrado Copinchapedia.
En Cuba el acceso de internet crece pero es todavia un servicio muy caro para la mayoria.
En Cuba Existen proyectos de redes redes alternativas como SNET.
O el Paquete semanal, una forma de distribucion de contenidos, como especie de Netflix offline. Tambien la distribucion de contenidos desde negocios llamados casas de copias.
Este contexto es inspirador para hacer de Copinchapedia una wiki que pueda ser distribuida devarias formas. Ya sea online o offline. Y asi garantizar que de alguna forma obtenga su público.
A raiz del en cuentro en GIG hicimos contacto con Offray
y la comunidad Grafoscopio.
que nos sugirio explorar tiddlywiki y tambien otras herramientas como fossil y hedge doc que sirven colateralmente a este proposito.
!! Que es tiddlywiki?
Tiddlywiki es un software contenido en un archivo html.
Este nos permite crear un cuaderno de notas e ir modificandolo y expandiendolo en el tiempo. El uso mas inmediato que podemos darle es crear un cuaderno personal. y puede ser una alternativa a herramientas como Google Keep, u otro software de notas.
Para ejecutarlo solo debemos abrir este archivo html en cualquier explorador de internet, editar lo que queremos del contenido y guardar.
Al contenido se pueden vincular recursos en internet, pero tambien. una caracteristica de tiddlywiki. es que autocontine varios archivos, como imagenes, pequenos audios...
Tiddlywiki es una web en donde puedes crear un sistema de porciones de contenidos , como un sitema de ficas, e ir interconectando este contenido.
para ello posee 3 caracteristicas importantes.
la posibilidad de hacer enlaces entre fichas por hipertexto.
3. La posibilidad
2. La posibilidad de hacer transclusiones. Que permite que una ficha muestre siempre el contenido de otra ficha de manera automatica.
</pre>
</div>
<divcreated="20210520170902640"modified="20210727141223724"title="Cafe Sorpresa - 21 de mayo de 2021'"tmap.id="375a656e-0c2c-4908-b840-5e9f8f9e09be">
<pre>Hola, Bienvenido al Cafe Sorpesa.
Mi nombre es Mauri, soy cubano, disenador industrial y soy fundador de Copincha, un hackerspace en La habana.
Este Cafe Sorpresa se titula Tiddlywiki pa Copinchapedia. Pero vamos a hablar fundamentalmente sobre cuadernos de notas.
!! Copincha y la necesidad de documentar
Copincha nacio en junio de 2018 con un curso sobre Arduino. En muy breve tiempo ha venido reuniendo conocimientos y experiencias de las personas que les permitan socializar soluciones para el beneficio comun. Siempre con un caracter colaborativo y abierto.
En la busqueda por hacer mas accesible estas experiencias a la comunidad comenzamos a trabajar en la documentacion y archivo, y en su publicacion en una wiki que hemos nombrado Copinchapedia.
En Cuba el acceso de internet crece pero es todavia un servicio muy caro para la mayoria.
En Cuba Existen proyectos de redes redes alternativas como SNET.
O el Paquete semanal, una forma de distribucion de contenidos, como especie de Netflix offline. Tambien la distribucion de contenidos desde negocios llamados casas de copias.
Este contexto es inspirador para hacer de Copinchapedia una wiki que pueda ser distribuida devarias formas. Ya sea online o offline. Y asi garantizar que de alguna forma obtenga su público.
A raiz del en cuentro en GIG hicimos contacto con Offray
y la comunidad Grafoscopio.
que nos sugirio explorar tiddlywiki y tambien otras herramientas como fossil y hedge doc que sirven colateralmente a este proposito.
!! Que es tiddlywiki?
Tiddlywiki es un software contenido en un archivo html.
Este nos permite crear un cuaderno de notas e ir modificandolo y expandiendolo en el tiempo. El uso mas inmediato que podemos darle es crear un cuaderno personal. y puede ser una alternativa a herramientas como Google Keep, u otro software de notas.
Para ejecutarlo solo debemos abrir este archivo html en cualquier explorador de internet, editar lo que queremos del contenido y guardar.
Al contenido se pueden vincular recursos en internet, pero tambien. una caracteristica de tiddlywiki. es que autocontine varios archivos, como imagenes, pequenos audios...
Tiddlywiki es una web en donde puedes crear un sistema de porciones de contenidos , como un sitema de ficas, e ir interconectando este contenido.
para ello posee 3 caracteristicas importantes.
la posibilidad de hacer enlaces entre fichas por hipertexto.
3. La posibilidad
2. La posibilidad de hacer transclusiones. Que permite que una ficha muestre siempre el contenido de otra ficha de manera automatica.
</pre>
</div>
<divcaption="Charlas en Telegram"created="20210530064958197"creator="M0"modified="20210912063734618"modifier="M0"orden="02"tags="[[Cafe Sorpresa]]"title="Cafe Sorpresa - 21/05/21"tmap.id="e1cba21f-87a0-4f04-98f9-309a66a2f9fa">
<divcreated="20210530065347183"modified="20210917052913916"orden="01"tags="[[Cafe Sorpresa]]"title="Cafe Sorpresa - 30 de abril de 2021"tmap.id="b831094e-1569-4658-b1f1-e4f83d6d274d">
<pre>[img [Cafe Sorpresa - 30 04 2021.png]]</pre>
</div>
<divcreated="20210530064958197"modified="20210917052913916"orden="02"tags="[[Cafe Sorpresa]]"title="Cafe Sorpresa - 7 de mayo de 2021"tmap.id="04a20242-587f-45e4-9eb6-4d45f1660c96">
<divcaption="CNC Gran Formato"created="20210530074221289"creator="M0"modified="20210724125756844"modifier="M0"tags="[[Cafe Sorpresa]]"title="Cafe Sorpresa - CNC Gran Formato"tmap.id="5331ff43-2c5a-4c52-bc3f-6525a40ddb2b">
<divcreated="20210720140250724"creator="M0"modified="20210722075638804"modifier="M0"tags="Encuentros Encuentros-Mapa"title="Cafe Viaje en Casa"tmap.id="3d981671-9fa5-4dcf-877a-36d88c7cc569">
<pre></pre>
</div>
<divcaption="ViajeNihon"created="20210720145450880"creator="M0"modified="20210724130738664"modifier="M0"tags="[[Cafe Viaje en Casa]]"title="Cafe Viaje en Casa 04/10/19"tmap.id="c5d96fb4-e07a-49dc-871f-c5da387f9fcb"type="text/vnd.tiddlywiki">
<divcaption="Guyana ¿Cómo llegué?"created="20210720133124420"creator="M0"modified="20210727141738072"modifier="M0"tags="[[Cafe Viaje en Casa]]"title="Cafe Viaje en Casa 13/09/19"tmap.id="c32e102d-e3e7-4775-9e3c-9c3acfe87534"type="text/vnd.tiddlywiki">
<divcategory="software"created="20210621203739799"description=""list="[[anadir pluggin de leaflet]] [[Nuevo Tiddler]] [[crear estilo de mapas]] [[redondear bordes 12 px]]"modified="20210917071908601"tags="SubProject [[Jardines Digitales de Bolsillo]] todo"title="Cartografias de bolsillo"tmap.id="ec78c525-6216-4d04-8ef6-57828465d097">
<pre>! Descripción
Creamos un mapa digital, como herramienta abierta y colaborativa que permita la inclusión de personas y proyectos interesados en procesos circulares.
!! Interfaz
poder llenar campos sin tener que editar tiddlers directamente
!! Filtro
Construir barra filtro que filtrar categorias.
filtrar campos
!! Categorias
Las categorias se colocan en los campos
Categoria 1
*Subacategoria 1A
*Subacategoria 1B
*Subacategoria 1C
Categoria 2
*Subacategoria 2A
*Subacategoria 2B
*Subacategoria 2C
Categoria 3
* Subacategoria 3A
* Subacategoria 3B
* Subacategoria 3C
<<slider label:"Mapa con Tiddlywiki" src:"
{{mapavirtual/tiddlywiki}}
" status:"close">>
<<slider label:"Trabajo con Base de datos JSON con Pharo"{{mapavirtual/pharo!!caption}}" src:"
** [[How to Install|https://adithya-badidey.github.io/TW5-codemirror-plus/wiki.html#How%20to%20Install]].
*[[CodeMirror|http://adithyab.tiddlyspot.com/]].
!! Instalación
# Entramos a la sección de "complementos y extensiones" de la configuración.
# <div> Buscamos Code Mirror e instalamos el editor (marcado con 1) y ''no'' instalamos la autocompleción (marcada con 2):
[img [https://i.imgur.com/tCUo4ll.png]]
</div>
# Arrastramos [[$:/plugins/adithyab/cmplus|https://adithya-badidey.github.io/TW5-codemirror-plus/wiki.html#%24%3A%2Fplugins%2Fadithyab%2Fcmplus]] a nuestro TiddlyWiki.
# Recargamos.
# Vamos a Configuración -> CodeMirror -> Tema
#* Elegimos `tw5plus`.
</pre>
</div>
<divcreated="20210321075647665"creator="M0"modified="20210727160120824"modifier="M0"orden="02"tags="Copincha/Concepto [[¿Qué es Copincha?]]"title="Código de conducta"tmap.id="0dc27d47-f776-4881-8ecd-b2677254a2b1">
<pre>!Nuestro compromiso
Nosotros como miembros, colaboradores y administradores, nos comprometemos a hacer de la participación en nuestra comunidad [[Copincha]] una experiencia libre de acoso para todos. A actuar e interactuar contribuyendo a una comunidad abierta, acogedora, diversa, inclusiva y saludable.
!Nuestras normas
!!Ejemplos de comportamiento aceptable:
*Demostrar empatía y amabilidad hacia los demás.
*Respetar las diferentes opiniones, puntos de vista y experiencias.
*Dar y aceptar con elegancia comentarios constructivos.
*Aceptar nuestra responsabilidad por nuestros errores y disculparnos con los afectados.
*Aprender de la experiencia.
*Centrarnos en lo que es mejor, no sólo para nosotros como individuos, sino para la comunidad en general.
!!Ejemplos de comportamiento inaceptable:
*El uso de lenguaje o imágenes sexualizadas, acoso sexual o insinuaciones de cualquier tipo.
*Comentarios y burlas insultantes o despectivos.
*Ataques personales o políticos
*Acoso público o privado
*Publicar la información privada de otros, como nombres, datos de contacto, o cualquier otra, sin su permiso explícito.
*Cualquier otra conducta que razonablemente pueda considerarse inapropiada en un entorno profesional y de cooperación.
!Responsabilidades en ejecución
Los administradores son responsables de aclarar y hacer cumplir nuestros estándares de comportamiento aceptable y tomarán medidas correctivas adecuadas y justas en respuesta a cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino.
>En caso de que el infractor se a otro admin corresponde a los demas admins cumplir con lo establecido en este punto.
Los administradores de la comunidad tienen el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, confirmaciones, códigos, ediciones de wiki, problemas y otras contribuciones que no estén alineadas con este CÓDIGO de CONDUCTA, y comunicarán las razones de las decisiones de moderación cuando sea apropiado.
!Alcance
Este CÓDIGO de CONDUCTA se aplica en todos los espacios comunitarios y en las representaciones y/o presentaciones de la comunidad en los espacios públicos.
Ejemplos de representación de nuestra comunidad:
El uso de una dirección de correo electrónico oficial, la publicación a través de una cuenta oficial de redes sociales o la actuación como representante designado en un evento en línea o fuera de línea.
!Aplicación
-Los casos de comportamiento contrarios al presente CÓDIGO de CONDUCTA se pueden y deben informar a los admins comunitarios solamente por privado. Todas las quejas serán revisadas e investigadas con prontitud y de manera justa.
*Todos los administradores comunitarios están obligados a respetar la privacidad y seguridad del informante de cualquier incidente.
!Directrices de aplicación
Los admins de la comunidad seguirán las siguientes PAUTAS de IMPACTO para determinar las consecuencias de cualquier acción que consideren que infringe este Codigo de conducta:
!Corrección
Impacto en la comunidad: uso de lenguaje inapropiado u otro comportamiento considerado poco profesional o no deseado en la comunidad.
Consecuencia: Una advertencia privada por escrito de los admins de la comunidad, que brinda claridad sobre la naturaleza de la violación y una explicación de por qué el comportamiento fue inapropiado. Se puede solicitar una disculpa pública.
!Advertencia
*Impacto en la comunidad: una violación a través de un solo incidente o una serie de acciones.
Consecuencia: Una advertencia con prohibición de interacción con las personas involucradas, incluida la interacción no solicitada con quienes hacen cumplir el CÓDIGO de CONDUCTA, durante un período de tiempo específico. Esto incluye evitar interacciones en espacios comunitarios y canales externos como las redes sociales. La violación de estos términos puede dar lugar a una prohibición temporal o permanente.
!Prohibición temporal
Impacto en la comunidad: una violación grave de los estándares de la comunidad, incluido un comportamiento inadecuado sostenido.
Consecuencia: Prohibición temporal de cualquier tipo de interacción o comunicación pública con la comunidad durante un período de tiempo específico. Durante este período no se permite ninguna interacción pública o privada con las personas involucradas, incluida la interacción no solicitada con quienes hacen cumplir el CÓDIGO de CONDUCTA. La violación de estos términos puede dar lugar a una prohibición permanente.
!Prohibición permanente
Impacto en la comunidad: Presentar un patrón de violación de los estándares de la comunidad, incluido el comportamiento inadecuado sostenido, el acoso o agresión hacia un individuo, o hacia un grupo de individuos.
Consecuencia: Prohibición permanente de cualquier tipo de interacción pública dentro de la comunidad.
<<alert info "{{codigo de conducta - atribución}}" width:100%>>
</pre>
</div>
<divcreated="20210321084833551"modified="20210912063734689"title="codigo de conducta - atribucion"tmap.id="5e68f3ad-8ba8-4b15-b1b1-6bd9cfddf006">
<pre>El presente CÓDIGO de CONDUCTA es una adaptación del Pacto de Colaboradores, versión 2.0, disponible en https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
Las PAUTAS de IMPACTO se inspiraron en el CÓDIGO de CONDUCTA de la comunidad Mozilla.
Para obtener respuestas a preguntas comunes sobre este CÓDIGO de CONDUCTA, consulte las preguntas frecuentes en https://www.contributor-covenant.org/faq. Las traducciones están disponibles en https://www.contributor-covenant.org/translations.</pre>
</div>
<divcreated="20210321084833551"modified="20210727160017543"title="codigo de conducta - atribución"tmap.id="155cef81-9b89-4ba9-a3b0-87d02f69562a">
<pre>El presente código de conducta es una adaptación del [[Pacto de Colaboradores, versión 2.0|https://www.contributor-covenant.org/version/2/0/code_of_conduct.html]].</pre>
<divcreated="20210323141239577"modified="20210323141239585"tags="[[construir tornillo de extrusion]] todo"title="Comprar tornillo de extrusion"tmap.id="b62b3f14-0726-4e86-bcac-26efd8915377">
<pre>Consola inalámbrica para dirección de arte (audiovisual)
La inexistencia en Cuba de un equipo de obturación inalámbrica para la realización de los efectos especiales en las producciones audiovisuales, nos llevo a crear una consola multipropósito para dichos fines. Capaz de programar secuencias y disparos individuales.
Realizada con Arduino Nano, bluetooth, relays, acrílico, y piezas recicladas de otros equipos electrónicos.
<divcreated="20210313040403492"modified="20210313040435406"priority="1"tags="[[Construir Hangprinter]] todo done"title="Construir electronica"tmap.id="d30c2144-4925-4be4-86b0-44018d25acff">
<pre></pre>
</div>
<divcreated="20210313034341211"modified="20210528223125690"tags="[[- Cuba con Impresoras 3D -]] todo"title="Construir impresora Acevedo"tmap.id="5e52032b-d2e8-4f13-be8b-2608f858dedc">
<pre></pre>
</div>
<divcreated="20210313034358474"modified="20210528223145256"tags="[[- Cuba con Impresoras 3D -]] todo"title="Construir impresora Israel"tmap.id="7fc76615-6a4c-4915-b41c-6e0c3ec073f6">
<pre></pre>
</div>
<divcreated="20210528223207107"modified="20210528223207114"tags="[[- Cuba con Impresoras 3D -]] todo"title="Construir impresora Jonathan"tmap.id="c198eb1a-0866-4764-a8a0-9befbefaa799">
<pre></pre>
</div>
<divcreated="20210528223216518"modified="20210528223216528"tags="[[- Cuba con Impresoras 3D -]] todo"title="Construir impresora Miguel"tmap.id="97b2194c-81a4-4b52-a989-56ce453854d7">
<pre></pre>
</div>
<divcreated="20210326155034759"creator="Offray Luna"modified="20210326182619941"modifier="Offray Luna"tags=""title="Consultar y organizar datos en Pharo"tmap.id="ce3cf5bb-77dd-4e7b-9573-25e5e129ff57">
<pre>Fuente: [[mensaje en la lista de correo|https://lists.pharo.org/empathy/thread/MCPQG3BHBSUMJDOESOB62Q66E3GH57LY]]:
<pre>Copincha se vale de las colaboraciones voluntarias que hacen crecer el fondo de recursos omunitarios que compartimos.
Este fondo se basa en construir conocimiento compartido y prototipos que nos ayudana a aprender mas rapido sobre una solucion. O materiales disponibles para el prototipado.
Material para el prototipado
Necesidades del espacio
Reflejamos cada contribucion de forma publica y transparente [[aqui|Registro de contribuciones]]
! Monetaria
Resumen
! Material
Resumen
! Tiempo
Resumen
! Trabajo
Resumen</pre>
</div>
<divcaption="¿Cómo contribuir?"created="20210714175059602"modified="20210727132813142"orden="03"tags="Copincha/Concepto Inbox todo Copincha/Sidebar"title="Contribuir en Copincha"tmap.id="6e2db4dd-e2a6-4b99-9c99-6ffdcdecab11">
<pre>Copincha se vale de las colaboraciones voluntarias que hacen crecer el fondo de recursos omunitarios que compartimos.
Este fondo se basa en construir conocimiento compartido y prototipos que nos ayudana a aprender mas rapido sobre una solucion. O materiales disponibles para el prototipado.
Material para el prototipado
Necesidades del espacio
Reflejamos cada contribucion de forma publica y transparente [[aqui|Registro de contribuciones]]
! Monetaria
Resumen
! Material
Resumen
! Tiempo
Resumen
! Trabajo
Resumen</pre>
</div>
<divcaption="¿Cómo contribuir?"created="20210719153537328"modified="20210727132851347"orden="02"tags="Copinchapedia Copinchapedia/Sidebar"title="Contribuir en Copinchapedia"tmap.id="9bfe26c7-5f40-4757-878c-02bb80d1f3f2">
<pre>* Mantener un espacio físico comunitario en La Habana donde nos reunimos, compartimos conocimientos y aprendemos.<br><br>
* Desarrollar y mantener una comunidad digital ajustada a las necesidades comunitarias locales y extendida a través de foros, un repositorio público de proyectos y presencia en la web.<br><br>
* Educar a través de pedagogías centradas en capacidades específicas de utilidad aplicada.<br><br>
* Desarrollar proyectos iniciados por personas del colectivo u otras organizaciones que tengan objetivos compatibles.<br><br>
* Documentar y divulgar, con un tono amable y familiar, las experiencias de trabajo y los conocimientos de la comunidad.<br><br>
* Facilitar, asesorar y apoyar a otros colectivos en las siguientes materias:
:* Formas de organización abierta<br><br>
:* Creación de comunidades que respeten la convivencia, la colaboración y la socialización del trabajo.<br><br>
* Promover el colectivismo, la autogestión y el trabajo voluntario colaborativo tanto en Copincha, como en individuos, y organizaciones afines.<br><br>
* Mantener una actitud abierta para poder seguir aprendiendo nosotr@s mism@s sobre estos procesos.
<$macrocall $name="alert" type="dark" src="
Preferimos esta manera de operar aunque a veces pueda ser percibida como más lenta.
Preferimos que las cosas lleven algo más de tiempo a motivar dinámicas de trabajo individualistas, o centradas en la capacidad extraordinaria de uno o pocos individuos que se sobre-entienden “expertos”.
Preferimos el caminar colectivo porque entendemos que si uno quiere caminar rápido para llegar a un sitio, quizás sea mejor ir solo, pero si uno quiere llegar lejos ha de caminar siempre con otros que comparten el mismo destino.
''Copincha'' es un [[hackerspace|Hackerspace]] situado en La Habana. Un laboratorio para compartir experiencias tecnológicas a través de la colaboración abierta.
En la jerga local cubana, "pincha" significa trabajo. Copincha así se traduce como trabajo colaborativo.</pre>
''Copincha'' es un [[hackerspace|Hackerspace]] situado en La Habana. Un laboratorio para compartir experiencias tecnológicas a través de la colaboración abierta.
En la jerga local cubana, "pincha" significa trabajo. Copincha así se traduce como trabajo colaborativo.</pre>
<divcaption="Copinchapedia"category="documentación"color="#ffff80"created="20210117143843768"creator="M0"licencia="<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Licencia Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Esta obra está bajo una <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional</a>."licencia-short="<center>[img [https://i.creativecommons.org/l/by-sa/4.0/80x15.png]] <br> Esta obra está bajo una <br> [[Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional|http://creativecommons.org/licenses/by-sa/4.0/]]"modified="20210923180640514"modifier="M0"orden="2"tags="[[Jardines Digitales de Bolsillo]] Copincha/Concepto"title="Copinchapedia"tmap.id="4abe3105-25eb-4853-888d-b11c7160eba1"type="text/vnd.tiddlywiki">
<pre>Copinchapedia es [[wiki]] donde documentamos colaborativamente el conocimiento y las experiencias de [[Copincha]]. Todo el trabajo se publica bajo una [[Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional|https://creativecommons.org/licenses/by-sa/4.0/]].
Este sitio está cambiando todo el tiempo. A menudo se agregan ligeros ajustes, una sección completamente nueva o se elimina algo que ya no es relevante. Así que espere enlaces rotos y errores de escritura ocasionales en material nuevo. Hacemos lo posible por mantenerlo ordenado.
Al recopilar estos materiales, hemos tomado prestado ocasionalmente muchos recursos en línea (como: textos, imágenes o ideas inspiradoras). Intentamos reunir el crédito de todas las fuentes en cada página; pero por favor, [[contáctenos|mailto:comunidad@copincha.org]] si encuentra alguna omisión o igualmente para brindarnos preguntas o comentarios.</pre>
<divcaption="Plantillas"created="20210323134644669"list="[[ventana de pieza]] [[lista de piezas]] pieza"modified="20210727132455779"tags="SubProject Copinchapedia todo [[Tutorial Copinchapedia]]"title="Copinchapedia/Plantillas"tmap.id="cf3b9c5e-a34c-4c19-8775-2a31bf534555">
<pre></pre>
</div>
<divcreated="20210318122126240"modified="20210318122500752"tags=""title="Cuba con Impresoras 3D - Descripcion"tmap.id="b7634ae3-bb65-49be-bfbe-9eebff7aab81">
<pre>!! How can I add sections to the left sidebar?
Any tiddler with the system tag <<tag $:/themes/nico/notebook/tags/SidebarSection>> will be displayed as a section in the left sidebar.</pre>
<pre>!! This is a proof of concept of a visual editor for writing pure text.
Pure text means //''no widgets or macros, no custom HTML''.//
I have a very raw, incomplete and preliminary proof of concept demo of a visual editor for everyone to play with to assess if this is worth pursuing further.
''A few things to understand before we go further:''
* This takes a shortcut approach which means that it cannot be used as the basis of an editor that does support widgets and macros etc
* The idea is to see if this reliable enough to use in situations where we care more about the final presentation of the content than the underlying code
** To test out the feasability of the idea, I have used an existing HTML based editor and re-used it within TW but set it up to output wiki syntax.
** This is in very early days. I have done the bare minimum work on it so far to see if the idea is feasable. As such it is brittle. In other words, this is still far from being reliably usable.
** Therefore, the UI is far from ideal and this is not feature complete. Ignore those aspects as that can be addressed if the overall approach is found to be useful
** configuration options, integration with core editor features etc are all not addressed at the moment
*** on that note do not use the core toolbar in the editor other than the preview button.
* The main questions to answer here are:
** does such a visual editor providing support for very limited formatting offer any value?
** Is the conversion from wiki to HTML and back to wikitext, reliable enough for this subset of formatting options?
** The editor does not do a lossless wikitext->HTML->wikitext roundtrip, the aim however is for the product of such a roundtrip to look visually identical to the original text when rendered.
* For the purpose of this demo, the new editor is only active on tiddlers with the type text/typewriter. So if the editor does crash for some reason, you can just delete the type field to get the default editor
* Once in the editor, ''select any text to see formatting options''. (and yes its part of the non ideal UI for now that this needs a selection)
* Formatting is limited to the options provided by the toolbar. If you edit a tiddler that has had extra formatting added with wikitext or html, bad things will happen. Probably you loose that extra formatting or those bits of content. I don't think we can warn users that is happening either.
* the idea is not to use wiki syntax in this editor, but rather use the formatting commands to add formatting
* The editor would best be used to edit tiddlers that were also written in this editor.
* Creating links is very clunky at the moment. To add a tiddler link highlight some text, choose the last button on the toolbar and then type in # followed by the tiddler name.
''//OK, go ahead and edit this tiddler and try selecting some text.//''
''//After that look at [[this|View demo]] tiddler.//''
!! Technical details.
* The editor used ishttps://github.com/yabwe/medium-editor
* The choiceof editor was one of expedience.<br>I have used this library before and it generatesHTML consistent with TiddlyWiki, in particular paragraphs.<br>However,this library is no longer maintained and has not been in some time. Furthermore, the floating only toolbar UI is far from ideal.
* Other editors considered but found lacking: ProseMirror (too complex to setup and maintain without a committed maintainer), Trumbowyg (no nested lists and Trix (divs instead of paragraphs). Editors relying on jquery / angular / vue were not considered. Trix is probably worth another look.
* The conversion from HTML to markdown/tiddlywiki is by means of turndown: https://github.com/domchristie/turndown
* Forthe purpose of this demo, this editor is only active for tiddlers with the type:text/typewriter</pre>
<divcreated="20210720103509802"modified="20210726163408310"tags="[[Yusnier Mentado]] Arte DOTS SubProject"title="Dios no jugó a los dados"tmap.id="b8ba7e12-9987-45e1-91fc-6c92d11257b3">
<pre>La obra consiste en un dado electrónico, con sensores capaces de identificar cuál es la cara superior y así actualizar todas las demás para colocar el número mayor hacia arriba. La relación Arte-Ciencia-Fe, son importante en esta obra, el azar puede ser construido, manipulado, divina o electrónicamente.
Realizada con Arduino Mini Pro, y piezas recicladas de otros equipos electrónicos.
<divcreated="20210313034324455"modified="20210318153722425"tags="[[- Cuba con Impresoras 3D -]] todo"title="Documentar impresora Ale"tmap.id="bed76554-75ee-4746-a99c-43cad6cbe8d0">
<pre></pre>
</div>
<divcreated="20170510171219303"creator="Mat von TWaddle"modified="20210714055208435"modifier="Mat von TWaddle"tags="Copinchapedia example todo"title="Documentar recurso Richlink"tmap.id="900826c9-def3-4603-8ce4-8a6b83450e1b">
<pre>This uses [[$:/richlink/img]] template to get a //polaroid wth image caption//. The use of this template is triggered by the ´.jpg´ suffix of the link.
In particular, note that this particular template uses one of the //extra parameters//!.
<divcreated="20170510171219303"creator="Mat von TWaddle"modified="20210912062940984"modifier="Mat von TWaddle"tags="[[Contribuir en Copinchapedia]] example todo done"title="Documentar recursos Copinchapedia"tmap.id="2dd8a00b-846b-440d-82d5-72363309a3a1">
<pre></pre>
</div>
<divcategory="grupo"created="20210720034015395"description="Desarrollo de obras tecnologicas"modified="20210726163125643"tags="Arte Project"title="DOTS"tmap.id="68cd4f21-e29a-4b86-accd-d2e8d89dd797">
<divcreated="20210520170902640"modified="20210613170955977"title="Draft of 'Cafe Sorpresa - 21 de mayo de 2021'"tmap.id="cd6bcc75-ea21-48ca-93d2-08bc977afba0">
<pre>Hola, Bienvenido al Cafe Sorpesa.
Mi nombre es Mauri, soy cubano, disenador industrial y soy fundador de Copincha, un hackerspace en La habana.
Este Cafe Sorpresa se titula Tiddlywiki pa Copinchapedia. Pero vamos a hablar fundamentalmente sobre cuadernos de notas.
!! Copincha y la necesidad de documentar
Copincha nacio en junio de 2018 con un curso sobre Arduino. En muy breve tiempo ha venido reuniendo conocimientos y experiencias de las personas que les permitan socializar soluciones para el beneficio comun. Siempre con un caracter colaborativo y abierto.
En la busqueda por hacer mas accesible estas experiencias a la comunidad comenzamos a trabajar en la documentacion y archivo, y en su publicacion en una wiki que hemos nombrado Copinchapedia.
En Cuba el acceso de internet crece pero es todavia un servicio muy caro para la mayoria.
En Cuba Existen proyectos de redes redes alternativas como SNET.
O el Paquete semanal, una forma de distribucion de contenidos, como especie de Netflix offline. Tambien la distribucion de contenidos desde negocios llamados casas de copias.
Este contexto es inspirador para hacer de Copinchapedia una wiki que pueda ser distribuida devarias formas. Ya sea online o offline. Y asi garantizar que de alguna forma obtenga su público.
A raiz del en cuentro en GIG hicimos contacto con Offray
y la comunidad Grafoscopio.
que nos sugirio explorar tiddlywiki y tambien otras herramientas como fossil y hedge doc que sirven colateralmente a este proposito.
!! Que es tiddlywiki?
Tiddlywiki es un software contenido en un archivo html.
Este nos permite crear un cuaderno de notas e ir modificandolo y expandiendolo en el tiempo. El uso mas inmediato que podemos darle es crear un cuaderno personal. y puede ser una alternativa a herramientas como Google Keep, u otro software de notas.
Para ejecutarlo solo debemos abrir este archivo html en cualquier explorador de internet, editar lo que queremos del contenido y guardar.
Al contenido se pueden vincular recursos en internet, pero tambien. una caracteristica de tiddlywiki. es que autocontine varios archivos, como imagenes, pequenos audios...
Tiddlywiki es una web en donde puedes crear un sistema de porciones de contenidos , como un sitema de ficas, e ir interconectando este contenido.
para ello posee 3 caracteristicas importantes.
la posibilidad de hacer enlaces entre fichas por hipertexto.
3. La posibilidad
2. La posibilidad de hacer transclusiones. Que permite que una ficha muestre siempre el contenido de otra ficha de manera automatica.
<divcreated="20210323160742321"modified="20210323182812145"tags="[[encargar tornillo con tornero en cuba]] todo done"title="enviar plano"tmap.id="2552823a-6321-437d-89b5-a0019c78fa63">
<pre></pre>
</div>
<divcreated="20131224074240979"modified="20210719153727558"tags="[[Tutorial Copinchapedia]]"title="Establecer un favicon"tmap.id="9ee16b8c-20f0-4f85-9d9e-8ff83d8d3656"type="text/vnd.tiddlywiki">
<pre>Los "favicons" son pequeños iconos que la mayoría de los navegadores muestran para ayudar a los usuarios a identificar los sitios web. Tenga en cuenta que todos los navegadores admiten imágenes de mapa de bits, pero sólo algunos navegadores modernos admiten iconos en formato SVG.
favicons en el navegador
Cuando TiddlyWiki se inicia en el navegador busca un tiddler llamado $:/favicon.ico y lo utiliza dinámicamente como el favicon de la página. Si modificas la imagen, el favicon cambia instantáneamente para reflejarlo.
Para establecer una imagen externa como favicon, asigna la URL al campo _canonical_uri del tiddler $:/favicon.ico.
favicons en el servidor
En el servidor, el ServerCommand servirá el tiddler $:/favicon.ico en la ruta /favicon.ico.
Traducción realizada con la versión gratuita del traductor www.DeepL.com/Translator</pre>
</div>
<divcreated="20210318221223054"modified="20210319033318388"tags="$:/tags/Stylesheet"title="Estilo de pagina"tmap.id="d4ae9f15-0f5e-4902-bd1b-9147e0eee705">
La extrusión es un proceso continuo donde las partículas de plástico se insertan en la tolva y se extruyen en una hilo de plástico. Estas hilos se pueden usar para hacer nueva materia prima, plástico granulado, girar alrededor de un molde o usarse de manera creativa.
<pre>Los hackerspaces son lugares físicos gestionados de forma comunitaria, donde las personas se reunen y comparten su interés por la tecnología, trabajan en sus proyectos y aprenden de los demás.</pre>
</div>
<divbag="default"caption="Copincha"color="#000000"created="20210325045828732"creator="Sylvain Comte"direccion="Ánimas 964, apto 101, entre Soledad y Oquendo, Centrohabana, La Habana, Cuba"email="[[comunidad@copincha.org|mailto:comunidad@copincha.org]]"mapa="<$leafmap tile='toner' places='{"filter":"[tag[geocopincha]]"}' clusterType='tiddler' style='{"color":"orange"}' marker='marker' height=300px width=100%/>"modified="20210720063642687"modifier="Sylvain Comte"osm="[[23.1391890,82.3735227|https://www.openstreetmap.org/#map=23.1391890,82.3735227]]"point="23.1391890, -82.3735227"revision="0"tags="geocopincha geoplasticoleal"telefono="<a href="tel: +53 54115734">+53 54115734</a>"title="Hackerspace Copincha"tmap.id="43981f03-b629-4576-be77-3546d93bfcd4"type="text/vnd.tiddlywiki">
<divcreated="20210714050511860"modified="20210917072210212"tags="SubProject [[3D a lo cubano]] todo [[Máquinas para reciclar plásticos]]"title="Hangprinter"tmap.id="7a5c3ad6-1875-4a90-88e3-e9dffc7d26be">
<pre>{{impresora 3D Hangprinter.jpg}}
!Descripción
{{Hangprinter - Descripcion}}
!Listado de materiales
{{Hangprinter - Listado de materiales}}
! Manual
!! Montaje de hardware
[img[small_000.jpg]]
Bienvenido al ensamblaje de hardware Hangprinter versión 3. Haga clic en las imágenes para ver versiones más grandes. Las siguientes instrucciones asumen que ha completado el paso de abastecimiento.
[img[small_001.jpg]]
Hardware para una construcción que no sea SmartStepper, excluyendo el cable USB y los tornillos. Tenga en cuenta que el material de la hoja rectangular es para construir anclajes ABC. Deben ser una pila de tres. Las partes impresas en blanco estarán en contacto con los motores. Imprímalos en un plástico resistente al calor en caso de que sus motores se calienten alguna vez.
[img[small_002.jpg]]
Empuje los carretes y los engranajes del carrete sobre los cojinetes 608.
[img[small_003.jpg]]
Repita para todos los carretes y engranajes de carretes.
[img[small_004.jpg]]
Empuje los carretes con rodamientos 608 en los núcleos de los carretes.
[img[small_005.jpg]
Ahora coge tus espaciadores.
[img[small_006.jpg]]
... y compruebe que encajan perfectamente en los núcleos de los carretes.
<br>
Ahora podría ser un buen momento para medir los radios de sus carretes con un par de calibradores. Tenga en cuenta los radios en los propios carretes. Esto será necesario para la calibración del firmware más adelante.
También podría ser un buen momento para colocar líneas en sus carretes. Se requieren nueve líneas para impulsar la impresora. Por defecto, tres de ellos tienen 4 m de largo, los seis restantes tienen 7,5 m de largo. Coloque los de 4 m en un carrete. Coloque pares de 7.5 m en los tres carretes restantes.
[[Aquí|http://forums.reprap.org/read.php?1,792937,809736#msg-809736]] encontrará una guía más detallada sobre cómo elegir la longitud de las líneas . Si usa longitudes de línea personalizadas o grosor de línea, debe especificar esto en la configuración del firmware más adelante.
Así es como atas tu línea a tu carrete:
[img[small_hangprinter_hitch_0.jpg]]
Pase un bucle a través del orificio de la pared del carrete derecho y sáquelo del orificio izquierdo.
[img[small_hangprinter_hitch_1.jpg]]
Pase su línea a través del agujero derecho nuevamente.
[img[small_hangprinter_hitch_2.jpg]]
Apriete desde el interior. Deja mucho hilo suelto por dentro.
[img[small_hangprinter_hitch_3.jpg]]
Haz un simple tirón alrededor de la pierna izquierda de tu lazo.
[img[small_hangprinter_hitch_4.jpg]]
Primer plano del mismo enganche.
[img[small_hangprinter_hitch_5.jpg]]
Haz otro tirón por encima del anterior. Haz tres tirones en total, así que uno más después de este.
[img[small_hangprinter_hitch_6.jpg]]
Apriete sus enganches tirando de la pierna izquierda del lazo y del extremo suelto de la línea. Luego, tire de los carretes hacia afuera para ver si el nudo se sostiene.
[img[small_hangprinter_hitch_7.jpg]]
El exterior de su carrete ahora debería verse así.
[img[small_008.jpg]]
Compruebe que los engranajes de los carretes encajen bien en los carretes. Tenga en cuenta que los dos engranajes de carrete + carrete están montados al revés en esta imagen. Las escotillas en los radios del engranaje de carrete están ahí para dejar espacio para las cuatro cabezas de los tornillos más adelante.
[img[small_010.jpg]]
Inserte el tubo de PTFE en los rodillos de revestimiento de anclaje y corte al ras con el frente.
[img[small_011.jpg]]
Haga lo mismo con los D-linerollers.
[img[small_012.jpg]]
Los tubos de PTFE deben encajar bien en los rodillos de revestimiento en D. Empújelos así.
[img[small_013.jpg]]
Tubos de PTFE insertados.
[img[small_014.jpg]]
Monte los rodamientos 623 con ranura en V en todos los rodillos de revestimiento.
[img[small_015.jpg]]
Ahora agarre sus motores y engranajes del motor.
[img[small_016.jpg]]
Los engranajes del motor tienen orificios en forma de D y una muesca para ayudarlo a alinearlos con los ejes del motor.
[img[small_017.jpg]]
Golpee suavemente el engranaje del motor en su lugar con muchos golpes pequeños de un objeto ligero, suave y redondeado. No golpees fuerte. Si los orificios del engranaje del motor están demasiado apretados, taladre / lime más ancho o simplemente imprima otros nuevos. Si los orificios del engranaje del motor son demasiado anchos, inserte las tuercas desde abajo y apriételas con tornillos de fijación.
[img[small_018.jpg]]
El espacio entre el engranaje del motor y el motor debe ser de aproximadamente 1 mm.
[img[small_019.jpg]]
Ahora agarra los soportes del motor.
[img[small_020.jpg)
Primero inserte los tres tornillos en sus agujeros. Será más complicado hacerlo más tarde.
[img[small_021.jpg)
Monte los soportes del motor en los motores.
[img[small_022.jpg)
Ahora junta tus aparatos electrónicos. Se recomienda utilizar SmartSteppers en los motores A, B, C y D, aunque en la imagen se muestran los stepsticks. Consulte las <a href="#SmartStepper">instrucciones de montaje de SmartStepper</a>
[img[small_023.jpg]]
Inserte el paso / directorio de sus controladores en las salidas paso / directorio de la placa RAMPS.
[img[small_024.jpg]]
Monte su escudo RAMPS firmemente en su Arduino Mega.
[img[small_025.jpg]]
Coge las piezas de tu mudanza.
[img[small_026.jpg]]
Su viga de 40 cm debe empujarse hasta la raíz de la pared separadora. Esto es importante para obtener el ancho correcto de su triángulo de movimiento.
[img[small_027.jpg]]
Adjuntar con cremalleras sin apretar.
[img[small_028.jpg]]
Asegúrese de que las vigas estén alineadas con la raíz de la pared del separador. Luego apriete lo más fuerte que pueda sin romper las cremalleras.
[img[small_029.jpg]]
El triángulo terminado debe sentirse razonablemente rígido. No experimentará grandes fuerzas durante la impresión, pero no debería cambiar las dimensiones fácilmente.
[img[small_030.jpg]]
Deje unos mm de brida, para que pueda ajustarlos más tarde si es necesario.
[img[small_031.jpg]]
Si usa vigas de madera, puede perforar un orificio de montaje a través del lado del triángulo y la viga transversal. Si usa vigas de fibra de carbono, coloque la viga transversal con bridas en su lugar, como se muestra en esta [imagen vinculada.](https://copinchapedia.copincha.org/ziptied_crossbeam.jpg)
[img[small_032.jpg]]
Utilice arandelas en ambos lados del tornillo M3.
[img[small_033.jpg]]
Apriete bastante el tornillo. Si su madera es blanda, la lavadora debe hundirse ligeramente en la madera.
[img[small_034.jpg]]
Ahora agarra tus controles deslizantes de haz.
[img[small_035.jpg]]
Los controles deslizantes de la viga ABC deben estar bien sujetos.
[img[small_036.jpg]]
Los controles deslizantes de la viga D deben estar sueltos al principio.
[img[small_037.jpg]]
Apriete los controles deslizantes de la viga D colocándolos más adentro de la brida, apuntando hacia la esquina más cercana.
[img[small_038.jpg]]
Coloque los controles deslizantes ABC y D en los extremos opuestos de cada lado del triángulo.
[img[small_039.jpg]]
Pase una brida sobre la viga transversal y a través del soporte de la extrusora como se muestra.
[img[small_040.jpg]]
Use dos zipties como se muestra en la imagen, o use un ziptie más largo. Apriete lo más fuerte que pueda.
[img[small_041.jpg]]
Agrega dos cremalleras más, en bucles rectos alrededor de la viga.
[img[small_042.jpg]]
Use la cuña impresa para apretar las correas largas. El soporte de la extrusora ahora debería estar muy ajustado a la viga transversal.
[img[small_043.jpg]]
El cable plano está sujeto con cremallera al soporte de la extrusora para aliviar la tensión.
[img[small_044.jpg]]
Monte su extrusora + extremo caliente de elección y guarde el motor terminado.
[img[small_045.jpg]]
Coge tu plantilla 2d-prints. Verifique que estén impresos al 100% de escala comparando los tamaños de los contornos impresos en 2d con las bases de las piezas impresas en 3D. [Imagen de una doble verificación exitosa.](https://copinchapedia.copincha.org/print_template_to_scale.jpg)
[img[small_046.jpg]]
Colóquelos de modo que las líneas brillen. Idealmente en una ventana o en una mesa de cristal.
[img[small_047.jpg]]
Alinee las superposiciones perfectamente una encima de la otra.
[img[small_048.jpg]]
Pegue juntos.
[img[small_049.jpg]]
Coloque su plantilla 2d terminada en su placa de techo.
[img[small_050.jpg]]
Atornille la plantilla plana sobre la placa de techo.
[img[small_051.jpg]]
Marque las marcas a través de los centros de todos los círculos pequeños.
[img[small_052.jpg]]
La plantilla con todas las marcas martilladas se ve así.
[img[small_053.jpg]]
La placa del techo debajo debe tener marcas visibles como esta.
[img[small_054.jpg]]
Ahora monte sus carretes y rodillos de revestimiento preparados. Tenga en cuenta la orientación de los linerollers para que la línea pueda entrar como se especifica en la plantilla. Es útil marcar los carretes con los nombres A, B, C y D, como se especifica en la plantilla. No olvide los tornillos largos que atraviesan el centro de los núcleos del carrete.
[img[small_055.jpg]]
Un poco de juego en los engranajes es inofensivo porque las líneas pretensarán los engranajes de todos modos. Los engranajes que engranan mal o ruedan de manera desigual debido a un ajuste demasiado apretado pueden causar problemas más adelante.
[img[small_056.jpg]]
Apuntar los cables del motor lejos del centro del carrete es bueno, pero no crítico.
[img[small_057.jpg]]
Sujete los cables del motor lo más cerca posible del soporte del motor.
[Video de montaje de piezas a placa de techo.](https://www.hangprinter.org/doc/v3/media/mounting_parts_onto_ceiling_plate.webm)
<br>
!!!!! SmartStepper y cableado <a name="SmartStepper"></a>
Utilice el firmware que se encuentra en el [repositorio de Hangprinter](https://gitlab.com/tobben/hangprinter/tree/Openscad_version_3/firmware/SmartStepper_subtree) . Para saber cómo cargarlo, consulte la propia [documentación de Misfittech.](http://misfittech.net/nema-17-smart-stepper/)
No tenemos un diagrama de cableado completo con SmartSteppers, por lo tanto, consulte el siguiente diagrama de cableado, pero tenga en cuenta que no se necesita el cambiador de nivel externo de 12V -> 5V, ya que este componente está integrado en los SmartSteppers.
Las únicas fuentes de instrucciones de montaje son videos:
- [HP3 Build With tobben & Thomas Sanladerer (enlace directamente al montaje)](https://www.youtube.com/watch?v=iOwjbu2UMlQ&feature=youtu.be&t=3h54m43s)
- [Vínculos anotados en el video de compilación de HP3 de Tobben y Thomas Sanladerer](https://reprap.org/wiki/Links_Into_Hangprinter_v3_Build_Video#)
- [Compilación de HP3 con Chris Riley](https://www.youtube.com/watch?v=VBc7Zab64do&list=PLB_0YGFjbOnbQ_zPnpLAjwgnE2ryhKScB)
<br>
!!!!! Calibración de anclajes y acumulación de carretes
Si lo está haciendo manualmente (sin SmartStepper), mire [esto](https://reprap.org/wiki/Links_Into_Hangprinter_v3_Build_Video#Now_going_into_an_hour_of_measuring_this). También mire las fuentes de video de [Chris Riley](https://www.youtube.com/watch?v=VBc7Zab64do&list=PLB_0YGFjbOnbQ_zPnpLAjwgnE2ryhKScB) y [Thomas Sanladerer](https://www.youtube.com/watch?v=Jk4fhQvNoaM&list=PLDJMid0lOOYmSWYimgOW-Q9OKyIp0OFyK).
Si está utilizando SmartStepper, entonces tobben ha preparado un script que, con suerte, le permitirá evitar tener que medir las posiciones de los anclajes manualmente: [aquí](https://gitlab.com/tobben/auto-calibration-simulation-for-hangprinter). Es un poco difícil de usar, asegúrese de leer el archivo README y de presentar un problema si encuentra un error o una mejora.
<br>
<br>
<br>
Construir, montar, calibrar y ejecutar una HP3 es difícil. No estas solo. Asegúrese de revisar los [recursos](https://www.hangprinter.org/resources) , hay algunos bastante buenos.
- tobben 👷
<br>
---
La fuente de texto sin formato de este manual se publica bajo la licencia GPL-2.0 y se mantiene en el repositorio hangprinter-org . Todas las imágenes y videos también se publican bajo la GPL-2.0, excepto el diagrama de cableado, que se publica bajo la licencia GPLv3.
---
Texto tomado de https://www.hangprinter.org/doc/v3/
!!!! Recursos
!!!!! Social
**[Blog de desarrollo de Tobben](https://torbjornludvigsen.com/blog)**
**[Hilos de Hangprinter en el Foro RepRap](https://reprap.org/forum/list.php?423)**
**[Grupo de Facebook](https://www.facebook.com/groups/hangprinter)**
<br>
!!!!! Repositorios
**[Modelos 3D en STL](https://gitlab.com/tobben/hangprinter/tree/Openscad_version_3/openscad_stl)**
**[Ayudante de calibración experimental para HP3](https://gitlab.com/tobben/auto-calibration-simulation-for-hangprinter)**
**[Ayudante de calibración experimental para el HP4 experimental](https://gitlab.com/tobben/auto-calibration-simulation-for-hangprinter/-/tree/buildup_compensation)**
<pre>[[Hangprinter|https://www.hangprinter.org]] es un modelo de impresora 3D delta por deposición fundida de código abierto que se destaca por su diseño único sin marco y su bajo costo. Fue creado por Torbjørn Ludvigsen. Muchas de las partes de esta impresora 3D se pueden producir en una impresora 3D (parcialmente autorreplicable), formando parte del proyecto RepRap.
Se instala en un espacio determinado utilizando la propia habitación como marco. El diseño también se puede adaptar para utilizar una mesa en lugar de una habitación completa. La impresora tiene un Efector que se suspende del techo y se mueve mediante motores paso a paso estacionarios con poleas e hilos de sedal.
Uno de los beneficios de perder el marco es, por supuesto, un volumen de construcción mucho mayor, ya que no está restringido a "la caja". Con tres puntos de anclaje que mantienen la máquina en su lugar, la Hangprinter puede colgarse de cables conectados al techo. A continuación, el sistema puede determinar qué movimientos realizar a partir de las ubicaciones configuradas del firmware.</pre>
</div>
<divcreated="20210528222448069"modified="20210613235123241"tags=""title="Hangprinter - Listado de materiales"tmap.id="be1b6505-0606-457f-b917-d276b726073b">
<pre>[[Listado de materiales original|https://docs.google.com/spreadsheets/d/1lOPZoF1P2OSdJcijZRVrwAEVFh3LLAnf6-s6k-hlbZU]]
| Motor Nema 17 | 5 | > 40 N/cm holding torque, flat shaft. Se reduce a 4 por impresora si otro motor es usado para el extrusor. | ✓ |
| FireLine 0.5 mm | 60 m | 0.39 mm también sirve. Es significante cuán largo cortes los hilos. | ✓ |
| Hoja de MDF o Plywood | 50x50 cm | Grosor 10-14 mm | |
| Arduino Mega | 1 | | ✓ |
| RAMPS | 1 | | ✓ |
| Controladores de motor paso a paso (pololu) | 1 | | ✓ |
| Cable USB (tipo B) | 1 | | ✓ |
| Listón de 40 cm de largo | 3 | Perfil cuadrado de 15 mm de grosor | ✓ |
| Listón de 27.5 cm de largo | 1 |~| ✓ |
| Fuente | 1 | 12 V, 12.5 A o mayor | ✓ |
| Brida plástica | 18 | ancho entre 4 y 5 mm | ✓ |
| Tornillo M3, largo 5 mm | 16 | | ✓ |
| Tornillo M3, largo 12 mm | 12 | | ✓ |
| Tornillo M3 largo, 45 mm | 16 | Ca 1 cm longer than your motor body height. For mounting Mechaduino PCB on motor rear. | |
| Tornillo M3/M4, largo 14 - 20 mm | 4 | For attaching PSU to sheet | ✓ |
| Rodamiento 608 | 8 | | ✓ |
| Rodamiento 623 con ranura V | 12 | | ✓ |
| Tubo de PTFE | 10 cm | Standard bowden, 4 mm outer dia, any inner dia | ✓ |
| Tornillo de madera autorroscante ca M3x10 | ca 90 | M[2.5-4.5]x10, head diámetro 8-14 mm, non-countersunk. For fastening to ceiling plate | |
| Tornillo de madera autorroscante M4x45 | 4 | For fastening spool core | |
| Tornillo de madera autorroscante M2x[6-14] | 4 | Head diameter ca 4 mm. For mounting Mega onto sheet material. | |
| Tornillo de madera autorroscante M3x10 | 18 | Head diameter 7 mm, length 10 mm Countersunk head. For attaching linerollers on ABC anchors| |
| Arandela M6 o M8 | 4 | For capping 608 bearings in place on top of spool core | ✓ |
| Cinta de 15 hilos de cable | 5 m | O cinta de 30 hilos de cable 28AWF with quadrupled wires to/from the heater element | ✓ |
| Tuerca M3 Nuts | 12 | | ✓ |
| Extrusor + hot end | 1 | Cualquier configuración que se ajuste a Nema17 debe funcionar | ✓ |
| Cables de alimentación Rojo y Negro | ca 2.5 | Para conectar 12 V a la RAMPS y los Mechaduinos | ✓ |
| Smart Stepper PCB | 4 | Sirve tanto la versión de Mechaduino 0.2 como la 0.1 | ✓ |
| Cable Jumper | ca 50 | Para codificar el sistema con 7 colores | ✓ |
| Regulator 5V | 1 | Para energizar Mechaduino directamente desde el PSU. Recommended for reliable long term operation | |
| 5V -> 3V3 level converter | 1 | para RAMPS i2c <-> Mechaduino. Small breadboard handy for connecting this | |
</pre>
</div>
<divcreated="20210725025902946"modified="20210725025902946"title="Have fun with"tmap.edges="{"e2266f02-4772-4b4c-a26d-7afd5da2a4b2":{"to":"80b14957-7be3-4aac-b46e-bf28c4a86d9a","type":"tmap:unknown"}}"tmap.id="1b980021-e833-40f6-bcd0-316d78f4ca6c">
<pre></pre>
</div>
<divcreated="20210811040832345"creator="M0"modified="20210811041818043"modifier="M0"tags=""title="Hello World Test"tmap.id="89ad3af9-e687-4fb4-b36c-f5acd2875222">
<divcreated="20210313034006839"modified="20210322230610405"tags="Inbox todo"title="Impresora 3D Radames"tmap.id="55264902-2b8e-456a-9b96-b6e5162b7348">
<divcreated="20210313034324455"modified="20210917065235947"tags="SubProject [[3D a lo cubano]] todo"title="Impresora Ale"tmap.id="9f6fd789-ba7a-4de4-90cc-81a3252f0a3a">
<pre></pre>
</div>
<divcreated="20210313034221232"modified="20210917065235947"tags="[[3D a lo cubano]] SubProject todo"title="Impresora Anycubic"tmap.id="44f20b2b-60b0-4dec-a608-5bb0a0024b96">
<pre></pre>
</div>
<divcreated="20210313034006839"list="[[Impresora Jonathan]] [[Impresora Acevedo]] [[Impresora Israel]] [[Impresora Miguel]]"modified="20210917072219597"tags="[[Máquinas para reciclar plásticos]] [[3D a lo cubano]] SubProject todo"title="Impresora Copincha"tmap.id="af502926-b80f-480d-86f6-8c20d5b71773">
<divcreated="20210313034019587"list="[[Plastico Leal]] [[Impresora 3D Radames]]"modified="20210322230610410"title="Inbox"tmap.id="cded78e6-a5c9-47e5-b8bf-d2cc8d45f90b">
* Cliquea el botón el botón <<icon {{$:/core/images/save-button}} "">> de la barra principal, que puede estar localizada en distintas ubicaciones (a la derecha o abajo o incluso oculta) dependiendo del dispositivo desde donde estés navegando este tema y el tamaño de la ventana.
* Dependiendo de tu configuración del navegador, éste te indicará la ruta donde quieres descargarlo o lo enviará directamente a la carpeta de descargas.
@@.info
Si quieres usar la extensión de Firefox [[File Backups|https://mutabit.com/repos.fossil/indieweb/uv/docs/es/miniwiki/indieweb-brea.html#File%20Backups%20plugin]] para guardar futuros cambios en tu wiki, debes almacenar el wiki en la carpeta de "Descargas" (esta podría llamarse "Downloads" o de otra manera, dependiendo del idioma y otros aspectos de la configuración de nuestro sistema operativo).
@@
!! Desde la consola de comandos
Entra a la carpeta donde quieras hacer la descarga (por ejemplo `Descargas`) y desde allí
ejecuta (debes tener instalado [[wget|https://es.wikipedia.org/wiki/GNU_Wget]] o
[[curl|https://en.wikipedia.org/wiki/CURL]] para esto):
Observa que la última parte es a dónde quieres descargar el wiki y que, consistente con los ejemplos anteriores, la hemos venido colocando en una ruta dentro de la carpeta "Descargas".</pre>
* Set the colour palette to either `Notebook grey`, `Notebook beige`, or `Notebook dark`. Alternatively, click the {{$:/themes/nico/notebook/ui/Buttons/SwitchPalette}} button.
En la inyección, las partículas de plástico se calientan y se inyectan en un molde. Es un proceso relativamente rápido y adecuado para crear producciones de objetos pequeños. Los moldes se pueden hacer utilizando fresadoras o tornos CNC, o simplemente soldando.
| Termoacopladores | Tipo K | 2 | 375 | 750 | ✓ | |
| Abrazadera termo-resistencia | 35 x 45 mm | 4 | 500 | 20 000 | ✓ | [[⛶|https://cntronic.com/ljxh-2pcs-lot-mica-band-heater-35x45mm-35x50mm-35x55mm-35x60mm-110v220v380v-150w-160w-180w-200w-stainless-steel-heating-element-23687]] |
| Encendedor de alimentación | | 1 | | | ✓ | |
| Cable de alimentación | 5 000 mm | 1 | | | ✓ | |
''Total:'' 22 975 CUP</pre>
</div>
<divcategory="documentación"created="20210620034845971"modified="20210917071908594"tags="Project"title="Jardines Digitales de Bolsillo"tmap.id="d2742ff6-301e-4af9-bd8f-5b1efb154523">
<pre>En este taller aprendemos a construir colaborativamente herramientas y máquinas de código abierto para reciclar plástico, usando preferiblemente recursos localmente accesibles.
*Por favor entienda este espacio como un laboratorio vivo donde vamos actualizando el contenido para reflejar las iniciativas e interacciones que participan.*
<br>
# Objetivos:
- Aprender sobre los procesos técnicos y usos prácticos más comunes para reciclar de plásticos.
- Construir colaborativamente máquinas de código abierto para reciclar de plástico usando la mayor cantidad reursos accesibles en Cuba.
- Construir una trituradora de plástico.
- Construir una extrusora. Para hacer filamentos de impresión 3D con el plástico triturado.
- Construir una hangprinter. Para fabricar por impresión 3D objetos de grandes dimensiones con los filamentos plásticos.
- Documentar las experiencias de construcción de máquinas en el repositorio público.
- Exponer Mapear y documentar otras experiencias ya existentes de construcción de máquinas de código abierto para reciclar plástico.
Corta artículos de plástico en pequeñas partículas listas para ser convertidas en cosas nuevas por otras máquinas. El plástico triturado puede ser de múltiples tamaños y colores para aumentar su valor.
#### Listado de materiales
Los detalles del costo de una trituradora según lo que el proyecto ya ha conseguido están [aquí](https://docs.google.com/spreadsheets/d/1ArtWWj6Qs_AYpu6C6BTy-PNZvMUTdnTiIenrF_23XxQ/).
| Motor | 1 | Motor monofásico 2Hp, 1600 -1700 RPM | ✓ |
| Reductor | 1 | entre 1->80 y 1->130 | ✓ |
| Encendedor de alimentación | 1 | | ✓|
| Indicador LED | 1 | | ✓ |
| Cable de alimentación | 5m | | ✓ |
<br>
#### Enlaces
uu
{.is-info}
<br>
## Extrusor de Filamentos RepRapable Recyclebot
![extrusor de filamentos.jpg](/9449d00fd1ea4ee4b9a050adfea7efec.jpg)
### Tab {.tabset}
#### Descrpción
La extrusión es un proceso continuo donde las partículas de plástico se insertan en la tolva y se extruyen en una hilo de plástico. Estas hilos se pueden usar para hacer nueva materia prima, plástico granulado, girar alrededor de un molde o usarse de manera creativa.
[[Projectify|https://projectify.wiki/]] es una aplicación para gestión de proyectos basada en [[TiddlyWiki|https://tiddlywiki.com]],
inspirada en proyectos como [[Todoist|https://todoist.com]] y [[Basecamp|https://basecamp.com]].
[[TiddlyWiki|https://tiddlywiki.com]] es una excelente aplicación de toma de notas, base de conocimiento
con [[características únicas|https://tiddlywiki.com/#TiddlyWiki]].
Projectify trae la gestión de proyectos a ~TiddlyWiki extendiéndolo para permitirte
[[capturar pensamientos|$:/plugins/nico/projectify/doc/Inbox]], [[planear proyectos|$:/plugins/nico/projectify/doc/Projects]] y [[programar tareas|$:/plugins/nico/projectify/doc/Schedule]].
//Al unir en Projectify un wiki a la gestión de proyectos se pueden potenciar procesos particulares,
como aquellos relacionados con el aprendizaje entre pares y por proyectos, que será uno de los enfoques de
esta variante de Projectify en español,
llamada ''Proyectify Mod''.
//
Projectify está cuidadosamente confeccionado, con una interfaz intuitiva que se integra a la perfección con el núcleo de~TiddlyWiki.
[[Arrastra y suelta |https://tiddlywiki.com/#Drag%20and%20Drop]] cualquier [[tiddler|Tiddlers]] en un
proyecto para agregarlo como un pendiente, [[transcluye|https://tiddlywiki.com/#Transclusion]] y
[[enlaza|https://tiddlywiki.com/#Linking%20in%20WikiText]] otros tiddlers en proyectos o tareas.
Para saber qué moficaciones particulares se introducen en este wiki revisa el [[tiddler|Tiddlers]] titulado [[Modificaciones]].
Para todos los cambios en la última versión lanzada {{$:/plugins/nico/projectify!!version}}, mira
la [[Bitácora de Cambios|$:/plugins/nico/projectify/changelog]].
!! Demos
Hay demos disponibles:
* en inglés en [[projectify.wiki|https://projectify.wiki]].
* en español en: [[Projectify Mod|https://mutabit.com/repos.fossil/tiddlywiki/uv/seeds/projectify/projectify-mod.html]].
!! Descarga e instalación
Visita [[Instalación]] para descargar e instalar una semilla wiki a pre-configurada.
Alternativamente, mira [[Installation|$:/plugins/nico/projectify/doc/Installation]] para instrucciones
de instalación en un wiki existente.
!! Documentación
* Si eres nueva en ''~TiddlyWiki'', te recomendamos leer los [[enlaces introductorios a TiddlyWiki|https://mutabit.com/repos.fossil/indieweb/uv/docs/es/miniwiki/indieweb-brea.html#TiddlyWiki]]
* La "documentación de Projectify" está disponible [[en línea|$:/plugins/nico/projectify/doc/Help]] así como localmente cuando el plugin está instalado.
!! Paquetes de lenguajes
Projectify está actualmente disponible en inglés, holandés, alemán, francés, español y chino simplificado.
* Para el paquete de lenguaje francés, instala [[$:/plugins/nico/projectify-fr-FR|https://projectify.wiki/demo.html#%24%3A%2Fplugins%2Fnico%2Fprojectify-fr-FR]].
* Para el paquete de lenguaje holandés, instala [[$:/plugins/nico/projectify-nl-NL|https://projectify.wiki/demo.html#%24%3A%2Fplugins%2Fnico%2Fprojectify-nl-NL]].
* Para el paquete de lenguaje alemán, instala [[$:/plugins/nico/projectify-de-DE|https://projectify.wiki/demo.html#%24%3A%2Fplugins%2Fnico%2Fprojectify-de-DE]].
* Para el paquete de lenguaje español, instala [[$:/plugins/nico/projectify-es-ES|https://projectify.wiki/demo.html#%24%3A%2Fplugins%2Fnico%2Fprojectify-es-ES]].
* Para el paquete de lenguaje chino simplificado, instala [[$:/plugins/nico/projectify-zh-Hans|https://projectify.wiki/demo.html#%24%3A%2Fplugins%2Fnico%2Fprojectify-zh-Hans]].
!! Configuración de desarrollo
Si te dedicas al desarrollo del software, esto es lo que debes hacer para trabajar con Projectify:
* Instala [[Node.js|https://nodejs.org/en/]]
* En la carpeta raíz del proyecto ejecuta `npm install`
* Para iniciar el servidor de TiddlyWiki, ejecuta `npm run serve`. El wiki está disponible en http://localhost:8080.
* Para servir o construir una edición en un lenguaje particular, refiérete a `package.json`
* Para construir archivos HTML para todas las ediciones, ejecuta `npm run build`.
!! Contribuyentes
Muchas gracias a las siguientes personas, quienes han contribuido a Projectify:
<divcreated="20141211130114064"creator="Tobias Beer"modified="20141211185743094"modifier="Tobias Beer"summary="the default modal template used with the ibox macro"tags=""title="Lightbox"tmap.id="c78b1c0a-c430-4ffb-a1d0-eed8edf1fb3d">
<divcreated="20210323124716180"modified="20210719164240232"tags="Copinchapedia/Plantillas SubProject example todo done"title="lista de piezas"tmap.id="68f44668-7e1f-4943-947f-c60df72e8288">
<pre>[[ventana de pieza]]
[[ventana de pieza]]
[[ventana de pieza]]</pre>
</div>
<divcreated="20210321233511486"modified="20210613151430229"tags=""title="Lista de proyectos"tmap.id="fdfd1e9e-f7ec-4a71-ac83-aeb7d5d8178a">
<divcreated="20210318130959675"modified="20210917080048584"tags="[[Precious Plastic La Habana]] [[Cartografias de bolsillo]] SubProject"title="Mapa digital para el reciclaje de plástico"tmap.id="7b83c934-ef19-4dd7-8e46-f10c60af9937">
es un mapa para conectar las iniciativas de reciclaje de plastico y posibilitar encadenamientos que favorezca ciclos donde se mantenga para ser reciclable.</pre>
<divcreated="20210118010848855"modified="20210917072409074"tags="SubProject [[Precious Plastic La Habana]] [[Plástico Leal - La Maquinaria]]"title="Máquinas para reciclar plásticos"tmap.id="97dba976-44dc-4be7-a9ae-7376818d3d2c"type="text/vnd.tiddlywiki">
<pre>[[Máquinas Precious Plastic]]
[[Hangprinter]]</pre>
</div>
<divcreated="20210318161732959"modified="20210917071244959"tags="SubProject [[Máquinas para reciclar plásticos]]"title="Máquinas Precious Plastic"tmap.id="417e4dee-85ad-4fca-9863-bb7cfa0416e2">
<pre>{{maquinas-precious-plastic.png}}
! Resumen
!! Problemática
En La Habana es escaso el conocimiento de acceso abierto para la construcción de máquinas para el reciclado de plástico.
!! Pregunta
<<<.tc-big-quote
''¿Cómo podemos construir, con recursos accesibles en Cuba, máquinas de código abierto para reciclar plástico en La Habana?''
<<<<!-- Autor-->
!!! Hipótesis
Las máquinas de Precious Plastics son ideales para comenzar y entrar al reciclaje local de plástico. Nos permiten&nbsp; jugar, fabricar productos, organizar talleres y educar a las personas. Estas máquinas son pequeñas, amigables y fáciles de entender, lo que las hace perfectas para talleres educativos en eventos o escuelas.
Los materiales y herramientas necesarios para construir estas máquinas están fácilmente disponibles y asequibles en el país.
Todo el conocimiento y material de Precious Plastic está compartido bajo una licencia de fuente abierta.
Aquí listamos algunas ventajas locales, desde el punto de vista social, económico, y ambiental.
* La gente mientras más aprende de los procesos productivos se involucra más.
* Permite probar soluciones de forma más rápida para contextos locales específicos, favoreciendo la autogestión en una pequeña comunidad.
* Genera trabajo mediante la fabricación de las máquinas por fabricantes e industrias locales.
* Genera una fuente de ingreso mediante la venta del plástico procesado o de los productos que se pueden fabricar con estas máquinas.
* Genera puestos de trabajo y dignifica a la persona que realiza la acción de juntar y procesar el plástico.
* Estas máquinas de reciclaje de pequeña escala constituyen la función vital para permitir que las personas en La Habana conviertan el plástico desechado en plástico útil.
* Limpia el medio ambiente.
Podemos construir las máquinas de Precious Plastics colectivizando los recursos que creemos que puedan servirnos. Este proceso nos servirá como punto de partida para desarrollar una base común de construcción de máquinas replicables de código abierto y así además acercar la producción con residuos plásticos a las personas.
Colectivizando recursos entre personas y organizaciones interesadas, podemos construir las máquinas de Precious Plastics. Este proceso nos servirá como punto de partida para desarrollar una base común de conocimientos y producciones basadas en fuentes y colaboraciones abiertas. Lo cual garantizará la accesibilidad, la replicabilidad local y más aprendizaje e inclusión de personas a optar por modos más sostenibles de tratar el plástico.
! Objetivos
Reunir y visualizar una base abierta de conocimientos para construir máquinas de reciclado de plástico.
Reunir y dar visibilidad a la información necesaria para construir las máquinas seccionada en:
* Fabricantes (que puedan producir y armar piezas o conjunto de piezas de máquinas.)
* Repositorios públicos
* Descargas
* Contribuyentes
* Colectivizar recursos para la construcción colaborativa de máquinas para el reciclado de plástico.
Construir colaborativamente las máquinas de Precious Plastic colectivizando recursos.
* Visualizar públicamente el estado de proyecto los recursos colectivizados.
Documentar cada proyecto.
!!Máquinas
Invitamos a todos los interesados en el reciclaje de plásticos a contribuir para juntos tener la experiencia de prototipar y construir colaborativamente estás máquinas.
Reuniendo la experiencia logramos acortar el tiempo de búsqueda en cómo hacer que estas soluciones sean implementadas. Una base común que compartir.
<pre>Aquí registramos Copincha es visto desde diferentes voces mediáticas.
[[Alma Mater - Cuál es la pincha de Copincha|https://medium.com/revista-alma-mater/cu%C3%A1l-es-la-pincha-de-copincha-beb1750275e1]]
[[IPS - Inventores de Cuba ofrecen soluciones para la pospandemia|http://ipsnoticias.net/2020/05/inventores-cuba-ofrecen-soluciones-la-pospandemia/]]
[[IPS - Emprendimiento cubano recicla plástico y hace fuentes decorativas|https://www.ipscuba.net/medio-ambiente/emprendimiento-cubano-recicla-plastico-y-hace-fuentes-decorativas/]]
[[EL Toque - Tecnologías resilientes para esta y otras crisis|https://eltoque.com/tecnologias-resilientes-para-esta-y-otras-crisis]]
[[El Toque - Máquina de semillas hecha en Cuba|https://eltoque.com/maquina-de-semillas-hecha-en-cuba]]
[[masharu |https://masha-ru.tumblr.com/page/3]]
[[El Parque Horizontal - Copincha en el Parque|https://www.facebook.com/permalink.php?story_fbid=303376944402839&id=106156304124905]]</pre>
<pre>[[Alma Mater - Cuál es la pincha de Copincha|https://medium.com/revista-alma-mater/cu%C3%A1l-es-la-pincha-de-copincha-beb1750275e1]]
[[IPS - Inventores de Cuba ofrecen soluciones para la pospandemia|http://ipsnoticias.net/2020/05/inventores-cuba-ofrecen-soluciones-la-pospandemia/]]
[[IPS - Emprendimiento cubano recicla plástico y hace fuentes decorativas|https://www.ipscuba.net/medio-ambiente/emprendimiento-cubano-recicla-plastico-y-hace-fuentes-decorativas/]]
[[EL Toque - Tecnologías resilientes para esta y otras crisis|https://eltoque.com/tecnologias-resilientes-para-esta-y-otras-crisis]]
[[El Toque - Máquina de semillas hecha en Cuba|https://eltoque.com/maquina-de-semillas-hecha-en-cuba]]</pre>
</div>
<divcreated="20210323011336507"modified="20210323013530731"tags="[[Recursos TW]]"title="Mensaje de Alerta"tmap.id="0a0dcefd-00ff-46e5-90df-6c32cdd02717">
<pre><<alert warning "Tamasha is a presentation app based on Web technology and [[Tiddlywiki|https://tiddlywiki.com/]] and works on any modern browser." width:"50%">>
<<alert info "Mensaje de alerta gris">>
<<alert dark "Mensaje de alerta gris">>
<pre>The default template used for the ibox modal.
<<source [[Lightbox]]>></pre>
</div>
<divcreated="20210119082446178"modified="20210119094944324"title="Modelado 3D en OpenScad"tmap.id="9c6a927e-696d-456b-820d-4c719e59d264"type="text/vnd.tiddlywiki">
<pre>[[Proyectify Mod|✨ Acerca de]] introduce las habituales modificaciones (o mods) alojadas en el [[repositorio de mods|https://mutabit.com/repos.fossil/tiddlywiki/]]:
* Soporte de interfaz para Español e Inglés.
* <div>Soporte para enlaces reversos (//backlinks//), vía [[TWCrossLinks|https://github.com/akhater/TWCrossLinks]],
de modo que se pueda saber cuáles [[tiddlers|Tiddlers]] vinculan al actual.
</div>
* <div>Renombrado de enlaces, vía [[Relink|https://github.com/flibbles/tw5-relink]], de modo que no hayan enlaces
internos rotos en caso de que los tiddlers cambien de nombre.
</div>
* Iconos de interfaz web escalados cuando están en el texto de un tiddler.
* Tiddlers en Markdown.
* [[Enlaces enriquecidos]].
* Resaltado sintáctico mejorado vía CodeMirror.
''Importante'': Por convención, esta modificación tiene la misma versión que el tema en el cual está basado y las revisiones son números de letra sucesivos hechos tomando esa versión como base.
!! Contribuciones
* Projectify está hospedado en ~GitHub en https://github.com/NicolasPetton/projectify.
* Notebook Mod está hospedado en Fossil en https://mutabit.com/repos.fossil/tiddlywiki/
!! Licencia
Projectify y Projectify Mod están publicados bajo licencia MIT.
<p>This demonstrates <a href="https://github.com/domchristie/turndown">turndown</a>– an HTML to Markdown converter in JavaScript.</p>
<h2>Usage</h2>
<pre><code class="language-js">var turndownService = new TurndownService()
<p>It aims to be <a href="http://commonmark.org/">CommonMark</a>
compliant, and includes options to style the output. These options include:</p>
<ul>
<li>headingStyle (setext or atx)</li>
<li>horizontalRule (*, -, or _)</li>
<li>bullet (*, -, or +)</li>
<li>codeBlockStyle (indented or fenced)</li>
<li>fence (` or ~)</li>
<li>emDelimiter (_ or *)</li>
<li>strongDelimiter (** or __)</li><li>linkStyle (inlined or referenced)</li><li>linkReferenceStyle (full, collapsed, or shortcut)</li></ul>__</pre>
Notebook Mod es una modificación al [[tema Notebook|Notebook theme]] para [[TiddlyWiki|https://tiddlywiki.com]],
que preserva varias de sus características:
* Es un tema limpio y despejado.
* Es un tema //responsive// (adaptativo) que viene con soporte para móviles a través del plugin de ~JavaScript [[$:/plugins/nico/notebook-mobile]].
* Barra lateral izquierda personalizada.
* Viene con 3 paletas de color, una gris, otra beige y una oscura. Para cambiar entre ellas, cliquea el botón {{$:/themes/nico/notebook/ui/Buttons/SwitchPalette}} desde la barra superior.
e introduce las habituales modificaciones alojadas en el repositorio:
* Soporte de interfaz para Español e Inglés.
* <div>Soporte para enlaces reversos (//backlinks//), vía [[TWCrossLinks|https://github.com/akhater/TWCrossLinks]],
de modo que se pueda saber cuáles [[tiddlers|Tiddlers]] vinculan al actual.
</div>
* <div>Soporte para renombrado, vía [[Relink|https://github.com/flibbles/tw5-relink]], de modo que no hayan enlaces
internos rotos en caso de que los tiddlers cambien de nombre.
</div>
* Soporte para iconos de interfaz web escalados cuando están en el texto de un tiddler.
* Soporte para Markdown (falta mejorar algunos detalles del editor, como números de línea y resaltado sintáctico).
Para todos los cambios en la última versión {{$:/themes/nico/notebook!!version}} mira [[$:/themes/nico/notebook/changelog]].
!! Contribuciones
* Notebook está hospedado en ~GitHub en https://github.com/NicolasPetton/notebook.
* Notebook Mod está hospedado en Fossil en https://mutabit.com/repos.fossil/tiddlywiki/
''Importante'': Por convención, esta modificación tiene la misma versión que el tema en el cual está basado.
!! Licencia
Notebook y Notebook Mod están publicados bajo licencia MIT.
Notebook is a clean, uncluttered theme for [[TiddlyWiki|https://tiddlywiki.com]].
* The theme is responsive and comes with mobile support through the ~JavaScript [[$:/plugins/nico/notebook-mobile]].
* Custom left sidebar
* Notebook comes with 3 colour palettes, a grey, a beige and a dark one. To switch between colour palettes, click the {{$:/themes/nico/notebook/ui/Buttons/SwitchPalette}} button from the top bar.
For all changes in the latest {{$:/themes/nico/notebook!!version}} release, see [[$:/themes/nico/notebook/changelog]].
!! Contributing
The project is hosted on ~GitHub at https://github.com/NicolasPetton/notebook.
!! License
Notebook is released under MIT, see [[LICENSE|$:/themes/nico/notebook/LICENSE]].
<pre>OpenScad es un programa para crear modelos 3D por computadora (CAD). Es gratuito y está disponible para Linux, Windows y Mac OS.
Los modelos se diseñan escribiendo una serie de instrucciones en texto plano que es compilada y visualizada por el programa en un entorno tridimensional.
Así tenemos un control total sobre el proceso de modelado porque podemos cambiar fácilmente cualquier instrucción y realizar diseños definidos por parámetros configurables.
Dado a su naturaleza textual los archivos son fáciles de compartir.</pre>
</div>
<divcreated="20210720101714358"modified="20210726163944652"tags="[[Yusnier Mentado]] Arte DOTS SubProject"title="Orangebot"tmap.id="f806e5ee-f8ee-43c5-8b14-b272de7aa94d">
<pre>La obra consiste en un robot creado con materiales reciclados de una vieja cámara de cine de 16 milímetros y consta de diferentes sensores capases de ubicar a las personas en el espacio e interactuar con ellas; presenta un pequeño dispositivo que le brinda la posibilidad de hablar con el público presente en la sala en donde se encuentra, dándole la bienvenida al recinto y en caso de acercarse mucho el espectador a este, como observando sus partes y componentes, él mismo comienza a describirse íntegramente como esta construido electrónicamente.
Realizada con Arduino Nano, servos motores, sensores ultrasónicos, acrílico, cámara de cine obsoleta y piezas recicladas de otros equipos electrónicos.
* Algun dispositivo para copiar información" width:100%>>
! Memoria
{{Pa la Minga 1 - Memoria}}
</pre>
</div>
<divcategory="grupo"created="20210620035307021"modified="20210917075356110"tags="SubProject [[Cartografias de bolsillo]]"title="Palaminga"tmap.id="4199ea62-28be-404a-8446-4be0bc38d02c">
<pre>''Pa La Minga'' es un espacio de encuentros lúdicos con amigxs para intercambiar la sabiduría y el conocimiento recolectado en el camino de cada unx, con la excusa de comer rico y pasarla lindo mientras aprendemos cómo hacerle frente a modelos insostenibles y más ahora en tiempos de pandemia.
Creemos en la soberanía alimentaria, de los territorios y de los cuerpos como alternativa y sendero posible a la transformación del mundo y de quienes lo habitamos. Es la respuesta al miedo viral que nos imponen por todos lados.
La vida tal y como la impone el consumismo no es sustentable para la Tierra, ni para la flora, ni para la fauna y los seres humanos. Si no cambiamos nuestras formas de interactuar con el hábitat y con lxs demás, agotaremos los recursos naturales y las fuentes renovables de energía, y por tanto la vida misma.
Sembrar, reducir, recolectar, reutilizar, respirar, comunicarse conscientemente, educar desde otros lados y desde otras formas, escuchar y escucharse, bailar, manejar adecuadamente los desechos, construir con la naturaleza y no en contra de ella, organizar desde lo horizontal, el trueque, el silencio, las semillas criollas, la empatía, los círculos, la medicina natural y preventiva, aguas puras, energías limpias, manejo de las emociones, comer vivo, el arte, movimiento, respeto a los pueblos originarios, festivales verdes... son las herramientas para hábitar con intención y amor esta casa.
Pa La Minga vendría a ser el gestor inicial de una comunidad intencional en La Habana, un tejido de personas y por lo tanto de talentos y de conocimientos para enseñarnos en la medida de lo posible como llevar una vida sustentable en la ciudad, bajo las premisas de la [[Permacultura]], de las buenas prácticas agroecológicas y comunidades conscientes, así como usos más responsables de las tecnologias.
La palabra //minga// proviene del quechua //“mink´a”//, expresión usada antiguamente por muchas comunidades andinas, para los momentos en los cuales se realizaban los cultivos colectivos agrícolas que daban beneficios a la tribu. Aquí hacemos un juego de palabras con una expresión coloquial del cubanismo, para nombrar los espacios de talleres y encuentos.
Pa La Minga es un espacio itinerante, es decir, va circulando por lugares y personas, como forma de descentralizar y abarcar varias áreas de provecho, enlazar gente con otra gente, formar tejido, "sembrar semillas" en diferentes espacios y barrios de la Habana y sobre todo pues echarle la mano a compañeras y compañeros que están iniciando proyectos o que ya tienen algún proyecto avanzado.</pre>
<divcreated="20210321100834777"modified="20210321100912873"title="Plantilla de proyecto"tmap.id="5cf5504a-1001-4a2c-a00e-e95f9dabf8e7"type="text/x-markdown">
<pre># Nombre del Proyecto
![Imagen]()
<br>
<br>
## Resumen
### Problemática
Los **problemas** que existen y las **necesidades** que generan.
<br>
### Pregunta
Una pregunta que surge tras analizar la problemática.
_Ejemplo:_
_¿Cómo se pueden localmente resolver las necesidades con:
recursos más accesibles?
procesos más sostenibles?_
<!--
relaciones más interdependientes**?
**grupos más inclusivos y plurales**
-->
<br>
### Hipótesis
La idea o conjetura que dará respuesta a la pregunta, si es demostrada.
<br>
### Objetivos
Los pasos que se cumplirán en el proceso de investigación para demostrar que la idea planteada como hipótesis responde a la pregunta.
<br>
## Proceso de Investigación
Una explicación detallada de cómo se obtiene la solución siguiendo los pasos planteados como objetivos.
> Solución es una idea con capacidad demostrada para solucionar el problema.
<br>
## Tutorial
Cómo funciona la solución?
Cómo construirla?
Cómo usarla?
## Participantes
| | |
|-|-|
| ![Imagen del participante]() | Descripción |
</pre>
</div>
<divcategory="evento"created="20210117221946952"creator="M0"list="[[- Construir maquinas Precious Plastic -]] [[Cartografias de bolsillo]]"modified="20210917072331126"modifier="Mo"tags="[[Precious Plastic La Habana]] plástico SubProject"title="Plástico Leal"tmap.id="fafb88fc-9338-411f-9bfc-2c7d0c0b136f">
Plástico Leal es un proyecto iniciado por Maurice Haedo Sanabria en 2020.
Actualmente merecedor de la Beca de Creación de Nuevos Medios de [[Habana Espacios Creativos|https://facebook.com/HabanaEspaciosCreativos/]] y cuenta con la colaboración de [[Precious Plastic La Habana]]. </pre>
Todos conocemos el plástico en mil formas y aplicaciones, y también por desgracia, con muy
pocas vías de escape cuando lo convertimos en desecho. Todo el plástico proveniente de viviendas, restaurantes, hoteles, trabajos y consumidores de todos los gustos y preferencias, suele tener un triste destino: lo podemos encontrar en cada esquina, en las aguas de nuestra bahía, en el verde de nuestros parques, y ocasionalmente, en su obvio lugar de destino: el tanque de basura local. Nos sobrecoge su abundancia, y nos preocupa su permanencia no deseada en tantos rincones de nuestro entorno. Pudiéramos atrevernos a decir que se encuentra tan presente en La Habana Vieja como las casas coloniales y otros tantos detalles que sí deberían resaltar y brillar. Todo ese plástico al descuido y ensuciando nuestro entorno deja de ser leal, para ser letal.
Seguramente cada persona que conocemos, leal a la ciudad, desea que el plástico encuentre
un camino, real y maravilloso, para reinventarse y seguirnos acompañando en muchos ámbitos,
resiliente, perdurable, reutilizable; para que siga brillando como material multifacético y leal a nuestra ciudadanía cubriendo necesidades de
índole diversa.
Aunemos las voluntades para limpiar y reconstruir nuestro patrimonio, partiendo de técnicas de reutilización y reciclaje que se abren paso, en la actualidad y en el mundo entero, como caminos hacia modelos de vida sostenibles.</pre>
</div>
<divcaption="La Conexión"created="20210119195256531"modified="20210917080038339"tags="[[Plástico Leal]]"title="Plástico Leal - La Conexión"tmap.id="4502dd56-445c-407c-941d-467b7901be35">
<pre>Para presentar proyectos o ideas afines y desarrollar una red de colaboración en torno al
reciclado de plástico.
Construye una preentacion de tu experiencia o idea respondiendo esta [[guía| La Conexión : Guía para presentaciones]].
!!Sesión 1
[[Precious Plastic La Habana]]<br>Por: Copincha
[[La Mina]]<br>Por: Embajada Rebirth / Tercer Paraíso Cuba
!!Sesión 2
[[Proyecto Desarrollo Local en Mayabeque]]<br>Por: AlaSoluciones
<divcaption="Resumen"created="20210318155709007"modified="20210620060049090"sobre="Plástico Leal es un laboratorio para desarrollar el interés y la participación ciudadana en el reciclaje y reutilización del plástico en La Habana Vieja."tags=""title="Plástico Leal - Resumen"tmap.id="ff857321-0a86-42c6-8cb7-393f7f827fb5">
<pre>{{!!sobre}}.
Queremos mostrar las increíbles oportunidades del reciclaje de plástico para combatir la contaminación plástica, reduciendo la
demanda de nuevo plástico virgen y cerrando su ciclo material mientras se crean mejores medios de vida para las personas.
Compartimos todo en código abierto para que cualquiera lo use y se beneficie. Esto significa que ponemos disponible y de forma gratuita todo el conocimiento, know-how, procesos,
metodologías y herramientas. Creemos que la colaboración es más fuerte que la competencia
y que el problema del plástico sólo se puede resolver de forma colectiva.</pre>
<pre><<tabs "[[Plástico Leal - La Introducción]] [[Plástico Leal - La Conexión]] [[Plástico Leal - El 3D Útil]] [[Plástico Leal - La Maquinaria]] [[Plástico Leal - El Plástico Leal]] " >></pre>
<pre>La Ecomadera, madera sintética o madera plástica es un material fabricado a partir de residuos de madera y plásticos reciclados seleccionados, resultando en un material de mayor durabilidad y menor mantenimiento. También se conoce por este nombre a compuestos enteramente sintéticos cuyo acabado imita el aspecto de la madera natural. Los productos finales pueden ser empleados de la misma manera que la madera natural, principalmente para uso en exteriores.
En función del uso final, se pueden encontrar dos compuestos de madera de plástico reciclado:
''Madera plástica:'' Madera 100% de plástico reciclado obtenida del reciclaje de HDPE (polietileno de alta densidad) y otros materiales termoplásticos.
''Compuestos de madera plastica (WPC):'' Combinación de restos de madera y plásticos reciclados.
Se usa como sustituto ecológico a la madera en diversas construcciones.
Para su elaboración se mezclan diversos plásticos de uso popular (como bolsas, frascos de champú y cremas, juguetes, entre otros; se trituran y se extruyen en perfiles para ser usados como estructura de edificaciones, techos, muebles, pisos, bancas, y artículos altamente resistentes.
Al estar conformado por todo tipo de plásticos, es resistente al sol, al agua y al paso del tiempo. Dura cinco veces más que la madera tradicional, es de fácil limpieza, manipulación y no requiere mantenimiento. También evita la acumulación de bacterias, parásitos y agentes contaminantes.
Este producto ecológico, reciclable, que no produce hongos, que no penetra la polilla, que es retardante del fuego, con alta duración a la intemperie, maquinable y que no requiere de almacenamiento techado, pincha en alguno de estos enlaces
!! Ecomadera en Cuba
Lo hacen varias organizaciones y con ellas se crean numerosas estructuras. Entre ellas, las de resultados más relevantes son Ecomadera Cubana, [[CNA Atres]] y Plásticos Bahamonde.
<pre>Los hackerspaces son lugares físicos gestionados de forma comunitaria, donde las personas se reunen y comparten su interés por la tecnología, trabajan en sus proyectos y aprenden de los demás.</pre>
<pre><<hyp>> es una herramienta para hacer anotaciones a lecturas en y fuera de línea, que estén en formatos PDF y HTML.
Dicha herramienta está hecha por una fundación sin ánimo de lucro y su misión es hacer de la lectura anotada algo activo y social, en lugar de únicamente privado como suele ocurrir.</pre>
</div>
<divcaption="Infraestructura de bolsillo"created="20210307191047165"creator="Offray Luna"modified="20210830140427848"modifier="M0"tags="pph/sidebar/contenidos/glosario"title="pph/sidebar/contenidos/glosario/infraestructuradebolsillo"tmap.id="7fa7e8bc-1720-40c5-9297-0163abb83359">
<pre>Las infraestructuras de bolsillo es un término con el que denominamos a aaquellas que
El término fue acuñado por Offray Luna con motivo de su investigación doctoral.
''Sencillas''<br>
''Extensibles''<br>
Tiddlers para extender el contenido y la funcionalidad.
''Autocontenidas''<br>
La informacion se guarda en los dispositivos con la menor cantidad de archivos posible.
''Funcionan Offline-Online''<br>
Se Ejecutan con o sn conexion a Internet, incluso con senal baja o intermitente.
''Se adaptan a hardware modesto''<br>
Se ejecutan bien en un amplia variead de hardware, desde memorias USB, computadores de placa única (tipo RasberryPi), portátiles y de escritorio, así como servidores y máquinas de especificaciones intermedias o superiores a las ejemplificada acá.</pre>
<divcaption="Precious Plastic La Habana"category="grupo"created="20210318152229764"modified="20210720210054421"tags="Project"title="Precious Plastic La Habana"tmap.id="d9085896-90a4-462d-b845-dfa6b3a4438a">
<pre>{{logo-precious-plastic-la-habana.jpg}}
''Precious Plastic La Habana'', es un entorno, colaborativo y abierto para encontrar soluciones a las necesidades y los desafíos de contaminación de plástico en el contexto de La Habana.
Reúne a personas y colectivos interesados en el estudio, la construcción y la implementación sostenidas de prácticas de reciclaje y reutilización de plástico, como parte de la iniciativa global Precious Plastic.
Desde el cruce de prácticas tecnológicas (co-creación, fabricación digital, diseño abierto, etc.) con el patrimonio artesanal local, fomentamos en la comunidad el desarrollo de una conciencia innovadora y ecológica, para impulsar redes de recogida de plástico residual y proyectos que utilicen este material para generar todo tipo de productos.
En los últimos años ha surgido un fuerte interés en la reutilización y reciclaje de plásticos en La Habana. Una nueva escena se está forjando a partir de la colaboración entre varios actores, tanto en entornos virtuales como físicos. Hay intercambio de conocimientos y una superposición significativa de diferentes grupos. La escena también está dinámicamente conectada a comunidades internacionales de reciclaje de plástico, la más notable y establecida es la red [[Precious Plastic|http://preciousplastic.com]].
El reciclaje del plástico está en fase emergente y desarrollándose dinámicamente, tanto con máquinas importadas o diseñadas y/o construídas en la isla.
A diferencia de muchos otros materiales en Cuba, los plásticos son un recurso fácilmente disponible, y existe un estado de larga data de producción de artículos básicos para el hogar, tanto en el comercio minorista estatal como en el mercado negro.
La ola actual de reciclaje de plásticos es una nueva desviación de estas prácticas establecidas, con intereses específicos en las prácticas ecológicas y las innovaciones tecnológicas de fuente abierta, conectada con comunidades globales de reciclaje y makers.
!! Objetivos:
* Acercar el reciclaje de plástico a la comunidad de La Habana a través de la innovación de código abierto y las prácticas ecológicas. <br><br>
* Mantener espacios comunitarios de referencia en cuanto a reciclaje y reutilización de plástico en La Habana; para la capacitación directa y la socialización de conocimientos teórico-prácticos. <br><br>
* Educar con pedagogías centradas en capacidades específicas de utilidad aplicada, las innumerables posibilidades que poseen los plásticos para la creación de objetos, modelos de trabajo, emprendimientos y soluciones emergentes. <br><br>
* Concientizar sobre el impacto social y ambiental de las prácticas de reciclado de plástico. <br><br>
* Desarrollar y mantener una presencia en la web, y un repositorio público para documentar, divulgar, y compartir las experiencias de trabajo y conocimiento generado. <br><br>
* Dar soporte y asistencia a proyectos (de espacios, construcción de máquinas, organización comunitaria, educación, campañas de concientización, emprendimientos, y desarrollo de productos) iniciados por personas y grupos afines. <br><br>
* Colectivizar una cultura de reciclaje de plástico capaz de impactar en las formas que tenemos de tratar los desechos en general (orgánicos, e inorgánicos) de manera eficiente y socialmente saludable. <br><br>
* Crear una red organizada de transporte, distribución y almacenamiento de los residuos plásticos.
!! Principios comunes:
* Aprender haciendo y mejorando variaciones de máquinas, moldes, nuevos productos y proyectos; que respeten la convivencia, (la colaboración,la socialización del trabajo) y el medio ambiente.<br><br>
* Compartir el conocimiento de forma abierta para que todos lo usen y se beneficien.
!! Acciones:
* Explicar los aspectos significativos de cada paso en la cadena del reciclaje y la reutilización de plástico. <br><br>
* Asesorar en todo lo relativo a la fabricación de máquinas, gestión de los distintos tipos de plásticos, etc. <br><br>
* Enseñar a emplear las diferentes técnicas de elaboración de objetos con plástico reciclado (impresión 3D, inyección, prensado, extrusión, compresión, etc.) y a documentar modelos y proyectos en el repositorio público. <br><br>
* Sumar iniciativas que puedan recrear muchos objetos y piezas de repuesto que satisfagan todo tipo de necesidades y sustituyan importaciones. <br><br>
!! Enfoques actuales
* Construcción de máquinas, medios, y accesorios para procesar el plástico reciclado. <br><br>
* Producción de objetos de primera necesidad o alta utilidad. <br><br>
* Producción de materiales de construcción, madera plástica, estructuras, mobiliario urbano y doméstico. <br><br>
* Producción de diversos medios de protección para los profesionales de la salud, en respuesta a la Covid-19. <br><br>
* Producción de medios y accesorios para huertos urbanos, cultivos verticales y agricultura alternativa. <br><br>
* Diseño de formas de movilidad urbana y medios para facilitar la recolección de plástico. <br><br>
* Producción de medios de decoración, e iluminación ambientales. <br><br>
* Producción de pavimentos y suelos.
!! Información
[[Academia Precious Plastic]]
!! Proyectos
[[Máquinas para reciclar plásticos]]
[[Red de movilidad para la recolección de plásticos]]
[[Losas de plástico ABS reciclado]]
[[Kit de conexiones hidráulicas]]
[[De La Fuente]]
[[Protectores faciales de botellas PET]]
[[Plástico Leal]]
!! Colaboradores
[[Copincha/Concepto]]. Comunidad abierta para la experimentación colaborativa, el aprendizaje y la co-creación de tecnologías resilientes. Sede del nodo Precious Plastic La Habana.
[[**Embajada Rebirth \ Tercer Paraíso Cuba - Plasticidas|https://t.me/plasticidas]]. Red abierta para reunir personas e iniciativas interesadas en contribuir en el tema del reciclaje y la reutilización del plástico en Cuba.
[[Embajada Rebirth / Tercer Paraíso Cuba - La Mina|http://www.laminatercerparaiso.org]]. Emprendimiento en la comunidad de Los Pocitos del municipio Marianao, que usa el reciclaje y la trituración de plástico para desarrollar localmente la autosostenibilidad económica, la concientización ambiental y la inclusión social de las mujeres.
[[Estudio 50|http://www.estudio50habana.com]]. Taller social de arte y diseño en el municipio Centro Habana con un molino para triturar plástico.
[[CNA A3|https://www.facebook.com/174561810093443]]. Cooperativa en la provincia Matanzas que produce *Ecomadera*, un material hecho de plástico reciclado para usar como sustituto ecológico a la madera en diversas construcciones.
[[Bits y Átomos|https://t.me/bitsyatomos]] Grupo en Telegram para el aprendizaje y la colaboración en torno a las dinámicas de fabricación digital.
[[De La Fuente|https://www.facebook.com/12114548255333944]]. Emprendimiento en el municipio Cotorro que produce sistemas de hidrodecoración y espectáculos de luces, empleando la reutilización de plástico
AlaSoluciones. Emprendimiento en la provincia de Mayabeque de desarrollo de tecnología aplicada a la producción que buscan producir madera plástica.
<divcaption="Principios"created="20210515154236748"modified="20210520182347649"orden="01"tags="Permacultura"title="Principios de la Permacultura"tmap.id="2fbcfa3d-8c20-4120-9dd9-b62a979eba16">
<pre># administracion de la tierra y la naturaleza
# entorno construido
* como construir con materiales alternativos
# Herramientas y tecnologias
* energias limpias
# Cultura y educacion
steiner
*Lectura del Paisaje
* musica y artes participativas
salud y bienestar espiritual
*medicina preventiva
yoga
# finanza y economia
wofing
* comercio justo
* merados de trueque
#tenencia de la tierra y gobernacion comunitaria
ecoaldeas
resolucion de conflictos
cooperativas
asociacion entre vecinos
</pre>
</div>
<divcaption="Proyectos"created="20210714073945278"creator="M0"list="Copinchapedia [[Cuba con Impresoras 3D]] [[Archivo informal]] [[Máquinas Precious Plastic]] Palaminga [[Plástico Leal]] [[Precious Plastic La Habana]] Trapiche"modified="20210724010929692"modifier="M0"tags="Copincha"title="Project"tmap.id="aa3e1131-c049-4952-af80-344d267e36b3">
<pre>We have worked with a range of [[Collaborators]].
Our projects include:
{{{ [tag[project]] }}}
We have given [[Talks]] on topics such as:
{{{ [tag[talk]] }}}</pre>
</div>
<divcreated="20160321210022634"modified="20160513142726355"orden="700"tags="[[TiddlyWiki, antes de empezar]] [[Trabajar con Tiddlers]]"title="Proteger tiddlers individuales con contraseña"tmap.id="b831b765-2ada-4b02-aa33-de18fb2020fc">
<pre>(Si lo que deseas es proteger todo TiddlyWiki con una única contraseña consulta [[Proteger TiddlyWiki con contraseña]])
Es posible encriptar tiddlers individuales con contraseña (una para cada tiddler) para ello hay que instalar el plugin: [[TW5-EncryptTiddlerPlugin|http://danielorodriguez.com/TW5-EncryptTiddlerPlugin/]]
Para hacer esto:
#Pulsa sobre el enlace anterior.
#Busca el tiddler ''Installation'' que aparece al abrir la web anterior.
#Arrastra el enlace que hay allí sobre tu TiddlyWiki y suéltalo.
#Guarda TiddlyWiki
#Recarga la página y aparecerá un candado al lado de cada tiddler.
#Pulsa el candado para encriptar o desencriptar un tiddler
el plastico que vine de las casas vien contaminado y materias primas no recoge el postconsumo.
!! Materias Primas
!!Japon
*les interesa residuos
*japon quiere financiar maquinas
!!Proyecto Espacios
vilma,. fabrica de muebles,.
residuo madera,.
adquirir maquinas para reciclar la madera,.
reciclaje de plasticos,.
traer a cna atres para la habana
!!CNA Atres
para minindustria,. desarrollo local,.
espacio,... gobierno de centrohabana,.
materia prima,. financiamiento,.
documento,. de equipamiento,.
</pre>
</div>
<divcreated="20210522155700191"creator="M0"modified="20210522161651664"modifier="M0"title="Proyectos del colectivo PRUEBAS"tmap.id="767f2a14-71e8-460f-8005-31b6eba5951d">
<pre></pre>
</div>
<divcreated="20210109184511864"modified="20210109184803703"tags=""title="Prueba de Markdown"tmap.id="8398c260-b199-4ab4-b6f5-e3e62716fb26"type="text/x-gfm">
Projectify is a project management app for [[TiddlyWiki|https://tiddlywiki.com]], inspired by products like [[Todoist|https://todoist.com]] and [[Basecamp|https://basecamp.com]].
[[TiddlyWiki|https://tiddlywiki.com]] is an excellent note-taking & knowledge-base app with [[unique features|https://tiddlywiki.com/#TiddlyWiki]]. Projectify brings project management to ~TiddlyWiki, extending it to let you [[capture thoughts|$:/plugins/nico/projectify/doc/Inbox]], [[plan projects|$:/plugins/nico/projectify/doc/Projects]] and [[schedule tasks|$:/plugins/nico/projectify/doc/Schedule]].
Projectify is carefully crafted, with an intuitive interface that integrates seamlessy with the core of ~TiddlyWiki. [[Drag and drop |https://tiddlywiki.com/#Drag%20and%20Drop]] any tiddler into a project to add it as a todo, [[transclude|https://tiddlywiki.com/#Transclusion]] and [[link|https://tiddlywiki.com/#Linking%20in%20WikiText]] other tiddlers into projects or tasks.
For all changes in the latest {{$:/plugins/nico/projectify!!version}} release, see [[ChangeLog|$:/plugins/nico/projectify/changelog]].
!! Demo
A demo is available at [[projectify.wiki|https://projectify.wiki]].
<divcreated="20210323160822708"modified="20210323160822711"tags="[[encargar tornillo con tornero en cuba]] todo"title="recoger y pagar"tmap.id="faf6491c-c6f9-4b61-ae6d-5f2614de0c8e">
<pre></pre>
</div>
<divcreated="20210714180523962"modified="20210714181552391"title="Registro de contribuciones"tmap.id="de630348-0bd6-445b-af9b-eb0d808bf1fd">
<pre>Cambia el título de este tiddler arriba por otro.
Deberías ver cómo cambia en todos los que apuntan a este
(por ejemplo en el tiddler de [[pruebas|Pruebas]].
No más enlaces rotos en nuestro hipertexto! :-).</pre>
</div>
<divcreated="20210321104753727"modified="20210321111305175"title="Respuesta a la Covid 19"tmap.id="f4343569-dc5b-4369-b9f4-c5a43dd65a14"type="text/x-markdown">
<pre>> Qué soluciones podemos tener de forma local, distribuida y abierta en Cuba, para dar respuesta a la pandemia del Covid-19.
## Protector facial
| | |
| - | - |
| [![Imagen de Proyecto](/proyectos/protectorcubavscovid.jpg)](https://copinchapedia.copincha.org/es/Proyectos/protectorcubavscovid) | [**Protector Cuba vs Covid**](https://copinchapedia.copincha.org/es/Proyectos/protectorcubavscovid) <br><br> _Iniciado por: 3DprintCuba_ <br><br> Protector facial hechos a partir de impresion 3D y acetatos |
| [![Imagen de Proyecto](/proyectos/2protectoresfacialesde1pepinoreciclado.jpg)](https://copinchapedia.copincha.org/es/Proyectos/2protectoresfacialesde1pepinoreciclado) | [**Protectores faciales reciclando pepinos**](https://copinchapedia.copincha.org/es/Proyectos/protector_facial_pet) <br><br> _Iniciado por: Jorge Luis de la Fuente y Mical Romero_ <br><br> Protectores faciales hechos a partir de botellas de plastico PET |
| [![imagen de Proyecto.jpg](/proyectos/protectorfacialdepomo.jpg)](https://copinchapedia.copincha.org/es/Proyectos/protectorfacialdepomo)| [**Protector facial de pomo**](https://copinchapedia.copincha.org/es/Proyectos/protectorfacialdepomo) <br><br> _Iniciado por: Carmen Gómez Pozo_ <br><br> Protector facial hecho a partir de botellas de plastico PET |
| [![Imagen de Proyecto](/proyectos/protectormecanicalg.jpg)](https://copinchapedia.copincha.org/es/Proyectos/protectormecanicalg) | [**Protector Mecánica LG**](https://copinchapedia.copincha.org/es/Proyectos/protectormecanicalg) <br><br> _Iniciado por: Mecánica LG_ <br><br> Protector facial hechos a partir de cortar acetatos |
| [![Imagen de Proyecto](/proyectos/caretaorigami.jpg)](https://copinchapedia.copincha.org/es/Proyectos/caretaorigami) | [**Careta origami**](https://copinchapedia.copincha.org/es/Proyectos/caretaorigami) <br><br> _Iniciado por: Irán Tamayo Salcines_ <br><br> Protector facial hechos a partir de cortar y doblar acetatos |
| [![Imagen de Proyecto](/proyectos/mascaradeacrilico.jpg)](https://copinchapedia.copincha.org/es/Proyectos/mascaradeacrilico) | [**Máscara de Acrílico**](https://copinchapedia.copincha.org/es/Proyectos/mascaradeacrilico) <br><br> _Iniciado por: Angel Edel Pino Arocha y Yismani Carrigan_ <br><br> Protector facial hechos a partir de cortar y doblar acrílico transparente |
<br>
## Mascarilla de Protección
| | |
| - | - |
| [![Imagen de Proyecto](/proyectos/mascarilladeproteccionsimbiosis1f2v-0320.jpeg)](https://copinchapedia.copincha.org/es/Proyectos/mascarilladeproteccionsimbiosis1f2v-0320) | [**Mascarilla de protección SIMBIOSIS 1F2V-0320**](https://copinchapedia.copincha.org/es/Proyectos/mascarilladeproteccionsimbiosis1f2v-0320) <br><br> _Iniciado por: SIMBIOSIS_ <br><br> Mascarilla de protección hecha con materiales que podemos encontrar en casa. |
<br>
## Caja aerosol
| | |
| - | - |
| [![Imagen de Proyecto](/proyectos/cajaaereosol.jpg)](https://copinchapedia.copincha.org/es/Proyectos/cajaaereosol) | [**Caja aerosol**](https://copinchapedia.copincha.org/es/Proyectos/cajaaereosol) <br><br> _Iniciado por: Angel Edel Pino Arocha y Yismani Carrigan_ <br><br> Caja aereosol hecha a partir de cortar y doblar acrílico transparente |</pre>
</div>
<divcreated="20190319171257843"description="RichLinks lets you display external links as "objects"."developer="Mat von Twaddle"keywords="empty"modified="20210309042707320"tags="starIt Links"title="Richlinks"tmap.id="73a8ee2e-7ec0-4aa8-8464-49e86051c5f1"url="http://richlinks.tiddlyspot.com/"wiki-name="Richlinks">
<pre>> ***¿Cómo contribuir a la educación de la robótica con recursos accesibles en Cuba?***
![Imagen de Encabezado](images/header.jpg)
Introducción al proyecto
Este espacio reúne las experiencias de proyectos de robotica educativa, poniendo especial atención en las soluciones que podemos replicar, adaptar y crear con recursos disponibles en Cuba. Pretendemos de esta forma que todos podamos impulsar más fácilmente el desarrollo de cualquier proyecto en este campo.
<br>
## Proyectos
| | |
| - | - |
| [![Imagen de proyecto](/proyectos/imagendeproyecto.jpg)](https://copinchapedia.copincha.org/es/Proyectos/proyecto1) | [**Nombre del proyecto**](https://copinchapedia.copincha.org/es/Proyectos/proyecto1) <br><br> _Iniciado por: aaa_ <br><br> Descripción. |
|[![Imagen de proyecto](/proyectos/imagendeproyecto.jpg)](https://copinchapedia.copincha.org/es/Proyectos/proyecto2) | [**Nombre del proyecto**](https://copinchapedia.copincha.org/es/Proyectos/proyecto2) <br><br> _Iniciado por: bbb_ <br><br> Descripción. |
## Recursos
### Repositorios
| | |
|-|-|
|[**GRM**](...)| Descripción |
## Participantes
| | |
|-|-|
|![imagen del contribuyente](/grupo-roboticamecatronica.jpg)| **Grupo de Robótica y Mecatrónica de la Cujae (GRM)** es un grupo abierto para debatir, aprender, enseñar, colaborar y desarrollar sobre robótica y mecatrónica, surgido como iniciativa de la Facultad de Automática de la Cujae para ampliar la formación universitaria de sus esrudiantes al tiempo que extendiende la labor educativa universitaria a la comunidad. |
Corta artículos de plástico en pequeñas partículas listas para ser convertidas en cosas nuevas por otras máquinas. El plástico triturado puede ser de múltiples tamaños y colores para aumentar su valor.
<divcreated="20210612234724272"modified="20210727132851361"tags="SubProject [[Contribuir en Copinchapedia]] Copinchapedia"title="Tutorial Copinchapedia"tmap.id="935e8611-e519-4a78-bc8b-2a087262e5c9">
<pre></pre>
</div>
<divcreated="20210613151815862"modified="20210714055212453"tags="Copinchapedia todo"title="Unificar Proyecto contenidos y proyectos del gestor"tmap.id="3cf17546-bea2-4870-8774-d8d1df050e32">
<divcaption="Cubacreativa"color="#D5B7EA"created="20210318180836676"image="proyecto-indefinido.png"link="Cubacreativa"modified="20210318194715283"tags="[[Lista de proyectos]]"title="ventana - proyecto - Cubacreativa"tmap.id="0c25b928-e6e7-4495-8389-fa057d0af0c3">
<pre></pre>
</div>
<divcreated="20210323123548323"modified="20210720032258688"tags="example [[lista de piezas]] todo"title="ventana de pieza"tmap.id="6fb0faa8-4b89-49a6-9e87-f847a09fe2d1">
<pre>[[pieza]]
[[pieza-cantidad]]
[[pieza - total]] calcular con el complemento [[formula]] (multiplicar [[pieza - precio]] x [[pieza - cantidad]])
</pre>
</div>
<divcaption="Cuba con Impresoras 3D"color="#D5B7EA"created="20210318182125777"image="proyecto-indefinido.png"link="Cuba con Impresoras 3D"modified="20210318194939154"tags="[[Lista de proyectos]]"title="ventana-proyecto-Cuba con Impresoras 3D"tmap.id="32a824f2-e558-4725-9641-76beb2c9c753">
<pre></pre>
</div>
<divcaption="Plástico Leal"color="#D5B7EA"created="20210318181751797"image="proyecto-indefinido.png"link="Plástico Leal"modified="20210318195037042"tags="[[Lista de proyectos]]"title="ventana-proyecto-Plástico Leal"tmap.id="d04d5349-6aad-4e10-a972-88086f004ff9">
<pre></pre>
</div>
<divcaption="Precious Plastic La Habana"color="#d5b7ea"created="20210318183505348"image="logo-precious-plastic-la-habana.jpg"link="Precious Plastic La Habana"modified="20210318200958364"tags="[[Lista de proyectos]]"title="ventana-proyecto-Precious Plastic La Habana"tmap.id="ba9c8fda-4f35-4411-9e10-25c252490731">
<pre></pre>
</div>
<divcreated="20210121160735274"creator="M0"modified="20210318152147796"modifier="M0"tags="[[Plástico Leal - La Conexión]]"title="Vestuario de gigantería con plástico reciclado"tmap.id="687be9f0-d247-4278-bf87-2957bf18c958">
<pre>''This is a demo of using the same editor in the view template. Go ahead and click on this text and edit it.''
//The downside of this approach is that your wikitext and html will never be rendered, and currently there is no way to use links.//
Oh, yes. Harmless is just the word: that's why I like it! Doesn't kill, doesn't wound, doesn't maim. But I'll tell you what it does do: it is very good at opening doors! Please, when Torchwood comes to write my complete history, don't tell people I travelled through time and space with her mother! There was a war. A Time War. ''The Last Great Time War''. My people fought a race called the __Daleks__, for the sake of all creation. And they lost. We lost. Everyone lost. They're all gone now. My family. My friends. Even that sky.<br>
Geronimo! You are the only mystery worth solving. Yes, well, it's a brilliant noise. I love that noise. Overconfidence, this, and a small screwdriver. I’m absolutely sorted. I know. Dinosaurs! On a spaceship!
It's a fez. I wear a fez now. ''[[Fezzes|Demo]]'' are cool. ''Bow ties are cool''.
Father Christmas. Santa Claus. Or, as I’ve always known him, Jeff. I once spent a hell of a long time trying to get a gobby Australian to Heathrow airport. Please tell me I didn't get old. Anything but old. I was young! Oh... is he grey?<br>
* Don't you think she looks tired? You can spend the rest of your life with me, but I can't spend the rest of mine with you.
* I have to live on. Alone. That's the //curse of the Time Lords//.
* Allons-y! You need to get yourself a better dictionary. When you do, look up 'genocide'. You'll find a little picture of me there, and the caption'll read 'Over my dead body'.
* There's something else I've always wanted to say: Allons-y, Alonso! Blimey, trying to make an Ood laugh... Yeah? Well I'm the Lord of Time.</pre>
function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m<n;m++)h=a[e>>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m=
if(0>h)throw new sjcl.exception.invalid("this isn't base64!");26<e?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));returnc}};sjcl.codec.base64url={fromBits:function(a){returnsjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){returnsjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(newsjcl.hash.sha256).update(a).finalize()};
function u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]=
f[7]+q|0}
sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1<a&&sjcl.mode.ccm.G.splice(a,1)},fa:function(a){varb=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){varf,g=b.slice(0),h=sjcl.bitArray,k=h.bitLength(c)/8,l=h.bitLength(g)/8;e=e||64;d=d||[];if(7>k)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c,
8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))thrownewsjcl.exception.corrupt("ccm:tagdoesn'tmatch");
sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4)m=b.slice(g,g+4),n=l(n,m),p=p.concat(l(c,a.encrypt(l(c,m)))),c=h(c);m=b.slice(g);b=k.bitLength(m);g=a.encrypt(l(c,[0,0,0,b]));m=k.clamp(l(m.concat([0,0,0]),g),b);n=l(n,l(m.concat([0,0,0]),g));n=a.encrypt(l(n,l(c,h(c))));
d.length&&(n=l(n,f?d:sjcl.mode.ocb2.pmac(a,d)));return p.concat(k.concat(m,k.clamp(n,e)))},decrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.S,h=sjcl.bitArray,k=h.i,l=[0,0,0,0],n=g(a.encrypt(c)),m,p,r=sjcl.bitArray.bitLength(b)-e,q=[];d=d||[];for(c=0;c+4<r/32;c+=4)m=k(n,a.decrypt(k(n,b.slice(c,c+4)))),l=k(l,m),q=q.concat(m),n=g(n);p=r-32*c;m=a.encrypt(k(n,[0,0,0,p]));m=k(m,h.clamp(b.slice(c),p).concat([0,
0,0]));l=k(l,m);l=a.encrypt(k(l,k(n,g(n))));d.length&&(l=k(l,f?d:sjcl.mode.ocb2.pmac(a,d)));if(!h.equal(h.clamp(l,e),h.bitSlice(b,r)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return q.concat(h.clamp(m,p))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.S,e=sjcl.bitArray,f=e.i,g=[0,0,0,0],h=a.encrypt([0,0,0,0]),h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4)h=d(h),g=f(g,a.encrypt(f(h,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);
sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){if(this.aa)throw new sjcl.exception.invalid("encrypt on already updated hmac called!");this.update(a);return this.digest(a)};sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]);this.aa=!1};sjcl.misc.hmac.prototype.update=function(a){this.aa=!0;this.R.update(a)};sjcl.misc.hmac.prototype.digest=function(){var a=this.R.finalize(),a=(new this.W(this.w[1])).update(a).finalize();this.reset();return a};
sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;g<c;g++)for(f=a.encrypt(f),h=0;h<f.length;h++)e[h]^=f[h];l=l.concat(e)}d&&(l=n.clamp(l,d));returnl};
(k=1);if(!k){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))},
this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],deletee[d]},la:function(){C(this,1)},oa:function(a){varb,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");C(this,0)},qa:function(a){a=
function A(a,b){var c,d=sjcl.random.K[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}functionC(a,b){"undefined"!==typeofwindow&&window.performance&&"function"===typeofwindow.performance.now?a.addEntropy(window.performance.now(),b,"loadtime"):a.addEntropy((newDate).valueOf(),b,"loadtime")}functiony(a){a.b=z(a).concat(z(a));a.L=newsjcl.cipher.aes(a.b)}functionz(a){for(varb=0;4>b&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)}
function B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);
else break a;sjcl.random.addEntropy(F,1024,"crypto['getRandomValues']")}}catch(a){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(a))}
b.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(g,b.ct,b.iv,b.tag,f,b.ts):sjcl.mode[b.mode].decrypt(g,b.ct,b.iv,f,b.ts);e.g(d,b);d.key=a;return 1===c.raw?f:sjcl.codec.utf8String.fromBits(f)},decrypt:function(a,b,c,d){var e=sjcl.json;return e.ia(a,e.decode(b),c,d)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+
b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+sjcl.codec.base64.fromBits(a[b],0)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))thrownewsjcl.exception.invalid("jsondecode:thisisn'tjson!");
null!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]="true"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},sa:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},ra:function(a,