You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

790 lines
3.0 MiB
HTML

<!doctype html>
<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->
<!-- saved from url=(0021)https://tiddlywiki.com -->
<html lang="en-GB">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<!--~~ Raw markup for the top of the head section ~~-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<meta name="application-name" content="TiddlyWiki" />
<meta name="generator" content="TiddlyWiki" />
<meta name="tiddlywiki-version" content="5.2.5" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="format-detection" content="telephone=no" />
<meta name="copyright" content="TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
Copyright (c) 2004-2007, Jeremy Ruston
Copyright (c) 2007-2022, UnaMesa Association
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
<title>hackerspaceinventario
— inventario</title>
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
<!--~~ Raw markup ~~-->
</head>
<body class="tc-body">
<!--~~ Raw markup for the top of the body section ~~-->
<!--~~ Static styles ~~-->
<div id="styleArea">
<style data-tiddler-title="$:/boot/boot.css" data-tiddler-type="text/css" type="text/css">.tc-error-form{font-family:sans-serif;color:#fff;z-index:20000;position:fixed;background-color:#ff4b4b;border:8px solid red;border-radius:8px;width:50%;margin-left:25%;margin-top:4em;padding:0 2em 1em 2em}.tc-error-form h1{text-align:center}.tc-error-prompt{text-align:center;color:#000}.tc-error-message{overflow:auto;max-height:40em;padding-right:1em;margin:1em 0;white-space:pre-line}.tc-password-wrapper{font-family:sans-serif;z-index:20000;position:fixed;text-align:center;width:200px;top:4em;left:50%;margin-left:-144px;padding:16px 16px 16px 16px;border-radius:8px}.tc-password-wrapper{color:#000;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#c5ebb7;border:8px solid #a4c598}.tc-password-wrapper form{text-align:left}.tc-password-wrapper h1{font-size:16px;line-height:20px;padding-bottom:16px}.tc-password-wrapper input{width:100%}</style>
</div>
<!--~~ Static content for Google and browsers without JavaScript ~~-->
<noscript>
<div id="splashArea">
<p>This <a class="tc-tiddlylink-external" href="https://tiddlywiki.com" rel="noopener noreferrer" target="_blank">TiddlyWiki</a> contains the following tiddlers:</p><p><ul>
<li>$:/_tw5.com-card-template</li>
<li>$:/_tw5.com-styles</li>
<li>$:/config/flibbles/relink-titles/custom</li>
<li>$:/config/flibbles/relink/fields/description</li>
<li>$:/config/flibbles/relink/fields/example-filter</li>
<li>$:/config/flibbles/relink/fields/example-list</li>
<li>$:/config/flibbles/relink/fields/example-title</li>
<li>$:/config/flibbles/relink/fields/example-wikitext</li>
<li>$:/config/flibbles/relink/fields/Frodo</li>
<li>$:/config/flibbles/relink/fields/relink.showcase</li>
<li>$:/config/flibbles/relink/macros/ul/tag</li>
<li>$:/config/HypotheticalButtons/Visibility/Frodo</li>
<li>$:/config/markdown/renderWikiTextPragma</li>
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home</li>
<li>$:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button</li>
<li>$:/config/RelinkOnRename</li>
<li>$:/config/TiddlerInfo/Default</li>
<li>$:/config/TiddlerInfo/Mode</li>
<li>$:/config/ViewTemplateBodyFilters/system</li>
<li>$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info</li>
<li>$:/core</li>
<li>$:/DefaultTiddlers</li>
<li>$:/Import</li>
<li>$:/isEncrypted</li>
<li>$:/keepstate/dynamictables/20200213/exmp01/style</li>
<li>$:/keepstate/dynamictables/Draft of 'Inventory'/style</li>
<li>$:/plugins/adithyab/cmplus</li>
<li>$:/plugins/danielo515/2click2edit</li>
<li>$:/plugins/felixhayashi/respawn</li>
<li>$:/plugins/felixhayashi/topstoryview</li>
<li>$:/plugins/flibbles/3rd-party</li>
<li>$:/plugins/flibbles/relink</li>
<li>$:/plugins/flibbles/relink-fieldnames</li>
<li>$:/plugins/flibbles/relink-markdown</li>
<li>$:/plugins/flibbles/relink-titles</li>
<li>$:/plugins/Gk0Wk/sidebar-resizer</li>
<li>$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced</li>
<li>$:/plugins/kookma/shiraz</li>
<li>$:/plugins/kookma/trashbin</li>
<li>$:/plugins/snowgoon88/edit-comptext</li>
<li>$:/plugins/sq/streams</li>
<li>$:/plugins/sq/streams-as-editor</li>
<li>$:/plugins/sq/streams-search</li>
<li>$:/plugins/tgrosinger/tw5-checklist</li>
<li>$:/plugins/tiddlywiki/codemirror</li>
<li>$:/plugins/tiddlywiki/codemirror-closebrackets</li>
<li>$:/plugins/tiddlywiki/codemirror-closetag</li>
<li>$:/plugins/tiddlywiki/codemirror-fullscreen</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-css</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-javascript</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-markdown</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-xml</li>
<li>$:/plugins/tiddlywiki/codemirror-search-replace</li>
<li>$:/plugins/tiddlywiki/highlight</li>
<li>$:/plugins/tiddlywiki/markdown</li>
<li>$:/plugins/tiddlywiki/railroad</li>
<li>$:/plugins/wikilabs/link-to-tabs</li>
<li>$:/SiteSubtitle</li>
<li>$:/SiteTitle</li>
<li>$:/state/advancedsearch/currentTab</li>
<li>$:/state/dynamictables/20200213/exmp01/edit-view-status</li>
<li>$:/state/dynamictables/20200213/exmp01/expand</li>
<li>$:/state/dynamictables/20200213/exmp01/sortby</li>
<li>$:/state/dynamictables/20200213/exmp03/expand</li>
<li>$:/state/dynamictables/Draft of 'Inventory'/sortby</li>
<li>$:/state/dynamictables/Inventory/expand</li>
<li>$:/state/showeditpreview</li>
<li>$:/state/sidebar</li>
<li>$:/state/tab--1498284803</li>
<li>$:/state/tab--1571042964</li>
<li>$:/state/tab--1963855381</li>
<li>$:/state/tab--694410614</li>
<li>$:/state/tab-1749438307</li>
<li>$:/state/tab/sidebar--595412856</li>
<li>$:/state/tab1-995636538</li>
<li>$:/state/tabs/controlpanel/toolbars-1345989671</li>
<li>$:/state/tag-manager/Types</li>
<li>$:/status/RequireReloadDueToPluginChange</li>
<li>$:/StoryList</li>
<li>$:/theme</li>
<li>$:/themes/tiddlywiki/snowwhite</li>
<li>$:/themes/tiddlywiki/vanilla</li>
<li>$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth</li>
<li>$:/themes/tiddlywiki/vanilla/options/sidebarlayout</li>
<li>$:/TitlesExample/Frodo</li>
<li>Attributes</li>
<li>azul</li>
<li>backreferences Operator</li>
<li>backreferences Operator (Examples)</li>
<li>BilboBaggins</li>
<li>Comments</li>
<li>Default Type</li>
<li>Demo/Field names</li>
<li>Demo/Fields</li>
<li>Demo/Filters</li>
<li>Demo/Images</li>
<li>Demo/Links</li>
<li>Demo/Macros</li>
<li>Demo/Markdown</li>
<li>Demo/Titles</li>
<li>Demo/Transcludes</li>
<li>Demo/Widgets</li>
<li>Disable Updating of modified</li>
<li>Documentation</li>
<li>Documentation/Attributes</li>
<li>Documentation/Fields</li>
<li>Documentation/Operators</li>
<li>Eärendil</li>
<li>Example/setting/Frodo</li>
<li>Example/setting/Rosie</li>
<li>Fieldname</li>
<li>Fieldnamelist</li>
<li>Fields</li>
<li>Filter</li>
<li>Filter Operators</li>
<li>Frodo.svg</li>
<li>Frodo/inventory</li>
<li>Frodo/stats</li>
<li>Frodo/stats/kills</li>
<li>getRelinkableTitles</li>
<li>getTiddlerRelinkBackreferences</li>
<li>getTiddlerRelinkReferences</li>
<li>Hackability</li>
<li>hackerspace--inventario</li>
<li>hackerspace--inventario--general</li>
<li>hackerspace--inventario--necesitados</li>
<li>Images</li>
<li>Inline Declarations</li>
<li>Lazy Loading</li>
<li>Links</li>
<li>List</li>
<li>Macros</li>
<li>Macros/hide</li>
<li>Macros/link-to-tab</li>
<li>Macros/operator-example</li>
<li>Macros/print-before-this</li>
<li>Macros/say-list</li>
<li>Macros/show-reference-button</li>
<li>Macros/ul</li>
<li>Markdown</li>
<li>Migration to V2</li>
<li>Migration to V2/relink-titles</li>
<li>Migration to V2/relinkoperator</li>
<li>Migration to V2/relinktextoperator</li>
<li>Migration to V2/relinkwikitextrule</li>
<li>Mithril</li>
<li>Operators</li>
<li>orphans Operator</li>
<li>orphans Operator (Examples)</li>
<li>Other plugins by Flibbles</li>
<li>Plugins</li>
<li>Plugins/Fieldnames</li>
<li>Plugins/Markdown</li>
<li>Plugins/Titles</li>
<li>Plugins/Titles/directory</li>
<li>Plugins/Titles/example.js</li>
<li>Plugins/Titles/lookup</li>
<li>Pragma</li>
<li>Reference</li>
<li>references Operator</li>
<li>references Operator (Examples)</li>
<li>Relink-titles Migration</li>
<li>report Operator</li>
<li>report Operator (Examples)</li>
<li>Roadmap</li>
<li>rojo</li>
<li>RSoD</li>
<li>Stylesheet.css</li>
<li>Suffixes</li>
<li>Templates/Button</li>
<li>Templates/Demo</li>
<li>Templates/Hello</li>
<li>Templates/now</li>
<li>Templates/Plugin</li>
<li>Templates/release-date</li>
<li>Templates/Type</li>
<li>Templates/Version</li>
<li>Templates/Version-button</li>
<li>Third Party Plugin Integration</li>
<li>Tiddler Type</li>
<li>TiddlerInfo Tab</li>
<li>Tiddlers to relink</li>
<li>Title</li>
<li>Transcludes</li>
<li>Types</li>
<li>verde</li>
<li>Versions</li>
<li>Versions/1.0.0</li>
<li>Versions/1.1.0</li>
<li>Versions/1.1.1</li>
<li>Versions/1.10.0</li>
<li>Versions/1.10.1</li>
<li>Versions/1.10.2</li>
<li>Versions/1.10.3</li>
<li>Versions/1.2.0</li>
<li>Versions/1.2.1</li>
<li>Versions/1.3.0</li>
<li>Versions/1.4.0</li>
<li>Versions/1.4.1</li>
<li>Versions/1.4.2</li>
<li>Versions/1.5.0</li>
<li>Versions/1.5.1</li>
<li>Versions/1.5.2</li>
<li>Versions/1.5.3</li>
<li>Versions/1.5.4</li>
<li>Versions/1.6.0</li>
<li>Versions/1.7.0</li>
<li>Versions/1.7.1</li>
<li>Versions/1.8.0</li>
<li>Versions/1.8.1</li>
<li>Versions/1.9.0</li>
<li>Versions/1.9.1</li>
<li>Versions/1.9.2</li>
<li>Versions/1.9.3</li>
<li>Versions/2.0.0</li>
<li>Versions/2.0.1</li>
<li>Versions/2.0.2</li>
<li>Versions/2.1.0</li>
<li>Versions/2.1.1</li>
<li>Versions/2.1.2</li>
<li>Versions/2.1.3</li>
<li>Versions/2.1.4</li>
<li>Versions/2.2.0</li>
<li>Versions/2.3.0</li>
<li>Versions/2.3.1</li>
<li>Whitelisting</li>
<li>Widgets with tiddler fields as attributes</li>
<li>Wikimethods</li>
<li>Wikitext</li>
</ul>
</p>
<style>
.tc-remove-when-wiki-loaded {display: none;}
</style>
</div>
</noscript>
<!--~~ Ordinary tiddlers ~~-->
<script class="tiddlywiki-tiddler-store" type="application/json">[
{"title":"$:/_tw5.com-card-template","created":"20200507002521489","modified":"20220719134613555","type":"text/vnd.tiddlywiki","text":"\u003C$macrocall $name=\"flex-card\" bordercolor={{!!color}} captionField=\"caption\" subtitle={{{ [{!!community-author}!is[blank]addprefix[by ]] }}}/>\n"},
{"title":"$:/_tw5.com-styles","created":"20200507002727378","modified":"20220719132112414","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n.tc-double-spaced-list li {\n\tpadding-bottom: .5em;\n\tpadding-top: .5em;\n}\n\n.tc-link-info-item {\n border: 1px solid #ebefcd;\n padding: 5px 10px;\n margin-bottom: 10px;\n background: \u003C\u003Ccolour code-background>>;\n font-size: 0.8em;\n line-height: 1.2;\n}\n\n.tc-link-info-item h1 {\n\tfont-weight: 500;\n\tfont-size: 16px;\t\n}\n\n.tc-scrollable-demo {\n\tborder: 1px solid \u003C\u003Ccolour message-border>>;\n\tbackground-color: \u003C\u003Ccolour message-background>>;\n\tpadding: 1em;\n\theight: 400px;\n\tposition: relative;\n\toverflow: auto;\n}\n\n.tc-improvement-banner {\n\tfont-size: 0.7em;\n\tbackground: #fcc;\n\tpadding-left: 5px;\n\tmargin-top: 6px;\n\tmargin-bottom: 12px;\n\t\u003C\u003Cbox-shadow \"2px 2px 2px rgba(0,0,0,0.4)\">>\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t\n\t.tc-improvement-banner {\n\t}\n\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-improvement-banner {\n\t\tmargin-right: -53px;\n\t\tmargin-left: -53px;\n\t}\n\n\t.tc-improvement-banner:before {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: \" \";\n\t\tmargin-left: -5px;\n\t\tmargin-top: -10px;\n\t\tborder-top: 5px solid transparent;\n\t\tborder-left: 5px solid transparent;\n\t\tborder-right: 5px solid #C07E7E;\n\t\tborder-bottom: 5px solid #C07E7E;\n\t}\n\n}\n\n.tc-improvement-banner svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n\n\n.tc-wrapper-flex {\n\tdisplay: flex;\n}\n\n.tc-saving-sidebar {\n\tmargin: 0;\n\tpadding: 0;\n\tmin-width: 200px;\n\toverflow: auto;\n}\n\n.tc-saving-sidebar a {\n\tdisplay: block;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-wrapper-flex {\n\t\tflex-direction: column;\n\t}\n\t.tc-saving-sidebar {\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n\t.tc-saving-sidebar a {\n\t\tfloat: left;\n\t}\n}\n\n.tc-saving-sidebar-category {\n\tmargin-bottom: 10px;\n}\n\n.tc-saving-sidebar-category-title {\n\tfont-weight: bold;\n\tmargin-bottom: 5px;\n\tfont-size: 16px;\n}\n\n.tc-saving-sidebar-category-item {\n\tmargin-left: 10px;\n}\n\n.tc-saving-introduction {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttext-align: center;\n\talign-items: center;\n\tpadding: 4em;\n\tfont-style: italic;\n}\n\n.tc-cards {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: space-evenly;\n\twidth: 100%;\n\tpadding: 0.5em;\n\tbackground: \u003C\u003Ccolour background>>;\n\tborder-color: rgba(34,36,38,.15);\n\tbox-shadow: 0 2px 25px 0 rgb(34 36 38 / 5%) inset;\n}\n\n.tc-tiddlylink.tc-card {\n\tfont-weight: normal;\n\tmax-width: 100%;\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: \u003C\u003Ccolour background>>;\n\tcolor: \u003C\u003Ccolour foreground>>;\n\twidth: 200px;\n\tmin-height: 0;\n\tpadding: 0 0 0.5em 0;\n\tmargin: 0.5em;\n\tborder: none;\n\tborder-radius: 8px;\n\tbox-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5;\n\ttransition: box-shadow 0.3s ease,transform .3s ease;\n}\n\n@media (max-width: 500px) {\n\t\n\t.tc-cards {\n\t\tpadding: 0;\n\t}\n\n\t.tc-tiddlylink.tc-card {\n\t\tmargin: 0.25em;\n\t\twidth: 45%;\n\t}\n\n}\n\n.tc-tiddlylink.tc-card.tc-card-quote {\n\twidth: 320px;\n\tbox-shadow: none;\n\tbackground-color: #effdff;\n}\n\n.tc-card-accent {\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n}\n\n.tc-tiddlylink.tc-card:hover {\n\tcolor: \u003C\u003Ccolour foreground>>;\n\tbackground: \u003C\u003Ccolour notification-background>>;\n\ttext-decoration: none;\n\tcursor: pointer;\n\tbox-shadow: 0 1px 5px 0 #bcbdbd, 0 0 0 1px #d4d4d5;\n\ttransform: translateY(-3px);\n}\n\n.tc-card-ribbon-wrapper {\n\tline-height: 0;\n\twidth: 75px;\n\theight: 75px;\n\tposition: absolute;\n\tright: 0;\n\toverflow: hidden;\n\ttop:
{"title":"$:/config/flibbles/relink-titles/custom","text":"[removesuffix\u003CfromTiddler>match[Example/setting/]addsuffix\u003CtoTiddler>]\n"},
{"title":"$:/config/flibbles/relink/fields/description","text":"wikitext"},
{"title":"$:/config/flibbles/relink/fields/example-filter","text":"filter"},
{"title":"$:/config/flibbles/relink/fields/example-list","text":"list"},
{"title":"$:/config/flibbles/relink/fields/example-title","text":"title"},
{"title":"$:/config/flibbles/relink/fields/example-wikitext","text":"wikitext"},
{"title":"$:/config/flibbles/relink/fields/Frodo","text":"list"},
{"title":"$:/config/flibbles/relink/fields/relink.showcase","text":"fieldnamelist"},
{"title":"$:/config/flibbles/relink/macros/ul/tag","text":"title"},
{"title":"$:/config/HypotheticalButtons/Visibility/Frodo","text":"```\nshow\n```\n\n\u003C\u003C\u003C\nThis is a hypothetical settings tiddler for Frodo, kinda like the settings tiddlers for button visibility in Tiddlywiki.\n\nThis settings tiddler will rename along with Frodo because of the \u003C\u003Clink-to-config-tab $:/plugins/flibbles/relink-titles/configuration \"Relink-titles lookup rule\">>. See the \u003C\u003Clink-to-tab Plugins Plugins/Titles \"Relink-titles documentation\">> for more information.\n\u003C\u003C\u003C\n"},
{"title":"$:/config/markdown/renderWikiTextPragma","text":"\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock superscript"},
{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home","text":"show"},
{"title":"$:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button","text":"hide"},
{"title":"$:/config/RelinkOnRename","text":"yes"},
{"title":"$:/config/TiddlerInfo/Default","text":"$:/plugins/flibbles/relink/ui/TiddlerInfo/References"},
{"title":"$:/config/TiddlerInfo/Mode","text":"sticky"},
{"title":"$:/config/ViewTemplateBodyFilters/system","text":"[prefix[$:/boot/]] [prefix[$:/config/]] [prefix[$:/core/]!field:title[$:/core/readme]!field:title[$:/core/icon]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/info/]] [prefix[$:/temp/]] +[limit[1]then[$:/core/ui/ViewTemplate/body/code]] -[prefix[$:/config/Hypothetical]]"},
{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info","text":"show"},
{"title":"$:/core","name":"Core","description":"TiddlyWiki5 core","author":"JeremyRuston","core-version":">=5.0.0","plugin-priority":"0","list":"readme","version":"5.2.5","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"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-2022, 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\":\"\u003Csvg width=22pt viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath 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-.
{"created":"20230227044843839","title":"$:/DefaultTiddlers","text":"[[hackerspace--inventario]]","modified":"20230310020602091"},
{"title":"$:/Import","text":"The following tiddlers were imported:\n\n# [[$:/plugins/felixhayashi/topstoryview]]\n# [[$:/plugins/snowgoon88/edit-comptext]]\n# [[$:/plugins/sq/streams-as-editor]]\n# [[$:/plugins/sq/streams-search]]\n# [[$:/plugins/tgrosinger/tw5-checklist]]\n# [[$:/plugins/adithyab/cmplus]]\n# [[$:/plugins/tiddlywiki/codemirror]]\n# [[$:/plugins/tiddlywiki/codemirror-closebrackets]]\n# [[$:/plugins/tiddlywiki/codemirror-closetag]]\n# [[$:/plugins/tiddlywiki/codemirror-fullscreen]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-css]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-javascript]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-markdown]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-xml]]\n# [[$:/plugins/tiddlywiki/codemirror-search-replace]]\n# [[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced]]\n# [[$:/plugins/kookma/trashbin]]\n# [[$:/plugins/sq/streams]]\n# [[$:/plugins/Gk0Wk/sidebar-resizer]]\n# [[$:/plugins/tiddlywiki/railroad]]\n# [[$:/plugins/wikilabs/link-to-tabs]]","status":"complete"},
{"title":"$:/isEncrypted","text":"no"},
{"created":"20230310003510786","title":"$:/keepstate/dynamictables/20200213/exmp01/style","type":"application/json","text":"{}","modified":"20230310162042854"},
{"created":"20230310003546629","title":"$:/keepstate/dynamictables/Draft of 'Inventory'/style","type":"application/json","text":"{}","modified":"20230310003550611"},
{"text":"{\n \"tiddlers\": {\n \"$:/config/codemirror/autocomplete\": {\n \"title\": \"$:/config/codemirror/autocomplete\",\n \"text\": \"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\",\n \"type\": \"json\",\n \"created\": \"20210328004023360\",\n \"extend\": \"extraKeys\",\n \"modified\": \"20210328004023360\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n(function (mod) {\\n\\tif (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n\\t\\tmod(require(\\\"../../lib/codemirror\\\"));\\n\\telse if (typeof define == \\\"function\\\" && define.amd) // AMD\\n\\t\\tdefine([\\\"../../lib/codemirror\\\"], mod);\\n\\telse // Plain browser env\\n\\t\\tmod(CodeMirror);\\n})(function (CodeMirror) {\\n\\t\\\"use strict\\\";\\n\\n\\tCodeMirror.registerHelper('hint', 'anyword', function (editor) {\\n\\t\\tvar cur = editor.getCursor();\\n\\t\\tvar curLine = editor.getLine(cur.line);\\n\\t\\tvar start = cur.ch;\\n\\t\\tvar end = start;\\n\\t\\tvar max_length = 30\\n\\n\\t\\tvar escapeChars = ['.', ']', '}', '>']\\n\\t\\tvar stopChars = ['[', '{', '|', '\\\"']\\n\\n\\t\\twhile (start) {\\n\\t\\t\\tvar ch = curLine.charAt(start - 1)\\n\\t\\t\\tif (end - start > max_length || escapeChars.includes(ch)) {\\n\\t\\t\\t\\treturn null\\n\\t\\t\\t}\\n\\t\\t\\tif (!(stopChars.includes(ch))) {\\n\\t\\t\\t\\tstart--;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tvar curWord = start !== end && curLine.slice(start, end);\\n\\t\\tif (curLine.charAt(start) == '$') {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlist: $tw.wiki.filterTiddlers(`[all[tiddlers]search:title:literal[${curWord}]!prefix[$:/state]]`),\\n\\t\\t\\t\\tfrom: CodeMirror.Pos(cur.line, start),\\n\\t\\t\\t\\tto: CodeMirror.Pos(cur.line, end)\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlist: $tw.wiki.filterTiddlers(`[all[tiddlers]!is[system]!is[shadow]search:title:literal[${curWord}]!prefix[$:/state]]`),\\n\\t\\t\\t\\tfrom: CodeMirror.Pos(cur.line, start),\\n\\t\\t\\t\\tto: CodeMirror.Pos(cur.line, end)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t})\\n});\",\n \"created\": \"20210328004232522\",\n \"modified\": \"20210328010801763\",\n \"module-type\": \"codemirror\",\n \"type\": \"application/javascript\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\",\n \"text\": \".CodeMirror-hints {\\n position: absolute;\\n z-index: 10;\\n overflow: hidden;\\n list-style: none;\\n\\n margin: 0;\\n padding: 2px;\\n\\n -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n border-radius: 3px;\\n border: 1px solid silver;\\n\\n background: white;\\n font-size: 90%;\\n font-family: monospace;\\n\\n max-height: 20em;\\n overflow-y: auto;\\n}\\n\\n.CodeMirror-hint {\\n margin: 0;\\n padding: 0 4px;\\n border-radius: 2px;\\n white-space: pre;\\n color: black;\\n cursor: pointer;\\n}\\n\\nli.CodeMirror-hint-active {\\n background: #08f;\\n color: white;\\n}\\n\",\n \"created\": \"20210328012141944\",\n \"modified\": \"20210328012141944\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/css\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n! function (t) {\\n \\\"object\\\" == type
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/danielo515/2click2edit/ClickListener.js\": {\n \"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})();\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ClickListener.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/danielo515/2click2edit/readme\": {\n \"title\": \"$:/plugins/danielo515/2click2edit/readme\",\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\"\n },\n \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\": {\n \"tags\": \"$:/tags/ViewTemplate\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$click>\"\n }\n }\n}","version":"0.1","type":"application/json","title":"$:/plugins/danielo515/2click2edit","source":"https://github.com/danielo515/TW5-2click2edit","revision":"0","plugin-type":"plugin","list":"readme","description":"double click to edit tiddlers","dependents":"","core-version":">=5.1.0","bag":"default","author":"Danielo Rodriguez"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/respawn/respawn.js\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/respawn.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/respawn/respawn.js\\ntype: application/javascript\\nmodule-type: startup\\n\\n@preserve\\n\\n\\\\*/\\n\\n(function(){\\n \\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n \\n var configTRef = \\\"$:/plugins/felixhayashi/respawn/config\\\";\\n \\n var changeListener = function(changedTiddlers) {\\n \\n if(!changedTiddlers[\\\"$:/StoryList\\\"]) return;\\n \\n var tObj = $tw.wiki.getTiddler(\\\"$:/StoryList\\\");\\n if(tObj && !tObj.fields[\\\"list\\\"].length) {\\n \\n var confTObj = $tw.wiki.getTiddler(configTRef);\\n var config = confTObj ? confTObj.fields : {};\\n \\n window.setTimeout(function() {\\n $tw.rootWidget.dispatchEvent({\\n type: \\\"tm-home\\\"\\n });\\n }, parseInt(config.delay) || 500);\\n }\\n \\n };\\n \\n exports.name = \\\"respawn\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"story\\\"];\\n exports.synchronous = true;\\n \\n exports.startup = function() {\\n \\n $tw.wiki.addEventListener(\\\"change\\\", changeListener);\\n \\n };\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/felixhayashi/respawn/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/Configuration\",\n \"text\": \"\u003C!-- 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\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Delay (seconds):\u003C/th>\\n \u003Ctd>\\n \u003C$edit-text\\n tiddler=\\\"$:/plugins/felixhayashi/respawn/config\\\"\\n field=\\\"delay\\\"\\n tag=\\\"input\\\"\\n default=\\\"500\\\" />\\n \u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/respawn/License\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-Respawn/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/respawn/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information.\"\n }\n }\n}","version":"0.0.3","type":"application/json","title":"$:/plugins/felixhayashi/respawn","source":"https://github.com/felixhayashi/TW5-respawn","released":"","plugin-type":"plugin","list":"Configuration License Readme","description":"Respawn Open default tiddlers when river is empty","dependents":"","core-version":">=5.1.5","author":"Felix Küppers"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/topstoryview/config.js\": {\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\\ntype: application/javascript\\nmodule-type: library\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.config={classNames:{storyRiver:\\\"tc-story-river\\\",backDrop:\\\"story-backdrop\\\",tiddlerFrame:\\\"tc-tiddler-frame\\\",tiddlerTitle:\\\"tc-title\\\"},references:{userConfig:\\\"$:/config/topStoryView\\\",focussedTiddlerStore:\\\"$:/temp/focussedTiddler\\\",refreshTrigger:\\\"$:/temp/focussedTiddler/refresh\\\"},checkbackTime:$tw.utils.getAnimationDuration()}})();\",\n \"title\": \"$:/plugins/felixhayashi/topstoryview/config.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/felixhayashi/topstoryview/layout\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/layout\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"tags\": [\n \"$:/tags/Stylesheet\"\n ],\n \"text\": \"html .tc-story-river:after {\\n content: \\\"\\\";\\n display: block; }\\n\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Configuration\",\n \"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\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Scroll offset:\u003C/th>\\n \u003Ctd>\u003C$edit-text tiddler=\\\"$:/config/topStoryView\\\" field=\\\"scroll-offset\\\" tag=\\\"input\\\" default=\\\"150px\\\" />\u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/topstoryview/License\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information.\"\n },\n \"$:/plugins/felixhayashi/topstoryview/top.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\\ntype: application/javascript\\nmodule-type: storyview\\n\\nViews the story as a linear sequence\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";var t=require(\\\"$:/plugins/felixhayashi/topstoryview/config.js\\\").config;var e=\\\"cubic-bezier(0.645, 0.045, 0.355, 1)\\\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\\\"th-opening-default-tiddlers-list\\\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\\\"scroll-offset\\\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return
{"title":"$:/plugins/flibbles/3rd-party","description":"Example plugin which integrates with Relink.","list":"readme","name":"Relink Example","plugin-type":"plugin","type":"application/json","text":"{\n\t\"tiddlers\": {\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/editTemplate\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/filter\": {\n\t\t\t\"text\": \"filter\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/history\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/template\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/fields/3rd\": {\n\t\t\t\"text\": \"list\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/macros/3rd/tiddler\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/operators/3rd\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/readme\": {\n\t\t\t\"text\": \"This plugin doesn't do anything. It only shows how other plugins can integrate with //Relink//. Thereby allowing any macros, widgets, fields, or filter operators they introduce to automatically be configured for //Relink// to handle.\\n\\nLook at the \u003C\u003Clink-to-config-tab caption:'//Relink// configuration page'>> to see how this plugin's configurations are grouped.\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/macro\": {\n\t\t\t\"module-type\": \"macro\",\n\t\t\t\"text\": \"/*\\\\\\n\\nExample macro which this plugin has automatically integrated with Relink\\n\\n\\\\*/\\n\\nexports.name = \\\"3rd\\\";\\n\\nexports.params = [\\n\\t{name: \\\"tiddler\\\"}\\n];\\n\\nexports.run = function(tiddler) {\\n\\treturn \\\"3rd macro called with: \\\" + tiddler;\\n};\",\n\t\t\t\"type\": \"application/javascript\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/operator\": {\n\t\t\t\"module-type\": \"filteroperator\",\n\t\t\t\"text\": \"/*\\\\\\n\\nExample filter operator which this plugin has automatically integrated with Relink.\\nThis is just a generator that return the third word in the operand tiddler's text.\\n\\n\\\\*/\\n\\nexports[\\\"3rd\\\"] = function(source,operator,options) {\\n\\tvar tiddler = options.wiki.getTiddler(operator.operand);\\n\\tif (tiddler) {\\n\\t\\tvar match = /\\\\S+\\\\s+\\\\S+\\\\s+(\\\\S+)/.exec(tiddler.fields.text);\\n\\t\\tif (match) {\\n\\t\\t\\treturn [match[1]];\\n\\t\\t}\\n\\t}\\n\\treturn [];\\n};\",\n\t\t\t\"type\": \"application/javascript\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/widget\": {\n\t\t\t\"module-type\": \"widget\",\n\t\t\t\"text\": \"/*\\\\\\n\\nExample widget. It's just an alternate name for the core $list widget.\\n\\n\\\\*/\\n\\nvar List = require(\\\"$:/core/modules/widgets/list.js\\\").list;\\n\\nexports[\\\"3rd\\\"] = List;\",\n\t\t\t\"type\": \"application/javascript\"\n\t\t}\n\t}\n}\n"},
{"name":"Relink","title":"$:/plugins/flibbles/relink","description":"Flexibility when relinking renamed tiddlers","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration license","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"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// We come before commands because they may do renaming, or jasmine testing\\nexports.before = ['commands'];\\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 !== undefined) {\\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 modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\\n\\t\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\\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\",\"module-type\":\"startup\",\"title\":\"$:/plugins/flibbles/relink/js/bulkops.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/indexer.js\":{\"text\":\"/*\\\\\\nmodule-type: indexer\\n\\nIndexes results from tiddler reference reports so we don't have to call them\\nso much.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\nfunction Indexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nIndexer.prototype.init = function() {\\n\\tthis.rebuild();\\n};\\n\\nIndexer.prototype.rebuild = function() {\\n\\tthis.index = null;\\n\\tthis.backIndex = null;\\n\\tthis.contexts = Object.create(null);\\n\\tthis.changedTiddlers = undefined;\\n\\tthis.lastRelinks = O
{"name":"Relink Field Names","title":"$:/plugins/flibbles/relink-fieldnames","description":"Renames field names with titles matching Relinked tiddlers","author":"Flibbles","version":"2.3.0","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme reference","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/flibbles/relink/attributes/$action-deletefield/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletefield/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$action-listops/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$action-setfield/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setfield/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$button/setField\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/setField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$checkbox/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$edit-text/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-text/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$edit/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$fields/exclude\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/exclude\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$fields/include\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/include\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$jsontiddler/exclude\":{\"title\":\"$:/config/flibbles/relink/attributes/$jsontiddler/exclude\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$radio/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$range/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$reveal/stateField\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/stateField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$select/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$setvariable/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$set/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$transclude/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$view/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/fieldnames/blacklist\":{\"title\":\"$:/config/flibbles/relink/fieldnames/blacklist\",\"filter\":\"[all[shadows+tiddlers]removeprefix[$:/language/Docs/Fields/]]\",\"text\":\"This tiddler specifies what fields //Relink-fieldname// should refuse to change. Edit its `filter` field if you'd like to change that list.\\n\"},\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\\nmodule-type: relinkfieldtype\\ntype: application/javascript\\n\\nThis field type behaves exactly like the \\\"title\\\" field type, except that\\nit ignores any titles that appear on the field name blacklist.\\n\\n\\\\*/\\n\\nexports.name = 'fieldname';\\n\\nvar utils = require(\\\"../utils.js\\\");\\n\\nex
{"name":"Relink Markdown","title":"$:/plugins/flibbles/relink-markdown","description":"Markdown support for Relink","author":"Flibbles","version":"2.1.0","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","list":"readme","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink/js/fieldtypes/markdown.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/markdown.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfieldtype\\ntitle: $:/plugins/flibbles/relink/js/fieldtypes/markdown.js\\ntype: application/javascript\\n\\nThis relinks tiddlers which contain markdown. It tries to be agnostic to\\nwhichever markdown plugin you're using.\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\\\");\\nvar wikitextHandler = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\").getType('wikitext');\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown.js\\\");\\nvar WikiParser = require(\\\"$:/core/modules/parsers/wikiparser/wikiparser.js\\\")['text/vnd.tiddlywiki'];\\n\\nfunction MarkdownWalker(text, options) {\\n\\tthis.wiki = options.wiki;\\n\\tthis.options = Object.create(options);\\n\\tthis.options.macrodefCanBeDisabled = true;\\n\\tif(!this.mdInlineRuleClasses) {\\n\\t\\tMarkdownWalker.prototype.mdInlineRuleClasses = $tw.modules.createClassesFromModules(\\\"relinkmarkdownrule\\\",\\\"inline\\\",$tw.MarkdownRuleBase);\\n\\t}\\n\\tif(!this.mdBlockRuleClasses) {\\n\\t\\tMarkdownWalker.prototype.mdBlockRuleClasses = $tw.modules.createClassesFromModules(\\\"relinkmarkdownrule\\\",\\\"block\\\",$tw.MarkdownRuleBase);\\n\\t}\\n\\tthis.source = text || \\\"\\\";\\n\\tthis.sourceLength = this.source.length;\\n\\t// Set current parse position\\n\\tthis.pos = 0;\\n\\t// Instantiate the parser block and inline rules\\n\\tthis.blockRules = this.instantiateRules(this.mdBlockRuleClasses,\\\"block\\\",0);\\n\\tthis.inlineRules = this.instantiateRules(this.mdInlineRuleClasses,\\\"inline\\\",0);\\n\\t// instantiateRules first with indent==undefined so we can match regardless\\n\\t// of tabdepth. Now we need to be strict about it.\\n\\tthis.indent = 0;\\n\\tthis.parseBlocks();\\n};\\n\\nMarkdownWalker.prototype = Object.create(WikiParser.prototype);\\n\\nmodule.exports\\n\\nMarkdownWalker.prototype.parseBlock = function(terminatorRegExpString) {\\n\\tvar terminatorRegExp = /([^\\\\S\\\\n]*\\\\r?\\\\n)/mg;\\n\\tthis.skipEmptyLines();\\n\\tif(this.pos >= this.sourceLength) {\\n\\t\\treturn [];\\n\\t}\\n\\t// Look for a block rule that applies at the current position\\n\\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\\n\\tif(nextMatch && nextMatch.matchIndex === this.pos) {\\n\\t\\treturn this.handleRule(nextMatch);\\n\\t}\\n\\treturn this.parseInlineRun(terminatorRegExp);\\n};\\n\\nMarkdownWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\\n\\toptions = options || {};\\n\\tvar tree = [];\\n\\t// Find the next occurrence of the terminator\\n\\tterminatorRegExp.lastIndex = this.pos;\\n\\tvar terminatorMatch = terminatorRegExp.exec(this.source);\\n\\t// Find the next occurrence of a inlinerule\\n\\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\\n\\t// Loop around until we've reached the end of the text\\n\\twhile(this.pos \u003C this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\\n\\t\\t// Return if we've found the terminator, and it precedes any inline rule match\\n\\t\\tif(terminatorMatch) {\\n\\t\\t\\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\\n\\t\\t\\t\\tthis.handleWikitext(this.pos, terminatorMatch.index);\\n\\t\\t\\t\\t//if(options.eatTerminator) {\\n\\t\\t\\t\\t\\tthis.pos += terminatorMatch[0].length;\\n\\t\\t\\t\\t//}\\n\\t\\t\\t\\treturn tree;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t// Process any inline rule, along with the text preceding it\\n\\t\\tif(inlineRuleMatch) {\\n\\t\\t\\t// Preceding text\\n\\t\\t\\tthis.handleWikitext(this.pos, inlineRul
{"name":"Relink Titles","title":"$:/plugins/flibbles/relink-titles","description":"Renames tiddlers with titles derived from Relinked tiddler","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink-titles/configuration\":{\"title\":\"$:/plugins/flibbles/relink-titles/configuration\",\"caption\":\"{{$:/plugins/flibbles/relink-titles/language/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink-titles/language/\\n\\\\define prefix() $:/config/flibbles/relink-titles/relink/\\n\\\\whitespace trim\\n\\n\u003Cdiv class=\\\"tc-control-panel\\\">\\n\\n\u003C\u003Clingo Help>>\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[[relinktitlesrule]modules[]]\\\">\\n\u003Ctr>\\n\u003Ctd>\\n\u003C$checkbox\\n\\ttiddler={{{ [all[current]addprefix\u003Cprefix>] }}}\\n\\tfield=\\\"text\\\"\\n\\tchecked=\\\"enabled\\\"\\n\\tunchecked=\\\"disabled\\\"\\n\\tdefault=\\\"enabled\\\">\\n&#32;\\n''{{!!caption}}''\\n\u003C/$checkbox>\u003C/td>\u003Ctd>\\n\\n\u003C$transclude field='description' />\\n\\n\u003C/td>\u003C/tr>\u003C/$list>\\n\u003C/tbody>\u003C/table>\u003C/div>\\n\"},\"$:/plugins/flibbles/relink-titles/language/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Caption\",\"text\":\"Titles\"},\"$:/plugins/flibbles/relink-titles/language/Directory/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Directory/Caption\",\"text\":\"Rename subdirectories\"},\"$:/plugins/flibbles/relink-titles/language/Directory/Description\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Directory/Description\",\"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`.\"},\"$:/plugins/flibbles/relink-titles/language/Lookup/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Lookup/Caption\",\"text\":\"Lookup tiddlers\"},\"$:/plugins/flibbles/relink-titles/language/Help\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Help\",\"text\":\"See the \u003Ca href={{{ [{$:/plugins/flibbles/relink-titles!!demo}addsuffix[#Plugins/Titles]] }}} class=\\\"tc-tiddlylink-external\\\">//Relink-titles// documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink-titles/readme\":{\"title\":\"$:/plugins/flibbles/relink-titles/readme\",\"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 \u003Ca href={{$:/plugins/flibbles/relink-titles!!source}} class=\\\"tc-tiddlylink-external\\\">the tw5-relink website\u003C/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\"},\"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\":{\"title\":\"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\",\"text\":\"/*\\\\\\nmodule-type: relinkoperator\\ntitle: $:/plugins/flibbles/relink-titles/relinkoperations/title.js\\ntype: application/javascript\\n\\nRenames tiddlers which have titles derived from fromTitle. Then it makes\\nsure that those tiddlers are properly relinked too.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar configPrefix = \\\"$:/config/flibbles/relink-titles/relink/\\\";\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n// This is using hotDirectories, which is a deprecat
{"created":"20220329160652137","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE\",\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/Gk0Wk/sidebar-resizer/hook.js\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/hook.js\",\"text\":\"(function () {\\n \\\"use strict\\\";\\n if (typeof window !== \\\"undefined\\\" && window.document) {\\n var sidebarResizerNode = null;\\n var canResize = false;\\n var body = document.querySelector(\\\"body\\\");\\n if (!body) return;\\n\\n function dragBegin(event) {\\n canResize = true;\\n if (window.PointerEvent) body.setPointerCapture(event.pointerId);\\n // When drag begins, prevent text selecting (for event.preventDefault cannot work in Mozilla)\\n body.style.useSelect = \\\"none\\\";\\n body.style.MozUserSelect = \\\"none\\\";\\n }\\n\\n function dragEnd(event) {\\n if (canResize) {\\n canResize = false;\\n if (window.PointerEvent) body.releasePointerCapture(event.pointerId);\\n body.style.useSelect = \\\"auto\\\";\\n body.style.MozUserSelect = \\\"auto\\\";\\n }\\n }\\n\\n $tw.hooks.addHook(\\\"th-page-refreshed\\\", function () {\\n if (\\n sidebarResizerNode &&\\n sidebarResizerNode.ownerDocument.contains(sidebarResizerNode)\\n )\\n return;\\n sidebarResizerNode = document.querySelector(\\\"#gk0wk-sidebar-resize-area\\\");\\n if (!sidebarResizerNode) return;\\n canResize = false;\\n\\n // Hide Sidebar\\n function hideSideBar(event) {\\n $tw.wiki.setText(\\\"$:/state/sidebar\\\", null, null, \\\"no\\\");\\n dragEnd(event);\\n }\\n\\n // Drag to resize\\n function drag(event) {\\n if (!canResize) return;\\n if (!event) event = window.event;\\n // Prevent event pass\\n event.preventDefault(event);\\n event.stopPropagation(event);\\n event.stopImmediatePropagation(event);\\n event.returnValue = false;\\n var widthPercent = 100 - (event.clientX / window.innerWidth) * 100;\\n if (widthPercent > 80) return false;\\n if (window.innerWidth - event.clientX \u003C 100) {\\n $tw.wiki.setText(\\n \\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\",\\n null,\\n null,\\n 30000 / window.innerWidth + \\\"vw\\\"\\n );\\n hideSideBar(event);\\n } else {\\n $tw.wiki.setText(\\n \\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\",\\n null,\\n null,\\n widthPercent + \\\"vw\\\"\\n );\\n }\\n return false;\\n }\\n\\n // Double click to hide sidebar\\n sidebarResizerNode.addEventListener(\\\"dblclick\\\", hideSideBar);\\n // Detect whter PointerEvent is supported\\n if (window.PointerEven
{"text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tiddlywiki5.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus,\\n and the original author of this mode is PMario(https://github.com/pmario) */\\n(function(mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function(CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tiddlywiki5\\\", function(cmCfg, modeCfg) {\\n var styleSheet = {\\n 'rainbow': ['keyword', 'variable-2', 'variable-3']\\n };\\n\\n var macroKeywords = {\\n \\\"changecount\\\": true,\\n \\\"colour\\\": true,\\n \\\"colour-picker\\\": true,\\n \\\"contrastcolour\\\": true,\\n \\\"copy-to-clipboard\\\": true,\\n \\\"csvtiddlers\\\": true,\\n \\\"datauri\\\": true,\\n \\\"dumpvariables\\\": true,\\n \\\"image-picker\\\": true,\\n \\\"jsontiddler\\\": true,\\n \\\"jsontiddlers\\\": true,\\n \\\"lingo\\\": true,\\n \\\"list-links\\\": true,\\n \\\"list-links-draggable\\\": true,\\n \\\"list-tagged-draggable\\\": true,\\n \\\"list-thumbnails\\\": true,\\n \\\"makedatauri\\\": true,\\n \\\"now\\\": true,\\n \\\"qualify\\\": true,\\n \\\"resolvepath\\\": true,\\n \\\"box-shadow\\\": true,\\n \\\"filter\\\": true,\\n \\\"transition\\\": true,\\n \\\"background-linear-gradient\\\": true,\\n \\\"transform-origin\\\": true,\\n \\\"toc\\\": true,\\n \\\"toc-expandable\\\": true,\\n \\\"toc-selective-expandable\\\": true,\\n \\\"toc-tabbed-internal-nav\\\": true,\\n \\\"toc-tabbed-external-nav\\\": true,\\n \\\"tabs\\\": true,\\n \\\"tag\\\": true,\\n \\\"tag-picker\\\": true,\\n \\\"tag-pill\\\": true,\\n \\\"thumbnail\\\": true,\\n \\\"timeline\\\": true,\\n \\\"tree\\\": true,\\n \\\"unusedtitle\\\": true,\\n \\\"version\\\": true\\n };\\n\\n function getMode(name) {\\n if (CodeMirror.findModeByName) {\\n var found = CodeMirror.findModeByName(name);\\n if (found) name = found.mime || found.mimes[0];\\n }\\n var mode_ = CodeMirror.getMode(cmCfg, name);\\n return mode_.name == \\\"null\\\" ? null : mode_;\\n }\\n\\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\\n modeCfg.fencedCodeBlockHighlighting = true;\\n\\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\\n\\n var reHR = /^\\\\-\\\\-\\\\-+$/, // \u003Chr>\\n reBlockQuote = /^\u003C\u003C\u003C/,\\n rePreStart = /^```[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,\\n rePreEnd = /^```$/;\\n\\n function chain(stream, state, f) {\\n state.tokenize = f;\\n return f(stream, state);\\n }\\n\\n function onNewLine(state) {\\n state.line++;\\n state.listLevel = 0;\\n state.boldLine = false;\\n }\\n\\n function tokenBase(stream, state) {\\n var sol = stream.sol();\\n // 解析\\n var tokens = tokenBaseBald(sol, stream, state);\\n if (tokens == null) tokens = '';\\n // <20><>
{"text":"{\"tiddlers\":{\"$:/plugins/kookma/shiraz/history\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\\n\\n* ''2.7.1'' -- 2022.12.17 -- update to Tiddlywiki 5.2.4, few bug fixes\\n* ''2.6.9'' -- 2022.10.17 -- improved Node Explorer, and task Explorer\\n* ''2.6.1'' -- 2022.09.27 -- new subplug Formatter, better task manager\\n* ''2.5.0'' -- 2022.08.02 -- new data block, updated to Tiddlywiki 5.2.3\\n* ''2.4.4'' -- 2021.09.19 -- added css class for tbl-expand customization\\n* ''2.4.2'' -- 2021.09.10 -- quick table with bunch of column formatting\\n* ''2.3.3'' -- 2021.05.20 -- small bug fixes in switch palette\\n* ''2.3.1'' -- 2021.05.19 -- tbl-linktype template to be used for generating node-explorer\\n* ''2.3.0'' -- 2021.05.10 -- switch palette for dim/dark and light palette selection\\n* ''2.2.2'' -- 2021.04.22 -- several issues fixed for pagination, notebook and image classes\\n* ''2.2.0'' -- 2021.02.26 -- updated 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/images/palette-switch\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-palette-button tc-image-button\\\"viewBox=\\\"0 0 16 16\\\"height=22pt>\u003Cpath d=\\\"M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\\\"/>\"},\"$:/plugins/kookma/shiraz/license\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2018-2022 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\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\u003C\u003C\u003C\"},\"$:/plugins/kookma/shiraz/macros/alerts\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define alert(type:primary src width:100% class)\\n\u003Cdiv class=\\\"alert alert-$type$ $class$\\\"style=\\\"width:$width$;\\\">\\n$src$\\n\u003C/div>\\n\\\\end\\n\\\\define alert-leftbar(type:primary src width:100% class)\\n\u003Cdiv class=\\\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\\\"style=\\\"width:$width$;\\\">\\n$src$\\n\u003C/div>\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/badge\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define badge(type:primary src)\u003Cspan class=\\\"badge badge-$type$\\\">$src$\u003C/span>\\n\\\\define badge-pill(type:primary src)\u003Cspan class=\\\"badge badge-pill badge-$type$\\\">$src$\u003C/span>\"},\"$:/plugins/kookma/shiraz/macros/card\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define card(header:Empty title:Empty subtitle:Empty text:Empty footer:Empty width:100% class)\\n\u003Cdiv class=\\\"card mb-3 $class$\\\"style=\\\"width:$width$;\\\">\\n\u003C$reveal tag=div type=nomatch text=\u003C\u003C__header__>>default=Empty>\\n \u003Cdiv class=card-header>$header$\u003C/div>\\n\u003C/$reveal>\\n\u003Cdiv class=car
{"created":"20200325113952303","text":"{\"tiddlers\":{\"$:/plugins/kookma/trashbin/history\":{\"title\":\"$:/plugins/kookma/trashbin/history\",\"created\":\"20200325121105806\",\"modified\":\"20200410061128665\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Trashbin/#ChangeLog\\n\\n* ''1.2.2'' -- 2020.04.10 -- bug fix in remove draft tiddlers to trashbin\\n* ''1.2.1'' -- 2020.03.30 -- bug fix and doc improvement and UI fade correction\\n* ''1.1.2'' -- 2020.03.28 -- stable release with new features and bug fixes\\n* ''0.1.0'' -- 2019.02.12 -- mature public release\\n\"},\"$:/plugins/kookma/trashbin/images/recycle\":{\"title\":\"$:/plugins/kookma/trashbin/images/recycle\",\"created\":\"20190723043410550\",\"modified\":\"20200325115955820\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-recycle tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 512 512\\\">\u003Cpath d=\\\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-down\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-down\",\"caption\":\"sort-alpha-down\",\"created\":\"20200327153959154\",\"modified\":\"20200327185043770\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-down tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-up\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-up\",\"caption\":\"sort-alpha-up (Solid)\",\"created\":\"20200327155639132\",\"modified\":\"20200327162316327\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-up-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72
{"title":"$:/plugins/snowgoon88/edit-comptext","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/plugins/snowgoon88/edit-comptext/config\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/config\",\n \"type\": \"application/json\",\n \"text\": \"{\\n \\\"configuration\\\": {\\n \\\"caseSensitive\\\" : false,\\n \\\"maxMatch\\\" : 8,\\n \\\"minPatLength\\\" : 2,\\n \\\"triggerKeyCombination\\\" : \\\"^ \\\"\\n },\\n \\\"template\\\": [{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"filter\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n }\\n ]\\n}\\n\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/snowgoon88/edit-comptext/edit-comptext.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nTaken from original Edit-text widget\\nVersion 5.1.13 of TW5\\nAdd link-to-tiddler completion in framed.js and simple.js\\n\\nTODO : CHECK usefull, and particularly save_changes after every input ??\\nTODO : where should popupNode be created in the DOM ?\\nTODO : check that options are valid (numeric ?)\\nvar isNumeric = function(n) {\\n return !isNaN(parseFloat(n)) && isFinite(n);\\n};\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar editTextWidgetFactory = require(\\\"$:/core/modules/editor/factory.js\\\").editTextWidgetFactory,\\n\\tFramedCompEngine = require(\\\"$:/plugins/snowgoon88/edit-comptext/framed.js\\\").FramedCompEngine,\\n\\tSimpleCompEngine = require(\\\"$:/plugins/snowgoon88/edit-comptext/simple.js\\\").SimpleCompEngine;\\n\\nexports[\\\"edit-comptext\\\"] = editTextWidgetFactory(FramedCompEngine,SimpleCompEngine);\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/examples\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/examples\",\n \"text\": \"The configuration file [[$:/plugins/snowgoon88/edit-comptext/config]] allow you to use the completion plugin for various usages. Here are some examples...\\n\\n!! Link Completion\\nThe basic and default usage. Completion is triggered by `[[`, the search is among all non-system tiddlers. When selected, the `title` of the tiddler is inserted in the text, surrounded by `[[` and `]]`. This gives the following Completion Template.\\n\\n\\n```\\n{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"title\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n}\\t \\n```\\n\\n\\n!! Special macro completion\\nI have a 'pnjin' macro that is invoked by `\u003C\u003Cpnjin \\\"TiddlerPNJName\\\">>` where 'TiddlerPNJName is a tiddler that hold data about a PNJ. I use tiddlywiki to organise my Role Playing Games campaigns. So, I want `\u003Cp` to trigger the completion. The search is among all non-system tiddlers tagged `PNJ` and, once selected, the title of the tiddler must be inserted surrouned by `\u003C\u003Cpnjin \\\\\\\"` and `\\\\\\\">>`. So...\\n\\n```\\n{\\n\\t\\\"pattern\\\": \\\"\u003Cp\\\",\\n \\t\\\"title\\\": \\\"[tag[PNJ]!is[system]]\\\",\\n \\t\\\"start\\\": \\\"\u003C\u003Cpnjin \\\\\\\"\\\",\\n \\t\\\"end\\\": \\\"\\\\\\\">>\\\"\\n}\\n```\\n\\n!! Insert some templates or stamp or snippets into text.\\nI frequently use some text pattern and I want to insert them easily. So, I could create several tiddlers, tagged '$:stamp' and in their body are the piece of texte I want to insert. The titles of these tiddlers always start with `$:/config/stamp/` (i.e. $:/config/stamp/macro, $:/config/stamp/list1, $:/config/stamp/list2). I want to trigger the completion by using `\u003C\u003C`, then I only want to chose among the last part of the titles of tiddlers tagged `$:stam
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams/CHANGELOG\": {\n \"title\": \"$:/plugins/sq/streams/CHANGELOG\",\n \"text\": \"Release notes for the current release:\\n\\n{{$:/plugins/sq/streams/releasenotes}}\\n\\n[[Full changelog|https://saqimtiaz.github.io/streams/#CHANGELOG]] for Streams\\n\"\n },\n \"$:/plugins/sq/streams/Settings/config\": {\n \"title\": \"$:/plugins/sq/streams/Settings/config\",\n \"caption\": \"Configuration\",\n \"text\": \"\\\\define sortBySettingsGroupFilter()\\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\\n\\\\end\\n\\n\u003C$edit-text tiddler=\\\"$:/state/sq/streams/settings/search\\\" class=\\\"sq-search-input\\\" default=\\\"\\\" tag=\\\"input\\\" type=\\\"search\\\" placeholder=\\\"search...\\\"/>\\n\\n\u003Cdiv class=\\\"sq-list-group sq-list-group-box-shadow sq-list-stream-settings\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/sq/streams]has[settings-template]] +[search:title,caption,description{$:/state/sq/streams/settings/search}] +[sortsub\u003CsortBySettingsGroupFilter>]\\\">\\n\u003C$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\\\"list-condition\\\">\\n\u003Cdiv class=\\\"sq-list-group-item\\\">\\n\u003C$transclude tiddler={{!!settings-template}}/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/div>\"\n },\n \"$:/plugins/sq/streams/Settings/shortcuts\": {\n \"title\": \"$:/plugins/sq/streams/Settings/shortcuts\",\n \"caption\": \"Shortcuts\",\n \"text\": \"\\\\import $:/core/ui/ControlPanel/KeyboardShortcuts\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]removeprefix[$:/config/ShortcutInfo/]]\\\" variable=\\\"shortcutName\\\">\\n\u003C\u003Cshortcut-item>>\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\"\n },\n \"$:/plugins/sq/streams/Settings\": {\n \"title\": \"$:/plugins/sq/streams/Settings\",\n \"tags\": \"$:/tags/ControlPanel\",\n \"caption\": \"Streams settings\",\n \"text\": \"\u003C\u003Ctabs \\\"$:/plugins/sq/streams/Settings/config $:/plugins/sq/streams/Settings/shortcuts\\\" \\\"$:/plugins/sq/streams/Settings/config\\\" \\\"$:/state/streams/settings/tabs\\\">>\\n\"\n },\n \"$:/plugins/sq/streams/action-macros\": {\n \"title\": \"$:/plugins/sq/streams/action-macros\",\n \"text\": \"\\\\whitespace trim\\n\\n\\\\define swiped-right-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[contextmenu]]\\\" variable=\\\"_NULL\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value={{$:/config/sq/streams/swipe-contextmenu-position}}/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define swiped-left-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cunindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define oncontext-menu-actions()\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value=\\\"left\\\"/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\\\\end\\
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams-as-editor/single-tiddler-streams.js\\ntype: application/javascript\\nmodule-type: widget\\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 UUID = (function() {\\n var self = {};\\n var lut = []; for (var i=0; i\u003C256; i++) { lut[i] = (i\u003C16?'0':'')+(i).toString(16); }\\n self.generate = function() {\\n\\tvar d0 = Math.random()*0xffffffff|0;\\n\\tvar d1 = Math.random()*0xffffffff|0;\\n\\tvar d2 = Math.random()*0xffffffff|0;\\n\\tvar d3 = Math.random()*0xffffffff|0;\\n\\treturn lut[d0&0xff]+lut[d0>>8&0xff]+lut[d0>>16&0xff]+lut[d0>>24&0xff]+'-'+\\n\\t lut[d1&0xff]+lut[d1>>8&0xff]+'-'+lut[d1>>16&0x0f|0x40]+lut[d1>>24&0xff]+'-'+\\n\\t lut[d2&0x3f|0x80]+lut[d2>>8&0xff]+'-'+lut[d2>>16&0xff]+lut[d2>>24&0xff]+\\n\\t lut[d3&0xff]+lut[d3>>8&0xff]+lut[d3>>16&0xff]+lut[d3>>24&0xff];\\n }\\n return self;\\n})();\\n\\nvar SingleTiddlerStreamsWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nSingleTiddlerStreamsWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nSingleTiddlerStreamsWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.parentDomNode = parent;\\n\\t//this.renderChildren(parent,nextSibling);\\n\\n\\t\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.invokeAction = function(triggeringWidget,event) {\\n\\tvar sourceTiddler = this.wiki.getTiddler(this.tiddlerTitle);\\n\\tif(!sourceTiddler) {\\n\\t\\treturn;\\n\\t}\\n\\tvar sourceText = \\\"\\\\n\\\\\\\\rules only list \\\\n\\\\n\\\" + this.wiki.getTiddlerText(this.tiddlerTitle);\\n\\tvar wikifyParser = this.wiki.parseText(\\\"text/vnd.tiddlywiki\\\",sourceText, {\\n\\t\\tparseAsInline : false\\n\\t});\\n\\tconsole.log(wikifyParser);\\n\\t\\n\\tvar tree = wikifyParser.tree;\\n\\tif(tree.length == 0 || tree[0].tag !== \\\"ul\\\" || tree.length !== 1) {\\n\\t\\treturn;\\n\\t}\\n\\tvar list = tree[0];\\n\\t\\n\\tthis.nodes = [];\\n\\tvar parentTiddlerFields = {\\n\\t\\ttitle: this.tiddlerTitle\\n\\t}\\n\\tthis.nodes.push(parentTiddlerFields);\\n\\tthis.processList(list,parentTiddlerFields);\\n\\tconsole.log(1);\\n\\t\\n\\tthis.createNodeTiddlers();\\n\\treturn true;\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.createNodeTiddlers = function() {\\n\\tfor(var i=0; i\u003Cthis.nodes.length; i++) {\\n\\t\\tvar tiddler = this.wiki.getTiddler(this.nodes[i].title);\\n\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,this.nodes[i]);\\n\\t\\tthis.wiki.addTiddler(newTiddler);\\n\\t}\\n};\\n\\n// process UL tag\\nSingleTiddlerStreamsWidget.prototype.processList = function(list,parentTiddler) {\\t\\t\\n\\tvar childNodes = [];\\n\\t\\t\\n\\tfor(var i=0; i\u003Clist.children.length; i++) {\\n\\n\\t\\tvar tiddler = {\\n\\t\\t\\t\\\"title\\\": \\\"$:/streams/temp/\\\" + this.tiddlerTitle + \\\"/\\\" + UUID.generate(),\\n\\t\\t\\t\\\"parent\\\": parentTiddler.title,\\n\\t\\t\\t\\\"text\\\": list.children[i].children[0].text,\\n\\t\\t\\t\\\"stream-type\\\" : \\\"default\\\"\\n\\t\\t};\\t\\t\\n\\t\\t\\n\\t\\tvar subList = list.children[i].children[1];\\n\\t\\tif(subList && subList.tag === \\\"ul\\\") {\\n\\t\\t\\tthis.processList(subList,tiddler);\\n\\t\\t}\\n\\t\\t\\n\\t\\tchildNodes.push(tiddler.title);\\n\\t\\tthis.nodes.push(tiddler);\\n\\t\\t// add tiddler to wiki\\n\\t}\\n\\tparentTiddler[\\\"stream-list\\\"] = $tw.utils.stringifyList(childNodes);\\n\\t//save child nodes to stream-list in parent\\n}\\n\\n\\nSingleTiddlerStreamsWidget.prototype.execute = function() {\\n\\tthis.tiddlerTitle = this.getAttribute(\\\"$tiddler\\\",this.getVariable(\\\"currentTiddler\\\"));\\n//\\tthis.makeChil
{"text":"{\n \"tiddlers\": {\n \"$:/config/SearchResults/Default\": {\n \"title\": \"$:/config/SearchResults/Default\",\n \"created\": \"20200820180447855\",\n \"modified\": \"20200820180500121\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"$:/plugins/sq/streams-search/StreamSearchResults\"\n },\n \"$:/plugins/sq/streams-search/stream-root-filter.js\": {\n \"title\": \"$:/plugins/sq/streams-search/stream-root-filter.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams-search/stream-root-filter.js\\ntype: application/javascript\\nmodule-type: filteroperator\\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[\\\"stream-root\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tif(tiddler && tiddler.fields[\\\"parent\\\"] && tiddler.fields[\\\"stream-type\\\"]) {\\t\\t\\t\\n\\n\\t\\t\\tvar parentTiddler = tiddler;\\n\\t\\t\\t\\n\\t\\t\\twhile(parentTiddler && parentTiddler.fields.parent) {\\n\\t\\t\\t\\tparentTiddler = options.wiki.getTiddler(parentTiddler.fields.parent);\\n\\t\\t\\t}\\n\\t\\t\\tif(parentTiddler && parentTiddler.fields && tiddler.fields.title.startsWith(parentTiddler.fields[\\\"title\\\"])) {\\n\\t\\t\\t\\t$tw.utils.pushTop(results,parentTiddler.fields.title);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t}\\n\\t\\t\\t\\n\\t\\t} else {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams-search/StreamSearchResults\": {\n \"title\": \"$:/plugins/sq/streams-search/StreamSearchResults\",\n \"caption\": \"Streams\",\n \"created\": \"20200818210522653\",\n \"modified\": \"20200818212724254\",\n \"tags\": \"$:/tags/SearchResults\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n//\u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n//\u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n\\\\end\\n\u003C\u003CsearchResultList>>\"\n }\n }\n}","version":"0.0.02","type":"application/json","title":"$:/plugins/sq/streams-search","source":"","revision":"0","plugin-type":"plugin","list":"","description":"Streams addon: Search","dependents":"","core-version":">=5.1.22","bag":"default","author":"Saq Imtiaz"},
{"created":"20190412065559089","text":"{\n \"tiddlers\": {\n \"$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\\ntype: application/javascript\\nmodule-type: wikirule\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"checkbox\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\n\\t// Match on [ ], [x], and [X], to the end of the line\\n\\tthis.matchRegExp = /^\\\\[([ xX])\\\\] .*$/mg;\\n};\\n\\n/*\\nRetrieve the configuration state of the clear all button\\n*/\\n\\nexports.shouldShowClearAll = function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var showClearAll = configWidgetFields[\\\"show-clearall\\\"] || \\\"true\\\";\\n return (showClearAll === \\\"true\\\");\\n}\\n\\n/*\\nCreate list items\\n*/\\n\\nexports.parse = function() {\\n var listItems = [];\\n var listStartPos = this.parser.pos;\\n var match = this.match;\\n\\n // Start the list with a \\\"New List Item\\\" placeholder\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem-icon\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n }\\n },\\n {\\n type: \\\"element\\\",\\n tag: \\\"input\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem\\\"},\\n id: {type: \\\"string\\\", value: \\\"checklist-new\\\"},\\n placeholder: {type: \\\"string\\\", value: \\\"New list item (WikiText)\\\"}\\n // impossible? add an aria-label \\\"Write a new todo item\\\"\\n // attribute aria-label seems to be missing in $:/core/modules/widgets/edit.js \\n }\\n },\\n // label for the input field\\n {\\n type: \\\"element\\\",\\n tag: \\\"label\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"Write a new item for the list.\\\"}\\n ]\\n },\\n // (pseudo) button to add the new item to the list\\n {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"tc-btn-invisible tc-btn-mini checklist-add\\\"},\\n title: {type: \\\"string\\\", value: \\\"add to list\\\"}\\n },\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"add list item\\\"}\\n ]\\n }\\n ]\\n }\\n // end of button\\n ]\\n });\\n\\n // Create items in a loop\\n do {\\n var startPos = this.parser.pos;\\n this.parser.pos = this.matchRegExp.lastIndex;\\n var parseResults = this.parser.wiki.parseText(\\n \\\"text/vnd.tiddlywi
{"title":"$:/plugins/tiddlywiki/codemirror","name":"CodeMirror","description":"CodeMirror editor","list":"readme usage keyboard license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/EditorTypeMappings/application/javascript\":{\"title\":\"$:/config/EditorTypeMappings/application/javascript\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/json\":{\"title\":\"$:/config/EditorTypeMappings/application/json\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\":{\"title\":\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/css\":{\"title\":\"$:/config/EditorTypeMappings/text/css\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/html\":{\"title\":\"$:/config/EditorTypeMappings/text/html\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/plain\":{\"title\":\"$:/config/EditorTypeMappings/text/plain\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/x-markdown\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/x-tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/codemirror/cursorBlinkRate\":{\"title\":\"$:/config/codemirror/cursorBlinkRate\",\"type\":\"integer\",\"text\":\"530\"},\"$:/config/codemirror/extraKeysTW\":{\"title\":\"$:/config/codemirror/extraKeysTW\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Esc\\\": \\\"singleSelection\\\",\\n\\t\\\"Esc\\\": \\\"\\\",\\n\\t\\\"Ctrl-S\\\": \\\"\\\",\\n\\t\\\"Ctrl-U\\\": \\\"\\\",\\n\\t\\\"Ctrl-T\\\": \\\"\\\",\\n\\t\\\"Alt-T\\\": \\\"transposeChars\\\",\\n\\t\\\"Alt-U\\\": \\\"undoSelection\\\",\\n\\t\\\"Shift-Alt-U\\\": \\\"redoSelection\\\",\\n\\t\\\"Cmd-U\\\": \\\"\\\",\\n\\t\\\"Tab\\\": \\\"indentAuto()\\\",\\n\\t\\\"Enter\\\": \\\"newLineAndIndent()\\\"\\n}\\n\"},\"$:/config/codemirror/indentUnit\":{\"title\":\"$:/config/codemirror/indentUnit\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/indentWithTabs\":{\"title\":\"$:/config/codemirror/indentWithTabs\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/inputStyle\":{\"title\":\"$:/config/codemirror/inputStyle\",\"type\":\"string\",\"text\":\"textarea\"},\"$:/config/codemirror/keyMap\":{\"title\":\"$:/config/codemirror/keyMap\",\"type\":\"string\",\"text\":\"default\"},\"$:/config/codemirror/lineNumbers\":{\"title\":\"$:/config/codemirror/lineNumbers\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/lineWrapping\":{\"title\":\"$:/config/codemirror/lineWrapping\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/showCursorWhenSelecting\":{\"title\":\"$:/config/codemirror/showCursorWhenSelecting\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/smartIndent\":{\"title\":\"$:/config/codemirror/smartIndent\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/styleActiveLine\":{\"title\":\"$:/config/codemirror/styleActiveLine\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/tabSize\":{\"title\":\"$:/config/codemirror/tabSize\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/theme\":{\"title\":\"$:/config/codemirror/theme\",\"type\":\"string\",\"text\":\"tiddlywiki\"},\"$:/language/codemirror/homeUrl\":{\"title\":\"$:/language/codemirror/homeUrl\",\"text\":\"http://codemirror.net\"},\"$:/language/codemirror/addOnUrl\":{\"title\":\"$:/language/codemirror/addOnUrl\",\"text\":\"http://codemirror.net/doc/manual.html#addons\"},\"$:/language/codemirror/configUrl\":{\"title\":\"$:/language/codemirror/configUrl\",\"text\":\"http://codemirror.net/doc/manual.html#config\"},\"$:/language/codemirror/controlPanel/hint\":{\"title\":\"$:/language/codemirror/controlPanel/hint\",\"text\":\"These settings let you customis
{"title":"$:/plugins/tiddlywiki/codemirror-closebrackets","name":"CodeMirror Close Brackets","description":"Close brackets for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseBrackets\":{\"title\":\"$:/config/codemirror/autoCloseBrackets\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/matchBrackets\":{\"title\":\"$:/config/codemirror/matchBrackets\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js\":{\"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(C){var r={pairs:\\\"()[]{}''\\\\\\\"\\\\\\\"\\\",closeBefore:\\\")]}'\\\\\\\":;>\\\",triples:\\\"\\\",explode:\\\"[]{}\\\"},x=C.Pos;function P(e,t){return\\\"pairs\\\"==t&&\\\"string\\\"==typeof e?e:\\\"object\\\"==typeof e&&null!=e[t]?e[t]:r[t]}C.defineOption(\\\"autoCloseBrackets\\\",!1,function(e,t,r){r&&r!=C.Init&&(e.removeKeyMap(i),e.state.closeBrackets=null),t&&(n(P(t,\\\"pairs\\\")),e.state.closeBrackets=t,e.addKeyMap(i))});var i={Backspace:function(e){var t=k(e);if(!t||e.getOption(\\\"disableInput\\\"))return C.Pass;for(var r=P(t,\\\"pairs\\\"),n=e.listSelections(),i=0;i\u003Cn.length;i++){if(!n[i].empty())return C.Pass;var a=s(e,n[i].head);if(!a||r.indexOf(a)%2!=0)return C.Pass}for(i=n.length-1;0\u003C=i;i--){var o=n[i].head;e.replaceRange(\\\"\\\",x(o.line,o.ch-1),x(o.line,o.ch+1),\\\"+delete\\\")}},Enter:function(n){var e=k(n),t=e&&P(e,\\\"explode\\\");if(!t||n.getOption(\\\"disableInput\\\"))return C.Pass;for(var i=n.listSelections(),r=0;r\u003Ci.length;r++){if(!i[r].empty())return C.Pass;var a=s(n,i[r].head);if(!a||t.indexOf(a)%2!=0)return C.Pass}n.operation(function(){var e=n.lineSeparator()||\\\"\\\\n\\\";n.replaceSelection(e+e,null),n.execCommand(\\\"goCharLeft\\\"),i=n.listSelections();for(var t=0;t\u003Ci.length;t++){var r=i[t].head.line;n.indentLine(r,null,!0),n.indentLine(r+1,null,!0)}})}};function n(e){for(var t=0;t\u003Ce.length;t++){var r=e.charAt(t),n=\\\"'\\\"+r+\\\"'\\\";i[n]||(i[n]=function(t){return function(e){return function(i,e){var t=k(i);if(!t||i.getOption(\\\"disableInput\\\"))return C.Pass;var r=P(t,\\\"pairs\\\"),n=r.indexOf(e);if(-1==n)return C.Pass;for(var a,o=P(t,\\\"closeBefore\\\"),s=P(t,\\\"triples\\\"),l=r.charAt(n+1)==e,c=i.listSelections(),f=n%2==0,h=0;h\u003Cc.length;h++){var u,d=c[h],p=d.head,g=i.getRange(p,x(p.line,p.ch+1));if(f&&!d.empty())u=\\\"surround\\\";else if(!l&&f||g!=e)if(l&&1\u003Cp.ch&&0\u003C=s.indexOf(e)&&i.getRange(x(p.line,p.ch-2),p)==e+e){if(2\u003Cp.ch&&/\\\\bstring/.test(i.getTokenTypeAt(x(p.line,p.ch-2))))return C.Pass;u=\\\"addFour\\\"}else if(l){var v=0==p.ch?\\\" \\\":i.getRange(x(p.line,p.ch-1),p);if(C.isWordChar(g)||v==e||C.isWordChar(v))return C.Pass;u=\\\"both\\\"}else{if(!f||!(0===g.length||/\\\\s/.test(g)||-1\u003Co.indexOf(g)))return C.Pass;u=\\\"both\\\"}else u=l&&function(e,t){var r=e.getTokenAt(x(t.line,t.ch+1));return/\\\\bstring/.test(r.type)&&r.start==t.ch&&(0==t.ch||!/\\\\bstring/.test(e.getTokenTypeAt(t)))}(i,p)?\\\"both\\\":0\u003C=s.indexOf(e)&&i.getRange(p,x(p.line,p.ch+3))==e+e+e?\\\"skipThree\\\":\\\"skip\\\";if(a){if(a!=u)return C.Pass}else a=u}var m=n%2?r.charAt(n-1):e,b=n%2?e:r.charAt(n+1);i.operation(function(){if(\\\"skip\\\"==a)i.execCommand(\\\"goCharRight\\\");else if(\\\"skipThree\\\"==a)for(var e=0;e\u003C3;e++)i.execCommand(\\\"goCharRight\\\");else if(\\\"surround\\\"==a){for(var t=i.getSelections(),e=0;e\u003Ct.length;e++)t[e]=m+t[e]+b;i.replaceSelections(t,\\\"around\\\"),t=i.listSelections().slice();for(e=0;e\u003Ct.length;e++)t[e]=(r=t[e],n=0\u003CC.cmpPos(r.anchor,r.head),{anchor:new x(r.anchor.line,r.anchor.ch+(n?-1:1)),hea
{"title":"$:/plugins/tiddlywiki/codemirror-closetag","name":"CodeMirror Close Tag","description":"Close tags automatically for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseTags\":{\"title\":\"$:/config/codemirror/autoCloseTags\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/language/codemirror/autoCloseTags/hint\":{\"title\":\"$:/language/codemirror/autoCloseTags/hint\",\"text\":\"Auto-close tags\"},\"$:/language/codemirror/autoCloseTags/info\":{\"title\":\"$:/language/codemirror/autoCloseTags/info\",\"text\":\"Whether or not to automatically close tags\"},\"$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js\":{\"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(e){\\\"use strict\\\";var l=e.Pos;function c(e,n){return e.line-n.line||e.ch-n.ch}var n=\\\"A-Z_a-z\\\\\\\\u00C0-\\\\\\\\u00D6\\\\\\\\u00D8-\\\\\\\\u00F6\\\\\\\\u00F8-\\\\\\\\u02FF\\\\\\\\u0370-\\\\\\\\u037D\\\\\\\\u037F-\\\\\\\\u1FFF\\\\\\\\u200C-\\\\\\\\u200D\\\\\\\\u2070-\\\\\\\\u218F\\\\\\\\u2C00-\\\\\\\\u2FEF\\\\\\\\u3001-\\\\\\\\uD7FF\\\\\\\\uF900-\\\\\\\\uFDCF\\\\\\\\uFDF0-\\\\\\\\uFFFD\\\",i=new RegExp(\\\"\u003C(/?)([\\\"+n+\\\"][A-Z_a-z\\\\\\\\u00C0-\\\\\\\\u00D6\\\\\\\\u00D8-\\\\\\\\u00F6\\\\\\\\u00F8-\\\\\\\\u02FF\\\\\\\\u0370-\\\\\\\\u037D\\\\\\\\u037F-\\\\\\\\u1FFF\\\\\\\\u200C-\\\\\\\\u200D\\\\\\\\u2070-\\\\\\\\u218F\\\\\\\\u2C00-\\\\\\\\u2FEF\\\\\\\\u3001-\\\\\\\\uD7FF\\\\\\\\uF900-\\\\\\\\uFDCF\\\\\\\\uFDF0-\\\\\\\\uFFFD-:.0-9\\\\\\\\u00B7\\\\\\\\u0300-\\\\\\\\u036F\\\\\\\\u203F-\\\\\\\\u2040]*)\\\",\\\"g\\\");function a(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?Math.max(i.from,e.firstLine()):e.firstLine(),this.max=i?Math.min(i.to-1,e.lastLine()):e.lastLine()}function s(e,n){var t=e.cm.getTokenTypeAt(l(e.line,n));return t&&/\\\\btag\\\\b/.test(t)}function r(e){return!(e.line>=e.max)&&(e.ch=0,e.text=e.cm.getLine(++e.line),1)}function h(e){return!(e.line\u003C=e.min)&&(e.text=e.cm.getLine(--e.line),e.ch=e.text.length,1)}function F(e){for(;;){var n=e.text.indexOf(\\\">\\\",e.ch);if(-1==n){if(r(e))continue;return}if(s(e,n+1)){var t=e.text.lastIndexOf(\\\"/\\\",n),i=-1\u003Ct&&!/\\\\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?\\\"selfClose\\\":\\\"regular\\\"}e.ch=n+1}}function x(e){for(;;){var n=e.ch?e.text.lastIndexOf(\\\"\u003C\\\",e.ch-1):-1;if(-1==n){if(h(e))continue;return}if(s(e,n+1)){i.lastIndex=n,e.ch=n;var t=i.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function g(e){for(;;){i.lastIndex=e.ch;var n=i.exec(e.text);if(!n){if(r(e))continue;return}if(s(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}function v(e,n){for(var t=[];;){var i,r=g(e),u=e.line,f=e.ch-(r?r[0].length:0);if(!r||!(i=F(e)))return;if(\\\"selfClose\\\"!=i)if(r[1]){for(var o=t.length-1;0\u003C=o;--o)if(t[o]==r[2]){t.length=o;break}if(o\u003C0&&(!n||n==r[2]))return{tag:r[2],from:l(u,f),to:l(e.line,e.ch)}}else t.push(r[2])}}function d(e,n){for(var t=[];;){var i=function(e){for(;;){var n=e.ch?e.text.lastIndexOf(\\\">\\\",e.ch-1):-1;if(-1==n){if(h(e))continue;return}if(s(e,n+1)){var t=e.text.lastIndexOf(\\\"/\\\",n),i=-1\u003Ct&&!/\\\\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?\\\"selfClose\\\":\\\"regular\\\"}e.ch=n}}(e);if(!i)return;if(\\\"selfClose\\\"!=i){var r=e.line,u=e.ch,f=x(e);if(!f)return;if(f[1])t.push(f[2]);else{for(var o=t.length-1;0\u003C=o;--o)if(t[o]==f[2]){t.length=o;break}if(o\u003C0&&(!n||n==f[2]))return{tag:f[2],from:l(e.line,e.ch),to:l(r,u)}}}else x(e)}}e.registerHelper(\\\"fold\\\",\\\"xml\\\",function(e,n){for(var t=new a(e,n.line,0);;){var i=g(t);if(!i||t.line!=n.line)return;var r=F(t);if(!r)return;if(!i[1]&&\\\"s
{"title":"$:/plugins/tiddlywiki/codemirror-fullscreen","name":"CodeMirror Fullscreen","description":"Fullscreen editing for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/fullscreen\":{\"title\":\"$:/config/codemirror/fullscreen\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"F11\\\": \\\"togglefullscreen\\\"\\n}\"},\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js\":{\"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\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css\":{\"text\":\".CodeMirror-fullscreen {\\n position: fixed;\\n top: 0; left: 0; right: 0; bottom: 0;\\n height: auto;\\n z-index: 9;\\n}\\n\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror-fullscreen/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-fullscreen/readme\",\"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\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-mode-css","name":"CodeMirror Mode CSS","description":"CSS highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/css/css.js\":{\"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(T){\\\"use strict\\\";function e(e){for(var t={},r=0;r\u003Ce.length;++r)t[e[r].toLowerCase()]=!0;return t}T.defineMode(\\\"css\\\",function(e,t){var r=t.inline;t.propertyKeywords||(t=T.resolveMode(\\\"text/css\\\"));var a,i,n=e.indentUnit,l=t.tokenHooks,o=t.documentTypes||{},s=t.mediaTypes||{},d=t.mediaFeatures||{},c=t.mediaValueKeywords||{},p=t.propertyKeywords||{},u=t.nonStandardPropertyKeywords||{},m=t.fontProperties||{},b=t.counterDescriptors||{},g=t.colorKeywords||{},h=t.valueKeywords||{},f=t.allowNested,k=t.lineComment,y=!0===t.supportsAtComponent,w=!1!==e.highlightNonStandardPropertyKeywords;function v(e,t){return a=t,e}function x(i){return function(e,t){for(var r,o=!1;null!=(r=e.next());){if(r==i&&!o){\\\")\\\"==i&&e.backUp(1);break}o=!o&&\\\"\\\\\\\\\\\"==r}return r!=i&&(o||\\\")\\\"==i)||(t.tokenize=null),a=\\\"string\\\"}}function z(e,t){return e.next(),e.match(/\\\\s*[\\\\\\\"\\\\')]/,!1)?t.tokenize=null:t.tokenize=x(\\\")\\\"),a=\\\"(\\\",null}function j(e,t,r){this.type=e,this.indent=t,this.prev=r}function P(e,t,r,o){return e.context=new j(r,t.indentation()+(!1===o?0:n),e.context),r}function K(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function q(e,t,r){return _[r.context.type](e,t,r)}function C(e,t,r,o){for(var i=o||1;0\u003Ci;i--)r.context=r.context.prev;return q(e,t,r)}function B(e){var t=e.current().toLowerCase();i=h.hasOwnProperty(t)?\\\"atom\\\":g.hasOwnProperty(t)?\\\"keyword\\\":\\\"variable\\\"}var _={top:function(e,t,r){if(\\\"{\\\"==e)return P(r,t,\\\"block\\\");if(\\\"}\\\"==e&&r.context.prev)return K(r);if(y&&/@component/i.test(e))return P(r,t,\\\"atComponentBlock\\\");if(/^@(-moz-)?document$/i.test(e))return P(r,t,\\\"documentTypes\\\");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return P(r,t,\\\"atBlock\\\");if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,\\\"restricted_atBlock_before\\\";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return\\\"keyframes\\\";if(e&&\\\"@\\\"==e.charAt(0))return P(r,t,\\\"at\\\");if(\\\"hash\\\"==e)i=\\\"builtin\\\";else if(\\\"word\\\"==e)i=\\\"tag\\\";else{if(\\\"variable-definition\\\"==e)return\\\"maybeprop\\\";if(\\\"interpolation\\\"==e)return P(r,t,\\\"interpolation\\\");if(\\\":\\\"==e)return\\\"pseudo\\\";if(f&&\\\"(\\\"==e)return P(r,t,\\\"parens\\\")}return r.context.type},block:function(e,t,r){if(\\\"word\\\"!=e)return\\\"meta\\\"==e?\\\"block\\\":f||\\\"hash\\\"!=e&&\\\"qualifier\\\"!=e?_.top(e,t,r):(i=\\\"error\\\",\\\"block\\\");var o=t.current().toLowerCase();return p.hasOwnProperty(o)?(i=\\\"property\\\",\\\"maybeprop\\\"):u.hasOwnProperty(o)?(i=w?\\\"string-2\\\":\\\"property\\\",\\\"maybeprop\\\"):f?(i=t.match(/^\\\\s*:(?:\\\\s|$)/,!1)?\\\"property\\\":\\\"tag\\\",\\\"block\\\"):(i+=\\\" error\\\",\\\"maybeprop\\\")},maybeprop:function(e,t,r){return\\\":\\\"==e?P(r,t,\\\"prop\\\"):q(e,t,r)},prop:function(e,t,r){if(\\\";\\\"==e)return K(r);if(\\\"{\\\"==e&&f)return P(r,t,\\\"propBlock\\\");if(\\\"}\\\"==e||\\\"{\\\"==e)return C(e,t,r);if(\\\"(\\\"==e)return P(r,t,\\\"parens\\\");if(\\\"hash\\\"!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if(\\\"word\\\"==e)B(t);else if(\\\"interpolation\\\"==e)return P(r,t,\\\"interpolation\\\")}else i+=\\\" error\\\";return\\\"prop\\\"},propBlock:function(e,t,r){return\\\"}\\\"==e?K(r):\\\"word\\\"==e?(i=
{"title":"$:/plugins/tiddlywiki/codemirror-mode-javascript","name":"CodeMirror Mode JavaScript","description":"JavaScript highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js\":{\"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(tt){\\\"use strict\\\";tt.defineMode(\\\"javascript\\\",function(e,l){var t,r,n,a,i,o,d=e.indentUnit,p=l.statementIndent,c=l.jsonld,s=l.json||c,u=l.typescript,f=l.wordCharacters||/[\\\\w$\\\\xa1-\\\\uffff]/,m=(t=v(\\\"keyword a\\\"),r=v(\\\"keyword b\\\"),n=v(\\\"keyword c\\\"),a=v(\\\"keyword d\\\"),i=v(\\\"operator\\\"),{if:v(\\\"if\\\"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:v(\\\"new\\\"),delete:n,void:n,throw:n,debugger:v(\\\"debugger\\\"),var:v(\\\"var\\\"),const:v(\\\"var\\\"),let:v(\\\"var\\\"),function:v(\\\"function\\\"),catch:v(\\\"catch\\\"),for:v(\\\"for\\\"),switch:v(\\\"switch\\\"),case:v(\\\"case\\\"),default:v(\\\"default\\\"),in:i,typeof:i,instanceof:i,true:o={type:\\\"atom\\\",style:\\\"atom\\\"},false:o,null:o,undefined:o,NaN:o,Infinity:o,this:v(\\\"this\\\"),class:v(\\\"class\\\"),super:v(\\\"atom\\\"),yield:n,export:v(\\\"export\\\"),import:v(\\\"import\\\"),extends:n,await:n});function v(e){return{type:e,style:\\\"keyword\\\"}}var k,y,w=/[+\\\\-*&%=\u003C>!?|~^@]/,b=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\\\"/;function x(e,t,r){return k=e,y=r,t}function h(e,t){var a,r=e.next();if('\\\"'==r||\\\"'\\\"==r)return t.tokenize=(a=r,function(e,t){var r,n=!1;if(c&&\\\"@\\\"==e.peek()&&e.match(b))return t.tokenize=h,x(\\\"jsonld-keyword\\\",\\\"meta\\\");for(;null!=(r=e.next())&&(r!=a||n);)n=!n&&\\\"\\\\\\\\\\\"==r;return n||(t.tokenize=h),x(\\\"string\\\",\\\"string\\\")}),t.tokenize(e,t);if(\\\".\\\"==r&&e.match(/^\\\\d[\\\\d_]*(?:[eE][+\\\\-]?[\\\\d_]+)?/))return x(\\\"number\\\",\\\"number\\\");if(\\\".\\\"==r&&e.match(\\\"..\\\"))return x(\\\"spread\\\",\\\"meta\\\");if(/[\\\\[\\\\]{}\\\\(\\\\),;\\\\:\\\\.]/.test(r))return x(r);if(\\\"=\\\"==r&&e.eat(\\\">\\\"))return x(\\\"=>\\\",\\\"operator\\\");if(\\\"0\\\"==r&&e.match(/^(?:x[\\\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return x(\\\"number\\\",\\\"number\\\");if(/\\\\d/.test(r))return e.match(/^[\\\\d_]*(?:n|(?:\\\\.[\\\\d_]*)?(?:[eE][+\\\\-]?[\\\\d_]+)?)?/),x(\\\"number\\\",\\\"number\\\");if(\\\"/\\\"==r)return e.eat(\\\"*\\\")?(t.tokenize=g)(e,t):e.eat(\\\"/\\\")?(e.skipToEnd(),x(\\\"comment\\\",\\\"comment\\\")):et(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if(\\\"/\\\"==t&&!n)return;\\\"[\\\"==t?n=!0:n&&\\\"]\\\"==t&&(n=!1)}r=!r&&\\\"\\\\\\\\\\\"==t}}(e),e.match(/^\\\\b(([gimyus])(?![gimyus]*\\\\2))+\\\\b/),x(\\\"regexp\\\",\\\"string-2\\\")):(e.eat(\\\"=\\\"),x(\\\"operator\\\",\\\"operator\\\",e.current()));if(\\\"`\\\"==r)return(t.tokenize=j)(e,t);if(\\\"#\\\"==r&&\\\"!\\\"==e.peek())return e.skipToEnd(),x(\\\"meta\\\",\\\"meta\\\");if(\\\"#\\\"==r&&e.eatWhile(f))return x(\\\"variable\\\",\\\"property\\\");if(\\\"\u003C\\\"==r&&e.match(\\\"!--\\\")||\\\"-\\\"==r&&e.match(\\\"->\\\")&&!/\\\\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),x(\\\"comment\\\",\\\"comment\\\");if(w.test(r))return\\\">\\\"==r&&t.lexical&&\\\">\\\"==t.lexical.type||(e.eat(\\\"=\\\")?\\\"!\\\"!=r&&\\\"=\\\"!=r||e.eat(\\\"=\\\"):/[\u003C>*+\\\\-|&?]/.test(r)&&(e.eat(r),\\\">\\\"==r&&e.eat(r))),\\\"?\\\"==r&&e.eat(\\\".\\\")?x(\\\".\\\"):x(\\\"operator\\\",\\\"operator\\\",e.current());if(f.test(r)){e.eatWhile(f);var n=e.current();if(\\\".\\\"!=t.lastType){if(m.propertyIsEnumerable(n)){var i=m[n];return x(i.type
{"title":"$:/plugins/tiddlywiki/codemirror-mode-markdown","name":"CodeMirror Mode Markdown","description":"Markdown highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-xml","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js\":{\"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\\\"),require(\\\"../xml/xml\\\"),require(\\\"../tw-meta\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../xml/xml\\\",\\\"../tw-meta\\\"],t):t(CodeMirror)}(function(j){\\\"use strict\\\";j.defineMode(\\\"markdown\\\",function(c,x){var A=j.getMode(c,\\\"text/html\\\"),u=\\\"null\\\"==A.name;void 0===x.highlightFormatting&&(x.highlightFormatting=!1),void 0===x.maxBlockquoteDepth&&(x.maxBlockquoteDepth=0),void 0===x.taskLists&&(x.taskLists=!1),void 0===x.strikethrough&&(x.strikethrough=!1),void 0===x.emoji&&(x.emoji=!1),void 0===x.fencedCodeBlockHighlighting&&(x.fencedCodeBlockHighlighting=!0),void 0===x.fencedCodeBlockDefaultMode&&(x.fencedCodeBlockDefaultMode=\\\"text/plain\\\"),void 0===x.xml&&(x.xml=!0),void 0===x.tokenTypeOverrides&&(x.tokenTypeOverrides={});var C={header:\\\"header\\\",code:\\\"comment\\\",quote:\\\"quote\\\",list1:\\\"variable-2\\\",list2:\\\"variable-3\\\",list3:\\\"keyword\\\",hr:\\\"hr\\\",image:\\\"image\\\",imageAltText:\\\"image-alt-text\\\",imageMarker:\\\"image-marker\\\",formatting:\\\"formatting\\\",linkInline:\\\"link\\\",linkEmail:\\\"link\\\",linkText:\\\"link\\\",linkHref:\\\"string\\\",em:\\\"em\\\",strong:\\\"strong\\\",strikethrough:\\\"strikethrough\\\",emoji:\\\"builtin\\\"};for(var t in C)C.hasOwnProperty(t)&&x.tokenTypeOverrides[t]&&(C[t]=x.tokenTypeOverrides[t]);var f=/^([*\\\\-_])(?:\\\\s*\\\\1){2,}\\\\s*$/,k=/^(?:[*\\\\-+]|^[0-9]+([.)]))\\\\s+/,S=/^\\\\[(x| )\\\\](?=\\\\s)/i,F=x.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,D=/^ {0,3}(?:\\\\={1,}|-{2,})\\\\s*$/,i=/^[^#!\\\\[\\\\]*_\\\\\\\\\u003C>` \\\"'(~:]+/,p=/^(~~~+|```+)[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,E=/^\\\\s*\\\\[[^\\\\]]+?\\\\]:.*$/,v=/[!\\\"#$%&'()*+,\\\\-.\\\\/:;\u003C=>?@\\\\[\\\\\\\\\\\\]^_`{|}~\\\\xA1\\\\xA7\\\\xAB\\\\xB6\\\\xB7\\\\xBB\\\\xBF\\\\u037E\\\\u0387\\\\u055A-\\\\u055F\\\\u0589\\\\u058A\\\\u05BE\\\\u05C0\\\\u05C3\\\\u05C6\\\\u05F3\\\\u05F4\\\\u0609\\\\u060A\\\\u060C\\\\u060D\\\\u061B\\\\u061E\\\\u061F\\\\u066A-\\\\u066D\\\\u06D4\\\\u0700-\\\\u070D\\\\u07F7-\\\\u07F9\\\\u0830-\\\\u083E\\\\u085E\\\\u0964\\\\u0965\\\\u0970\\\\u0AF0\\\\u0DF4\\\\u0E4F\\\\u0E5A\\\\u0E5B\\\\u0F04-\\\\u0F12\\\\u0F14\\\\u0F3A-\\\\u0F3D\\\\u0F85\\\\u0FD0-\\\\u0FD4\\\\u0FD9\\\\u0FDA\\\\u104A-\\\\u104F\\\\u10FB\\\\u1360-\\\\u1368\\\\u1400\\\\u166D\\\\u166E\\\\u169B\\\\u169C\\\\u16EB-\\\\u16ED\\\\u1735\\\\u1736\\\\u17D4-\\\\u17D6\\\\u17D8-\\\\u17DA\\\\u1800-\\\\u180A\\\\u1944\\\\u1945\\\\u1A1E\\\\u1A1F\\\\u1AA0-\\\\u1AA6\\\\u1AA8-\\\\u1AAD\\\\u1B5A-\\\\u1B60\\\\u1BFC-\\\\u1BFF\\\\u1C3B-\\\\u1C3F\\\\u1C7E\\\\u1C7F\\\\u1CC0-\\\\u1CC7\\\\u1CD3\\\\u2010-\\\\u2027\\\\u2030-\\\\u2043\\\\u2045-\\\\u2051\\\\u2053-\\\\u205E\\\\u207D\\\\u207E\\\\u208D\\\\u208E\\\\u2308-\\\\u230B\\\\u2329\\\\u232A\\\\u2768-\\\\u2775\\\\u27C5\\\\u27C6\\\\u27E6-\\\\u27EF\\\\u2983-\\\\u2998\\\\u29D8-\\\\u29DB\\\\u29FC\\\\u29FD\\\\u2CF9-\\\\u2CFC\\\\u2CFE\\\\u2CFF\\\\u2D70\\\\u2E00-\\\\u2E2E\\\\u2E30-\\\\u2E42\\\\u3001-\\\\u3003\\\\u3008-\\\\u3011\\\\u3014-\\\\u301F\\\\u3030\\\\u303D\\\\u30A0\\\\u30FB\\\\uA4FE\\\\uA4FF\\\\uA60D-\\\\uA60F\\\\uA673\\\\uA67E\\\\uA6F2-\\\\uA6F7\\\\uA874-\\\\uA877\\\\uA8CE\\\\uA8CF\\\\uA8F8-\\\\uA8FA\\\\uA8FC\\\\uA92E\\\\uA92F\\\\uA95F\\\\uA9C1-\\\\uA9CD\\\\uA9DE\\\\uA9DF\\\\uAA5C-\\\\uAA5F\\\\uAADE\\\\uAADF\\\\uAAF0\\\\uAAF1\\\\uABEB\\\\uFD3E\\\\uFD3F\\\\uFE10-\\\\uFE19\\\\uFE30-\\\\uFE52\\\\uFE54-\\\\uFE61\\\\u
{"title":"$:/plugins/tiddlywiki/codemirror-mode-xml","name":"CodeMirror Mode XML","description":"XML highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js\":{\"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(N){\\\"use strict\\\";var y={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},z={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};N.defineMode(\\\"xml\\\",function(t,e){var i,a,l=t.indentUnit,u={},n=e.htmlMode?y:z;for(var r in n)u[r]=n[r];for(var r in e)u[r]=e[r];function c(e,n){function t(t){return(n.tokenize=t)(e,n)}var r=e.next();if(\\\"\u003C\\\"==r)return e.eat(\\\"!\\\")?e.eat(\\\"[\\\")?e.match(\\\"CDATA[\\\")?t(s(\\\"atom\\\",\\\"]]>\\\")):null:e.match(\\\"--\\\")?t(s(\\\"comment\\\",\\\"--\\\\x3e\\\")):e.match(\\\"DOCTYPE\\\",!0,!0)?(e.eatWhile(/[\\\\w\\\\._\\\\-]/),t(function r(o){return function(t,e){for(var n;null!=(n=t.next());){if(\\\"\u003C\\\"==n)return e.tokenize=r(o+1),e.tokenize(t,e);if(\\\">\\\"==n){if(1!=o)return e.tokenize=r(o-1),e.tokenize(t,e);e.tokenize=c;break}}return\\\"meta\\\"}}(1))):null:e.eat(\\\"?\\\")?(e.eatWhile(/[\\\\w\\\\._\\\\-]/),n.tokenize=s(\\\"meta\\\",\\\"?>\\\"),\\\"meta\\\"):(i=e.eat(\\\"/\\\")?\\\"closeTag\\\":\\\"openTag\\\",n.tokenize=d,\\\"tag bracket\\\");if(\\\"&\\\"!=r)return e.eatWhile(/[^&\u003C]/),null;var o=e.eat(\\\"#\\\")?e.eat(\\\"x\\\")?e.eatWhile(/[a-fA-F\\\\d]/)&&e.eat(\\\";\\\"):e.eatWhile(/[\\\\d]/)&&e.eat(\\\";\\\"):e.eatWhile(/[\\\\w\\\\.\\\\-:]/)&&e.eat(\\\";\\\");return o?\\\"atom\\\":\\\"error\\\"}function d(t,e){var n=t.next();if(\\\">\\\"==n||\\\"/\\\"==n&&t.eat(\\\">\\\"))return e.tokenize=c,i=\\\">\\\"==n?\\\"endTag\\\":\\\"selfcloseTag\\\",\\\"tag bracket\\\";if(\\\"=\\\"==n)return i=\\\"equals\\\",null;if(\\\"\u003C\\\"!=n)return/[\\\\'\\\\\\\"]/.test(n)?(e.tokenize=(r=n,a.isInAttribute=!0,a),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\']*[^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\'\\\\/]/),\\\"word\\\");e.tokenize=c,e.state=g,e.tagName=e.tagStart=null;var r,o=e.tokenize(t,e);return o?o+\\\" tag error\\\":\\\"tag error\\\";function a(t,e){for(;!t.eol();)if(t.next()==r){e.tokenize=d;break}return\\\"string\\\"}}function s(n,r){return function(t,e){for(;!t.eol();){if(t.match(r)){e.tokenize=c;break}t.next()}return n}}function f(t,e,n){this.prev=t.context,this.tagName=e||\\\"\\\",this.indent=t.indented,this.startOfLine=n,(u.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function o(t){t.context&&(t.context=t.context.prev)}function m(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!u.contextGrabbers.hasOwnProperty(n)||!u.contextGrabbers[n].hasOwnProperty(e))return;o(t)}}function g(t,e,n){return
{"title":"$:/plugins/tiddlywiki/codemirror-search-replace","name":"CodeMirror Search and Replace","description":"Search and replace for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/addon/search/search.js\":{\"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(\\\"./searchcursor\\\"),require(\\\"../dialog/dialog\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"./searchcursor\\\",\\\"../dialog/dialog\\\"],e):e(CodeMirror)}(function(d){\\\"use strict\\\";function o(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function m(e){return e.state.search||(e.state.search=new o)}function a(e){return\\\"string\\\"==typeof e&&e==e.toLowerCase()}function y(e,o,n){return e.getSearchCursor(o,n,{caseFold:a(o),multiline:!0})}function h(e,o,n,r,t){e.openDialog?e.openDialog(o,t,{value:r,selectValueOnOpen:!0,bottom:e.options.search.bottom}):t(prompt(n,r))}function r(e){return e.replace(/\\\\\\\\([nrt\\\\\\\\])/g,function(e,o){return\\\"n\\\"==o?\\\"\\\\n\\\":\\\"r\\\"==o?\\\"\\\\r\\\":\\\"t\\\"==o?\\\"\\\\t\\\":\\\"\\\\\\\\\\\"==o?\\\"\\\\\\\\\\\":e})}function s(e){var o=e.match(/^\\\\/(.*)\\\\/([a-z]*)$/);if(o)try{e=new RegExp(o[1],-1==o[2].indexOf(\\\"i\\\")?\\\"\\\":\\\"i\\\")}catch(e){}else e=r(e);return(\\\"string\\\"==typeof e?\\\"\\\"==e:e.test(\\\"\\\"))&&(e=/x^/),e}function g(e,o,n){var r,t;o.queryText=n,o.query=s(n),e.removeOverlay(o.overlay,a(o.query)),o.overlay=(r=o.query,t=a(o.query),\\\"string\\\"==typeof r?r=new RegExp(r.replace(/[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]/g,\\\"\\\\\\\\$&\\\"),t?\\\"gi\\\":\\\"g\\\"):r.global||(r=new RegExp(r.source,r.ignoreCase?\\\"gi\\\":\\\"g\\\")),{token:function(e){r.lastIndex=e.pos;var o=r.exec(e.string);if(o&&o.index==e.pos)return e.pos+=o[0].length||1,\\\"searching\\\";o?e.pos=o.index:e.skipToEnd()}}),e.addOverlay(o.overlay),e.showMatchesOnScrollbar&&(o.annotate&&(o.annotate.clear(),o.annotate=null),o.annotate=e.showMatchesOnScrollbar(o.query,a(o.query)))}function n(a,o,e,n){var r=m(a);if(r.query)return x(a,o);var t,s,i,c,l,u,p,f=a.getSelection()||r.lastQuery;f instanceof RegExp&&\\\"x^\\\"==f.source&&(f=null),e&&a.openDialog?(t=null,s=function(e,o){d.e_stop(o),e&&(e!=r.queryText&&(g(a,r,e),r.posFrom=r.posTo=a.getCursor()),t&&(t.style.opacity=1),x(a,o.shiftKey,function(e,o){var n;o.line\u003C3&&document.querySelector&&(n=a.display.wrapper.querySelector(\\\".CodeMirror-dialog\\\"))&&n.getBoundingClientRect().bottom-4>a.cursorCoords(o,\\\"window\\\").top&&((t=n).style.opacity=.4)}))},c=b(i=a),l=f,u=s,p=function(e,o){var n=d.keyName(e),r=a.getOption(\\\"extraKeys\\\"),t=r&&r[n]||d.keyMap[a.getOption(\\\"keyMap\\\")][n];\\\"findNext\\\"==t||\\\"findPrev\\\"==t||\\\"findPersistentNext\\\"==t||\\\"findPersistentPrev\\\"==t?(d.e_stop(e),g(a,m(a),o),a.execCommand(t)):\\\"find\\\"!=t&&\\\"findPersistent\\\"!=t||(d.e_stop(e),s(o,e))},i.openDialog(c,u,{value:l,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){v(i)},onKeyDown:p,bottom:i.options.search.bottom}),n&&f&&(g(a,r,f),x(a,o))):h(a,b(a),\\\"Search for:\\\",f,function(e){e&&!r.query&&a.operation(function(){g(a,r,e),r.posFrom=r.posTo=a.getCursor(),x(a,o)})})}function x(n,r,t){n.operation(function(){var e=m(n),o=y(n,e.query,r?e.posFrom:e.posTo);(o.find(r)||(o=y(n,e.query,r?d.Pos(n.lastLine()):d.Pos(n.firstLine(),0))).find(r))&&(n.setSelection(o.from(),o.to()),n.scrollIntoView({from:o.from(),to:o.to()},20),e.posFrom=o.from(),e.posTo=o.to(),t&&t(o.from(),o.to()))})}function v(o){o.operation(function(){var e=m(o);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,o.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}func
{"title":"$:/plugins/tiddlywiki/highlight","name":"Highlight","description":"Highlight.js syntax highlighting","author":"Joao Bolila","list":"readme usage license","version":"5.2.5","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/HighlightPlugin/TypeMappings/application/javascript\":{\"text\":\"javascript\"},\"$:/config/HighlightPlugin/TypeMappings/application/json\":{\"text\":\"json\"},\"$:/config/HighlightPlugin/TypeMappings/text/css\":{\"text\":\"css\"},\"$:/config/HighlightPlugin/TypeMappings/text/html\":{\"text\":\"html\"},\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\":{\"text\":\"xml\"},\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\":{\"text\":\"markdown\"},\"$:/plugins/tiddlywiki/highlight/highlight.js\":{\"text\":\"var e,n=require('$:/plugins/tiddlywiki/highlight/highlight.js'),n=function(){'use strict';var e={exports:{}};function t(n){return n instanceof Map?n.clear=n.delete=n.set=()=>{throw Error('map is read-only')}:n instanceof Set&&(n.add=n.clear=n.delete=()=>{throw Error('set is read-only')}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(e=>{e=n[e];'object'!=typeof e||Object.isFrozen(e)||t(e)}),n}e.exports=t,e.exports.default=t;var $=e.exports;class O{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function n(e){return e.replace(/&/g,'&amp;').replace(/\u003C/g,'&lt;').replace(/>/g,'&gt;').replace(/\\\"/g,'&quot;').replace(/'/g,'&#x27;')}function l(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n];return n.forEach(e=>{for(const n in e)t[n]=e[n]}),t}const i=e=>!!e.kind;class x{constructor(e,n){this.buffer='',this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=n(e)}openNode(e){var n,t,a;i(e)&&(a=e.kind,a=e.sublanguage?'language-'+a:([e,n]=[a,{prefix:this.classPrefix}['prefix']],e.includes('.')?[''+n+(t=e.split('.')).shift(),...t.map((e,n)=>''+e+'_'.repeat(n+1))].join(' '):''+n+e),this.span(a))}closeNode(e){i(e)&&(this.buffer+='\u003C/span>')}value(){return this.buffer}span(e){this.buffer+=`\u003Cspan class=\\\"${e}\\\">`}}class a{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){e={kind:e,children:[]};this.add(e),this.stack.push(e)}closeNode(){if(1\u003Cthis.stack.length)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(n,e){return'string'==typeof e?n.addText(e):e.children&&(n.openNode(e),e.children.forEach(e=>this._walk(n,e)),n.closeNode(e)),n}static _collapse(e){'string'!=typeof e&&e.children&&(e.children.every(e=>'string'==typeof e)?e.children=[e.children.join('')]:e.children.forEach(e=>{a._collapse(e)}))}}class F extends a{constructor(e){super(),this.options=e}addKeyword(e,n){''!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){''!==e&&this.add(e)}addSublanguage(e,n){e=e.root;e.kind=n,e.sublanguage=!0,this.add(e)}toHTML(){return new x(this,this.options).value()}finalize(){return!0}}function c(e){return e?'string'==typeof e?e:e.source:null}function r(e){return s('(?=',e,')')}function U(e){return s('(?:',e,')*')}function j(e){return s('(?:',e,')?')}function s(...e){return e.map(e=>c(e)).join('')}function d(...e){var n,t='object'==typeof(n=(t=e)[t.length-1])&&n.constructor===Object?(t.splice(t.length-1,1),n):{};return'('+(t.capture?'':'?:')+e.map(e=>c(e)).join('|')+')'}function g(e){return RegExp(e.toString()+'|').exec('').length-1}const k=/\\\\[(?:[^\\\\\\\\\\\\]]|\\\\\\\\.)*\\\\]|\\\\(\\\\??|\\\\\\\\([1-9][0-9]*)|\\\\\\\\./;function u(e,{joinWith:n}){let i=0;return e.map(e=>{var n=i+=1;let t=c(e),a='';for(;0\u003Ct.length;){const e=k.exec(t);if(!e){a+=t;break}a+=t.substring(0,e.index),t=t.substring(e.index+e[0].length),'\\\\\\\\'===e[0][0]&&e[1]?a+='\\\\\\\\'+(Number(e[1])+n):(a+=e[0],'('===e[0]&&i++)}return a}).map(e=>`(${e})`).jo
{"title":"$:/plugins/tiddlywiki/markdown","name":"Markdown","description":"Markdown parser based on remarkable by Jon Schlinkert and remarkable-katex by Brad Howes","list":"readme usage remarkable-license remarkable-katex-license","version":"5.2.5","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/markdown/EditorToolbar/bold\":{\"list-after\":\"$:/core/ui/EditorToolbar/bold\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/bold\",\"caption\":\"{{$:/language/Buttons/Bold/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Bold/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((bold))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=** suffix=**/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-1\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-1\",\"caption\":\"{{$:/language/Buttons/Heading1/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading1/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-1))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=1/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-2\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-2\",\"caption\":\"{{$:/language/Buttons/Heading2/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading2/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-2))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=2/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-3\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-3\",\"caption\":\"{{$:/language/Buttons/Heading3/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading3/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-3))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=3/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-4\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-4\",\"caption\":\"{{$:/language/Buttons/Heading4/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading4/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-4))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=4/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-5\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-5\",\"caption\":\"{{$:/language/Buttons/Heading5/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading5/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-5))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=5/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-6\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-6\",\"caption\":\"{{$:/language/Buttons/Heading6/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading6/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-6))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=6/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/italic\":{\"list-after\":\"$:/core/ui/EditorToolbar/italic\",\"tags\"
{"title":"$:/plugins/tiddlywiki/railroad","name":"Railroad","description":"Railroad diagram generator","author":"Astrid Elocson","list":"readme usage syntax example","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/railroad/components.js\":{\"title\":\"$:/plugins/tiddlywiki/railroad/components.js\",\"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\u003Carray.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
{"title":"$:/plugins/wikilabs/link-to-tabs","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/core/macros/tabs\": {\n \"title\": \"$:/core/macros/tabs\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define tabs(tabsList,default,state:\\\"$:/state/tab\\\",class,template,buttonTemplate,retain,actions,explicitState)\\n\u003C$set name=\\\"qualifiedState\\\" value=\u003C\u003Cqualify \\\"$state$\\\">>>\\n\u003C$set name=\\\"tabsState\\\" filter=\\\"[\u003C__explicitState__>minlength[1]] ~[\u003CqualifiedState>]\\\">\\n\u003Cdiv class=\\\"tc-tab-set $class$\\\">\\n\u003Cdiv class=\\\"tc-tab-buttons $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\" storyview=\\\"pop\\\">\u003C$set name=\\\"save-currentTiddler\\\" value=\u003C\u003CcurrentTiddler>>>\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\u003C$button set=\u003C\u003CtabsState>> setTo=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" selectedClass=\\\"tc-tab-selected\\\" tooltip={{!!tooltip}}>\\n\u003C$tiddler tiddler=\u003C\u003Csave-currentTiddler>>>\\n\u003C$set name=\\\"tv-wikilinks\\\" value=\\\"no\\\">\\n\u003C$transclude tiddler=\\\"$buttonTemplate$\\\" mode=\\\"inline\\\">\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\\\"caption\\\">\\n\u003C$macrocall $name=\\\"currentTab\\\" $type=\\\"text/plain\\\" $output=\\\"text/plain\\\"/>\\n\u003C/$transclude>\\n\u003C/$transclude>\\n\u003C/$set>\u003C/$tiddler>$actions$\u003C/$button>\u003Cspan class=\\\"wltc-link-to-tab\\\">\u003C$link overrideClass=\\\"\\\" to=\u003C\u003CcurrentTiddler>> >{{$:/core/images/link}}\u003C/$link>\u003C/span>\u003C/$tiddler>\u003C/$set>\u003C/$list>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-tab-divider $class$\\\"/>\\n\u003Cdiv class=\\\"tc-tab-content $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\">\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CtabsState>> text=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" retain=\\\"\\\"\\\"$retain$\\\"\\\"\\\">\\n\\n\u003C$transclude tiddler=\\\"$template$\\\" mode=\\\"block\\\">\\n\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> mode=\\\"block\\\"/>\\n\\n\u003C/$transclude>\\n\\n\u003C/$reveal>\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/$set>\\n\\\\end\\n\"\n },\n \"$:/core/ui/ControlPanel/Settings/link-to-tabs\": {\n \"title\": \"$:/core/ui/ControlPanel/Settings/link-to-tabs\",\n \"caption\": \"Link-to-Tabs plugin\",\n \"created\": \"20190712133607244\",\n \"modified\": \"20190714104631250\",\n \"tags\": \"$:/tags/ControlPanel/Settings\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$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''\u003C/$checkbox>\\n\\n\u003C$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''\u003C/$checkbox>\\n\\n\u003C$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.\u003C/$checkbox> The transition time in seconds is: \u003C$edit-text tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"transition\\\" default=\\\"0.3\\\"/>\\n\\n\u003C$button message=\\\"tm-delete-tiddler\\\" param=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\">\\nReset to Default!\\n\u003C/$button>\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/config\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/config\",\n \"created\": \"20190712133008077\",\n \"initial-opacity\": \"0.7\",\n \"modified\": \"20190714104541701\"
{"created":"20230227044823507","title":"$:/SiteSubtitle","text":"inventario","modified":"20230310020527566"},
{"created":"20230227044811105","title":"$:/SiteTitle","text":"hackerspace--inventario","modified":"20230310011408263"},
{"created":"20230309220042366","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Shadows","modified":"20230309220108005"},
{"created":"20230310162048797","title":"$:/state/dynamictables/20200213/exmp01/edit-view-status","type":"application/json","text":"{\n \"mode\": \"view\"\n}","modified":"20230310190637969"},
{"created":"20230310021132397","title":"$:/state/dynamictables/20200213/exmp01/expand","type":"application/json","text":"{}","modified":"20230310190636073"},
{"created":"20230309235420285","title":"$:/state/dynamictables/20200213/exmp01/sortby","type":"application/json","text":"{\n \"hasnegate\": \"true\",\n \"negate\": \"!\",\n \"sortIndex\": \"modified\"\n}","modified":"20230310190424101"},
{"created":"20230310002319766","title":"$:/state/dynamictables/20200213/exmp03/expand","type":"application/json","text":"{}","modified":"20230310010353304"},
{"created":"20230309222640973","title":"$:/state/dynamictables/Draft of 'Inventory'/sortby","type":"application/json","text":"{\n \"hasnegate\": \"false\",\n \"negate\": \"\",\n \"sortIndex\": \"imagen\"\n}","modified":"20230310003543992"},
{"created":"20230309220551429","title":"$:/state/dynamictables/Inventory/expand","type":"application/json","text":"{\n \"Estrellas\": \"show\"\n}","modified":"20230309221534881"},
{"created":"20230309220022494","text":"yes","title":"$:/state/showeditpreview","modified":"20230309225607857"},
{"created":"20230309215321470","title":"$:/state/sidebar","text":"yes","modified":"20230310011247372"},
{"created":"20230309220042368","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Shadows","modified":"20230309220108005"},
{"created":"20230310155448529","title":"$:/state/tab--1571042964","text":"$:/core/ui/TiddlerInfo/Tagging","modified":"20230310155518961"},
{"created":"20230309215327486","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Theme","modified":"20230310160428412"},
{"created":"20230310013209130","title":"$:/state/tab--694410614","text":"$:/core/ui/TiddlerInfo/Tools","modified":"20230310013216674"},
{"created":"20230309213501006","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Appearance","modified":"20230310160424004"},
{"created":"20230309215458279","title":"$:/state/tab/sidebar--595412856","text":"$:/core/ui/SideBar/Open","modified":"20230310190410906"},
{"created":"20230310161756493","title":"$:/state/tab1-995636538","text":"hackerspace--inventario--general","modified":"20230310162046628"},
{"created":"20230310011318204","title":"$:/state/tabs/controlpanel/toolbars-1345989671","text":"$:/core/ui/ControlPanel/Toolbars/EditToolbar","modified":"20230310011318204"},
{"created":"20230309220222909","title":"$:/state/tag-manager/Types","text":"open","modified":"20230309220222909"},
{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"},
{"title":"$:/StoryList","created":"20230310190544422","text":"","list":"hackerspace--inventario azul","modified":"20230310190544422"},
{"created":"20230310160430236","title":"$:/theme","text":"$:/themes/tiddlywiki/vanilla","modified":"20230310160449499"},
{"title":"$:/themes/tiddlywiki/snowwhite","name":"Snow White","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Emphasises individual tiddlers","dependents":"$:/themes/tiddlywiki/vanilla","plugin-priority":"0","version":"5.2.5","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/snowwhite/base\":{\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"\\\\define sidebarbreakpoint-minus-one()\u003C$text text={{{[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]]~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}]}}}/>\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n.tc-sidebar-header {\\n\\ttext-shadow: 0 1px 0 \u003C\u003Ccolour sidebar-foreground-shadow>>;\\n}\\n\\n.tc-tiddler-info {\\n\\t\u003C\u003Cbox-shadow [[inset 1px 2px 3px rgba(0,0,0,0.1)]]>>\\n}\\n\\n@media screen {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow [[1px 1px 5px rgba(0, 0, 0, 0.3)]]>>\\n\\t}\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow none>>\\n\\t}\\n}\\n\\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\\n\\t\u003C\u003Ctransition [[fill 150ms ease-in-out]]>>\\n}\\n\\n.tc-tiddler-controls button.tc-selected,\\n.tc-page-controls button.tc-selected {\\n\\t\u003C\u003Cfilter [[drop-shadow(0px -1px 2px rgba(0,0,0,0.25))]]>>\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow [[inset 0 1px 8px rgba(0, 0, 0, 0.15)]]>>\\n}\\n\\n.tc-edit-tags {\\n\\t\u003C\u003Cbox-shadow [[inset 0 1px 8px rgba(0, 0, 0, 0.15)]]>>\\n}\\n\\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow none>>\\n\\tborder: none;\\n\\toutline: none;\\n}\\n\\ntextarea.tc-edit-texteditor {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\t\u003C\u003Cbox-shadow [[2px 2px 5px rgba(0, 0, 0, 0.5)]]>>\\n}\\n\\n.tc-drop-down {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow [[2px 2px 10px rgba(0, 0, 0, 0.5)]]>>\\n}\\n\\n.tc-block-dropdown {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow [[2px 2px 10px rgba(0, 0, 0, 0.5)]]>>\\n}\\n\\n.tc-modal {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow [[0 3px 7px rgba(0,0,0,0.3)]]>>\\n}\\n\\n.tc-modal-footer {\\n\\tborder-radius: 0 0 6px 6px;\\n\\t\u003C\u003Cbox-shadow [[inset 0 1px 0 #fff]]>>;\\n}\\n\\n.tc-alert {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow [[0 3px 7px rgba(0,0,0,0.6)]]>>\\n}\\n\\n.tc-notification {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow [[0 3px 7px rgba(0,0,0,0.3)]]>>\\n\\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\\n}\\n\\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\\n\\tborder-top: none;\\n\\theight: 1px;\\n\\t\u003C\u003Cbackground-linear-gradient [[left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%]]>>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\t\u003C\u003Cbackground-linear-gradient [[left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%]]>>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\t\u003C\u003Cbackground-linear-gradient [[left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%]]>>\\n}\\n\\n.tc-message-box img {\\n\\t\u003C\u003Cbox-shadow [[1px 1px 3px rgba(0,0,0,0.5)]]>>\\n}\\n\\n.tc-plugin-info {\\n\\t\u003C\u003Cbox-shadow [[1px 1px 3px rgba(0,0,0,0.5)]]>>\\n}\\n\"}}}"},
{"title":"$:/themes/tiddlywiki/vanilla","name":"Vanilla","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Basic theme","plugin-priority":"0","version":"5.2.5","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/vanilla/themetweaks\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\"text\":\"\\\\define lingo-base()$:/language/ThemeTweaks/\\n\\\\define replacement-text()[img[$(imageTitle)$]]\\n\\\\define backgroundimage-dropdown()\\n\u003Cdiv class=tc-drop-down-wrapper>\\n\u003C$let state=\u003C\u003Cqualify\\\"$:/state/popup/themetweaks/backgroundimage\\\">>>\\n\u003C$button popup=\u003C\u003Cstate>>class=\\\"tc-btn-invisible tc-btn-dropdown\\\">{{$:/core/images/down-arrow}}\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cstate>>type=popup position=belowleft text=\\\"\\\"default=\\\"\\\"class=tc-popup-keep>\\n\u003Cdiv class=tc-drop-down style=text-align:center;>\\n\u003C$macrocall actions=\\\"\\\"\\\"\\n\\n\u003C$action-setfield\\n\\t$tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"\\n\\t$value=\u003C\u003CimageTitle>>\\n/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cstate>>/>\\n\\n\\\"\\\"\\\"$name=image-picker/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/$let>\\n\\n\\\\end\\n\\\\define backgroundimageattachment-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\"default=scroll>\\n\u003Coption value=scroll>\u003C\u003Clingo Settings/BackgroundImageAttachment/Scroll>>\u003C/option>\\n\u003Coption value=fixed>\u003C\u003Clingo Settings/BackgroundImageAttachment/Fixed>>\u003C/option>\\n\\n\\\\end\\n\\\\define backgroundimagesize-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\"default=scroll>\\n\u003Coption value=auto>\u003C\u003Clingo Settings/BackgroundImageSize/Auto>>\u003C/option>\\n\u003Coption value=cover>\u003C\u003Clingo Settings/BackgroundImageSize/Cover>>\u003C/option>\\n\u003Coption value=contain>\u003C\u003Clingo Settings/BackgroundImageSize/Contain>>\u003C/option>\\n\\n\\\\end\\n\u003C\u003Clingo ThemeTweaks/Hint>>\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003Coption value=fixed-fluid>\u003C\u003Clingo Options/SidebarLayout/Fixed-Fluid>>\u003C/option>\u003Coption value=fluid-fixed>\u003C\u003Clingo Options/SidebarLayout/Fluid-Fixed>>\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003Coption value=no>{{$:/language/No}}\u003C/option>\u003Coption value=yes>{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=pre>{{$:/language/No}}\u003C/option>\u003Coption value=pre-wrap>{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\"default=\\\"\\\"tag=input/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\"default=\\\"\\\"tag=input/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003
{"created":"20230310160313296","text":"27.473958333333343vw","title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth","modified":"20230310160443874"},
{"title":"$:/themes/tiddlywiki/vanilla/options/sidebarlayout","text":"fluid-fixed"},
{"title":"$:/TitlesExample/Frodo","text":"This tiddler's title is updated whenever Frodo is due to a [[custom rule|Plugins/Titles/example.js]] made for the \u003C\u003Clink-to-tab Plugins Plugins/Titles \"//Relink-titles// supplementary plugin\">>.\n"},
{"title":"Attributes","caption":"Attributes","tags":"Documentation Construct","text":"The attributes of widgets can be updated by Relink, but only if they're whitelisted. Given a whitelisted element/attribute pair, such as `$link` and `to`, the following update could happen:\n\n`\u003C$link to=\"MyTiddler\">A link to my tiddler\u003C/$link>`\n\nwould update to:\n\n`\u003C$link to=\"New Tiddler\">A link to my tiddler\u003C/$link>`\n\nIf you have `$list`/`filter` whitelisted and configured as a filter, then the widget `\u003C$list filter=\"...\" />` would have the contents of its filter attribute evaluated, and any whitelisted filter operators inside of it would be considered for updating during a rename operation.\n\nFor each element/attribute pair, you must specify its [[type|Types]].\n\n''Note:'' If a widget accepts a dynamic set of attributes corresponding to tiddler fields, [[see here|Widgets with tiddler fields as attributes]].\n\n\u003C\u003Clink-to-tab Demo Demo/Widgets Demo>>\n"},
{"created":"20230310002235769","text":"","tags":"inventario","title":"azul","modified":"20230310162042854","type":"text/vnd.tiddlywiki","imagen":"\u003Ccenter>[img height=50px [./medios/imagen/object-blue.png]]\u003C/center>","disponible":"1","necesitada":"5","status":"rework"},
{"title":"backreferences Operator","tags":"[[Filter Operators]]","caption":"backreferences","purpose":"find the titles that reference each input title in any way","text":"|!purpose |{{!!purpose}} |\n|!input |a selection of titles |\n|!parameter |none |\n|!output |any titles that contain any sort of reference to the input title |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:backreferences[]]`\n\n\nEach input title is processed in turn. A tiddler's list of backreferences is generated and then dominantly appended to the operator's overall output.\n\nThis functions like Tiddlywiki's `backlinks` operator, only instead of considering only hard links, it will consider all possible references which //Relink// can find.\n\n[[Examples|backreferences Operator (Examples)]]\n"},
{"title":"backreferences Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[[Frodo]relink:backreferences[]]\">>\n\u003C\u003Coperator-example 2 \"[all[current]relink:backreferences[]]\" \"tiddlers that link to this one\">>\n"},
{"title":"BilboBaggins","race":"hobbit","weapon":"Sting","text":"\\import Frodo\n\nThis tiddler is used to test ~CamelCase wikilinks.\n\n\u003C\u003Crename ThorinOakenshield>>\n\n\u003C\u003Crename Fili>>\n\n\u003C\u003Crename Dori>>\n\n\u003C\u003Crename Óin>>\n\n\u003C\u003Crename Glóin>>\n\n\u003C\u003Crename 'Gandalf the Gray' Maia \"staff\">>\n"},
{"title":"Comments","caption":"Comments","tags":"Documentation WikiText","text":"Any text inside of comments is ''completely ignored'', even if that text matches syntax constructs which would otherwise be updated.\n\n```\n\u003C!-- Nothing inside of here\n will ever be touched.\n-->\n```\n"},
{"title":"Default Type","tags":"Hacks","text":"By default, //Relink// uses \u003C\u003Clink-to-tab Types Title 'the \"Title\" type'>> whenever a default type is necessary. Most importantly, it is the type assumed whenever a \u003C$link to=\"Inline Declarations\">\\//relink// pragma\u003C/$link> is used without declaring the parameter type (e.g. `\\relink myMacro myParameter`). It may be useful to you to change the default type to ''wikitext'', for instance, if most of your macros have wikitext parameters.\n\nTo change the default, override the shadow tiddler: `$:/config/flibbles/relink/settings/default-type` from title to whatever you want.\n"},
{"description":"Optionally, //Relink// can update the names of any fields which match the name of the Relinked tiddler. This will also update any places where that tiddler's title was being used as a field, such as in indirect references, filters, to even its own entry in the //Relink// whitelist.","relink.showcase":"title type Frodo","Frodo":"[[Hairy feet]] [[Short stature]] Frodo","tags":"Demo Supplemental","type":"text/vnd.tiddlywiki","warning":"Fieldnames support requires you to download the \u003C\u003Clink-to-tab Plugins Plugins/Fieldnames \"//Relink-fieldnames// supplemental plugin\">>.","text":"This is the \u003C\u003Clink-to-tab Demo \"Demo/Field names\" \"Fieldnames Demo\">>. It has a field named [[Frodo]] in order to demonstrate how //Relink// can update the field's name.\n","caption":"Field names","title":"Demo/Field names"},
{"description":"Whitelisted tiddler fields are updated just as well. Without this plugin, Tiddlywiki could manage `list` and `tags` on its own. ''Relink'' opens the door for other tiddlers, including ones that specify something other than a string list, like a filter, a single tiddler title, or even wikitext.","example-filter":"[all[]] -Frodo","example-list":"Relink Frodo BilboBaggins","example-title":"Frodo","example-wikitext":"This [[link to Frodo|Frodo]] will relink.","list":"[[Some Tiddler]] Frodo [[Another Tiddler]]","relink.showcase":"list tags example-filter example-list example-title example-wikitext","tags":"Demo Frodo","text":"This is the \u003C\u003Clink-to-tab Demo Demo/Fields \"Fields Demo\">>. It tags [[Frodo]] in order to demonstrate how //Relink// can update the ''tags'' field, among others.\n","caption":"Fields","title":"Demo/Fields"},
{"description":"\u003Cp>Filters in whitelisted fields and attributes will be updated as well. However, Relink only updates the operands of whitelisted filter operators. This includes `tag` and `title`, but you can add or remove any operators you want to the list.\u003C/p>\u003Cp>''Note'': Indirect and variable operands are always updated, since regardless of their operator, they may reference tiddlers.\u003C/p>","tags":"Demo","text":"{{{\nFrodo\n[tag[Frodo]]\n[[Weapon: ]addsuffix{Frodo!!weapon}]\n}}}\n","caption":"Filters","title":"Demo/Filters"},
{"description":"\u003Cp>Change image name with the buttons, or [[visit it|Frodo.svg]] to change it manually.\u003C/p>\u003Cp>Links to image tiddlers will be updated when applicable. All attributes will also be properly relinked if necessary.\u003C/p>","tags":"Demo","text":"[img\n height=150\n width={{Frodo!!width}}\n class=\"relink-demo-image\"\n [Tolkien's symbol|Frodo.svg]]\n","caption":"Images","title":"Demo/Images"},
{"description":"Notice that custom link captions don't change, neither do plaintext occurrences of Frodo. Only occurrences of the title that in some way link to the page are updated.","tags":"Demo","text":"[[Frodo]]\n\n[[Descriptive link to Frodo.|Frodo]]\n\nBilboBaggins is a ~CamelCase link. Visit ~BilboBaggins to test Wikilinks.\n","caption":"Links","title":"Demo/Links"},
{"description":"\u003Cp>Relink can rename the parameters in macros. Each parameter must be declared first. All core macros are already configured, but you can add your own as well. [[See here for more details.|Macros]]\u003C/p> \u003Cp>`\u003C\u003Csay-list>>` is defined [[here|Macros/say-list]].\u003Cbr/>`\u003C\u003Cul>>` is defined [[here|Macros/ul]].\u003Cbr/>See each for examples on different ways to declare parameters.\u003C/p>","tags":"Demo","text":"\\relink foes hobbit\n\\define foes(hobbit) \u003C$view tiddler=\u003C\u003C__hobbit__>> field=\"foes\" />\n\n''Foes:'' \u003C\u003Cfoes Frodo>>\n\n---\n''Friends:'' \u003C\u003Csay-list \"Frodo [[his friends]] [[everyone else]]\">>\n\n---\n''Tagging'': \u003C$macrocall $name=\"ul\" tag=\"Frodo\" />\n","caption":"Macros","title":"Demo/Macros"},
{"description":"Optionally, //Relink// fully supports markdown. It works seemlessly with any of the major markdown plugins.","tags":"Demo Supplemental","type":"text/x-markdown","warning":"Markdown support requires you to download the \u003C\u003Clink-to-tab Plugins Plugins/Markdown \"//Relink-markdown// supplemental plugin\">>.","text":"Links: [Link to Frodo](#Frodo) \nFootnotes[^^1^^]\n\n| Direct links | Footnotes |\n| ------------ | --------- |\n| ![Direct](Frodo.svg) | ![Footnote][image] |\n\n### Wikitext\n\nIf your markdown plugin supports ~WikiText, so does Relink.\n\n\u003C$text text=\"That includes\"/>\n\u003C\u003Csay-list \"widgets macros [[whatever else]]\">>\n\n[ ^^1^^]: #Frodo\n[image]: Frodo.svg\n","caption":"Markdown","title":"Demo/Markdown"},
{"description":"Optionally, //Relink// can change tiddler titles somehow related to the renamed tiddler. This might include updating assocated settings tiddlers, or nested tiddlers of a filesystem-like directory, or whatever else you wish.","tags":"Demo Supplemental","warning":"Titles support requires you to download the \u003C\u003Clink-to-tab Plugins Plugins/Titles \"//Relink-titles// supplemental plugin\">>.","text":"\u003C!-- Relink-titles is configured to update\n all filesystem-like nested tiddlers. So,\n \u003C\u003CcurrentTiddler>>/nested/path\n would update appropriately.-->\n\n\u003C$vars dir={{{ [[Frodo]addsuffix[/]] }}} >\n\n\u003C$list filter=\"[prefix\u003Cdir>]\" />\n\n\u003C/$vars>\n---\n\u003C!-- Relink-titles is configured so that tiddlers\n like Example/setting/\u003C\u003CcurrentTiddler>>\n will rename appropriately. -->\n\n\u003C$list filter=\"[prefix[Example/setting/]]\" />\n","caption":"Titles","title":"Demo/Titles"},
{"description":"Relink handles both the tiddler and the template tiddler. If the new titles, become too complex, it may convert the transclude into its widget equivalent.","tags":"Demo","text":"[[With template|Templates/Hello]]:\n{{Frodo||Templates/Hello}}\n\nWeapon of choice: {{Frodo!!weapon}}\n\n{{Frodo}}\n","caption":"Transcludes","title":"Demo/Transcludes"},
{"description":"\u003Cp>Checkboxes, and all core widgets whose attributes can reference a tiddler will be updated on a rename. You can configure which widgets, and corresponding attributes, are updated, including with custom widgets.\u003C/p>\u003Cp>Indirect and filter attributes are all updated regardless of whether they're whitelisted.\u003C/p>","tags":"Demo","text":"\u003C$checkbox tiddler=\"Frodo\" tag=\"checked\">\nCheck tag `checked`\n\u003C/$checkbox>\n\nWeapon: \u003C$text text={{Frodo!!weapon}} />\n","caption":"Widgets","title":"Demo/Widgets"},
{"title":"Disable Updating of modified","tags":"Hacks","caption":"Disable Updating of //modified//","text":"\\rules except wikilink\n\nBy default, //Relink// will update the //modified// field of any tiddlers it relinks, as this is the default behavior seen in TiddlyWiki's core relinking. However, you might not want this.\n\nIf you set the system tiddler `$:/config/flibbles/relink/touch-modify` to a text value of \"no\", then //Relink// will no longer update the \"modified\" field of tiddlers it touches.\n"},
{"title":"Documentation","caption":"Documentation","tags":"Relink","text":"\\rules except wikilink\n\n//Relink// is already configured to rename tiddler title occurrences across all core attributes, fields, and filter operators. However, it can be customized through a series of whitelists //Relink// references for each type of construct. Custom constructs can be added, and existing ones can be ignored.\n\n!! Constructs\n\nThe following are configurable through the \u003C\u003Clink-to-config-tab caption:\"//Relink// configuration panel\">>. See the available [[types|Types]] for more details.\n\n\u003C\u003Cul Construct>>\n\n!! WikiText\n\nThere are also numerous WikiText syntax patterns for which Relink has predefined behavor. Currently, none of these are configurable.\n\n\u003C\u003Cul WikiText>>\n\n!! Other Features\n\nBesides relinking tiddlers, //Relink// includes other features.\n\n\u003C\u003Cul Feature>>\n"},
{"title":"Documentation/Attributes","text":"This tiddler has moved [[here|Attributes]]."},
{"title":"Documentation/Fields","text":"This tiddler has moved [[here|Fields]]."},
{"title":"Documentation/Operators","text":"This tiddler has moved [[here|Operators]]."},
{"title":"Eärendil","caption":"Light of Eärendil","tags":"Frodo","text":"The Light of Eärendil is a light to [[Frodo]] in dark places when all other lights go out. It was given to him by Galadriel.\n"},
{"title":"Example/setting/Frodo","text":"This tiddler doesn't actually do anything, but there are settings tiddlers like this that do. Take the core's button visibility tiddlers:\n\n```\n$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info\n```\n\nIt contains the visibility setting for the `$:/core/ui/Buttons/info` button. Of course it's unlikely that you'll be changing the names of buttons like that often, but you may want to utilize a similar paradigm for some other solution. //Relink-titles// has got you covered.\n"},
{"title":"Example/setting/Rosie","text":"the `Example/setting` tiddler for the non-existent `Rosie` tiddler.\n"},
{"title":"Fieldname","tags":"Types Supplemental","text":"This type is identical to the Title type, except that it refuses to report or relink any title which correspond to built-in tiddlers fields, like `tags` or `text` or `module-type`.\n\n{{$:/core/images/warning}} ''Warning:'' This type is only present in the \u003C\u003Clink-to-tab Plugins \"Plugins/Fieldnames\" \"Fieldnames supplemental plugin\">>\n"},
{"title":"Fieldnamelist","tags":"Types Supplemental","text":"This type is identical to the List type, except that it refuses to report or relink any title which correspond to built-in tiddlers fields, like `tags` or `text` or `module-type`.\n\n{{$:/core/images/warning}} ''Warning:'' This type is only present in the \u003C\u003Clink-to-tab Plugins \"Plugins/Fieldnames\" \"Fieldnames supplemental plugin\">>\n"},
{"title":"Fields","caption":"Fields","tags":"Documentation Construct","text":"Configure which tiddler fields Relink will consider for updating. For instance, `list` and `tags` are configured by default, which means whenever a tiddler name updates, Relink will look at the `list` and `tags` field of every tiddler for possible updating.\n\nFor each field, you must specify its [[type|Types]].\n\nExample: If the field name `list` is configured as a `list`, that means the following:\n\n\u003Cpre>\n\n''list:'' \u003C$text text=\"[[Tiddler A]] [[Tiddler B]]\" />\n\u003C/pre>\n\nwill updated to:\n\n\u003Cpre>\n\n''list:'' \u003C$text text=\"[[Tiddler A]] [[New Tiddler]]\" />\n\u003C/pre>\n\nIf //Tiddler B// is renamed to //New Tiddler//.\n\n''Note:'' Tiddlywiki v5.2.* allows for capitalized field names, thus so does //Relink//. However, capital letters in field names are illegal in Tiddlywiki v5.1.*, so if you are using an old version of Tiddlywiki, you must be careful not to include capital letters in the field names in //Relink//'s whitelist.\n\n! Text field\n\nThe text field (the main body of a tiddler) should not be configured to a type, since its type is designated by a tiddler's `type` field. See [[Tiddler Type]] for more information on that.\n\n\u003C\u003Clink-to-tab Demo Demo/Fields Demo>>\n"},
{"title":"Filter","tags":"Types","text":"The value of the field or attribute is treated as a [[filter, as described here|https://tiddlywiki.com/static/Introduction%2520to%2520filter%2520notation.html]].\n\nIf Relink is configured to consider a certain field or attribute as a filter, it will look at operators and decides whether to update their operand, but only if the given operators are whitelisted. `[tag[]]` and `[title[]]` are whitelisted by default. And as long as `title` is whitelisted, that includes all shorthands for title, such as `[[Example]]`, `[field:title[Example]]`, `\"Example\"`, `'Example'`, and `Example`.\n\nFor example, take `\u003C$list filter=\"[[MyTiddler]] [tag[MyTiddler]!has[draft.of]]\" />` and say //~MyTiddler// is updated to //~NewTiddler//. As long as the ''filter'' attribute of the widget ''$list'' is whitelisted (it is by default), and `[tag[]]` and `[title[]]` are whitelisted (they are by default), that widget would become:\n\n`\u003C$list filter=\"[[NewTiddler]] [tag[NewTiddler]!has[draft.of]]\" />`\n"},
{"title":"Filter Operators","tags":"Feature","text":"//Relink// introduces a few filter operators which may be useful to you. All filters are namespaced with `relink:`, so for instance, the backreferences filter operator is accessed as `[relink:backreferences[]]`.\n\n''Note:'' //Relink// defines other filter operators than these, but they are for internal use only, and are subject to change between releases.\n\n\u003Ctable>\n\u003Ctr>\n\u003Cth align=\"left\">Operator\u003C/th>\n\u003Cth align=\"left\">Purpose\u003C/th>\n\u003Cth align=\"center\">`!`\u003C/th>\n\u003C/tr>\n\u003C$list filter=\"[tag[Filter Operators]]\">\n\u003Ctr>\n\u003Ctd>\u003C$link>relink:{{!!caption}}\u003C/$link>\u003C/td>\n\u003Ctd>{{!!purpose}}\u003C/td>\n\u003Ctd>\u003C/td>\n\u003C/tr>\n\u003C/$list>\n\u003C/table>\n"},
{"title":"Frodo.svg","text":"\u003C?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n\u003Csvg\n\txmlns:svg=\"http://www.w3.org/2000/svg\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\twidth=\"50px\"\n\tviewBox=\"0 0 225 340\"\n\tversion=\"1.1\">\n\u003Cg style=\"fill:black;stroke:none\">\n\t\u003Cellipse cx=\"112.5\" cy=\"169.5\" rx=\"111.2\" ry=\"168\" style=\"fill:none;stroke:black;stroke-width:2.6\"/>\n\t\u003Ccircle cx=\"64.2\" cy=\"240.5\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"70.9\" cy=\"234.1\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"70.9\" cy=\"246.9\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"77.6\" cy=\"240.5\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"139.3\" cy=\"78.1\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"146\" cy=\"71.5\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"146\" cy=\"84.7\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"152.7\" cy=\"78.1\" r=\"4.2\"/>\n\t\u003Cpath transform=\"scale(0.1) translate(3.5,0)\"\n\t\td=\"M 1244 334 C 1224 336 1162 456 1085 455 C 1033 455 1010 477 997 504 C 966 567 1005 638 1044 657 C 1093 560 1132 490 1167 480 C 1212 467 1262 351 1247 335 C 1247 334 1245 334 1244 334 z M 1181 570 C 1102 681 1045 767 1045 767 C 996 737 939 729 933 740 C 928 752 981 807 980 927 C 780 926 488 928 442 878 C 442 878 416 825 403 884 C 360 1075 141 1140 142 1172 C 144 1216 426 1111 474 1055 C 505 1020 581 1009 647 1008 C 681 1008 817 1007 980 1010 L 979 1064 C 651 1073 536 1180 538 1323 C 542 1532 647 1618 895 1616 C 739 1798 605 1904 492 1954 C 334 2024 162 1975 163 2006 C 163 2022 226 2010 414 2105 C 580 2189 805 1829 974 1664 L 967 2431 C 966 2608 926 2853 815 2959 C 819 2880 775 2853 721 2836 C 659 2817 503 2959 732 3023 C 921 3073 1054 2764 1074 2649 C 1086 2580 1114 2553 1117 2531 C 1356 2647 1521 2518 1510 2501 C 1498 2462 1144 2556 1147 2211 C 1147 2137 1152 1913 1157 1655 C 1390 1896 1366 1928 1516 2061 C 1683 2209 1932 2157 1930 2132 C 1926 2094 1815 2226 1215 1630 C 1551 1664 1589 1459 1593 1339 C 1600 1167 1387 1076 1169 1079 C 1170 1056 1170 1037 1170 1014 C 1416 1022 1658 1037 1683 1069 C 1744 1151 2081 1327 2094 1300 C 2103 1279 1871 1214 1771 910 C 1762 882 1743 885 1727 904 C 1684 955 1347 941 1172 932 C 1177 742 1180 596 1181 570 z M 913 1139 C 937 1139 960 1140 979 1140 L 975 1532 C 775 1583 676 1511 682 1333 C 688 1156 813 1138 913 1139 z M 1222 1156 C 1340 1155 1441 1170 1445 1365 C 1451 1631 1211 1555 1168 1546 C 1165 1540 1162 1533 1160 1525 C 1162 1401 1165 1277 1167 1156 C 1186 1156 1204 1156 1222 1156 z\" />\n\u003C/g>\n\u003C/svg>\n","type":"image/svg+xml"},
{"title":"Frodo/inventory","text":"* Lembas bread\n* Pipe-weed\n"},
{"title":"Frodo/stats","type":"application/x-tiddler-dictionary","text":"Birth: 22 September, 2968\nDeath: Unknown\nHair: Brown\n"},
{"title":"Frodo/stats/kills","text":"Kill count: 0\n\nNo one. Frodo killed //no one// in the entire trilogy. I didn't realize that until researching it for this specific tiddler.\n"},
{"title":"getRelinkableTitles","return":"['title', ...]","tags":"Wikimethods","text":"This returns a list of all titles which //Relink// will evaluate for relinking. Unless you've customized which [[Tiddlers to relink]], this is equivalent to `wiki.allTitles`.\n"},
{"title":"getTiddlerRelinkBackreferences","arguments":"title","return":"{'tiddlerTitle': ['blurb', ...], ...}","tags":"Wikimethods","text":"Given a tiddler title, `getTiddlerRelinkReferences` returns an object for which each key is the title of a tiddler which refers to the given title, and the value is an array of blurbs which each briefly describe the type of reference.\n\nEven if the given title does not exist, this may return results if other tiddlers contain references to the passed, non-existent tiddler.\n"},
{"title":"getTiddlerRelinkReferences","arguments":"title","return":"{'tiddlerTitle': ['blurb', ...], ...}","tags":"Wikimethods","text":"Given a tiddler title, `getTiddlerRelinkReferences` returns an object for which each key is a tiddler title which the given tiddler refers to, and the value is an array of blurbs which each briefly describe the type of reference. This object will include all references, including ones to tiddlers which do not exist.\n\nIf the given title does not exist, this returns `undefined`.\n"},
{"title":"Hackability","tags":"Feature","text":"You can tinker with //Relink// in several ways if you wish. It's designed to be highly modifiable.\n\n\u003C$list filter=\"[tag[Hacks]]\">\n\n!! \u003C$transclude field=\"caption\">{{!!title}}\u003C/$transclude>\n\n\u003C$transclude />\n\n\u003C/$list>\n"},
{"created":"20230310012815393","text":"\u003C\u003Ctabs \"[prefix[hackerspace--inventario--]]\" \"[[hackerspace--inventario--general]]\" \"$:/state/tab1\">>","tags":"","title":"hackerspace--inventario","modified":"20230310161925147"},
{"created":"20230227044228493","text":"\u003C\u003Ctable-dynamic filter:\"[tag[inventario]]\" fields:\"tbl-expand title imagen [[cantidad disponible]] [[cantidad necesitada]] tags created modified\" stateTiddler:\"20200213/exmp01\" sortOp:\"sortan\" caption:\"''{{!!table_caption}}''\" class:\"w-100 thead-dark\">>\n\n","tags":"hackerspace--inventario","title":"hackerspace--inventario--general","modified":"20230310162212986","table_caption":"General"},
{"created":"20230310011758293","text":"\u003C\u003Ctable-dynamic filter:\"[tag[inventario]!tag[Done]]\" fields:\"tbl-checkbox tbl-expand title imagen priority [[cantidad necesitada]] tags created modified\" stateTiddler:\"20200213/exmp01\" sortOp:\"sortan\" caption:\"''{{!!table_caption}}''\" class:\"w-100 thead-dark\">>\n\n","tags":"hackerspace--inventario","title":"hackerspace--inventario--necesitados","modified":"20230310032645250","table_caption":"Cosas necesitadas"},
{"title":"Images","caption":"Images","tags":"Documentation WikiText","text":"Relink will manage images which link to tiddlers within the project.\n\n```\n[img[MyPicture.png]]\n[img[Accompanying tooltip|MyPicture.png]]\n[img height=256 width=256 [MyPicture.png]]\n```\n\nIt will attempt to preserve any whitespace you use for formatting.\n\n```\n[img\n\theight=256\n\tclass=\"css-class\"\n\t[MyPicture.png]]\n```\nwould become:\n\n```\n[img\n\theight=256\n\tclass=\"css-class\"\n\t[New Picture Image.png]]\n```\n\nIf any attributes use indirect or filter references, those will be updated appropriately. I.E.:\n\n```\n[img class={{DataTiddler||field}} [MyPicture.png]]\n```\n\nIn this case, `DataTiddler` will be updated if that tiddler is renamed.\n\n\u003C\u003Clink-to-tab Demo Demo/Images Demo>>\n"},
{"title":"Inline Declarations","caption":"\\//relink// pragma","tags":"Feature","text":"\\rules except wikilink\n\n//Relink// comes with a `\\relink` pragma which allows you to declare your parameters right alongside your macro definitions.\n\nThis method is good for own homebrew macros. It keeps your definition and declarations together in the same place. If you're defining macros for a plugin, or you're creating a javascript macro, you should use [[the whitelist tables instead|Whitelisting]].\n\n!! Example\n\n```\n\\relink fellowship name:title members:filter\n\\define fellowship(name, members)\n!!! \u003C$link to=\u003C\u003C__name__>> />\n\u003C$list filter=\u003C\u003C__members__>> />\n\\end\n```\n\nThe `\\relink` pragma here specifies a macro, then lists the parameters and their [[associated types|Types]]. ''name'' is a title, and ''members'' is a filter. //Relink// will parse them both appropriately now.\n\nSo take `\u003C\u003Cfellowship \"Ring Deliverers\" \"[tag[LotR Character]]\">>`. Now, if the tiddler \"Ring Deliverers\" is renamed, //Relink// knows to update the ''name'' parameters. If the \"LotR Character\" is changed, then //Relink// will correctly change it inside `[tag[LotR Character]]`.\n\n!! Usage\n\nThe relink pragma specifies a macro, and then lists any parameters that are applicable to renaming.\n\n```\n\\relink macroName param1:type param2:type ...\n```\n\nThe available types are\n\u003C$macrocall\n\t$name=say-list\n\tfilter=[tag[Types]]\n\ttemplate=\"\"\"\u003C$macrocall $name=link-to-tab tiddler=Types tab=\u003C\u003CcurrentTiddler>> caption=\u003C\u003CcurrentTiddler>> />\"\"\" />.\n\nIf a type is not specified, //Relink// defaults to ''title'', so `\\relink myMacro myParameter` is equivalent to `\\relink myMacro myParameter: title`. \u003C\u003Clink-to-tab Hackability \"Default Type\" \"However, the default type can be changed.\">>\n\nDeclarations can come before or after the macros they're declaring. Actually, they don't have to be written alongside the macro definitions at all, or even in the same tiddler (but they should be).\n\n!! Scope\n\nGlobally accessable macro definitions (like through \u003C\u003Ctag $:/tags/Macro>>) will be displayed in the \u003C\u003Clink-to-config-tab Macros 'configuration whitelist'>> for your benefit.\n\nIf your inline declaration has a limited scope (as in its only used in the tiddler its defined in, or maybe you only ever import it through `\\import` pragma), //it will still work as expected//, although it won't be displayed in the whitelist.\n\n"},
{"title":"Lazy Loading","tags":"Feature","text":"//Relink// does ''not'' support tiddlywikis that implement the ~NodeJS lazy loading mechanism.\n\n...I know. So sad, but it just doesn't make sense. //Relink// needs to be able to look at all tiddlers to find relinks to make, and it can't do that if not all tiddlers are loaded, and _loading_ them all would defeat the purpose of lazy loading in the first place.\n\nIn theory, relinking is something that could happen on the ~NodeJS server, but that would require infrastructure which the [[core Tiddlywiki developers have already made clear will never happen|https://github.com/Jermolene/TiddlyWiki5/issues/4767#issuecomment-711328177]].\n\nSo if you want to use Relink on your ~NodeJS server, make sure you disable lazy loading. [[There's actually a bug|https://github.com/Jermolene/TiddlyWiki5/issues/4767]] where lazy loading can delete your tiddlers' bodies. This is a core bug that exists //regardless// of //Relink//. //Relink// does exacerbate it, but do you really want to be using lazy loading to begin with?\n"},
{"title":"Links","caption":"Links","tags":"Documentation WikiText","text":"All links which Relink finds that point to the changing title will be updated, however, their captions won't be touched.\n\n```\n[[Tiddler Title]]\n\n[[Displayed Link Title|Tiddler Title]]\n```\n\n\u003C\u003Clink-to-tab Demo Demo/Links Demo>>\n"},
{"title":"List","tags":"Types","text":"The value of the field or attribute is treated as a [[string list, as described here|https://tiddlywiki.com/static/Title%2520List.html]].\n\nFor example the tiddler field `list` is a list by default, so\n\n`list: [[First Tiddler]] [[Second Tiddler]] TiddlerWithoutSpaces`\n\nIf //Second Tiddler// were renamed to //New Tiddler//, that field would become,\n\n`list [[First Tiddler]] [[New Tiddler]] TiddlerWithoutSpaces`\n\nRelink adds brackets whenever necessary.\n\n''Note:'' Tiddlywiki lists don't support duplicates, and therefore neither does Relink.\n"},
{"title":"Macros","caption":"Macros","tags":"Documentation Construct","text":"//Relink// will relink macro parameters. It doesn't matter if you call them the `\u003C\u003Cpretty>>` way or the `\u003C$macrocall>` way. Nor does it matter if your macros are global through \u003C\u003Ctag $:/tags/Macro>>, imported through `\\import`, or defined in a macro module. //Relink// handles it all.\n\n...but //Relink// only updates parameters that have been explicitly whitelisted. All core macro parameters are already configured by default [[with their correct types|Types]], but what if you create your own macros?\n\nLets say you design your own macro to print out a fellowship and its members, like:\n\n```\n\\define fellowship(name, members)\n!!! \u003C$link to=\u003C\u003C__name__>> />\n\u003C$list filter=\u003C\u003C__members__>> />\n\\end\n```\n\nIf you call that macro, like `\u003C\u003Cfellowship \"Ring Deliverers\" \"[tag[LotR Character]]\">>`, //Relink// won't touch those parameters by default. You have to declare their type first.\n\nThere are two ways to do this.\n\n* ''[[Inline Declarations]]:'' This uses the `\\relink` pragma. It's good for homebrew macros, or macros which have a limited scope (those not made global with \u003C\u003Ctag $:/tags/Macro>>).\n* ''[[Whitelisting]]:'' If you add an entry to the whitelist, like `fellowship`/`name` set to 'title'. And `fellowship`/`members` set to filter. This is good for javascript macros, or macros defined by a plugin you're writing.\n\n\u003C\u003Clink-to-tab Demo Demo/Macros Demo>>\n"},
{"title":"Macros/hide","tags":"$:/tags/Macro","text":"\\define hide(content) $content$\n\u003C\u003Cprint-before-this>>\n\n`hide` will output whatever input it's given. It makes no change. The reason it exists is shield its contents from //Relink//, so that the plugin will not index that content, and thus create //missing// tiddlers based on whatever it finds in there.\n\nThis is something I do for the demo to keep the \"//Relink// Missing\" cleaned up for demonstration purposes. You will probably never need to do something like this yourself.\n"},
{"title":"Macros/link-to-tab","tags":"$:/tags/Macro","qualifiers":"Demo -1725644622 Types -1703315334 Plugins -1285577930 Versions 838063682 [[Migration to V2]] -680834286","text":"\\relink link-to-tab tiddler tab caption:wikitext\n\\define link-to-tab(tiddler, tab, caption)\n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\">\n\u003C$action-setfield $tiddler={{{ [list[Macros/link-to-tab!!qualifiers]after\u003C__tiddler__>addprefix[$:/state/tab-]] }}} text=\u003C\u003C__tab__>>/>\n\u003C$action-navigate $to=\u003C\u003C__tiddler__>>/>\n$caption$\n\u003C/$button>\n\\end\n\n\\relink link-to-config-tab caption:wikitext\n\\define link-to-config-tab(configTab, caption)\n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\">\n\u003C$action-setfield\n\t$tiddler=\"$:/state/plugin-info--1931129592-$:/plugins/flibbles/relink---1659944808\"\n\ttext=\"configuration\" />\n\u003C$list filter=\"[\u003C__configTab__>!match[]]\">\n\u003C$action-setfield\n\t$tiddler=\"$:/state/tab-1407883317\"\n\ttext={{{[\u003C__configTab__>addprefix[$:/plugins/flibbles/relink/ui/configuration/]is[shadow]else\u003C__configTab__>]}}} />\n\u003C/$list>\n\u003C$action-navigate $to=\"$:/plugins/flibbles/relink\" />\n$caption$\n\u003C/$button>\n\\end\n\n''Hey!'' Edit this tiddler to see a real-use example of the `\\relink` declaration pragma.\n\n`link-to-tab` creates a button which opens a specific tiddler and a tab within that tiddler. It's used on several documentation pages to link to examples within a tab menu.\n\n`link-to-config-tab` is used exclusively to go to //Relink// configuration tabs.\n\n\u003C!--\nUnfortunately, due to the way the `qualify` mechanic works in Tiddlywiki, this macro must maintain a hardcoded list of qualifier hashes, and if you rename the target tiddler, the qualifier doesn't update automatically.\n-->\n"},
{"title":"Macros/operator-example","tags":"$:/tags/Macro","text":"\\define operator-example(n,eg,ie)\n\\define .operator-example-tryit-actions() \u003C$action-setfield $tiddler=\u003C\u003C.state>> text=\"show\" filter=\u003C\u003C__eg__>>/>\n\n\u003Cdiv class=\"doc-example\">\n\u003C$list filter=\"[title\u003C.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]\" variable=\".state\">\n\u003C$reveal state=\u003C\u003C.state>> type=\"nomatch\" text=\"show\">\n\t`$eg$`\n\t\u003C$list filter=\"[\u003C__ie__>!match[]]\">\u003Cdd>&rarr; $ie$\u003C/dd>\u003C/$list>\n\t\u003Cdl>\n\t\u003Cdd>\u003C$button actions=\u003C\u003C.operator-example-tryit-actions>>>Try it\u003C/$button>\u003C/dd>\n\t\u003C/dl>\n\u003C/$reveal>\n\u003C$reveal state=\u003C\u003C.state>> type=\"match\" text=\"show\">\n\t\u003C$edit-text tiddler=\u003C\u003C.state>> field=\"filter\" tag=\"input\" type=search focus=\"true\"/>\n\t\u003Cdl>\n\t\u003Cdd>\n\t\u003C$button set=\u003C\u003C.state>> setTo=\"\">Hide\u003C/$button>\n\t\u003C$reveal stateTitle=\u003C\u003C.state>> stateField=\"filter\" type=\"nomatch\" text=\u003C\u003C__eg__>>>\n\t\t\u003C$button actions=\u003C\u003C.operator-example-tryit-actions>>>Reset\u003C/$button>\n\t\u003C/$reveal>\n\t\u003C/dd>\n\t\u003C/dl>\n\t\u003Cblockquote class=\"doc-example-result\">\n\t\u003Cul>\u003C$list filter={{{[\u003C.state>get[filter]]}}} emptyMessage=\"(empty)\">\n\t\u003Cli>\u003C$link>\u003C$view field=\"title\"/>\u003C/$link>\u003C/li>\n\t\u003C/$list>\u003C/ul>\n\t\u003C/blockquote>\n\u003C/$reveal>\n\u003C/$list>\n\\end\n\\relink operator-example eg:filter ie:wikitext\n\nThis macro is used to create the example uses of each of the [[Filter Operators]]. It was lifted from tw5.com, and there really isn't much to showcase here.\n"},
{"title":"Macros/print-before-this","tags":"$:/tags/Macro","text":"\\define print-before-this()\n\u003C$codeblock code={{{[\u003CcurrentTiddler>get[text]splitbefore[\u003C\u003Cprint-before-this]removesuffix[\u003C\u003Cprint-before-this]]}}} />\n\\end\n\nThis macro just displays text that comes before its invocation. I use it to display otherwise-hidden pragma.\n"},
{"title":"Macros/say-list","tags":"$:/tags/Macro","text":"\\relink say-list filter:filter template:wikitext\n\\define say-list(filter, template:\"\"\"\u003C$text text=\u003C\u003CcurrentTiddler>> />\"\"\")\n\u003C$list filter=\"[subfilter\u003C__filter__>butlast[]]\">$template$, \u003C/$list>\u003C$list filter=\"[subfilter\u003C__filter__>last[]]\">and $template$\u003C/$list>\n\\end\n\u003C\u003Cprint-before-this>>\n\n`say-list` prints a filter's items in a conversational way. For instance:\n\n\u003C\u003Chide \"\"\"\n\n: `\u003C\u003Csay-list \"this that [[another thing]]\">>` -> ''\u003C\u003Csay-list \"this that [[another thing]]\">>''\n\"\"\" >>\n\nThis macro declares its parameters through [[pragma|Inline Declarations]]. Since this tiddler is global (because of \u003C\u003Ctag $:/tags/Macro>>), its parameters will get a mention in the \u003C\u003Clink-to-config-tab Macros \"whitelist configuration page\">>\n"},
{"title":"Macros/show-reference-button","tags":"$:/tags/Macro","text":"\\define show-reference-button()\n\u003C$button popup=\u003C\u003CtiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\"tc-selected\">\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\n\u003C$text text={{$:/language/Buttons/Info/Caption}}/>\n\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\\end\n\nThis will automatically show the show the //Relink// references infoTab for demonstration purposes.\n"},
{"title":"Macros/ul","tags":"$:/tags/Macro","text":"\\define ul(tag)\n\u003Cul>\u003C$list variable=\"listItem\"\n filter=\"[tag\u003C__tag__>!has[draft.of]]\">\n \u003Cli>\u003C$link to=\u003C\u003ClistItem>> >\n \u003C$transclude tiddler=\u003C\u003ClistItem>> field=\"caption\">\n \u003C$text text=\u003C\u003ClistItem>> />\n \u003C/$transclude>\u003C/$link>\u003C/li>\n\u003C/$list>\u003C/ul>\n\\end\n\u003C\u003Cprint-before-this>>\n\n`ul` creates an unorganized list of all tiddlers of the given tag, like `\u003Cul>` would. It prefers using ''!!caption'', but falls back on ''!!title''.\n\nThis macro is globally available because of the tag \u003C\u003Ctag $:/tags/Macro>>. It relies on [[Whitelisting]] to declare its parameters. You can see the whitelist configuration \u003C\u003Clink-to-config-tab Macros here>>.\n"},
{"title":"Markdown","tags":"Types Supplemental","text":"This type functions in many ways like the Wikitext type, only instead of Wikitext, it's markdown. This type only really makes sense for fields and macros.\n\n{{$:/core/images/warning}} ''Warning:'' This type is only present in the \u003C\u003Clink-to-tab Plugins \"Plugins/Markdown\" \"Markdown supplemental plugin\">>\n"},
{"title":"Migration to V2","text":"For V2, //Relink// needed to create the `report` method to scan tiddlers for references to all other titles, not just the one being relinked at the time. This impacts the following modules and plugins\n\n\u003C$macrocall $name=\"tabs\"\n\ttabsList=\"[[Migration to V2]tagging[]]\"\n\tdefault=\"Migration to V2/relinkoperator\"\n/>\n"},
{"title":"Migration to V2/relink-titles","caption":"//Relink-titles// plugin","list-after":"","tags":"[[Migration to V2]]","text":"Unfortunately, if you made custom filters for Relink-titles, you're going to have to change those into modules. There is no forward or backward compatibility.\n\nFirst of all, I'm sorry I'm making you have to update, but filters really don't work for the newer, better systems under Relink's hood. But a module should give you much more flexibility.\n\nYou'll need to create a `relinktitlesrule` module to replace your filter. Fortunately, it's a very simple module:\n\n```javascript\n\n// technically this isn't used, but I recommend making this anyway.\nexports.name = \"[[Unique name for filter]]\";\n\nexports.report = function(targetTitle, callback, options) {\n\t// calls `callback(title, blurb)` for each possible title for which\n\t// \"targetTitle\" would have to be renamed if that title were changed.\n\t// tiddler inside of `tiddler`. Blurb is an optional SHORT string\n\t// to describe what kind of reference this is.\n};\n\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\n\t// code that determines what to change targetTitle to whenever\n\t// fromTitle is renamed into toTitle.\n\t// Return {output: 'newTitle'} if targetTitle should change.\n\t// Return {impossible: true} if targetTitle should change, but can't.\n\t// Return undefined if targetTitle should remain unchanged.\n};\n```\n\n[[Here is an example module|Plugins/Titles/example.js]] with plenty of documentation. You need a `report` method for the [[TiddlerInfo Tab]], and a `relink` method for the actual updating of titles.\n"},
{"title":"Migration to V2/relinkoperator","caption":"relinkoperator module","tags":"[[Migration to V2]]","text":"The old signature used to be this:\n\n```javascript\nexports.[[unique name]] = function(tiddler, fromTitle, toTitle, changes, options) {\n\t// code to relink references of fromTitle to toTitle inside tiddler.\n};\n```\n\nIt is now:\n\n```javascript\nexports.name = \"[[unique name]]\";\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\t// same code for relinking as before\n};\n\nexports.report = function(tiddler, callback, options) {\n\t// calls `callback(title, blurb)` for each reference to any other\n\t// tiddler inside of `tiddler`. Blurb is an optional SHORT string\n\t// to describe what kind of reference it is.\n};\n```\n\nThe old signature will still successfully relink in Relink V2, so you don't have to migrate these modules immediately. ''Unfortunately,'' once you do, new signature won't work correctly if your users don't upgrade Relink to V2.\n"},
{"title":"Migration to V2/relinktextoperator","caption":"relinktextoperator module","tags":"[[Migration to V2]]","text":"Change the module-type from `relinktextoperator` to `relinktext`.\n\nThe old signature used to be this:\n\n```javascript\nexports.[[Tiddler MIME type]] = function(tiddler, fromTitle, toTitle, options) {\n\t// code to relink references of fromTitle to toTitle inside tiddler.\n};\n```\n\nIt is now:\n\n```javascript\nexports.type = \"[[tiddler MIME type]]\";\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// same code for relinking as before,\n\t// except it takes the tiddler's text as an argument\n\t// instead of the tiddler itself.\n};\n\nexports.report = function(text, callback, options) {\n\t// calls `callback(title, blurb)` for each reference to any other\n\t// tiddler inside of `tiddler`. Blurb is an optional SHORT string\n\t// to describe what kind of reference it is.\n};\n```\n\nThe old signature will still successfully relink in Relink V2 (although it won't report in the [[TiddlerInfo Tab]]. If you want your module to still be compatible with Relink V1, include the following at the end:\n\n''Note:'' In Relink V2.1, the `relinktextoperator` module-type was deprecated in favor of `relinktext`, which is functionally the same, except the relink and report methods switched from taking 'tiddler' as the first argument to 'text'.\n\n```javascript\nexports.[[Tiddler MIME type]] = exports.relink;\n```\n"},
{"title":"Migration to V2/relinkwikitextrule","caption":"relinkwikitextrule module","tags":"[[Migration to V2]]","text":"The old signature used to be this:\n\n```javascript\nexports.name = \"[[Name of corresponding wikitext rule]]\";\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// code to relink references of fromTitle to toTitle inside tiddler.\n};\n```\n\nIt is now:\n\n```javascript\nexports.name = \"[[Name of corresponding wikitext rule]]\";\n\nexports.relink = function(tiddler, fromTitle, toTitle, options) {\n\t// can be EXACTLY the same\n};\n\nexports.report = function(text, callback, options) {\n\t// calls `callback(title, blurb)` for each reference to any other\n\t// tiddler inside of `text`. Blurb is an optional SHORT string\n\t// to describe what kind of reference it is.\n};\n```\n\nYou just need to add a `report` method. The old signature will still successfully relink in Relink V2 (even if it doesn't report in the [[TiddlerInfo Tab]]), and your new version will still work just fine with V1 after you migrate.\n"},
{"title":"Mithril","caption":"Mithril armor","tags":"Frodo","text":"Mithril is armor worn by [[Frodo]], given by [[Bilbo Baggins|BilboBaggins]]\n"},
{"title":"Operators","caption":"Operators","tags":"Documentation Construct","text":"\\rules except wikilink\nWhenever a filter is processed by Relink, whether in a field, an attribute, or a filtered transclude expression, it will only update the operands of whitelisted operators. Each operator must be configured a particular [[type|Types]].\n\n''Suffixes'' can optionally be a part of a whitelist configuration. Let's say you whitelist the operator `myOperator:mySuffix`. The only instances of //myOperator//'s which will be updated are when they have the suffix //mySuffix//.\n\nHowever, if you whitelisted just `myOperator`, then its operand will update regardless of whether it's `[myOperator[myTitle]]` or `[myOperator:someSuffix[myTitle]]` or whatever. The suffix is ignored.\n\n`[field:title[]]` is another good example. It's a default configuration which will only update //field// if it's suffix is set to //title//.\n\n!!! Defaults\n\n`tag`, `title`, and `field:title` are whitelisted by default. That means on rename //MyTiddler// -> //New Tiddler//:\n\n`[title[MyTiddler]] [tag[MyTiddler]!field:title[MyTiddler]]`\n\nbecomes\n\n`[title[New Tiddler]] [tag[New Tiddler]!field:title[New Tiddler]]`\n\n''Note:'' The `title` whitelist configuration accounts for all shorthand titles, such as `MyTiddler`, `\"MyTiddler\"`, `'MyTiddler'`, and `[[MyTiddler]]`. If you remove it from the whitelist, none of those will relink.\n\n''Multi-operand operators'' are supported in Tiddlywiki >=V5.1.23. Currently, there are only a couple core operators that utilize that, and //none// of them are relevant to relinking.\n\nHowever, if you want to create relinkable operators, you can. Say you have an operator `myop` which takes tiddler titles for its first operand, and a reference for its second. You would put the following entries into the whitelist:\n\n* `myop/1` => `title`\n* `myop/2` => `reference`\n\nThus, the filter `[myop[myTitle],[myTitle!!field]]` will update both operands if \"myTitle\" is renamed.\n\n`myop/1` => `title` is equivalent to `myop` => `title` since the first operand is the default operand. However, defining both `myop` and `myop/1` is unsupported and results in undefined behavior.\n\n!!! Relinking Suffixes\n\n//Relink// is also capable of relinking operator suffixes through its \u003C\u003Clink-to-tab Plugins \"Plugins/Fieldnames\" \"Fieldnames supplemental plugin\">>. That feature is [[detailed here|Suffixes]].\n\n\n\u003C\u003Clink-to-tab Demo Demo/Filters Demo>>\n"},
{"title":"orphans Operator","tags":"[[Filter Operators]]","caption":"orphans","purpose":"outputs all non-shadow tiddlers with no references","text":"|!purpose |{{!!purpose}} |\n|!input |ignored |\n|!parameter |none |\n|!output |any non-shadow tiddlers which are not referenced by any other tiddler |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:orphans[]]`\n\nBehaves much like `[all[orphans]]`, except that this will look at all possible references, not just hard links.\n\n[[Examples|orphans Operator (Examples)]]\n"},
{"title":"orphans Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[relink:orphans[]]\">>\n"},
{"title":"Other plugins by Flibbles","text":"\\rules except wikilink\n\nOther plugins I've developed for TiddlyWiki5\n\n!! [[Uglify|https://flibbles.github.io/tw5-uglify/]]\n\nScrunch TiddlyWiki down! Minify javascript and JSON to serve from Node.JS, shrink down your TiddlyWiki file, or compress your own plugins before publishing them.\n\n!! [[XML|https://flibbles.github.io/tw5-xml/]]\n\nToolkit for doing all things XML --- XPath and JQuery-like filters and widgets. XML rendering. Automatic template application. And more.\n"},
{"title":"Plugins","caption":"Supplemental Plugins","tags":"Relink","text":"//Relink// has additional sub-plugins which provide additional features for more specific needs. (I've also made some [[unrelated plugins|Other plugins by Flibbles]] you might be interested in!)\n\n\u003C$macrocall $name=\"tabs\"\n\ttabsList=\"[tag[Plugin]]\"\n\tdefault={{{ [tag[Plugin]first[]] }}}\n\ttemplate=\"Templates/Plugin\"/>\n"},
{"title":"Plugins/Fieldnames","caption":"Field Names","plugin":"$:/plugins/flibbles/relink-fieldnames","tags":"Feature Plugin","text":"\nWith this supplemental plugin installed, any field //names// that correspond with a renamed tiddler will also be renamed.\n\nFor example, if you have a field used across many tiddlers called `price` (which likely contains numeric values), you might have a tiddler named `price` which describes a filter on how to display this field, as well as a field description. If you later decided the field should instead have been called `cost`, then you can rename the tiddler, and all fields across all tiddlers will update, assuming you have this plugin installed.\n\nThis plugin also takes care of updating any entries in the //Relink// whitelist concerning any renamed fields.\n\n!!! Tiddlywiki version\n\nTiddlywiki version 5.2.0 changed so that field names can be any possible value, whereas before fields could only be lowercase alphanumeric with `_`, `-`, and `.`. This plugin will work with version both after and prior to v5.2.0.\n\n!!! Install\n\nTo install //Relink-fieldnames//, first install //Relink//, then drag the following pill button onto your project:\n\n@@text-align:center;\n\u003C$link to={{!!plugin}} class=\"relink-dragger relink-markdown\">Field renaming support!\u003C/$link>\n@@\n\n\u003C\u003Clink-to-tab Demo \"Demo/Field names\" Demo>>\n"},
{"title":"Plugins/Markdown","caption":"Markdown","plugin":"$:/plugins/flibbles/relink-markdown","tags":"Feature Plugin","text":"//Relink// has a supplemental child-plugin you can install which integrates markdown support. With that installed, your //text/x-markdown// tiddlers will be relinked along with your wiki tiddlers.\n\nThis plugin is designed to work against the [ext[core ''tiddlywiki/markdown'' plugin|https://tiddlywiki.com/plugins/tiddlywiki/markdown/]], however, it will mostly support any other markdown plugin you choose to use (such as ''anstosa/tw5-markdown'' or others).\n\n!!! Markdown Syntax\n\nRelink-markdown supports markdown links, images, and footnotes:\n\n```\n[Link caption](#MyTiddler)\n\n![Image caption](MyImage.png)\n\nFootnote[1]\n\n[1]: #MyTiddler\n```\nRenaming ''~MyTiddler'' and ''~MyImage.png'' results in:\n\n```\n[Link caption(#OtherTiddler)\n\n![Image caption](OtherImage.png)\n\nFootnote[1]\n\n[1]: #OtherTiddler\n```\n\n!!! Mixing Wiki and Markdown syntax\n\n''tiddlywiki/markdown'' and other plugins support mixing wiki and markdown syntax in your //text/x-markdown// files. //Relink-markdown// will seamlessly support whatever your markdown plugin supports.\n\nFor those unfamiliar with ''tiddlywiki/markdown'', you can configure what ~WikiSyntax your markdown files support by editing the ''~$:/config/markdown/renderWikiTextPragma'' tiddler.\n\n!!! Install\n\nTo install //Relink-markdown//, first install //Relink//, then drag the following pill button onto your project:\n\n@@text-align:center;\n\u003C$link to={{!!plugin}} class=\"relink-dragger relink-markdown\">Markdown support!\u003C/$link>\n@@\n\n\u003C\u003Clink-to-tab Demo Demo/Markdown Demo>>\n"},
{"title":"Plugins/Titles","caption":"Titles","plugin":"$:/plugins/flibbles/relink-titles","tags":"Plugin","text":"The //Relink// supplemental child-plugin, //Relink-titles//, allows for other tiddlers to have their titles renamed when specific target tiddlers are relinked. Usually, these other tiddlers will relate to the target tiddler in some way.\n\nThere are two preset rules you can use. Or you can write a custom rename rule for your plugin or project.\n\n!!! Preset Rules\n\n\u003C$list filter=\"[tag[TitlesPreset]]\">\n\n!!!! {{!!caption}}\n\n\u003C\u003C\u003C\n\n\u003C$transclude />\n\n\u003C\u003C\u003C\n\n\u003C/$list>\n\n!!! Third Party Integration\n\nIf you have a plugin of your own, you can integrate with //Relink-titles// so it will relink titles related to each other in ways specific to your plugin. All you need to do is create a `relinktitlesrule` module in your plugin with the following fields:\n\n* ''caption'': This will show up next to the checkbox in the //Relink-titles// configuration page.\n* ''description'': This should contain a //brief// wikitext description of what your rule is for.\n\nBy default, your rules will automatically be enabled, but the user can disable them from the //Relink// or //Relink-titles// configuration menu. There's an [[example rule in this demo|Plugins/Titles/example.js]] that you can check out. \n\nIf you want your rule to be disabled by default, simply create a tiddler in your plugin called `$:/config/flibbles/relink-titles/relink/\u003C\u003CyourRulesTiddler>>` with its text set to ''disabled''.\n\n!!! Migration\n\nVersion 2 of //Relink-titles// had to be overhauled due to underlying changes in Relink V2. If you did not create any custom filters or have any plugin integration, all you need to do is update and check your settings. \u003C\u003Clink-to-tab [[Migration to V2]] [[Migration to V2/relink-titles]] \"Otherwise, see here for migration details.\">>\n\n\n!!! Install\n\nTo install //Relink-titles//, first install //Relink// (''make sure you're using \u003C\u003Clink-to-tab Versions Versions/2.0.0 \"version 2.0.0 or greater\">>''!), then drag the following pill button onto your project:\n\n@@text-align:center;\n\u003C$link to={{!!plugin}} class=\"relink-dragger relink-titles\">Titles support!\u003C/$link>\n@@\n\n\u003C\u003Clink-to-tab Demo Demo/Titles Demo>>\n"},
{"title":"Plugins/Titles/directory","caption":"{{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}","tags":"TitlesPreset","text":"This //Titles// setting is for when your tiddlers are set up hierarchically, like a filesystem. When renaming a target tiddler, //Relink// will change the titles of all tiddlers that would be considered nested within the target tiddler. For instance:\n\n```\n Images\n ├── ...\n ├── Images/2019\n │ ├── Images/2019/01-Trip-to-Spain\n │ ├── Images/2019/05-School\n │ └── Images/2019/12-Christmas\n └── ...\n```\n\nRenaming `Images` to `Pictures` would also rename\n\n* `Images/2019` to `Pictures/2019`\n* `Images/2019/Trip-to-Spain` to `Pictures/2019/Trip-to-Spain`\n* ...and so on.\n\nIf you were to instead rename `Images/2019` to `Images/2020`, then all of the `Images/2019/*` files would be properly renamed, but `Images` would remain untouched.\n\nThis is also effectively //moves// directories and their contents. Let's suppose we renamed `Images` to `Archive/Images`. All nested tiddlers of `Images` would likewise have `Archive/` appended to them. \n"},
{"title":"Plugins/Titles/example.js","text":"/*\\\ncaption: \u003C$link>Example Option\u003C/$link>\ndescription: This example module. It's a 3rd party option which didn't come with //Relink-titles// that shows how other plugins can add rename rules of their own. See \u003C\u003Clink-to-tab Plugins Plugins/Titles \"the //Relink-titles// documentation page\">> for more information.\nmodule-type: relinktitlesrule\ntitle: Plugins/Titles/example.js\ntype: application/javascript\n\nThis example module relinks tiddler titles which are prefixed versions of a\nrenamed tiddler. For example...\n\n If `fromTitle` is renamed to `toTitle`, then this rule renames\n `$:/TitlesExample/fromTitle` to `$:/TitlesExample/toTitle`.\n\nThis is just an example, but core Tiddlywiki will often use prefixes like this\nto denote settings related to a tiddler, such as the prefix\n`$:/config/EditorToolbarButtons/Visibility/` which corresponds to specific\nbuttons, and contains settings for their visibility.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// The name is just a name for your rule. Currently this isn't used,\n// but you should put something unique anyway.\nexports.name = 'example';\n\n/**The report method is for the \"//Relink// references\" info panel.\n *\n * Given a title, it call the callback method for every tiddler it might be\n * referencing. In this example, that means if the given tiddler has the\n * `$:/TitlesExample/` prefix, it'll return whatever it relates to.\n *\n * title: title of tiddler to consider for references\n * callback: method to call for each reference\n */\nexports.report = function(targetTitle, callback, options) {\n\t// If this title doesn't start with the prefix,\n\t// then it's irrelevant for this rule.\n\tif (targetTitle.startsWith('Example/setting/')) {\n\t\tvar referencedTitle = targetTitle.substr('Example/setting/'.length);\n\t\t// First param is the other tiddler that this title references.\n\t\t// Second param is optional. It's a blurb describing the relationship.\n\t\tcallback(referencedTitle, 'Example titles rule');\n\t}\n};\n\n/**Specifies a change for a given title given rename 'fromTitle' to 'toTitle'\n *\n * When 'fromTitle' is renamed to 'toTitle', this method will be called for\n * all tiddlers. For any given tiddler, if this returns a string, that string\n * will replace that tiddler's title.\n *\n * title: title of tiddler to possibly relink\n * fromTitle: old title of tiddler whose rename triggered relinking\n * toTitle: new title of tiddler whose rename triggered relinking\n */\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\n\t// If this is the TitlesExample tiddler for the renamed tiddler...\n\tif (targetTitle === ('Example/setting/' + fromTitle)) {\n\t\t// Then return the TitlesExample tiddler for the new name.\n\t\treturn {output: 'Example/setting/' + toTitle};\n\t\t// If, for whatever reason, we could NOT change the targetTitle\n\t\t// given this particular toTitle, then we would instead return:\n\t\t// {impossible: true};\n\t}\n\t// Otherwise, if this targetTitle is irrelevant, do nothing, or return:\n\t// undefined\n};\n","caption":"\u003C$link>Example Option\u003C/$link>","description":"This example module. It's a 3rd party option which didn't come with //Relink-titles// that shows how other plugins can add rename rules of their own. See \u003C\u003Clink-to-tab Plugins Plugins/Titles \"the //Relink-titles// documentation page\">> for more information.","module-type":"relinktitlesrule","type":"application/javascript"},
{"title":"Plugins/Titles/lookup","caption":"{{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}","tags":"TitlesPreset","text":"This //Titles// setting allows you to update configuration tiddlers associated with the tiddler being renamed. For instance, if you have `History/myTiddler` which contains the history for `myTiddler`, you'd want that history tiddler to update accordingly. You can use the lookup pattern `History/$(currentTiddler)$` to manage that.\n\nLet's say you have many history tiddlers representing different version, like `History/2020-05-05/myTiddler`. You can use a wildcard in your pattern, like `History/$(*)$/$(currentTiddler)$`.\n\nThe patterns are highly flexible. `$(currentTiddler)$` can appear anywhere in the pattern, so can as many wildcards (`$(*)$`) as you want. By default, there is a pattern already configured which concerns the visibility of Tiddlywiki buttons:\n\n\u003C$codeblock code={{$:/config/flibbles/relink-titles/lookup/patterns}} />\n\nThis rule is primarily there as an example, but I recommend leaving it in as it does cover several useful cases.\n"},
{"title":"Pragma","caption":"Pragma //(//\\//define, //\\//rules, ...)//","tags":"Documentation WikiText","text":"Relink manages relevant pragma statements.\n\n;`\\define`\n: Relink processes the contents of a define pragma like any other inline wikitext. However, it will process differently any macros which Relink created while resolving another relink on the page. For instance, if it created\n: `\\define relink-1() My \"complicated\" [[Tiddler]]`\n: it will update the definition if that weird tiddler is ever renamed again.\n;`\\import`\n: Relink processes its filter using standard filter relink rules\n;`\\relink`\n: This is pragma //Relink// itself defines, and it's used for [[Inline Declarations]].\n;`\\rules`\n: Relink does nothing to the rules pragma, but it does respect it. For instance, if html is disabled, then relink will not process any elements or widgets in the rest of the tiddler, since they're technically plaintext.\n;`\\whitespace`\n: Irrelevant to Relink. Ignored.\n"},
{"title":"Reference","tags":"Types","text":"\\rules except wikilink\n\nThis is a [[TextReference, as described here|https://tiddlywiki.com/static/TextReference.html]].\n\nThe tiddler portion of the TextReference is checked and possibly relinked. So if `FirstTiddler` were renamed to `SecondTiddler`, then a TextReference like\n\n`FirstTiddler!!MyField`\n\nwould become\n\n`SecondTiddler!!MyField`\n\nYou probably won't use this one very often. Generally, when you want to make a TextReference, you do so through transclusion (e.g. `{{FirstTiddler!!MyField}}`), and those will already be relinked for you, but there are some cases where a literal value is expected to be a TextReference.\n\n...namely, the filter operator `list`. That's it.\n"},
{"title":"references Operator","tags":"[[Filter Operators]]","caption":"references","purpose":"find the titles referenced by each input title","text":"|!purpose |{{!!purpose}} |\n|!input |a selection of titles |\n|!parameter |none |\n|!output |the titles to which the input tiddlers contain any sort of reference |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:references[]]`\n\n\nEach input title is processed in turn. A tiddler's list of references is generated (in no defined order) and then dominantly appended to the operator's overall output. This will include ''all referenced'' tiddlers, including ones that don't exist.\n\nThis functions like Tiddlywiki's `links` operator, only instead of considering only hard links, it will consider all possible references which //Relink// can find.\n\n[[Examples|references Operator (Examples)]]\n"},
{"title":"references Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[[Demo]relink:references[]]\">>\n\u003C\u003Coperator-example 2 \"[[Demo]relink:references[]is[tiddler]]\" \"filtering out non-existent titles is useful\">>\n"},
{"title":"Relink-titles Migration","text":"//Relink-titles// V1 relied on filters in order to update tiddler titles. However, filters were no longer appropriate due to changes in Relink-V2. If you created a custom rule filter for //Relink-titles//, first of all, I'm sorry I'm making you have to update, but filters really don't work for the newer, better systems under Relink's hood.\n\nYou'll need to create a `relinktitlesrule` module instead of a filter. Fortunately, they are very simple modules, and should give you much more flexibility than the filters did.\n\n[[Here is an example module|Plugins/Titles/example.js]] with plenty of documentation. You need a `report` method for the [[TiddlerInfo Tab]], and a `relink` method for the actual updating of titles.\n"},
{"title":"report Operator","tags":"[[Filter Operators]]","caption":"report","purpose":"returns blurbs describing all input tiddlers' references to the operand title","text":"|!purpose |{{!!purpose}} |\n|!input |a selection of titles, most likely just one |\n|!parameter |the title of a tiddler to which the input tiddlers reference |\n|!output |blurbs describing the nature of the references to the operand |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:report[$referencedTiddler$]]`\n\nEach input title is examined for references to the operand. For each one, a blurb describing that reference is outputted. Multiple identical blurbs can exist in the output. If this is undesired, use the pre-existing `[unique[]]` operator.\n\nMost likely, you will want to use this operator with a single input at a time, since blurbs do not contain any information describing the tiddler they're referencing, or what tiddler contains the reference.\n\n[[Examples|report Operator (Examples)]]\n"},
{"title":"report Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[[Demo/Transcludes]relink:report[Frodo]]\" \"returns all blurbs describing [[Demo/Transcludes]]'s references of [[Frodo]]\">>\n\u003C\u003Coperator-example 2 \"[[report Operator]relink:report\u003CcurrentTiddler>]\" \"blurbs describing [[report Operator]]'s references to this tiddler\">>\n\u003C\u003Coperator-example 3 \"[relink:report[Documentation]]\" \"blurbs about all references across all tiddlers referencing the [[Documentation]] tiddler.\">>\n"},
{"title":"Roadmap","caption":"Roadmap","text":"This page is meant for the developer so they don't forget what's left to do.\n\n* The plugin names shown on the whitelist tables are using the descriptions, not the names.\n* Filters could do a better job of renaming title-only entries. i.e. `{{{ [[MyTiddler]] }}}` would become `{{{ [\u003Crelink-1>] }}}` on tough renames.\n* Macros cached after encountering `\u003C$importvariables>` should be popped after encountering `\u003C/$importvariables>`.\n* Document the filters included with //Relink//.\n* Write tests to confirm relink:references filter, and its interaction with the to-update filter.\n** Also, ensure that relink:references works on input and isn't a generator. This may require creating [all[relinkable]]\n* Possible issue with `\u003C$importvariables>` widgets being called whose attributes depend on macros defined immediately preceding the widget call. `\\define macro() blah\\n\\n\u003C$importvariables filter=\u003C\u003Cblah>> >...`\n** And I need to track variables set in `\u003C$set>` even though those aren't ever involved in relinking. They may be part of an importvariables attribute value.\n* macrocall relinker rule doesn't do any logging.\n* Better respect for global rules settings when making placeholder or downgrade decisions.\n\n!!! Markdown\n\n* Footnote captions can contain wikitext which we don't handle.\n* I'm using an over-eager relinker which isn't the Relink way.\n* Footnotes should determine if they're linking to tiddlers or images, so it knows whether there should or shouldn't be a '#'.\n"},
{"created":"20230310002205514","text":"","tags":"inventario","title":"rojo","modified":"20230310155351835","type":"text/vnd.tiddlywiki","imagen":"\u003Ccenter>[img height=50px [./medios/imagen/object-red.png]]\u003C/center>","disponible":"1","necesitada":"3","status":"rework","priority":"1"},
{"title":"RSoD","text":"~RSoD is short for the Red Screen of Death. It's the red window that pops up when Tiddlywiki throws and unhandled exception.\n"},
{"title":"Stylesheet.css","text":"/*\\\ntags: $:/tags/Stylesheet\ntitle: Stylesheet.css\n\n\\*/\n\na.relink-dragger {\n\t-moz-box-shadow:inset 0px 1px 0px 0px #caefab;\n\t-webkit-box-shadow:inset 0px 1px 0px 0px #caefab;\n\tbox-shadow:inset 0px 1px 0px 0px #caefab;\n\tbackground:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #77d42a), color-stop(1, #5cb811));\n\tbackground:-moz-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:-webkit-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:-o-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:-ms-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:linear-gradient(to bottom, #77d42a 5%, #5cb811 100%);\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#77d42a', endColorstr='#5cb811',GradientType=0);\n\tbackground-color:#77d42a;\n\t-moz-border-radius:20px;\n\t-webkit-border-radius:20px;\n\tborder-radius:20px;\n\tborder:1px solid #268a16;\n\tdisplay:inline-block;\n\tcursor:pointer;\n\tcolor:#306108;\n\tfont-family:Arial;\n\tfont-size:15px;\n\tfont-weight:bold;\n\tpadding:6px 24px;\n\ttext-decoration:none;\n\ttext-shadow:0px 1px 0px #aade7c;\n}\n\na.relink-dragger:hover {\n\ttext-decoration: none;\n}\n\n.relink-dragger:active {\n\tposition:relative;\n\ttop:1px;\n}\n\na.relink-markdown.relink-dragger {\n\tpadding:4px 18px;\n}\n.relink-text {\n\tpadding: 0px;\n}\n\n.relink-text pre {\n\tpadding: 6px;\n\tmargin: 0px;\n\tborder: none;\n}\n\n.relink-demo-source {\n\tfloat: left;\n\twidth: 49%;\n\tborder: 1px solid #cccccc;\n\tmargin-top: 0px;\n\tmargin-bottom: 0px;\n}\n\n.relink-demo-preview {\n\tfloat: right;\n\twidth: 49%;\n\tmargin-left: 0px;\n\tmargin-right: 0px;\n\tborder: 1px solid #cccccc;\n\tpadding: 3px;\n}\n\n.relink-demo-fields {\n\twidth: 100%;\n}\n\n.relink-demo-description {\n\tclear: both;\n\tpadding-top: 5px;\n}\n\n.relink-demo-image {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\twidth: 50%;\n}\n\n.doc-example {\n\tmargin: 1em 0;\n\tpadding: 0.8em 0;\n}\n\n.doc-example:hover {\n\tbackground-color: \u003C\u003Ccolour code-background>>;\n}\n\n.doc-example ul {\n\tmargin-bottom: 0;\n\tpadding-bottom: 0;\n\tmargin-top: 0.2em;\n}\n\n.doc-example input[type=search] {\n width: 95%;\n}\n\n.doc-example pre:first-child {\n\tmargin-top: 0;\n}\n\n.doc-example-result {\n\tborder-left: 5px solid \u003C\u003Ccolour blockquote-bar>>;\n\tborder-right: 5px solid \u003C\u003Ccolour blockquote-bar>>;\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tpadding: 0 10px;\n}\n\n.doc-example-result ul {\n\tmargin-left: 0;\n\tpadding-left: 10px;\n}\n\n.doc-example-result ol {\n\tmargin-left: 0;\n\tpadding-left: 20px;\n}\n","tags":"$:/tags/Stylesheet"},
{"title":"Suffixes","text":"//Relink-Fieldnames// can update the suffixes of filter operators as well. It does so through a whitelist, but since this a more esoteric behavior, the whitelist isn't exposed in the \u003C\u003Clink-to-config-tab caption:\"//Relink// configuration panel\">>.\n\nHowever, the whitelist can be modified by adding system tiddlers with the prefix `$:/config/flibbles/relink/suffixes/` with text values corresponding to the suffixes [[type|Types]].\n\n''For example:'' If the system tiddler `$:/config/flibbles/relink/suffixes/myoperator` had a text value of `title`, then filters such as `[myoperator:fromtitle[]]` would relink if ''fromtitle'' were renamed.\n"},
{"title":"Templates/Button","text":"\u003C$list filter=\"[\u003CcurrentTab>tag[Supplemental]]\">{{$:/core/images/new-button}}\u003C/$list>\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\"caption\">\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\"title\"/>\u003C/$transclude>\n"},
{"title":"Templates/Demo","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>> >\n\n!! \u003C$link>{{!!caption}}\u003C/$link>\n\n\u003C$list filter=\"[all[current]contains:relink.showcase[text]] ~[all[current]!has:field[relink.showcase]]\">\n\n@@.relink-demo-source\n\u003Cdiv class=\"relink-text\">\u003Cpre>\u003C$view field=\u003C\u003Cfield>> />\u003C/pre>\u003C/div>\n@@\n\n\u003Cdiv class=\"relink-demo-preview\">\n\n\u003C$transclude />\n\n\u003C/div>\n\u003C/$list>\u003C$list variable=render filter=\"[list[!!relink.showcase]!match[text]first[]]\">\n\n\u003Ctable class=\"relink-demo-fields\">\n\u003C$list variable=\"field\" filter=\"[list[!!relink.showcase]]\">\n\u003Ctr>\u003Ctd>''\u003C\u003Cfield>>''\u003C/td>\u003Ctd class=\"relink-text\">\u003Cpre>\u003C$view field=\u003C\u003Cfield>> />\u003C/pre>\u003C/td>\u003C/tr>\n\u003C/$list>\n\u003C/table>\n\u003C/$list>\n\n@@.relink-demo-description\n\u003C$transclude field=\"description\" />\n@@\n\n\u003C$list filter=\"[all[current]has[warning]]\">\n\n{{$:/core/images/warning}} ''Warning:'' {{!!warning}}\n\u003C/$list>\n\n\u003C$list filter=\"[all[current]search::literal[define relink-]]\">\n\n''relink-1:'' Sometimes, Relink is unable to make title replacements in place (e.g. replacing a prettylink with a title that has brackets in it). In these cases, Relink may define placeholder macros at the top of your tiddler which it uses to complete the relink operation.\n\u003C/$list>\n\u003C/$tiddler>\n"},
{"title":"Templates/Hello","text":"Hello, I'm {{!!title}}.\n"},
{"title":"Templates/now","text":"\u003C\u003Cnow [UTC]YYYY0MM0DD0hh0mm0ssXXX>>\n"},
{"title":"Templates/Plugin","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>> >\n\n\u003C$tiddler tiddler={{!!plugin}}>\n\n\u003C$transclude tiddler=\"$:/core/ui/Components/plugin-info\" />\n\u003C/$tiddler>\n\n\u003C$transclude />\n\n\u003C/$tiddler>\n"},
{"title":"Templates/release-date","text":"\u003C!--\tThis filter gets the date of the specified version. It adds a \".0\"\n\tto the revision if it's missing.\n-->\n{{{\n\t[{$:/plugins/flibbles/relink!!version}regexp[\\d+\\.\\d+\\.\\d+]]\n\t~[{$:/plugins/flibbles/relink!!version}addsuffix[.0]]\n\t+[addprefix[Versions/]get[created]]\n}}}\n"},
{"title":"Templates/Type","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>> >\n\n! \u003C$link>\u003C$transclude field=\"caption\">{{!!title}}\u003C/$transclude>\u003C/$link>\n\n{{}}\n\u003C/$tiddler>\n"},
{"title":"Templates/Version","text":"\u003C$set name=\"minor\" filter=\"[\u003CcurrentTab>removesuffix[.0]]\">\n\n!! Version \u003C$text text={{{[\u003Cminor>removeprefix[Versions/]]}}} />\n\n\u003C$list filter=\"[prefix\u003Cminor>nsort[created]]\">\n\n!!! \u003C$text text={{{[all[current]removeprefix[Versions/]addprefix[v]]}}} />\n\n!!!!! \u003C$view field=\"created\" format=\"date\" template=\"MMM DDth, YYYY\" />\n\n\u003C$transclude />\n\n\u003C/$list>\n\n\u003C/$set>\n"},
{"title":"Templates/Version-button","text":"{{{[\u003CcurrentTab>removeprefix[Versions/]addprefix[v]removesuffix[.0]]}}}\n"},
{"title":"Third Party Plugin Integration","tags":"Feature","text":"//Relink// has the ability to allow other plugins to integrate seemlessly with it if they so choose. For example, if a plugin you're developing has macros, widgets, fields, or filter operators which could benefit from being relinked, you need only to include a few extra tiddlers with your plugin, and //Relink// will automatically manage your plugins content, assuming //Relink// is installed.\n\nNot only will //Relink// recognize any configuration tiddlers your plugin specifies, it will organize your settings into its own subcategory in the //Relink// whitelists.\n\n!! Configuration Tiddler names\n\nEach relinkable structure type has it's own name structure.\n\n!!! Widgets and elements\n\nEach managed attributes will require its own tiddler.\nWidget name should begin with a '$' if it's a widget. This is probably the case.\n\n```\n$:/config/flibbles/relink/attributes/$element-name$/$attribute-name$\n```\n\n!!! Fields\n\n```\n$:/config/flibbles/relink/fields/$field-name$\n```\n\n!!! Macro Parameters\nEach managed parameter of a macro will require its own tiddler.\n\n```\n$:/config/flibbles/relink/macros/$macro-name$/$parameter-name$\n```\n!!! Filter Operators\n\n```\n$:/config/flibbles/relink/operator/$operator-name$\n```\n\n!! Text\n\nThe text of these configuration tiddlers is one word, specifying the [[type|Types]] of the parameter/attribute/field/operator. The following values are allowed:\n\n\u003C\u003Cul Types>>\n\n!! Example\n\n[[An example plugin is included in this demo|$:/plugins/flibbles/3rd-party]]. It doesn't do anything, but it is integrated with //Relink// for each type of construct it defines.\n"},
{"title":"Tiddler Type","tags":"Feature","caption":"Tiddler types besides //text/vnd.tiddlywiki//","text":"By default, Relink treats the text body of most tiddlers as [[Wikitext]]. This includes all tiddlers that don't have a ''type'' field, or have a ''type'' field of `text/vnd.tiddlywiki`. However, different type fields will be relinked differently. For instance, //Relink// will ignore the text bodies of all `text/plain` tiddlers, because plain text doesn't have any links or references.\n\nIf you have the [[supplemental Relink-Markdown plugin|Plugins/Markdown]], all `text/x-markdown` files will be relinked as markdown.\n\n! Custom types\n\nSometimes tiddlers are used to store information instead of wikitext, particularly config tiddlers. They may store a filter, or a simple title, and it's important not only to still relink them, but to prevent them by being wrongfully relinked if they're interpretted as wikitext. For them, //Relink// defines four custom tiddler types:\n\n* text/x-tiddler-filter\n* text/x-tiddler-list\n* text/x-tiddler-reference\n* text/x-tiddler-title\n\nTiddlers assigned one of these types will be relinked as a filter, list, reference, or a title respectively.\n\n!!! Exceptions\n\n''$:/DefaultTiddlers'' is a core tiddler which is an exception. It doesn't have a type since core Tiddlywiki doesn't integrate with //Relink//, but it's treated as a filter.\n"},
{"title":"TiddlerInfo Tab","tags":"Feature","text":"//Relink// provides a new tab in the tiddler info panel. This is the panel that comes up when you click the {{$:/core/images/info-button}} ''info'' button.\n\n!! //Relink// References\n\n\"//Relink// References\" indicates all the tiddlers that reference the given tiddler, either through fields, links, macros, transclues, or widgets. Basically, it's all the tiddlers that would update if you renamed the tiddler.\n\nIt also provides a small blurb of context to give you an idea of what kind of reference it is.\n\nThis new tab different than the core \"References\" tab, which only lists tiddlers that link to the given tiddler through `\u003C$link>` or `[[Pretty link]]` syntax, and provides no context.\n"},
{"title":"Tiddlers to relink","tags":"Hacks","text":"By default, //Relink// updates all non-shadow tiddlers, this includes system tiddlers. However, this behavior can be modified. If the system tiddler `$:/config/flibbles/relink/to-update` is present, //Relink// will use the filter in its text to determine which tiddlers to update on a rename.\n\nFor instance:\n\n* `[all[]!is[system]]` makes Relink only update non-system tiddlers.\n* `[all[shadows+tiddlers]]` makes it update everything. It'll override shadows when necessary.\n\nThis configuration is not currently exposed in a //Relink//'s general settings page because it would be the only setting there. Also, I expect most users will never need to modify this. Let me know if you think otherwise.\n"},
{"title":"Title","tags":"Types","text":"This is the simplest type. The value is a single tiddler title.\n\nFor example: In `\u003C$link to=\"Tiddler Name\" />`, if the `to` attribute is treated as a title type (which it is by default), then //Tiddler Name// is considered as a single title. The value can contain spaces without any special syntax.\n\nAn example of a title field would be\n\n`list-after: Tiddler A`\n\nThe value of list-after is one tiddler titled \"Tiddler A\". If \"Tiddler A\" is renamed to \"Tiddler B\", that field would become:\n\n`list-after: Tiddler B`\n"},
{"title":"Transcludes","caption":"Transcludes","tags":"Documentation WikiText","text":"Simple Transclusion patterns are automatically updated. This includes both the tiddler and the template tiddler.\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTiddler}}\n```\n\n!! Filtered Transclusion\n\nFilters inside of filtered transclusions are also processed. Relink will obey the usual whitelist rules for operands in those filters. If the filtered transclusion has a template, that will also be relinked if applicable.\n\n```\n{{{ [tag[MyTiddler]] }}}\n{{{ [tag[MyTiddler]] || Template }}}\n```\n\n\u003C\u003Clink-to-tab Demo Demo/Transcludes Demo>>\n"},
{"title":"Types","caption":"Field Types","list":"Title","tags":"Documentation","text":"Fields, attributes, parameters, and operators have types. Depending on the type, Relink will parse them differently.\n\n\u003C$macrocall $name=\"tabs\"\n\ttabsList=\"[tag\u003CcurrentTiddler>!tag[Supplemental]] [tag\u003CcurrentTiddler>tag[Supplemental]]\"\n\tdefault=\"Title\"\n\tclass=\"tc-vertical\"\n\ttemplate=\"Templates/Type\"\n\tbuttonTemplate=\"Templates/Button\" />\n"},
{"created":"20230307062016080","text":"","tags":"inventario","title":"verde","modified":"20230310155356338","type":"text/vnd.tiddlywiki","imagen":"\u003Ccenter>[img height=50px [./medios/imagen/object-green.png]]\u003C/center>","disponible":"1","necesitada":"3","status":"rework","priority":"2"},
{"title":"Versions","caption":"Release Notes","tags":"Relink","text":"\u003C$macrocall $name=\"tabs\"\n tabsList=\"[prefix[Versions/]suffix[.0]!nsort[created]]\"\n default={{{[prefix[Versions/]suffix[.0]!nsort[created]first[]]}}}\n template=\"Templates/Version\"\n buttonTemplate=\"Templates/Version-button\"\n class=\"tc-vertical\" />\n"},
{"created":"20170821155707000","text":"* Released Relink\n* Support for Fields, Attributes, Lists, and prettyLinks\n* Customization for Fields and Attributes\n","title":"Versions/1.0.0"},
{"created":"20190825013039321","text":"* Added support for configuring operators. It wasn't there before, even though I said it was.\n* Fixed issue #1\n* Added demo site complete with documentation. Added links to it from the configuration pages.\n* Added support for dynamic Field Types. Will come in handy once \"Text References\" have to be added.\n* Changed name of Field Type \"field\" to \"title\", since title is easier to understand.\n* Changed prompt that pops up when renaming a tiddler. This will only occur on english versions of Tiddlywiki.\n* Made `list` and `tags` appear on the fields configuration page, so they can be removed. Simplified how those two are handled under the hood.\n* Added the relevant attributes for as many core widgets that I could.\n* Corrected issue where default configurations could not be removed.\n* Added support for simple transclusion syntax (i.e `{{Tiddler}}` and `{{Tiddler||Template}}`)\n* Fixed issue where Relink would fumble attribute values that had apostrophes and ended with a quoate. They are impossible, but now Relink makes a macro placeholder as an alternative.\n","title":"Versions/1.1.0"},
{"created":"20190825014935000","text":"* Corrected several broken links (and a typo)\n","title":"Versions/1.1.1"},
{"created":"20200526001805463","text":"* Markdown support\n** Or rather there is now a supplemental plugin which you can also install which adds markdown support to relink.\n* Integration with Tiddlywiki plugin manager. Now Relink has its own tab in the ''Add Plugins'' wizard.\n* Fixed bug where Relink would mangle widget attributes in //very// rare cases.\n* Fixed bug where renaming prettyLinks to something with a '|' char might mess up.\n* Relink now respects `\\rules` settings when it comes to deciding whether to convert wikitext into widgets or other patterns.\n","title":"Versions/1.10.0"},
{"created":"20200906211834719","text":"* Fixed bug where filtered widget attributes might corrupt if reference parameter in nested list cannot be renamed. (i.e. `\u003C$widget attr={{{ [operator{myTitle}] }}} />`. If myTitle can't be renamed, attribute would corrupt.) \n* Relink can handle tricky filtered attribute renames better. Particularly renames involving \"}}}\".\n* Fixed bug where all later filter operators in a run would be reported as containing the target tiddler, even if they didn't.\n* Added `\u003C$list emptyMessage />` attribute to core whitelist as wikitext.\n* Made it so if a tiddler's title is relinked, all tiddlers that reference it will also be relinked. This doesn't happen in core Relink, but some people need to make plugins where this can happen.\n* Added license tab\n","title":"Versions/1.10.1"},
{"created":"20201215235344179","text":"* ''If you're using //Relink-titles//, this release is vital.'' Otherwise this release isn't that important.\n* Made minor but highly important change so that Relink-titles can function without deleting countless tiddlers by mistake.\n* Revamped the console log results to be more concise, easier to read, simpler, and automatically extensible to plugin material like Markdown, Titles, and others (which weren't logging before)\n","title":"Versions/1.10.2"},
{"created":"20210201022024210","text":"* Updated macrocall relinking to support new macrocall rule in TW v5.1.24-prerelease. ''Note:'' Without this change, Relink will RSoD a lot on the cutting edge version.\n* Changed the plugin library tiddler to not use any language tiddler transclusion, so it can be imported and used by other plugin libraries.\n* New default tiddler on demo to brag about my other plugins, like tw5-uglify.\n","title":"Versions/1.10.3"},
{"created":"20190825193402541","text":"* Corrected crash that occurred when any Relink whitelist was empty.\n* Added support for ~WikiLinks\n* prettylinks can support more difficult renames, such as `tiddler with [[brackets]]`\n* Support for the `\\import` pragma\n","title":"Versions/1.2.0"},
{"created":"20190829191722518","text":"* Made logging consistent and more clear.\n* Demo site explains relink placeholders.\n* Prompt about tiddlers that won't be renamed when renaming tiddlers is now fixed, but a better fix is incoming.\n* Prettylinks and ~CamelCase links handle strange titles better\n* Transcludes handle field and indexes ( `{{tiddler!!field }}` ). It also handles edge cases better.\n* Lists will alert when they cannot relink, instead of bungling the operation\n* Better error handling\n","title":"Versions/1.2.1"},
{"created":"20190831010508611","text":"* Support for filtered transcludes (e.g. `{{{[tag[MyTiddler]]}}}`)\n* Support for indirect filter operands (e.g. `[get{MyTiddler##index}]`)\n* Filters in general should be a lot more robust\n","title":"Versions/1.3.0"},
{"created":"20190902020915207","text":"* Support for indirect attribute values\n* Support for filter attribute values\n* better handling for bad transclusion renames (e.g. `tiddlers with !! bangs`)\n* Added the [[TextReference field type|https://tiddlywiki.com/static/TextReference.html]]. Probably won't be used too much, but Relink is meant to be a total solution.\n* Revamped the popup that appears while renaming tiddlers. Now it accurately lists any tiddlers Relink will be unable to fix.\n* Added a ~TiddlerInfo tab which lists all tiddlers that reference the given one.\n* //Relink// now should handle all relinking except for macros, which I'm not sure yet how or if I should tackle.\n","title":"Versions/1.4.0"},
{"created":"20190902022109690","text":"* Forgot to remove the old \"Known Issues\" from the list\n","title":"Versions/1.4.1"},
{"created":"20190902120700160","text":"* Exposed Field Type dropdown on Operators whitelist\n* Put \"title\" at first of dropdown list, since it's the default\n* Demo improvements and documentation updates\n","title":"Versions/1.4.2"},
{"created":"20190907001619669","text":"* Support for macros\n** This includes a new whitelist and everything.\n** Global macros, locally defined macros, and macro modules are all supported.\n** Documentation to go along with the new macro functionality\n* Fixed issue where filter attributes (e.g. `\u003C$link to={{{filter}}} />`) would cause an unhandled exception of they existed on a page which requires relinking.\n","title":"Versions/1.5.0"},
{"created":"20190913185820277","text":"* Added descriptive text in tiddler info tab, \"//Relink// References\" and added documentation about it too.\n* When renaming a tiddler, Relink lists tiddlers that //will// be updated, as well as any that can't be.\n* Removed warnings when inputting funky tiddler names. They're not in vanilla Tiddlywiki, or will be removed shortly.\n* Documentation has links to specific demo tabs for people coming to demo site through configuration hotlinks.\n* Documented filtered transcludes\n* Fixed table header on Operators whitelist page.\n* Updated demo site to Tiddlywiki v5.1.20\n","title":"Versions/1.5.1"},
{"created":"20190921173553030","text":"* Added ability to alter what tiddlers //Relink// touches through the `$:/config/flibbles/relink/to-update`. [[Documentation here.|Hackability]] (#10)\n* Fixed issue where Relink didn't work at all on IE11 (#9)\n","title":"Versions/1.5.2"},
{"created":"20190921194558085","text":"* Removed startsWith and endsWith from the project. Also for IE11 support (#9)\n","title":"Versions/1.5.3"},
{"created":"20191001171937468","text":"* Modified whitelists to group configurations by core, custom, and external plugins. This subcategories are collapsible.\n* Moved add button to the top for each white list.\n* Demo site changes:\n** Added example plugin which showcases how plugin integration would work. There's also [[documentation to go along with it|Third Party Plugin Integration]].\n** Refactored certain elements, particularly, broke up the Field_Types page into individual tiddlers with tags.\n","title":"Versions/1.5.4"},
{"created":"20200131021148900","text":"* Support for image wikitext (`[img[tiddler.png]]`)\n** Included demo page in demo tiddler\n* Fixed bug where Relink could fail to relink html elements using indirect attributes in rare cases.\n","title":"Versions/1.6.0"},
{"created":"20200408021036214","text":"The Wikitext field type is still coming. This release did some major refactoring to make it possible, but it as itself includes enough standalone features that I'm making a minor release out of it.\n\n* The //Relink// References ~TiddlerInfo pane provides additional information about //how// this given tiddler shows up in others. This feature is subject to change, because I'm not sure I like the level of descriptiveness.\n* $:/DefaultTiddlers is now correctly relinked as a filter tiddler.\n* If Relink encounters an instance where it can't relink, it now no longer gives up on the entire tiddler, and tries to relink all other relevant instances.\n* Fixed issue where filteredtransclude wikitext might not relink if the original title had particular patterns of the '}' character.\n* Relink wasn't properly ignoring text inside code blocks. Now it does.\n* The field `filter` is added as a core filter field.\n","title":"Versions/1.7.0"},
{"created":"20200409040109761","text":"* Finished up loose ends with regards to the //Relink// References infoTab. It should provide useful contexts for all possible scenarios now.\n* Added `\u003C$button set />` and `\u003C$button setTitle />` to core configured attributes.\n","title":"Versions/1.7.1"},
{"created":"20200411021701039","text":"This release adds the wikitext type. Now generic wikitext can be used inside macro parameters, tiddler fields, and more!\n\nAlso...\n\n* Corrected issue where placeholdering complex titles into pragma may overwrite globally defined relink placeholders.\n* Corrected issue where filters would placeholder list or reference operands with the wrong type of placeholder, meaning those placeholders couldn't be relinked later on. Fixed.\n* Fixed issue where Relink might report an impossible relink with a macro whose definition could not be found, even if there are no anonynous parameters to worry about.\n","title":"Versions/1.8.0"},
{"created":"20200415011355302","text":"* Configuration page add buttons no longer allow erroneous blanks.\n* Form validation for Relink configuration page. It no longer allows illegal input which may cause Relink to behave badly.\n* Failed relinks are now reported using Tiddlywiki's alert system, instead of printing to the browser console where no one will see it.\n* Improvements to demo site, including macro wikitext parameter example.\n* Fixed issue where invalid placeholder macros would cause RSoD.\n* Fixed issue where unsanitary prettylink captions could corrupt tiddler if downgraded into a widget link.\n* Fixed issue where ~WikiLinks could fail in rare circumstances if $tw.config.textPrimitives.unWikilink were changed.\n","title":"Versions/1.8.1"},
{"created":"20200424034709562","text":"This release introduces the `\\relink` pragma for inline declaration of macro parameters. No longer do you have to the whitelist to register some little ol' macro you just wrote. You can write a pragma right alongside it that does all the work!\n\n* When about to perform a rename which can't be fully completed, //Relink// warns with one list with highlighted problems, instead of two separate lists. Much cleaner.\n* Fixed serious bug where reference fields didn't work AT ALL! And if you even tried to use them, then Relink would RSoD constantly. I guess Relink isn't being used all that much, because SOMEBODY should have noticed this before version 1.9.\n* If prettylinks must downgrade, they take advantage of Tiddlywiki's 5.1.20's shorthand link syntax if it's available (i.e. `\u003C$link to=\"tiddler\"/>` eqv `\u003C$link to=\"tiddler\">tiddler\u003C/$link>`)\n* wikitext occurring inside attributes or parameters would not find macro definitions in the scope of the tiddler, but not the attribute/parameter. Fixed.\n* Fixed bug where `\u003C$macrocall>` without a $name attribute would cause RSoD.\n* Fixed issue where placeholders in empty tiddlers wouldn't be relinked.\n* Fixed rare issue where placeholders might relink their value into garbage.\n* If a user changed a multiline placeholder to be multiline, it became inert and error-prone. Not anymore.\n","title":"Versions/1.9.0"},
{"created":"20200425031407077","text":"* Corrected the problem were custom-built relinkfieldtypes wouldn't actually be available in the whitelist dropdown menus. I'll actually be adding documentation for this soon. The API has nearly finalized.\n* Forgot to hook up `$:/config/flibbles/relink/settings/default-type` to be used by inline declarations. It uses it now.\n* Corrected issue where 3rd party plugin names wouldn't render correctly in the whitelist. They'd all say \"Relink - flexibility when...\" etc.\n* Fixed issue where empty macro params could cause RSoD. (i.e `\u003C\u003CmyMacro \"\">>`)\n","title":"Versions/1.9.1"},
{"created":"20200508135603495","text":"* Fixed issue where demo site lagged and reset view after every rename. It was being a bad demo.\n* Typo fix to install instructions\n* Moved plugin relink configurations before core relink configurations. It's more likely the user will care about them before core, and it's more important that it's visible.\n* table-of-contents macros were not fully configured by default. Fixed. (#16)\n","title":"Versions/1.9.2"},
{"created":"20200515155144823","text":"* The ''caption'' field is wikitext, even if it usually isn't used for anything fancy. Added to the core list of fields.\n","title":"Versions/1.9.3"},
{"created":"20210324034859173","text":"This version overhauls the internal design in order to integrate with ~TiddlyWiki's indexer system. This version is ''considerably faster'' than V1 when it comes to the Relink info panel and general performance when doing non-Relink things.\n\nUnfortunately, this release required non-backward compatible changes. This will only affect anyone who has created or uses modules that integrate with Relink. [[See here for more details.|Migration to V2]] (Note: Your modules will still work for relinking! They just won't work with the [[TiddlerInfo Tab]].)\n\n''Make sure you update any //Relink// supplemental plugins you're using~''\n\n''Other changes''\n\n* Fixed infinite loop that occurs when relinking tiddlers with certain malformed filters. This was a bad one. The loop used to require closing the browser tab.\n* Relink-titles had to be completely changed. \u003C\u003Clink-to-tab [[Migration to V2]] [[Migration to V2/relink-titles]] \"See here for more info.\">>\n* Support for filterrunprefixes and [[multi-operand filter operators|Operators]]!\n* Relink better conforms to Tiddlywiki rendering with regards to nested wikitext and \\rules pragma.\n* Several [[wikimethods|Wikimethods]] have been defined and documented.\n* Changed the way the //Relink// ~TiddlyInfo reports filters in some cases to be more useful.\n* Relink would not relink fields of javascript tiddlers. Fixed.\n* Fixed minor issue where Relink would erase falsy prettylink captions.\n* Placeholdering for non-managed attributes is less error-prone.\n* Fixed issue with downgrading macrocalls would corrupt empty-string parameters.\n","title":"Versions/2.0.0"},
{"created":"20210810013959449","text":"This release is mainly for support for Tiddlywiki v5.2.*, but there are a few bug fixes and improvements included with it.\n\n* Support for tiddler fields with any kind of characters, as it is now supported in Tiddlywiki v5.2.*.\n* Support for the implicit and explicit `field` filter operator. As in, filters like `[myfield[Tiddler A]]` and `[field:myfield[Tiddler A]]` will now get detected by //Relink// if ''myfield'' is a registered tiddler field in the whitelist.\n* Fixed issue where tiddlers named 'readme' (or something like that) would report //Relink// references from many plugins, because plugins usually have 'readme' in their list, even though they're referring to the '${plugin_name}/readme' shadow tiddler, and not 'readme' the tiddler.\n* If plugins would ever actually relink from a namechange, it gets reported as a tiddler which couldn't be updated, rather than being silently ignored.\n* Fixed issue where 'undefined' blurbs returned by a custom relink module could cause some relink filters to RSoD.\n","title":"Versions/2.0.1"},
{"created":"20210831152902863","text":"It seems //Relink// had a blindspot for tables. Any relinkable content inside a table was completely ignored. Fixed.\n\n* Added wikitext rule to support for tables.\n","title":"Versions/2.0.2"},
{"created":"20210902163423465","text":"* Implemented typedblock wikitext, which is (hopefully) the last blindspot Relink had.\n\n''Note:'' This update requires migration for anyone implementing the `relinktextoperator` module-type and who wishes to use typedblocks using that MIME-type. The method signature has changed. Instead of taking 'tiddler' as a first argument for \"report\" and \"relink\", it takes \"text\", where text is the text body of the tiddler. Then you must change the type of your module to `relinktext`. See the \u003C\u003Clink-to-tab [[Migration to V2]] [[Migration to V2/relinktextoperator]] \"page on migration\">> for an example of the new method signatures.\n","title":"Versions/2.1.0"},
{"created":"20211010233445978","text":"* Added `text/x-tiddler-list`, `text/x-tiddler-reference`, and `text/x-tiddler-title` types so that plugins can set types to their tiddlers with specialized content, and those tiddlers can be relinked appropriately.\n* Small change so relinkoperator modules are capable of deleting tiddler fields if they really want to. Just set {output: null}.\n","title":"Versions/2.1.1"},
{"created":"20211125192514840","text":"* Fixed bug where cleared draft title would prevent changed tiddlers notification from coming up.\n* Added rule to //Relink-titles// for lookup and config tiddlers with names derived from other tiddlers. Allows both prefix and suffixes, as well as wildcard matching.\n* Optimized //Relink// and all of its supplemental plugins for [ext[TW5-Uglify|https://flibbles.github.io/tw5-uglify/]] to get better compression.\n","title":"Versions/2.1.2"},
{"created":"20220523154431401","text":"* Implemented block quotes. It was yet another wikitext syntax I'd completely overlooked.\n* Made //Relink// conform more effectively to the current palette.\n* Added hackability that allows you to control whether //Relink// updates modified fields as it relinks.\n","title":"Versions/2.1.3"},
{"created":"20220817160826682","text":"* Relink would crash if it encountered quote blocks without closing syntax. Fixed.\n","title":"Versions/2.1.4"},
{"created":"20221106022952190","text":"\\rules except wikilink\n\n* Introducing the //Relink-Fieldnames// supplemental plugin, which allows you to manage the field names themselves, not just the field values. If you have tiddlers whose title is used a a field name, those field names will be updated when that tiddler is renamed.\n* Filters! While //Relink// has always had filters, they were never documented and defined, but enough of you have been using them that I went ahead and finalized them. Introducing `relink:references`, `relink:backreferences`, `relink:report`, and `relink:orphans`. If you were already using any of these filters, don't worry. They work exactly as they have been, only now they're documented, and their usage is set in stone now.\n* Introducing the \"//Relink// Missing\" and \"//Relink// Orphans\" MoreSideBar lists. They are moderately more useful than the built-in \"Missing\" and \"Orphans\" lists.\n* Made improvements to the indexer to greatly improve performance while you have uncommitted tiddler renames in place. (i.e. You edit a tiddler title, but you don't save, and you go and edit other stuff. Before, //Relink// would make things laggy.)\n","title":"Versions/2.2.0"},
{"created":"20230108024056377","text":"\\rules except wikilink\n\nPrevious release of //Relink-Fieldnames// did not cover a lot of bases which I hadn't thought of at the time. Now it does.\n\n* Now has whitelists several widget attributes, macro parameters, and filter operands as a special types that ship with the supplementary plugin: the `fieldname` and `fieldnamelist` types. They behave like `title` and `list` except that they respect the reserved field name blacklist.\n* Can now relink the field of transclusions and indirect attributes/operands. i.e. `{{tiddler!!fromTitle}}` can relink to `{{tiddler!!toTitle}}` now.\n* Can now update attribute names of widgets that use dynamic attributes corresponding to tiddler fields. I.E. `\u003C$action-setfield fromTiddler=value />` will now update if ''fromTiddler'' changes.\n* Can now update suffixes of certain filter operators that correspond to fields. I.E. `[search:fromField[...]]`.\n* Can now relink shorthand filter operators corresponding to fields. I.E. `[fromField[]]` will relink if ''fromField'' renames.\n* Can now relink the `[search[]]` operator and its annoyingly unique suffix of fields and flags.\n\nSome changes concern core //Relink// itself.\n\n* //Relink// now handles widgets that use dynamic attributes corresponding to tiddler fields. For example, will now detect ''fromTiddler'' inside of `\u003C$action-setfield whiteListedField=fromTidder />`. It does this using a whitelist which isn't exposed in the configuration because of how esoteric these use cases are.\n* Macrocall filter operands are now supported. I.E. `[prefix\u003CmyMacro fromTitle>]`. This is a feature that snuck in after I made //Relink//, and thus it went unnoticed until now.\n* Whitelisting for the `\u003C$genesis>` widget attributes.\n* The `\u003C$macrocall>` widget now has a custom blurb unlike other widgets which is more concise and useful.\n* Support for the `[contains[]]` widget's operand, which needs relinking only if the suffix corresponds to a whitelisted tiddler list field.\n* Fix for issue #43: The orphan operator would not report tiddlers should have been added to the list since the last operator call.\n","title":"Versions/2.3.0"},
{"created":"20230108171504382","text":"\\rules except wikilink\n\n* Fixed issue where all macro attributes that came after a relinked attribute would be set to the same value the relinked attribute was set to.\n* Updated the Relink-title blurb for lookup rules to be more helpful.\n","title":"Versions/2.3.1"},
{"title":"Whitelisting","text":"You can use the \u003C\u003Clink-to-config-tab Macros \"//Relink// configuration table\">> to whitelist \u003C\u003Csay-list [tag[Types]lowercase[]]>>. Just go to the correct table and input what you need.\n\nA macro may have multiple parameter entries, one for each relinkable parameter. Same with attributes. See each of \u003C\u003Csay-list [tag[Construct]] \"\u003C$link/>\">> for more details.\n\n!! Integrating your plugin with relink\n\nYou can configure the \u003C\u003Csay-list \"[tag[Types]lowercase[]]\">> of your plugin to automatically be in the whitelist.\n\nTo do this, just add tiddlers to your plugin following the naming convention:\n\n* ''Fields'': `$:/config/flibbles/relink/fields/\u003C\u003CfieldName>>`\n* ''Macros'': `$:/config/flibbles/relink/macros/\u003C\u003CmacroName>>/\u003C\u003CparameterName>>`\n* ''Filter Operators'': `$:/config/flibbles/relink/operators/\u003C\u003CoperatorName>>`\n* ''widget/element attributes'': `$:/config/flibbles/relink/attributes/\u003C\u003CelementName>>/\u003C\u003CattributeName>>`\n\nThe body of these configuration tiddlers should be the corresponding [[type|Types]], like `title` or `filter`.\n\nA macro like `\\define fellowship(name, members)` from the [[macro example|Macros]] should have corresponding config tiddlers like:\n\n```\ntitle: $:/config/flibbles/relink/macros/fellowship/name\n\ntitle\n```\n\nand\n\n```\ntitle: $:/config/flibbles/relink/macros/fellowship/members\n\nfilter\n```\n\n!! Integrating //other// people's plugins with relink\n\nIf you install a 3rd party plugin which define macros, filter operators, fields, or widgets, but it doesn't integrate with //Relink//, you can do it yourself byinputting the corresponding entries into the whitelist.\n\nThe advantage to this is it won't override any of a plugin's shadow tiddlers.\n\n!! Why use whitelisting for macros when inline declarations exists?\n\n[[Inline Declarations]] are a more convenient method of declaring macro parameters for relinking. It's faster to set up, and it keeps the macro definition together with the declaration, but there are times when you should use the whitelist.\n\nIf you're building a macro for a plugin, you should use the whitelist for a few reasons.\n\n* The user can override or disable your relink configurations in the whitelist without having to override your shadow tiddlers containing the macros.\n* If the user doesn't have Relink installed, `\\relink` doesn't parse. It just displays as is. That's ugly, and if it comes before your `\\define` pragma, ''it will actually prevent them from being properly imported''. Meanwhile having tiddlers like `$:/config/flibbles/relink/...` in your plugin won't break anything.\n* If the user doesn't have Relink installed, they may have no idea what this `\\relink` syntax is, but if they look in your plugin's contents and see `$:/config/flibbles/relink/macros/macroName/paramName`, they'll have an easier time figuring out that it's part of another plugin named Relink (by Flibbles).\n\nAlso, if you're creating a javascript macro, you obviously can't put `\\relink` pragma in that file. You //can// instead put the declarations into any ol' \u003C\u003Ctag $:/tags/Macro>> tiddler, but you shouldn't. The whitelist is more a appropriate and centralized place.\n"},
{"title":"Widgets with tiddler fields as attributes","text":"//Relink// has a whitelist which allows you to individually specify widget attributes which should be relinked. [[That's described here.|Attributes]] However, some widgets accept attributes which correspond to tiddler fields. For instance, the ``\u003C$action-setfield>`` widget can accept any attribute without a `$` prefix, and those attributes will become fields in the specified tiddler.\n\n```\n\u003C$action-setfield tags=\"Documentation\" />\n```\n\nThis will set the `tags` field of the current tiddler to `Documentation`.\n\nBecause widgets like these accept a dynamic set of attributes, the attribute whitelist cannot be used to relink those fields. That's where the //fieldattributes// settings come in. For each widget, a regular expression can be defined which specifies how its attributes correspond to tiddler fields. For `\u003C$action-setfield>`:\n\n```\ntitle: $:/config/flibbles/relink/fieldattributes/$action-setfield\n\n([^$].*)\n```\n\nIn other words, for all attributes that don't start with a `$`, look up the corresponding entry in the [[Fields]] whitelist for tiddler fields. This way, if `tags` field is configured to be relinked (which it is by default), then `\u003C$action-setfield tags=\"fromTitle\" />` will be relinked appropriately.\n\n!!! The regular expression\n\nThe regular expression used must have a single capture group which will corresponds to the actual name of the tiddler field. An expression like `field-(.*)` will match the attribute `field-tags` to the `tags` tiddler field.\n\n!!! Existing cases\n\nThe following widgets are already configured. There is no table in the //Relink// whitelists because this is such an esoteric problem, but your plugins can always add more with additional `$:/config/flibbles/relink/fieldattributes/` tiddlers.\n\n\u003Ctable>\n\u003C$list filter=\"[all[shadows+tiddlers]prefix[$:/config/flibbles/relink/fieldattributes/]]\">\u003Ctr>\u003Ctd>''\u003C$text text={{!!title}} />''\u003C/td>\u003Ctd>\u003C$text text={{!!text}} />\u003C/td>\u003C/tr>\u003C/$list>\n\u003C/table>\n"},
{"title":"Wikimethods","tags":"Feature","text":"//Relink// includes a few defined wikimethods which you can take advantage of.\n\n\u003C$list filter=\"[[Wikimethods]tagging[]]\">\n\n!! {{!!title}}\n\n\u003Cblockquote>\u003Cpre>\u003Ccode>{{!!title}}({{!!arguments}}) -> {{!!return}}\n\u003C/code>\u003C/pre>\u003C/blockquote>\n\n\u003C$transclude />\n\n\u003C/$list>\n"},
{"title":"Wikitext","tags":"Types","text":"This type is ordinary [[wikitext, as described here|https://tiddlywiki.com/static/WikiText.html]]. It's what every standard tiddler uses in its body.\n\nThis type really only makes sense for fields and macros, but operators and widget attributes can be configured as wikitext as well, if you have the need.\n\n!! Fields\n\nIn your project, you may want snippets of wikitext in tiddler fields. Like this:\n\n```\ntitle: Movie list\ndescription: This tiddler contains a list of all the [[Lord of the Rings]] movies.\n\n* The Fellowship of the Ring\n* The Two Towers\n* Return of the King\n* The Hobbit\n* The Silmarillion\n```\n\nIn this case, you might want that description field to update if `Lord of the Rings` is renamed. You can configure the \u003C\u003Clink-to-config-tab Fields \"relink Fields list\">> to have //description// set to //wikitext//, and relink will properly parse all description fields as wikitext. (This demo wiki has //description// configured as wikitext.)\n\n!!!! inline\n\nRelink expects wikitext used in fields besides `text` to be inline, meaning it won't create any pragma in order to resolve difficult name changes. It will just report a failure to rename and move on.\n\n!! Macros\n\nSometimes you may make macros like this:\n\n```\n\\define wrap-text(text)\n\u003Cspan class=\"my-custom-class\">$text$\u003C/span>\n\\end\n```\n\nThen you may call it like `\u003C\u003Cwrap-text \"See [[here]] for more details\">>`.\n\nIn cases like this, where you have generic wikitext as a macro parameter, you can configure \u003C\u003Clink-to-config-tab Macros \"Relink's Macro configuration list\">> to handle it. In the example's case, you'd add an entry and set ''Macro'' to //wrap-text//, ''Parameter'' to //text//, and ''Type'' to //wikitext//.\n"}
]</script><div id="storeArea" style="display:none;"></div>
<!--~~ Library modules ~~-->
<div id="libraryModules" style="display:none;">
<script data-tiddler-library="yes" data-tiddler-title="$:/library/sjcl.js" data-tiddler-type="application/javascript" type="text/javascript">'use strict';var D,E,F,G,H,sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return'CORRUPT: '+this.message},this.message=t},invalid:function(t){this.toString=function(){return'INVALID: '+this.message},this.message=t},bug:function(t){this.toString=function(){return'BUG: '+this.message},this.message=t},notReady:function(t){this.toString=function(){return'NOT READY: '+this.message},this.message=t}}};function t(t,e,i){if(4!==e.length)throw new sjcl.exception.invalid('invalid aes block size');var c=t.b[i],s=e[0]^c[0],n=e[i?3:1]^c[1],r=e[2]^c[2];e=e[i?1:3]^c[3];for(var o,a,l=c.length/4-2,h=4,d=[0,0,0,0],u=t.s[i],f=(t=u[0],u[1]),p=u[2],m=u[3],j=u[4],y=0;y<l;y++)u=t[s>>>24]^f[n>>16&255]^p[r>>8&255]^m[255&e]^c[h],o=t[n>>>24]^f[r>>16&255]^p[e>>8&255]^m[255&s]^c[h+1],a=t[r>>>24]^f[e>>16&255]^p[s>>8&255]^m[255&n]^c[h+2],e=t[e>>>24]^f[s>>16&255]^p[n>>8&255]^m[255&r]^c[h+3],h+=4,s=u,n=o,r=a;for(y=0;y<4;y++)d[i?3&-y:y]=j[s>>>24]<<24^j[n>>16&255]<<16^j[r>>8&255]<<8^j[255&e]^c[h++],u=s,s=n,n=r,r=e,e=u;return d}function u(t,e){for(var i,c,s=t.F,n=t.b,r=s[0],o=s[1],a=s[2],l=s[3],h=s[4],d=s[5],u=s[6],f=s[7],p=0;p<64;p++)i=(i=p<16?e[p]:(i=e[p+1&15],c=e[p+14&15],e[15&p]=(i>>>7^i>>>18^i>>>3^i<<25^i<<14)+(c>>>17^c>>>19^c>>>10^c<<15^c<<13)+e[15&p]+e[p+9&15]|0))+f+(h>>>6^h>>>11^h>>>25^h<<26^h<<21^h<<7)+(u^h&(d^u))+n[p],f=u,u=d,d=h,h=l+i|0,l=a,a=o,r=i+((o=r)&a^l&(o^a))+(o>>>2^o>>>13^o>>>22^o<<30^o<<19^o<<10)|0;s[0]=s[0]+r|0,s[1]=s[1]+o|0,s[2]=s[2]+a|0,s[3]=s[3]+l|0,s[4]=s[4]+h|0,s[5]=s[5]+d|0,s[6]=s[6]+u|0,s[7]=s[7]+f|0}function A(t,e){var i,c=sjcl.random.K[t],s=[];for(i in c)c.hasOwnProperty(i)&&s.push(c[i]);for(i=0;i<s.length;i++)s[i](e)}function C(t,e){'undefined'!=typeof window&&window.performance&&'function'==typeof window.performance.now?t.addEntropy(window.performance.now(),e,'loadtime'):t.addEntropy((new Date).valueOf(),e,'loadtime')}function y(t){t.b=z(t).concat(z(t)),t.L=new sjcl.cipher.aes(t.b)}function z(t){for(var e=0;e<4&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function B(t,e){return function(){e.apply(t,arguments)}}sjcl.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,i,c,s=this.s[0][4],n=this.s[1],r=t.length,o=1;if(4!==r&&6!==r&&8!==r)throw new sjcl.exception.invalid('invalid aes key size');for(this.b=[i=t.slice(0),c=[]],t=r;t<4*r+28;t++)e=i[t-1],(0==t%r||8===r&&4==t%r)&&(e=s[e>>>24]<<24^s[e>>16&255]<<16^s[e>>8&255]<<8^s[255&e],0==t%r)&&(e=e<<8^e>>>24^o<<24,o=o<<1^283*(o>>7)),i[t]=i[t-r]^e;for(r=0;t;r++,t--)e=i[3&r?t:t-4],c[r]=t<=4||r<4?e:n[0][s[e>>>24]]^n[1][s[e>>16&255]]^n[2][s[e>>8&255]]^n[3][s[255&e]]},sjcl.cipher.aes.prototype={encrypt:function(e){return t(this,e,0)},decrypt:function(e){return t(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){for(var t,e,i,c,s,n,r=this.s[0],o=this.s[1],a=r[4],l=o[4],h=[],d=[],u=0;u<256;u++)d[(h[u]=u<<1^283*(u>>7))^u]=u;for(t=e=0;!a[t];t^=i||1,e=d[e]||1)for(n=16843009*(c=h[u=h[i=h[l[a[t]=s=(s=e^e<<1^e<<2^e<<3^e<<4)>>8^255&s^99]=t]]])^65537*u^257*i^16843008*t,c=257*h[s]^16843008*s,u=0;u<4;u++)r[u][t]=c=c<<24^c>>>8,o[u][s]=n=n<<24^n>>>8;for(u=0;u<5;u++)r[u]=r[u].slice(0),o[u]=o[u].slice(0)}},sjcl.bitArray={bitSlice:function(t,e,i){return t=sjcl.bitArray.$(t.slice(e/32),32-(31&e)).slice(1),void 0===i?t:sjcl.bitArray.clamp(t,i-e)},extract:function(t,e,i){var c=Math.floor(-e-i&31);return(-32&(e+i-1^e)?t[e/32|0]<<32-c^t[e/32+1|0]>>>c:t[e/32|0]>>>c)&(1<<i)-1},concat:function(t,e){var i,c;return 0===t.length||0===e.length||(i=t[t.length-1],32===(c=sjcl.bitArray.getPartial(i)))?t.concat(e):sjcl.bitArray.$(e,c,0|i,t.slice(0,t.length-1))},bitLength:function(t){var e=t.length;return 0===e?0:32*(e-1)+sjcl.bitArray.getPartial(t[e-1])},clamp:function(t,e){var i;return 32*t.length<e||(i=(t=t.slice(0,Math.ceil(e/32))).length,e&=31,0<i&&e&&(t[i-1]=sjcl.bitArray.partial(e,t[i-1]&2147483648>>e-1,1))),t},partial:function(t,e,i){return 32===t?e:(i?0|e:e<<32-t)+1099511627
</div>
<!--~~ Boot kernel prologue ~~-->
<div id="bootKernelPrefix" style="display:none;">
<script data-tiddler-title="$:/boot/bootprefix.js" data-tiddler-type="application/javascript" type="text/javascript">var _bootprefix=function(d){'use strict';return(d=d||Object.create(null)).boot=d.boot||Object.create(null),'browser'in d||(d.browser='undefined'!=typeof window?{}:null),'node'in d||(d.node='object'==typeof process?{}:null),'nodeWebKit'in d||(d.nodeWebKit=d.node&&global.window&&global.window.nwDispatcher?{}:null),d.boot.tasks={trapErrors:!(!d.browser||d.node),readBrowserTiddlers:!(!d.browser||d.node)},d.modules={titles:{},types:{}},d.modules.define=function(e,o,r){var t={moduleType:o,definition:r,exports:void 0};'object'==typeof t.definition&&(t.exports=r),Object.prototype.hasOwnProperty.call(d.modules.titles,e)&&console.log('Warning: Redefined module - '+e),d.modules.titles[e]=t,Object.prototype.hasOwnProperty.call(d.modules.types,o)||(d.modules.types[o]={}),Object.prototype.hasOwnProperty.call(d.modules.types[o],e)&&console.log('Warning: Redefined module - '+e),d.modules.types[o][e]=t},d.preloadTiddlers=d.preloadTiddlers||[],d.preloadTiddler=function(e){d.preloadTiddlers.push(e)},d.preloadTiddlerArray=function(e){d.preloadTiddlers.push.apply(d.preloadTiddlers,e)},d};'undefined'==typeof exports?window.$tw=_bootprefix(window.$tw):exports.bootprefix=_bootprefix;</script>
</div>
<!--~~ Boot kernel ~~-->
<div id="bootKernel" style="display:none;">
<script data-tiddler-title="$:/boot/boot.js" data-tiddler-type="application/javascript" type="text/javascript">var _boot=function(y){'use strict';function e(e,t){var i=new RegExp(y.config.jsModuleHeaderRegExpString,'mg').exec(e);return t.text=e,[t=i?y.utils.parseFields(i[1].split(/\r?\n\r?\n/gm)[0],t):t]}var x,T,l;(y=y||require('./bootprefix.js').bootprefix()).utils=y.utils||Object.create(null),y.node&&(x=require('fs'),T=require('path'),l=require('vm')),y.boot.log=function(e){y.boot.logMessages=y.boot.logMessages||[],y.boot.logMessages.push(e)},y.utils.hop=function(e,t){return!!e&&Object.prototype.hasOwnProperty.call(e,t)},y.utils.isArray=function(e){return'[object Array]'==Object.prototype.toString.call(e)},y.utils.isArrayEqual=function(e,i){return e===i||(i=i||[],(e=e||[]).length===i.length&&e.every(function(e,t){return e===i[t]}))},y.utils.insertSortedArray=function(e,t){for(var i,r,s=0,l=e.length-1;s<=l;)if(0<(r=t.localeCompare(e[i=s+l>>1])))s=1+i;else{if(!(r<0))return e;l=i-1}return e.splice(s,0,t),e},y.utils.pushTop=function(e,t){var i,r;if(y.utils.isArray(t)){if(0!==t.length){if(0!==e.length)if(t.length<e.length)for(i=0;i<t.length;i++)-1!==(r=e.indexOf(t[i]))&&e.splice(r,1);else for(i=e.length-1;0<=i;i--)-1!==(r=t.indexOf(e[i]))&&e.splice(i,1);e.push.apply(e,t)}}else-1!==(r=e.indexOf(t))&&e.splice(r,1),e.push(t);return e},y.utils.isDate=function(e){return'[object Date]'===Object.prototype.toString.call(e)},y.utils.each=function(e,t){if(e)if('[object Array]'==Object.prototype.toString.call(e))for(r=0,s=e.length;r<s&&!1!==t(e[r],r,e);r++);else for(var i=Object.keys(e),r=0,s=i.length;r<s;r++){var l=i[r];if(!1===t(e[l],l,e))break}},y.utils.domMaker=function(e,t){var i=t.document||document,r=i.createElementNS(t.namespace||'http://www.w3.org/1999/xhtml',e);return t.class&&(r.className=t.class),t.text&&r.appendChild(i.createTextNode(t.text)),y.utils.each(t.children,function(e){r.appendChild(e)}),t.innerHTML&&(r.innerHTML=t.innerHTML),y.utils.each(t.attributes,function(e,t){r.setAttribute(t,e)}),y.utils.each(t.style,function(e,t){r.style[t]=e}),t.eventListeners&&y.utils.addEventListeners(r,t.eventListeners),r},y.utils.error=function(e){var t,i,r,s=null==y.language?'Internal JavaScript Error':y.language.getString('InternalJavaScriptError/Title'),l=null==y.language?'Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser':y.language.getString('InternalJavaScriptError/Hint');if(console.error(y.node?''+e+'':e),y.browser&&!y.node)return s=(t=y.utils.domMaker)('h1',{text:s}),l=t('div',{text:l,class:'tc-error-prompt'}),e=t('div',{text:e,class:'tc-error-message'}),i=t('div',{children:[t('button',{text:null==y.language?'close':y.language.getString('Buttons/Close/Caption')})],class:'tc-error-prompt'}),r=t('form',{children:[s,l,e,i],class:'tc-error-form'}),document.body.insertBefore(r,document.body.firstChild),r.addEventListener('submit',function(e){return document.body.removeChild(r),e.preventDefault(),!1},!0),null;y.browser||process.exit(1)},y.boot.tasks.trapErrors&&(window.onerror=function(e,t,i){return y.utils.error(e),!1}),y.utils.extend=function(i){return y.utils.each(Array.prototype.slice.call(arguments,1),function(e){if(e)for(var t in e)i[t]=e[t]}),i},y.utils.deepDefaults=function(i){return y.utils.each(Array.prototype.slice.call(arguments,1),function(e){if(e)for(var t in e)null!==i[t]&&void 0!==i[t]||(i[t]=e[t]),'object'==typeof i[t]&&'object'==typeof e[t]&&y.utils.deepDefaults(i[t],e[t])}),i},y.utils.decodeURIComponentSafe=function(e){var t=e;try{t=decodeURIComponent(e)}catch(e){}return t},y.utils.decodeURISafe=function(e){var t=e;try{t=decodeURI(e)}catch(e){}return t},y.utils.htmlDecode=function(e){return e.toString().replace(/&lt;/gm,'<').replace(/&nbsp;/gm,' ').replace(/&gt;/gm,'>').replace(/&quot;/gm,'"').replace(/&amp;/gm,'&')},y.utils.getLocationHash=function(){var e=window.location.href,t=e.indexOf('#');return-1===t||t<e.length-1&&'#'===e[t+1]?'#':e.substring(t)},y.utils.pad=function(e,t){t=t||2;e=e.toString();return e=e.length<t?'000000000000000000000000000'
</div>
<!--~~ Raw markup for the bottom of the body section ~~-->
</body>
</html>