Spinner from https://github.com/tobiasahlin/SpinKit/ by Tobias AhlinThe MIT License (MIT)Copyright (c) 2015 Tobias AhlinPermission 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
<!--~~ Static content for Google and browsers without JavaScript ~~-->
<noscript>
<divid="splashArea">
<p>This <aclass="tc-tiddlylink-external"href="https://tiddlywiki.com"rel="noopener noreferrer"target="_blank">TiddlyWiki</a> contains the following tiddlers:</p><p><ul>
{"title":"$:/config/ShortcutInfo/excise-private-chunk","created":"20210522035122311","modified":"20210522034939194","tags":"","type":"text/vnd.tiddlywiki","text":"Excise the current selection to a new private chunk"},
{"title":"$:/config/sib/IsPublicEdition","caption":"Whether interface elements for personal use only should appear.","created":"20200508003748651","modified":"20210508232303597","tags":"Meta","type":"text/vnd.tiddlywiki","text":"true"},
{"title":"$:/config/zettelkasten/copyright/Content","created":"20210523151041802","creator":"soren","modified":"20210825142618069","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"The ''text of my notes'', that is, most of the content of the wiki, is all-rights-reserved.\nYou are welcome to read, learn from, and link to all notes (click the hash icon in the upper-right to copy a link to any tiddler; keep in mind that currently public notes could become private in the future, though I try to avoid doing this).\nObvious [[fair use|https://en.wikipedia.org/wiki/Fair_use]] such as quoting a small excerpt with attribution in order to discuss it is also fine.\nPlease contact me if this doesn't cover something you were hoping to do."},
{"title":"$:/config/zettelkasten/copyright/MIT","created":"20210523151209436","creator":"soren","modified":"20210825144137850","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"MIT License\nApplies to SYSTEM TIDDLERS ONLY, as defined above!\nDoes NOT apply to the text of notes in this wiki.\n\n{{$:/config/zettelkasten/copyright/InitialNotice}}\u003Cbr>{{$:/config/zettelkasten/copyright/UserNotice}}\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."},
{"title":"$:/config/zettelkasten/copyright/System","created":"20210523151106274","creator":"soren","modified":"20210825144239931","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"All ''system tiddlers'' in the wiki specific to Soren's Zettelkasten Edition, that is, the parts that extend TiddlyWiki and handle the display of tiddlers, e.g., the ReferenceExplorer, are available under the MIT license (see below). The names of system tiddlers begin with `$:/`.\n\nBe aware that many system tiddlers are contributed by TiddlyWiki itself or by other plugins, which are usually licensed under the MIT or BSD license or a similar open-source license. If you're using a system tiddler which is found under `$:/sib/`, you can be sure it is included in this license grant; otherwise, you may need to check whether it's a [[shadow tiddler|https://groktiddlywiki.com/read/#Shadow%20Tiddlers]] or modified shadow tiddler that might have a different license.\n\nVisit the ''Explorer'' section of the ''Explore'' sidebar tab to find system tiddlers.\n\n\u003Cpre>{{$:/config/zettelkasten/copyright/MIT}}\u003C/pre>"},
{"title":"$:/config/zettelkasten/FeatureFlags/Clock","caption":"Clock","created":"20210627030648862","description":"Show the current time and a Pomodoro timer in the upper-right corner of the wiki.","modified":"20210825145427187","private":"no","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/CopyrightFooter","caption":"Copyright footer","created":"20210902152332169","creator":"soren","description":"Display a copyright and attribution notice underneath the story river.","modified":"20210902152446023","modifier":"soren","private":"no","public":"yes","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/EditorPublicLine","caption":"Editor public line","created":"20210622003532452","description":"Show the \"publish this tiddler\" checkbox when editing a tiddler.","modified":"20210825145437728","private":"yes","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/EpistemicStatus","caption":"Epistemic status","created":"20210920193247824","creator":"soren","description":"Show the [[epistemic status|EpistemicStatus]] of the current tiddler on ideas.","modified":"20210920193354215","modifier":"soren","private":"yes","public":"yes","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/GisTools","caption":"GIS tools","created":"20210910153740764","creator":"soren","description":"Use the Google Maps embed API to show satellite location and directions on Place tiddlers. Requires setting up an embed API in Google Cloud Platform (when you turn this feature on, an error will appear on your place tiddlers explaining how to do so).","modified":"20210910153929369","modifier":"soren","private":"no","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/MarkStaleUpdated","caption":"Stale update link","created":"20230407023028152","creator":"soren","description":"Show a link on stale tiddlers allowing you to mark them as still up to date as of the current time.","modified":"20230407025143508","modifier":"soren","private":"yes","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/MediaRating","caption":"Media rating","created":"20210920193222752","creator":"soren","description":"Show the [[rating|MediaRating]] of the current tiddler on sources.","modified":"20210920193357318","modifier":"soren","private":"yes","public":"yes","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/OpenTopBar","caption":"Open top bar","created":"20210626233606201","creator":"soren","description":"Show the list of open tiddlers in a horizontal bar at the top of the screen","modified":"20230416214929742","modifier":"soren","private":"yes","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/SidebarInfoLinks","caption":"Sidebar info links","created":"20210623014408947","creator":"soren","description":"Show navigation links to the most important parts of the wiki underneath the subtitle.","modified":"20211107173557802","modifier":"soren","private":"yes","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/SpoilerBanner","caption":"Spoiler banner","created":"20210622003118415","creator":"soren","description":"Display a warning banner on fiction tiddlers (any tiddler with a non-empty `universe` field) noting that we don't try to hide spoilers.","modified":"20221102031205199","modifier":"soren","private":"no","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/config/zettelkasten/FeatureFlags/ViewerPublicLine","caption":"Viewer public line","created":"20210622003316816","description":"Show the \"publish this tiddler\" checkbox when viewing a tiddler.","modified":"20210825145501899","private":"yes","public":"no","tags":"","type":"text/vnd.tiddlywiki"},
{"title":"$:/core","name":"Core","description":"TiddlyWiki5 core","author":"JeremyRuston","core-version":">=5.0.0","plugin-priority":"0","list":"readme","version":"5.2.7","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/Acknowledgements\":{\"title\":\"$:/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\":{\"title\":\"$:/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-2023, 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\":{\"title\":\"$:/core/icon\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 128 128\\\">\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-.3
{"title":"$:/core/modules/editor-operations/text/fancyquotes.js","text":"/*\\\ntitle: $:/core/modules/editor-operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"fancyquotes\"] = function(event,operation) {\nvar listtext=operation.selection;\n\n// ellipsis\n listtext= listtext.replace(/\\.\\.\\./gm,'…');\n// opening quotes\n listtext= listtext.replace(/([\\\\n \\(\\t])\\\"/gm,'$1“');\n listtext= listtext.replace(/([\\\\n \\(\\t])\\'/gm,'$1‘');\n//substitute prime and double prime if following numbers\n listtext= listtext.replace(/([0-9])'/gm,'$1′');\n listtext= listtext.replace(/([0-9])\"/gm,'$1″');\n//rearrange \". to .\"\n// remove this one because it is only Americans who insist on this.\n// listtext= listtext.replace(/\"([.!?])/gm,'$1”');\n// closing quote\n listtext= listtext.replace(/([?!.,])\"([\\n \\t\\)])/gm,'$1”$2');\n listtext= listtext.replace(/\"([!?., ][\\n \\t\\)])/gm,'”$1');\n listtext= listtext.replace(/'([\\n \\t])/gm,'’$1');\n listtext= listtext.replace(/'([!?.])/gm,'’$1');\n//apostrophes\n listtext= listtext.replace(/([a-zA-Z])'([a-zA-Z])/gm,'$1’$2');\n//convert post sentence double space to single\n listtext= listtext.replace(/([\\.?!] ) /gm,'$1');\n//convert x to × when between numbers\n// SIB: this broke URLs for me\n// listtext= listtext.replace(/([0-9])x([0-9])/gm,'$1×$2');\n//convert superscript small o to °\n listtext= listtext.replace(/\\^\\^o\\^\\^/gm,'°');\n//convert ens and ems\n// listtext= listtext.replace(/--/gm,'–');\n// listtext= listtext.replace(/---/gm,'—');\n\n\noperation.replacement=listtext;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n","type":"application/javascript","module-type":"texteditoroperation","created":"20160328022859019","modified":"20201211141928688","tags":""},
{"title":"$:/core/templates/canonical-uri-external-image","created":"20201031142744332","modified":"20201031142744139","type":"text/vnd.tiddlywiki","text":"\u003C!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./extimage/\u003C$view field=\"title\" format=\"doubleurlencoded\"/>"},
{"title":"$:/core/ui/MoreSideBar/Recent","caption":"{{$:/language/SideBar/Recent/Caption}}","created":"20221201233103301","creator":"soren","modified":"20221201233146286","modifier":"soren","tags":"$:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"For a table of recently created and updated ideas and their summaries, visit RecentIdeas.\n\n---\n\n\u003C$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"},
{"title":"$:/Import","modified":"20231014151713182","status":"complete","type":"text/vnd.tiddlywiki","text":"The following tiddlers were imported:\n\n# [[wwcm.pdf]]"},
{"title":"$:/inmysocks/macros/day-diff.js","text":"/*\\\ntitle: $:/inmysocks/macros/day-diff.js\ntype: application/javascript\nmodule-type: macro\n\nTakes two dates and returns their difference in days\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"day-diff\";\n\nexports.params = [\n\t{name: \"year1\"},\n\t{name: \"month1\"},\n\t{name: \"day1\"},\n\t{name: \"year2\"},\n\t{name: \"month2\"},\n\t{name: \"day2\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(year1, month1, day1, year2, month2, day2) {\n\t//Make each date object.\n\tvar date1 = new Date(year1, Number(month1)+Number(1), day1);\n\tvar date2 = new Date(year2, Number(month2)+Number(1), day2);\n\n\t//Find difference in milliseconds.\n\tvar elapsed = date2.getTime()-date1.getTime();\n\n\t//Number of milliseconds in a day.\n\tvar dayMS = 86400000; \n\n\t//Convert milliseconds to year months and days\n\tvar days_diff = Math.floor(elapsed/dayMS);\n\t\n\tvar result = days_diff;\n\n\treturn result;\n};\n\n})();\n","type":"application/javascript","module-type":"macro","created":"20150225185218583","modified":"20211204021739668","tags":""},
{"created":"20210327052508762","dependents":"$:/plugins/tiddlywiki/codemirror","description":"A better editor for TW5 - built on the Official CodeMirror Plugin","modified":"20210510224047195","name":"CMPlus","plugin-type":"plugin","tags":"","title":"$:/plugins/adithyab/cmplus","version":"0.2.1","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autocomplete\":{\"title\":\"$:/config/codemirror/autocomplete\",\"text\":\"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\",\"type\":\"json\",\"created\":\"20210328004023360\",\"extend\":\"extraKeys\",\"modified\":\"20210328004023360\"},\"$:/plugins/adithyab/cmplus/macros\":{\"title\":\"$:/plugins/adithyab/cmplus/macros\",\"created\":\"20210328020051916\",\"modified\":\"20210328053732117\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define cmcolour(name)\\n{{$:/plugins/adithyab/cmplus/settings##$name$}}\\n\\\\end\"},\"$:/plugins/adithyab/cmplus/readme\":{\"title\":\"$:/plugins/adithyab/cmplus/readme\",\"created\":\"20210328060842133\",\"modified\":\"20210328060929665\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! TW5 CodeMirrorPlus\\nTowards making a better editor for TiddlyWiki5.\\n\"},\"$:/plugins/adithyab/cmplus/settings\":{\"title\":\"$:/plugins/adithyab/cmplus/settings\",\"text\":\"monospace-font:monospace,\\\"Courier New\\\"\\nselected:rgba(100,100,100,0.3)\\nlinenumber:\u003C\u003Ccolour primary>>\\nkeyword:\u003C\u003Ccolour code-foreground>>\\nmacro:\u003C\u003Ccolour code-foreground>>\\nquote:\u003C\u003Ccolour primary>>\\npre:\u003C\u003Ccolour foreground>>\\nexternallink:\u003C\u003Ccolour external-link-foreground>>\\ninternallink:\u003C\u003Ccolour tiddler-title-foreground>>\\nlink:\u003C\u003Ccolour tiddler-title-foreground>>\\ntransclude:\u003C\u003Ccolour tiddler-title-foreground>>\\nmonospace:\u003C\u003Ccolour foreground>>\\nlist1:\u003C\u003Ccolour primary>>\\nlist2:\u003C\u003Ccolour primary>>\\nlist3:\u003C\u003Ccolour primary>>\\nlist4:\u003C\u003Ccolour primary>>\\nlist5:\u003C\u003Ccolour primary>>\\nlist6:\u003C\u003Ccolour primary>>\\nh1:\u003C\u003Ccolour primary>>\\nh2:\u003C\u003Ccolour primary>>\\nh3:\u003C\u003Ccolour primary>>\\nh4:\u003C\u003Ccolour primary>>\\nh5:\u003C\u003Ccolour primary>>\\nh6:\u003C\u003Ccolour primary>>\\nhr:\u003C\u003Ccolour primary>>\",\"type\":\"application/x-tiddler-dictionary\",\"created\":\"20210328015904035\",\"modified\":\"20210328054754059\",\"tags\":\"\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\"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\\t\\twhile (start) {\\n\\t\\t\\tif (end - start > max_length) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\t\\t\\tvar ch = curLine.charAt(start - 1)\\n\\t\\t\\tif (!(ch == '[' || ch == '{' || 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\
{"title":"$:/plugins/bimlas/locator","description":"Locator: Discover and search by context","author":"bimlas","version":"2.0.1","core-version":">=5.1.18","source":"https://gitlab.com/bimlas/tw5-locator","plugin-type":"plugin","list":"README/README README/macros README/TIPS README/CHANGELOG README/LICENSE","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/bimlas/locator/fields/LINKS-IN-TEXT\":{\"title\":\"$:/config/bimlas/locator/fields/LINKS-IN-TEXT\",\"field-direction\":\"from\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/link\"},\"$:/config/bimlas/locator/fields/bag\":{\"title\":\"$:/config/bimlas/locator/fields/bag\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/caption\":{\"title\":\"$:/config/bimlas/locator/fields/caption\",\"hide-in-nested-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/color\":{\"title\":\"$:/config/bimlas/locator/fields/color\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/color\"},\"$:/config/bimlas/locator/fields/created\":{\"title\":\"$:/config/bimlas/locator/fields/created\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/draft.of\":{\"title\":\"$:/config/bimlas/locator/fields/draft.of\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/draft.title\":{\"title\":\"$:/config/bimlas/locator/fields/draft.title\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/icon\":{\"title\":\"$:/config/bimlas/locator/fields/icon\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/icon\"},\"$:/config/bimlas/locator/fields/list-after\":{\"title\":\"$:/config/bimlas/locator/fields/list-after\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/link\"},\"$:/config/bimlas/locator/fields/list-before\":{\"title\":\"$:/config/bimlas/locator/fields/list-before\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/link\"},\"$:/config/bimlas/locator/fields/list\":{\"title\":\"$:/config/bimlas/locator/fields/list\",\"field-type\":\"list\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/link\"},\"$:/config/bimlas/locator/fields/modified\":{\"title\":\"$:/config/bimlas/locator/fields/modified\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/revision\":{\"title\":\"$:/config/bimlas/locator/fields/revision\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/tags\":{\"title\":\"$:/config/bimlas/locator/fields/tags\",\"field-direction\":\"to\",\"field-type\":\"list\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"$:/plugins/bimlas/locator/field-templates/tag\"},\"$:/config/bimlas/locator/fields/text\":{\"title\":\"$:/config/bimlas/locator/fields/text\",\"hide-in-nested-fields-filter\":\"yes\",\"hide-in-regular-fields-filter\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/config/bimlas/locator/fields/title\":{\"title\":\"$:/config/bimlas/locator/fields/title\",\"hide-in-nested-fields
{"title":"$:/plugins/bimlas/locator/edit-template/locator-references","created":"20201204132628162","modified":"20201204132556548","tags":"$:/tags/EditTemplate","type":"text/vnd.tiddlywiki","text":"\\define prompt()\n The following references to this tiddler in //\u003C\u003C__field__>>// [[Locator field|$:/plugins/bimlas/locator/settings/settings]] will not be automatically updated:\n\\end\n\n\\define children-by-field(field)\n \u003C$list filter=\"[title{!!draft.of}locator-enlist-children:$field$[]first[]]\" variable=\"null\">\n \u003C$vars stateTiddler=\u003C\u003Cqualify \"$:/state/bimlas/locator/edit/references/$field$\">> >\n\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CstateTiddler>> text=\"show\">\n \u003C$button set=\u003C\u003CstateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n \u003C\u003Cprompt>>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CstateTiddler>> text=\"show\">\n \u003C$button set=\u003C\u003CstateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n \u003C\u003Cprompt>>\n \u003C/$button>\n \u003C/$reveal>\n\n \u003C$reveal type=\"match\" state=\u003C\u003CstateTiddler>> text=\"show\">\n \u003C$list filter=\"[title{!!draft.of}locator-enlist-children:$field$[]]\" template=\"$:/core/ui/ListItemTemplate\">\n \u003C$link/>\n \u003C/$list>\n \u003C/$reveal>\n\n \u003C/$vars>\n \u003C/$list>\n\\end\n\n\u003C$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n \u003C$list filter=\"[locator-enlist-relationship-fields[]] -[[tags]] -[[list]] -[[LINKS-IN-TEXT]]\" variable=\"currentField\">\n \u003C$macrocall $name=\"children-by-field\" field=\u003C\u003CcurrentField>>/>\n \u003C/$list>\n\u003C/$reveal>"},
{"author":"JeffreyWilkinson","core-version":">=5.1.11","dependents":"","description":"calendar with date formatter addons","list":"readme license","plugin-type":"plugin","source":"https://github.com/buggyj/TW5-tools","title":"$:/plugins/bj/Calendar","version":"1.11.0","type":"application/json","text":"{\"tiddlers\":{\"$:/config/bj/Calendar.json\":{\"text\":\"\\n{\\n\\t\\\"journals\\\":{\\n\\t\\t\\\"lastDayOfWeek\\\":\\\"0\\\",\\n\\t\\t\\\"formatter\\\":\\\"$:/macros/bj/Calendar/journalfmt.js\\\",\\n\\t\\t\\\"titlebold\\\":\\\"no\\\",\\n\\t\\t\\\"highlightThisDay\\\":\\\"no\\\",\\n\\t\\t\\\"highlightThisDate\\\":\\\"yes\\\"\\n\\t},\\n\\t\\\"default\\\":{\\n\\t\\t\\\"lastDayOfWeek\\\":\\\"0\\\",\\n\\t\\t\\\"formatter\\\":\\\"$:/macros/bj/Calendar/journalslinked.js\\\",\\n\\t\\t\\\"titlebold\\\":\\\"yes\\\",\\n\\t\\t\\\"highlightThisDay\\\":\\\"no\\\",\\n\\t\\t\\\"highlightLinks\\\":\\\"yes\\\"\\n\\t},\\n\\t\\\"diary\\\":{\\n\\t\\t\\\"lastDayOfWeek\\\":\\\"0\\\",\\n\\t\\t\\\"formatter\\\":\\\"$:/macros/bj/Calendar/diary.js\\\",\\n\\t\\t\\\"titlebold\\\":\\\"yes\\\",\\n\\t\\t\\\"highlightThisDay\\\":\\\"no\\\",\\n\\t\\t\\\"highlightLinks\\\":\\\"yes\\\"\\n\\t},\\n\\t\\\"plain\\\":{\\n\\t\\t\\\"lastDayOfWeek\\\":\\\"0\\\",\\n\\t\\t\\\"formatter\\\":\\\"\\\",\\n\\t\\t\\\"titlebold\\\":\\\"yes\\\",\\n\\t\\t\\\"highlightThisDay\\\":\\\"yes\\\",\\n\\t\\t\\\"highlightThisDate\\\":\\\"no\\\"\\n\\t}\\n}\\n\",\"type\":\"application/json\",\"module-type\":\"library\",\"title\":\"$:/config/bj/Calendar.json\"},\"$:/core/modules/widgets/macrorefresh.js\":{\"title\":\"$:/core/modules/widgets/macrorefresh.js\",\"text\":\"/*\\\\\\ntitle: $:/core/modules/widgets/macrorefresh.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nMacrocall widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar MacroCallWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nMacroCallWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.parentDomNode = parent;\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.renderChildren(parent,nextSibling);\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nMacroCallWidget.prototype.execute = function() {\\n\\tvar self = this;\\n\\t// Get the parse type if specified\\n\\tthis.parseType = this.getAttribute(\\\"$type\\\",\\\"text/vnd.tiddlywiki\\\");\\n\\tthis.renderOutput = this.getAttribute(\\\"$output\\\",\\\"text/html\\\");\\n\\t// Merge together the parameters specified in the parse tree with the specified attributes\\n\\tthis.params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\\n\\t$tw.utils.each(this.attributes,function(attribute,name) {\\n\\t\\tif(name.charAt(0) !== \\\"$\\\") {\\n\\t\\t\\tself.params.push({name: name, value: attribute});\\t\\t\\t\\n\\t\\t}\\n\\t});\\n\\t// Get the macro value\\n\\tvar text = this.getVariable(this.parseTreeNode.name || this.getAttribute(\\\"$name\\\"),{params: this.params}),\\n\\t\\tparseTreeNodes;\\n\\t// Are we rendering to HTML?\\n\\tif(this.renderOutput === \\\"text/html\\\") {\\n\\t\\t// If so we'll return the parsed macro\\n\\t\\tvar parser = this.wiki.parseText(this.parseType,text,\\n\\t\\t\\t\\t\\t\\t\\t{parseAsInline: !this.parseTreeNode.isBlock});\\n\\t\\tparseTreeNodes = parser ? parser.tree : [];\\n\\t} else {\\n\\t\\t// Otherwise, we'll render the text\\n\\t\\tvar plainText = this.wiki.renderText(\\\"text/plain\\\",this.parseType,text,{parentWidget: this});\\n\\t\\tparseTreeNodes = [{type: \\\"text\\\", text: plainText}];\\n\\t}\\n\\t// Construct the child widgets\\n\\tthis.makeChildWidgets(parseTreeNodes);\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nMacroCallWidget.prototype.refresh
{"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\":{\"$:/config/DefaultColourMappings/relink-impossible\":{\"title\":\"$:/config/DefaultColourMappings/relink-impossible\",\"text\":\"\u003C\u003Ccolour dirty-indicator>>\"},\"$:/config/flibbles/relink/PluginLibrary\":{\"title\":\"$:/config/flibbles/relink/PluginLibrary\",\"caption\":\"//Relink// Library\",\"tags\":\"$:/tags/PluginLibrary\",\"url\":\"https://flibbles.github.io/tw5-relink/library/index.html\",\"text\":\"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\\n\"},\"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-listops/$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-listops/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-log/$$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-log/$$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-navigate/$to\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-navigate/$to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-popup/$state\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-popup/$state\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-sendmessage/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-sendmessage/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-sendmessage/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-sendmessage/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$button/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$button/set\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/set\",\"text\":\"reference\"},\"$:/config/flibbles/relink/attributes/$button/setTo\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/setTo\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$button/to\":{\"title\":\"$:/config/flibbles/relink/attribu
{"author":"ihm4u","core-version":">=5.1.9","created":"20210301193448094","dependents":"","description":"Tidgraph - Easy tiddler graphs for TW5","list":"readme changelog documentation","modified":"20210301193448094","plugin-type":"plugin","source":"https://ihm4u.github.io/tw5plugs","title":"$:/plugins/ihm/tidgraph","version":"0.9.6","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/ihm/templates/collapse\":{\"title\":\"$:/plugins/ihm/templates/collapse\",\"created\":\"20151120174133063\",\"modified\":\"20151120180705805\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" x=\\\"0px\\\"\\n\\t y=\\\"0px\\\" width=\\\"14px\\\" height=\\\"14px\\\" >\\n\u003Ccircle cx=\\\"7\\\" cy=\\\"7\\\" r=\\\"6\\\" stroke=\\\"#aeb0b5\\\" stroke-width=\\\"1\\\" fill=\\\"#aeb0b5\\\"/>\\n\u003Cpolyline points=\\\"4,7 10,7\\\" fill=\\\"none\\\" stroke=\\\"white\\\"/>\\n\u003C/svg>\\n\"},\"$:/plugins/ihm/templates/expand\":{\"title\":\"$:/plugins/ihm/templates/expand\",\"created\":\"20151120174133063\",\"modified\":\"20151120180705805\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" x=\\\"0px\\\"\\n\\t y=\\\"0px\\\" width=\\\"14px\\\" height=\\\"14px\\\" >\\n\u003Ccircle cx=\\\"7\\\" cy=\\\"7\\\" r=\\\"6\\\" stroke=\\\"#aeb0b5\\\" stroke-width=\\\"1\\\" fill=\\\"#aeb0b5\\\"/>\\n\u003Cpolyline points=\\\"4,7 10,7 7,7 7,10 7,4\\\" fill=\\\"none\\\" stroke=\\\"white\\\"/>\\n\u003C/svg>\\n\"},\"$:/plugins/ihm/tidgraph/changelog\":{\"title\":\"$:/plugins/ihm/tidgraph/changelog\",\"created\":\"20151024161547099\",\"creator\":\"ihm4u\",\"modified\":\"20151031061347109\",\"modifier\":\"ihm4u\",\"tags\":\"\",\"text\":\"For the complete changelog see\\n\\nhttps://ihm4u.github.io/tw5plugs/#Tidgraph%20-%20Changelog\\n\"},\"$:/plugins/ihm/tidgraph/documentation\":{\"title\":\"$:/plugins/ihm/tidgraph/documentation\",\"text\":\"!!Example\\nThe following example shows a tiddler which tags 7 children:\\n\\n``\u003C$tidgraph start=\\\"Virtues\\\" />``\\n\\nlooks like this:\\n\\n{{$:/plugins/ihm/tidgraph/tidgraph.png}}\\n\\n!!Usage\\nSimple usage:\\n\\n``\u003C$tidgraph start=\\\"MyRootTiddler\\\" />``\\n\\nThe map will start with MyRootTiddler on the left, and show all its children recursively. The default maximum depth is 10 levels, it can be changed with the `maxdepth` attribute.\\n\\nAll options:\\n\\n|!Attribute |!Description|!Default |\\n|`start` |Initial tiddler that starts the map | none |\\n|`startat` |First level to display. 0 is the root tiddler named in the `start` attribute. 1 is the next level, etc. | 0 |\\n|`maxdepth` |Maximum depth to display.| 10 |\\n|`mode` |//tagging// or //linking// or custom. This is how to identify the children of a node. With //tagging// Tiddlers that tag other tiddlers become their parent. With //linking// tiddlers that link to other tiddlers become their parent. A custom mode can be specified by a `$:/config/tidgraph/modes/MyMode` tiddler where `MyMode` is the name of the mode. The subfilter can be also specified directly; e.g. `mode=\\\"fields[]\\\"`. See [[Custom Mode Demo|https://ihm4u.github.io/tw5plugs/#Custom%20Mode%20Demo]] for an example | //tagging// |\\n|`nodetitle` |Field to use as title for the node. | //title// (or //caption// if present) |\\n|`tooltip` |List of fields to use for node tooltip. The first field with a non empty value is used. | //summary// |\\n|`filter` |Only tiddlers matching filter will be used | none |\\n|`nocollapse` |Disable ability to collapse nodes. The graph allows node collapsing by default. | false |\\n|`nodetemplate` |One or mode node templates to make node look like you want. See the [[Node Templates Demo|https://ihm4u.github.io/tw5plugs/#Node%20Templates%20Demo]] for examples of how to use them. | none |\\n|`layout` |`E` for East (Vertical) or `S` for south (Horizontal) layout. | E |\\n\\n!CSS classes\\nYou can also change colors, and other styles with the following CSS classes.\\n\\n|!Class |!D
{"author":"kixam","core-version":">=5.1.8","created":"20210303231904987","dependents":"","description":"datepicker plugin for TiddlyWiki5, based on Pikaday version 1.6.1","list":"readme license usage","modified":"20210303231904987","plugin-type":"plugin","source":"https://github.com/kixam/TW5-datepicker","title":"$:/plugins/kixam/datepicker","version":"0.5.2","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/kixam/datepicker/icon\":{\"title\":\"$:/plugins/kixam/datepicker/icon\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg height=\\\"22pt\\\" width=\\\"22pt\\\" viewBox=\\\"0 0 128 128\\\">\\n\u003Cpath d=\\\"M 13.775391 0 L 2.0664062 6.8671875 L 2.0664062 20.599609 L 13.775391 27.464844 L 25.484375 20.599609 L 25.484375 6.8671875 L 13.775391 0 z M 9.6582031 3.6230469 L 10.292969 3.6230469 C 10.728856 3.6230469 11.101705 3.7794391 11.412109 4.0898438 C 11.722514 4.4002483 11.876953 4.7730982 11.876953 5.2089844 L 11.876953 6.1601562 L 15.681641 6.1601562 L 15.681641 5.2089844 C 15.681641 4.7730982 15.83608 4.4002483 16.146484 4.0898438 C 16.456889 3.7794391 16.829738 3.6230469 17.265625 3.6230469 L 17.900391 3.6230469 C 18.336278 3.6230469 18.709127 3.7794391 19.019531 4.0898438 C 19.329936 4.4002483 19.484375 4.7730982 19.484375 5.2089844 L 19.484375 6.1601562 L 20.753906 6.1601562 C 21.097333 6.1601562 21.393566 6.284192 21.644531 6.5351562 C 21.895499 6.7861224 22.021484 7.0843085 22.021484 7.4277344 L 22.021484 20.107422 C 22.021484 20.450848 21.895499 20.749034 21.644531 21 C 21.393566 21.250966 21.097333 21.375 20.753906 21.375 L 6.8046875 21.375 C 6.4612605 21.375 6.1650274 21.250966 5.9140625 21 C 5.6630976 20.749034 5.5371094 20.450848 5.5371094 20.107422 L 5.5371094 7.4277344 C 5.5371094 7.0843085 5.6630976 6.7861224 5.9140625 6.5351562 C 6.1650274 6.284192 6.4612605 6.1601563 6.8046875 6.1601562 L 8.0722656 6.1601562 L 8.0722656 5.2089844 C 8.0722656 4.7730982 8.2286584 4.4002483 8.5390625 4.0898438 C 8.8494667 3.7794391 9.2223157 3.6230469 9.6582031 3.6230469 z M 9.6582031 4.890625 C 9.5723471 4.890625 9.4982891 4.923586 9.4355469 4.9863281 C 9.3728059 5.0490687 9.3417969 5.1231279 9.3417969 5.2089844 L 9.3417969 8.0605469 C 9.3417969 8.1464033 9.3728059 8.222414 9.4355469 8.2851562 C 9.4982891 8.3478969 9.5723471 8.3789062 9.6582031 8.3789062 L 10.292969 8.3789062 C 10.378825 8.3789062 10.452884 8.3478969 10.515625 8.2851562 C 10.578367 8.222414 10.609375 8.1464033 10.609375 8.0605469 L 10.609375 5.2089844 C 10.609375 5.1231279 10.578367 5.0490687 10.515625 4.9863281 C 10.452884 4.923586 10.378825 4.890625 10.292969 4.890625 L 9.6582031 4.890625 z M 17.265625 4.890625 C 17.179769 4.890625 17.105711 4.923586 17.042969 4.9863281 C 16.980227 5.0490687 16.949219 5.1231279 16.949219 5.2089844 L 16.949219 8.0605469 C 16.949219 8.1464033 16.980227 8.222414 17.042969 8.2851562 C 17.105711 8.3478969 17.179769 8.3789062 17.265625 8.3789062 L 17.900391 8.3789062 C 17.986247 8.3789062 18.060305 8.3478969 18.123047 8.2851562 C 18.185788 8.222414 18.216797 8.1464033 18.216797 8.0605469 L 18.216797 5.2089844 C 18.216797 5.1231279 18.185788 5.0490687 18.123047 4.9863281 C 18.060305 4.923586 17.986247 4.890625 17.900391 4.890625 L 17.265625 4.890625 z M 6.8046875 9.9628906 L 6.8046875 12.816406 L 9.6582031 12.816406 L 9.6582031 9.9628906 L 6.8046875 9.9628906 z M 10.292969 9.9628906 L 10.292969 12.816406 L 13.462891 12.816406 L 13.462891 9.9628906 L 10.292969 9.9628906 z M 14.095703 9.9628906 L 14.095703 12.816406 L 17.265625 12.816406 L 17.265625 9.9628906 L 14.095703 9.9628906 z M 17.900391 9.9628906 L 17.900391 12.816406 L 20.753906 12.816406 L 20.753906 9.9628906 L 17.900391 9.9628906 z M 6.8046875 13.451172 L 6.8046875 16.621094 L 9.6582031 16.621094 L 9.6582031 13.451172 L 6.8046875 13.451172 z M 10.292969 13.451172 L 10.292969 16.621094 L 13.462891 16.621094 L 13.462891 13.451172 L 10.292969 13.451172 z M 14.095703 13.451172 L 14.095703 16.621094 L 17.265625 16.621094 L 17.265625 13.451172 L 14.095703 13.451172 z M 17.900391 13.451172 L 17.900391 16.621094 L 20.753906 16.621094 L 20.753906 13.451172 L 1
{"author":"kixam","core-version":">=5.1.8","created":"20210307161555733","dependents":"","description":"moment.js plugin for TiddlyWiki5","list":"readme license","modified":"20210307161555734","plugin-type":"plugin","source":"https://github.com/kixam/TW5-moment.js","title":"$:/plugins/kixam/moment","version":"2.24.0","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/kixam/moment/icon\":{\"title\":\"$:/plugins/kixam/moment/icon\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg height=\\\"22pt\\\" width=\\\"22pt\\\" viewBox=\\\"0 0 128 128\\\">\\n\u003Cpath d=\\\"m 64.116816,0 -54.4965957,31.959746 0.00139,63.919491 54.4965967,31.959743 54.496603,-31.959743 0,-63.919491 L 64.118211,0 Z M 63.842544,28.318892 A 35.326327,35.326327 0 0 1 99.17259,63.645219 35.326327,35.326327 0 0 1 63.842544,98.975265 35.326327,35.326327 0 0 1 28.516216,63.645219 35.326327,35.326327 0 0 1 63.842544,28.318892 Z m 0,4.775599 c -16.870097,0 -30.550728,13.680631 -30.550728,30.550728 0,16.874746 13.680631,30.555841 30.550728,30.555841 16.874745,0 30.555841,-13.681095 30.555841,-30.555841 0,-16.870097 -13.681096,-30.550728 -30.555841,-30.550728 z m 0,1.906893 c 1.06455,0 1.910611,0.860008 1.910611,1.915725 l 0,28.638722 -17.190856,0 c -1.027361,0 -1.905499,-0.85536 -1.905499,-1.910612 0,-1.059902 0.854895,-1.905963 1.905499,-1.905963 l 13.374282,0 0,-24.81285 c 0,-1.06362 0.855359,-1.925022 1.905963,-1.925022 z\\\"/>\\n\u003C/svg>\\n\"},\"$:/plugins/kixam/moment/license\":{\"title\":\"$:/plugins/kixam/moment/license\",\"text\":\"!! moment.js licence: [[MIT|http://mit-license.org/]]\\n```\\nCopyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors\\n\\nPermission is hereby granted, free of charge, to any person\\nobtaining a copy of this software and associated documentation\\nfiles (the \\\"Software\\\"), to deal in the Software without\\nrestriction, including without limitation the rights to use,\\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the\\nSoftware is furnished to do so, subject to the following\\nconditions:\\n\\nThe above copyright notice and this permission notice shall be\\nincluded in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND,\\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\\nOTHER DEALINGS IN THE SOFTWARE.\\n```\\n\\n!! Plugin license: [[BSD 2-clause simplified license|http://www.freebsd.org/copyright/freebsd-license.html]]\\n```\\nCopyright (c) 2015, kixam\\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\\n1. Redistributions of source code must retain the above copyright notice, this\\n list of conditions and the following disclaimer.\\n\\n2. 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\\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 LIAB
{"title":"$:/plugins/kookma/refnotes/styles/footnote-counter","text":"/*automatic counter for fnote macro. The counter resets at the begining of each tiddler*/\n.tc-tiddler-frame {\n counter-reset: fnote-count;\n}\n.refnotes-footnote {\n counter-increment: fnote-count;\n}\n.refnotes-footnote:after {\n content: counter(fnote-count);\n font-size:small;\n /* color:#0000ee;*/\n vertical-align: super;\n\tline-height: 1;\n /*line-height: 1.5;*/\n margin-left: -0.1em;\n}\n","created":"20181214085707714","modified":"20210710124941724","tags":"$:/tags/Stylesheet","type":"text/css"},
{"title":"$:/plugins/kookma/refnotes/ui/bibtexlibrary","caption":"Bibliography","created":"20181220153648454","description":"This code adds the `bibtex-entry` tag to all tiddlers imported by `BibTeX Importer` plugin thus having a `bibtex-title` field.","modified":"20210709011254977","tags":"","type":"text/vnd.tiddlywiki","text":"\\define dispEntry()\n\u003C$link/>\n\u003C$macrocall $name=stretchText text=\"\"\"\n\u003C$view field=\"bibtex-author\"/>. (\u003C$view field=\"bibtex-year\"/>). \u003C$view field=\"bibtex-title\"/>.\"\"\" />\n\\end\n\n\n\\define searchFilter() [has[bibtex-title]search:$(sField)$[$(sTerm)$]]\n\n\\define bibLibrary()\n\u003C$vars sField={{{[\u003CsearchTid>get[field]] ~[[bibtex-author]]}}} sTerm={{{[\u003CsearchTid>get[text]]}}}>\n\n\u003C!-- show hide entry details -->\n\u003Cdiv class=\"tc-search refnotes-library\" style=\"margin:10px 0 0 20px;\">\nShow and Hide Details: \n\u003C$button class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}}\n\u003C$list filter=\"[subfilter\u003CsearchFilter>]\">\n\u003C$action-setfield $tiddler=\u003C\u003CtTemp>> text=show />\n\u003C/$list>\n\u003C/$button>\n\u003C$button class=\"tc-btn-invisible\">{{$:/core/images/up-arrow}}\n\u003C$list filter=\"[subfilter\u003CsearchFilter>]\">\n\u003C$action-deletetiddler $tiddler=\u003C\u003CtTemp>> />\n\u003C/$list>\n\u003C/$button>\n\u003C/div>\n\n\u003C!-- show the library data -->\n\u003Col>\n\u003C$list filter=\"[subfilter\u003CsearchFilter>]\">\n\u003Cli>\u003C\u003CdispEntry>>\u003C/li>\n\u003C/$list>\n\u003C/ol>\n\u003C/$vars>\n\\end\n\n\u003C!-- interface -->\n\u003Cdiv style=\"margin-bottom:8px;\">\n\u003C\u003Cprocess-entries \"Process New Entries\">>\n\u003C/div>\n\n\u003C!-- make this optional\n[[Bibliography Table]]\n-->\n\n\u003C\u003CsearchUi>>\n\n\u003C\u003CbibLibrary>>\n\n\n\n"},
{"author":"Matthew Lauber","core-version":">=5.0.0","created":"20210105134918257","dependents":"","description":"A Shuffle filter operator","list":"readme","modified":"20211107172616237","plugin-type":"plugin","source":"https://github.com/mklauber/tiddly-shuffle","title":"$:/plugins/mklauber/shuffle","version":"1.0.2","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/mklauber/shuffle/readme\":{\"title\":\"$:/plugins/mklauber/shuffle/readme\",\"caption\":\"Shuffle Operator\",\"text\":\"|!purpose|Randomize the order of the input list|\\n|!input|a selection of titles|\\n|!parameter|a random string to be used to create consistent random ordering|\\n|!output|The input titles, rearranged in a random order|\\n\\nThis plugin implements a new filter operator called Shuffle. This operator takes the input list and randomizes the order of the list. If no parameter is provided, the list order is random every time.\\n\\n!!!Example:\\n```\\n\u003C$list filter=\\\"1 2 3 4 5 +[shuffle[]]\\\">\\n\\n\u003C/$list>\\n```\\n\\n\u003C$button popup=\\\"$:/state/shuffle/reveal1\\\">Run Demo\u003C/$button>\\n\\n\u003C$reveal type=\\\"popup\\\" state=\\\"$:/state/shuffle/reveal1\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\u003C$list filter=\\\"1 2 3 4 5 +[shuffle[]]\\\">\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$reveal>\\n\\nCombining this operator with the first operator allows you to choose 1 or more titles randomly from a list.\\n\\n!!!Example:\\n```\\n\u003C$list filter=\\\"1 2 3 4 5 +[shuffle[]first[2]]\\\">\\n\\n\u003C/$list>\\n```\\n\\n\u003C$button popup=\\\"$:/state/shuffle/reveal2\\\">Run Demo\u003C/$button>\\n\\n\u003C$reveal type=\\\"popup\\\" state=\\\"$:/state/shuffle/reveal2\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\u003C$list filter=\\\"1 2 3 4 5 +[shuffle[]first[2]]\\\">\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$reveal>\\n\\nIf a parameter is provided the list will be ordered identically every time it is rendered. This can be useful in conjunction a button that updates a state tiddler. Set the parameter of this operator to reference that state tiddler, and create a button that updates that tiddler, and now the ordering of the random operators only changes when the button is pressed.\\n\\n!!!Example:\\n```\\n\u003C$button>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/shuffle/example\\\" $field=\\\"state\\\" $value=\u003C\u003Cnow \\\"0hh:0mm:0ss\\\">>/>\\nChange Order\\n\u003C/$button>\\n\\n\u003C$list filter=\\\"1 2 3 4 5 +[shuffle{$:/temp/shuffle/example!!state}]\\\">\\n\\n\u003C/$list>\\n```\\n\\n\u003C$button>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/shuffle/example\\\" $field=\\\"state\\\" $value=\u003C\u003Cnow \\\"0hh:0mm:0ss\\\">>/>\\nUpdate\\n\u003C/$button>\\n\\n\u003C$list filter=\\\"1 2 3 4 5 +[shuffle{$:/temp/shuffle/example!!state}]\\\">\\n\\n\u003C/$list>\\n\"},\"$:/plugins/mklauber/shuffle/seedrandom.js\":{\"title\":\"$:/plugins/mklauber/shuffle/seedrandom.js\",\"text\":\"!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a\u003Cq;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,\\\"global\\\"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e\u003Cl;)g[e]=e++;for(e=0;e\u003Cl;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&\\\"object\\\"==e)for(c in a)try{d.push(f(a[c],b-1))}catch(a){}return d.length?d:\\\"string\\\"==e?a:a+\\\"\\\\0\\\"}function g(a,b){for(var c,d=a+\\\"\\\",e=0;e\u003Cd.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}fu
{"title":"$:/plugins/sobjornstad/3click2edit","description":"triple-click to edit tiddlers","author":"Soren Bjornstad, after Danielo Rodriguez","version":"0.1","core-version":">=5.1.0","plugin-type":"plugin","source":"https://github.com/sobjornstad/TW5-3click2edit","list":"readme","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/danielo515/2click2edit/ClickListener.js\":{\"title\":\"$:/plugins/danielo515/2click2edit/ClickListener.js\",\"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 /* https://stackoverflow.com/questions/6480060/how-do-i-listen-for-triple-clicks-in-javascript */\\n parent.addEventListener(\\\"click\\\", function (event) {\\n if (event.detail === 3) {\\n self.editTiddler.call(self, event);\\n }\\n });\\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\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/danielo515/2click2edit/readme\":{\"title\":\"$:/plugins/danielo515/2click2edit/readme\",\"text\":\"Modified by Soren Bjornstad to require 3 clicks instead of 2.\\n\\nThis 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\"},\"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\":{\"title\":\"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$click>\"}}}"},
{"title":"$:/plugins/sobjornstad/TiddlyStretch","description":"Stretchtext in TiddlyWiki","author":"Soren Bjornstad","version":"0.1.0","core-version":">=5.1.21","source":"https://github.com/sobjornstad/TiddlyStretch","list":"readme license [[TiddlyStretch Macros]]","dependents":"$:/plugins/TheDiveO/FontAwesome","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/sobjornstad/TiddlyStretch/TiddlyStretch Macros\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/TiddlyStretch Macros\",\"created\":\"20210304022132594\",\"description\":\"TiddlyStretch provides four macros for creating stretchtext: `stretch`, `stretch-template`, `stretch-links`, and `stretch-template-links`.\",\"modified\":\"20210304032037222\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"The following four macros are used to create expandos:\\n\\n\u003C\u003Cstretch-template-links \\\"[all[tiddlers+shadows]tag[$:/plugins/sobjornstad/TiddlyStretch/doc/Macro]]\\\" \\\"$:/plugins/sobjornstad/TiddlyStretch/doc/st/MacroSummary\\\" \\\"$:/plugins/sobjornstad/TiddlyStretch/doc/st/Identity\\\">>\\n\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/EmptyMessage\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/EmptyMessage\",\"created\":\"20210304024358659\",\"description\":\"Optional wikitext to display if the filter yields no result.\",\"modified\":\"20210306022349423\",\"name\":\"emptyMessage\",\"tags\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Parameter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/Filter\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Filter\",\"created\":\"20210304024354323\",\"description\":\"A filter expression describing the tiddlers to list.\",\"modified\":\"20210306022349455\",\"name\":\"filter\",\"tags\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Parameter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/LargeField\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/LargeField\",\"created\":\"20210304024150673\",\"description\":\"The field to display (in block mode) when the expando is expanded. Defaults to `text`.\",\"modified\":\"20210306022349461\",\"name\":\"largeField\",\"tags\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Parameter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/LargeMode\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/LargeMode\",\"created\":\"20210304024317434\",\"description\":\"Whether to render the expanded template in `block` or `inline` mode (default: block).\",\"modified\":\"20210306022349464\",\"name\":\"largeMode\",\"tags\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Parameter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/LargeTemplate\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/LargeTemplate\",\"created\":\"20210304024308673\",\"description\":\"The template tiddler to use when the expando is expanded.\",\"modified\":\"20210306022349466\",\"name\":\"largeTemplate\",\"tags\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Parameter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/Macro\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/Macro\",\"created\":\"20210304032156159\",\"list\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/stretch $:/plugins/sobjornstad/TiddlyStretch/doc/stretch-template $:/plugins/sobjornstad/TiddlyStretch/doc/stretch-links $:/plugins/sobjornstad/TiddlyStretch/doc/stretch-template-links\",\"modified\":\"20210306022058465\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/sobjornstad/TiddlyStretch/doc/MacroInfoTemplate\":{\"title\":\"$:/plugins/sobjornstad/TiddlyStretch/doc/MacroInfoTemplate\",\"created\":\"20210304025753399\",\"modified\":\"20210306022549030\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$macrocall $name=\\\"stretch-template\\\" tiddler=\u003C\u003CcurrentTiddler>> smallTemplate=\\\"$:/plugins/sobjornstad/TiddlyStretch/doc/ParameterListingTemplate\\\" largeTemplate=\\\"$:/plugins/sobjornstad/TiddlyStretch/doc/ParametersT
{"title":"$:/plugins/sobjornstad/TiddlyStretch/macros/stretch","created":"20210304002537855","modified":"20210714025439865","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define stretchtext-tools(tiddler)\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" to=\u003C\u003C__tiddler__>> tooltip=\"Open this node's tiddler as a new item in the story river.\">\n \u003Ci class=\"fa fa-expand\"/>\n \u003C/$button>\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" message=\"tm-edit-tiddler\" param=\u003C\u003C__tiddler__>> tooltip=\"Edit this node's tiddler.\">\n \u003Ci class=\"fa fa-pen\"/>\n \u003C/$button>\n\\end\n\n\\define stretchtext-missing-tiddler(tiddler, descr: \"tiddler\")\n \u003C$list filter=\"[\u003C__tiddler__>!is[tiddler]!is[shadow]]\" variable=_>\n //Missing $descr$ \u003C$link to=\u003C\u003C__tiddler__>>/>//\n \u003C/$list>\n\\end\n\n\\define stretchtext-missing(tiddler, field)\n \u003C$macrocall $name=\"stretchtext-missing-tiddler\" tiddler=\u003C\u003C__tiddler__>>/>\n \u003C$list filter=\"[\u003C__tiddler__>is[tiddler]!is[shadow]!has\u003C__field__>]\" variable=_>\n //Missing field '$field$' on existing tiddler \u003C$link to=\u003C\u003C__tiddler__>>/>//\n \u003C/$list>\n\\end\n\n\\define stretch(tiddler, smallField: \"description\", largeField: \"text\")\n \u003C$set name=\"stateTiddler\" value=\u003C\u003Cqualify \"\"\"$:/state/stretchtext/$tiddler$\"\"\">>>\n \u003C$reveal stateTitle=\u003C\u003CstateTiddler>> stateIndex=\u003C\u003C__tiddler__>> type=\"match\" text=\"hide\" default=\"hide\">\n \u003Cdiv class=\"st-closed\">\n \u003C$button setTitle=\u003C\u003CstateTiddler>> setIndex=\u003C\u003C__tiddler__>> setTo=\"show\" class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Expand this node to show more detail.\">\n \u003Ci class=\"fa fa-search-plus\"/>\n \u003C/$button>\n \u003C$macrocall $name=\"stretchtext-tools\" tiddler=\u003C\u003C__tiddler__>>/>\n \u003C$macrocall $name=\"stretchtext-missing\" tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__smallField__>>/>\n \u003C$tiddler tiddler=\u003C\u003C__tiddler__>>>\n \u003C$transclude tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__smallField__>> />\n \u003C/$tiddler>\n \u003C/div>\n \u003C/$reveal>\n \u003C$reveal stateTitle=\u003C\u003CstateTiddler>> stateIndex=\u003C\u003C__tiddler__>> type=\"match\" text=\"show\" default=\"hide\">\n \u003Cdiv class=\"st-open\">\n \u003C$button setTitle=\u003C\u003CstateTiddler>> setIndex=\u003C\u003C__tiddler__>> setTo=\"hide\" class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Shrink this node to show less detail.\">\n \u003Ci class=\"fa fa-search-minus st-expanded-colorize\"/>\n \u003C/$button>\n \u003C$macrocall $name=\"stretchtext-tools\" tiddler=\u003C\u003C__tiddler__>>/>\n [\u003C$link to=\u003C\u003C__tiddler__>>/>]\n\n \u003C$macrocall $name=\"stretchtext-missing\" tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__largeField__>>/>\n \u003C$tiddler tiddler=\u003C\u003C__tiddler__>>>\n \u003C$transclude mode=\"block\" field=\u003C\u003C__largeField__>> tiddler=\u003C\u003C__tiddler__>>/>\n \u003C/$tiddler>\n \u003C/div>\n \u003C/$reveal>\n \u003C/$set>\n\\end\n\n\\define stretch-template(tiddler, smallTemplate, largeTemplate, smallMode: \"inline\", largeMode: \"block\")\n \u003C$set name=\"stateTiddler\" value=\u003C\u003Cqualify \"\"\"$:/state/stretchtext/$tiddler$\"\"\">>>\n \u003C$reveal stateTitle=\u003C\u003CstateTiddler>> stateIndex=\u003C\u003C__tiddler__>> type=\"match\" text=\"hide\" default=\"hide\">\n \u003Cdiv class=\"st-closed\">\n \u003C$button setTitle=\u003C\u003CstateTiddler>> setIndex=\u003C\u003C__tiddler__>> setTo=\"show\" class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Expand this node to show more detail.\">\n \u003Ci class=\"fa fa-search-plus\"/>\n \u003C/$button>\n \u003C$macrocall $name=\"s
{"author":"Sylvain Comte","core-version":">=5.0.0","dependents":"","description":"Leaflet maps","list":"readme usage geoSyntax tileLayers markers example","plugin-type":"plugin","source":"https://framagit.org/sycom/TiddlyWiki-Plugins","title":"$:/plugins/sycom/leaflet","version":"0.8.6","type":"application/json","text":"{\"tiddlers\":{\"GeoTiddler\":{\"title\":\"GeoTiddler\",\"created\":\"20151130173416239\",\"modified\":\"20170115153450584\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"[[GeoTiddler]]s are tiddlers containing geographical data. [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] lists the available objects. [[geoJson|https://en.wikipedia.org/wiki/GeoJSON]] data are also accepted. You may specify a color for all objects displayed through `color` field.\\n\\n!! tiddler with geo TiddlerFields\\nYou can upgrade your tiddler by putting some geo metadata ([[wgs 84 coordinates|https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84]]) in it's TiddlerFields. See [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] for the list of object types you can draw. Popup will show the first part of the tiddler. If the tiddler contains a leafmap widget, it will be rendered as `text/plain` in order to avoid crash...\\n\\n!! geoJSON tiddler\\nYou can define a geoJson tiddler like [[tiddlyWikiFrCommunity|$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity]] and then display the data by calling it. Just put your geoJson data in the body and declare the tiddler as application/json. Any `application/json` tiddler called will be considered as geoJson. The popups will show\\n\\n* a title\\n** the `name` or the `title` attribute in properties if exists,\\n** if not, the firsts attributes of properties until they are 8 characters long\\n* a description\\n** the `description` attribute in properties if exists,\\n** if not, the data stored in each feature as a bulleted list.\\n\\n!! tiddler grouping [[GeoTiddler]]s\\nYou can use `tiddlers` or `filter` as TiddlerFields to make a group of tiddlers. You can apply some styling options to all the group using `style`, `color` or `marker` TiddlerFields and then call the tiddler in your map to render all those tiddler at the same time. This will be a good way to make thematic maps indeed...\\n\"},\"$:/ext/modules/widgets/geolocation-widget.js\":{\"title\":\"$:/ext/modules/widgets/geolocation-widget.js\",\"text\":\"/*\\\\\\ntitle: $:/ext/modules/wigets/geolocation-widget.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nGeolocation widget\\n\\n\\\\*/\\n(function() {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n var Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n var GeolocationWidget = function(parseTreeNode, options) {\\n this.initialise(parseTreeNode, options);\\n };\\n\\n /* Inherit from the base widget class */\\n GeolocationWidget.prototype = new Widget();\\n\\n /* Compute the internal state of the widget */\\n GeolocationWidget.prototype.execute = function() {\\n // Get attributes\\n this.target = this.getAttribute(\\\"target\\\") || this.getVariable(\\\"currentTiddler\\\");\\n this.icon = this.getAttribute(\\\"icon\\\") || \\\"$:/core/images/globe\\\";\\n this.text = this.getAttribute(\\\"text\\\") || undefined;\\n this.accuracy = this.getAttribute(\\\"accuracy\\\");\\n this.type = this.getAttribute(\\\"type\\\") || \\\"point\\\";\\n // Make child widgets\\n this.makeChildWidgets();\\n };\\n\\n /* Render this widget into the DOM */\\n GeolocationWidget.prototype.render = function(parent, nextSibling) {\\n var self = this;\\n // Remember parent\\n this.parentDomNode = parent;\\n // Compute attributes and execute state\\n this.computeAttributes();\\n this.execute();\\n // Create element\\n var tag = \\\"button\\\";\\n if (this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\\n tag = this.buttonTag;\\n
{"title":"$:/plugins/tiddlywiki/codemirror-autocomplete","name":"CodeMirror Autocomplete","description":"Autocompletion for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-css","list":"readme","version":"5.2.7","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autocomplete\":{\"title\":\"$:/config/codemirror/autocomplete\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.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(y){\\\"use strict\\\";var b=/[\\\\w$]+/;y.registerHelper(\\\"hint\\\",\\\"anyword\\\",function(e,r){for(var t=r&&r.word||b,o=r&&r.range||500,i=e.getCursor(),n=e.getLine(i.line),f=i.ch,s=f;s&&t.test(n.charAt(s-1));)--s;for(var a=s!=f&&n.slice(s,f),c=r&&r.list||[],l={},d=new RegExp(t.source,\\\"g\\\"),u=-1;u\u003C=1;u+=2)for(var p=i.line,g=Math.min(Math.max(p+u*o,e.firstLine()),e.lastLine())+u;p!=g;p+=u)for(var h,m=e.getLine(p);h=d.exec(m);)p==i.line&&h[0]===a||a&&0!=h[0].lastIndexOf(a,0)||Object.prototype.hasOwnProperty.call(l,h[0])||(l[h[0]]=!0,c.push(h[0]));return{list:c,from:y.Pos(i.line,s),to:y.Pos(i.line,f)}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.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(\\\"../../mode/css/css\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../../mode/css/css\\\"],e):e(CodeMirror)}(function(f){\\\"use strict\\\";var p={active:1,after:1,before:1,checked:1,default:1,disabled:1,empty:1,enabled:1,\\\"first-child\\\":1,\\\"first-letter\\\":1,\\\"first-line\\\":1,\\\"first-of-type\\\":1,focus:1,hover:1,\\\"in-range\\\":1,indeterminate:1,invalid:1,lang:1,\\\"last-child\\\":1,\\\"last-of-type\\\":1,link:1,not:1,\\\"nth-child\\\":1,\\\"nth-last-child\\\":1,\\\"nth-last-of-type\\\":1,\\\"nth-of-type\\\":1,\\\"only-of-type\\\":1,\\\"only-child\\\":1,optional:1,\\\"out-of-range\\\":1,placeholder:1,\\\"read-only\\\":1,\\\"read-write\\\":1,required:1,root:1,selection:1,target:1,valid:1,visited:1};f.registerHelper(\\\"hint\\\",\\\"css\\\",function(e){var t=e.getCursor(),r=e.getTokenAt(t),o=f.innerMode(e.getMode(),r.state);if(\\\"css\\\"==o.mode.name){if(\\\"keyword\\\"==r.type&&0==\\\"!important\\\".indexOf(r.string))return{list:[\\\"!important\\\"],from:f.Pos(t.line,r.start),to:f.Pos(t.line,r.end)};var i=r.start,s=t.ch,n=r.string.slice(0,s-i);/[^\\\\w$_-]/.test(n)&&(n=\\\"\\\",i=s=t.ch);var a=f.resolveMode(\\\"text/css\\\"),d=[],l=o.state.state;return\\\"pseudo\\\"==l||\\\"variable-3\\\"==r.type?c(p):\\\"block\\\"==l||\\\"maybeprop\\\"==l?c(a.propertyKeywords):\\\"prop\\\"==l||\\\"parens\\\"==l||\\\"at\\\"==l||\\\"params\\\"==l?(c(a.valueKeywords),c(a.colorKeywords)):\\\"media\\\"!=l&&\\\"media_parens\\\"!=l||(c(a.mediaTypes),c(a.mediaFeatures)),d.length?{list:d,from:f.Pos(t.line,i),to:f.Pos(t.line,s)}:void 0}function c(e){for(var t in e)n&&0!=t.lastIndexOf(n,0)||d.push(t)}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/html-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n
{"title":"$:/plugins/tiddlywiki/codemirror-keymap-vim","name":"CodeMirror Keymap Vim","description":"Keymap compatible with Vim for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-search-replace $:/plugins/tiddlywiki/codemirror-closebrackets","list":"readme","version":"5.2.7","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/keymaps/vim\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/keymaps/vim\",\"module-type\":\"codemirror-keymap\",\"text\":\"vim\\n\"},\"$:/plugins/tiddlywiki/codemirror/keymap/vim.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(\\\"../addon/search/searchcursor\\\"),require(\\\"../addon/dialog/dialog\\\"),require(\\\"../addon/edit/matchbrackets.js\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../lib/codemirror\\\",\\\"../addon/search/searchcursor\\\",\\\"../addon/dialog/dialog\\\",\\\"../addon/edit/matchbrackets\\\"],e):e(CodeMirror)}(function(Ze){\\\"use strict\\\";var Ge=[{keys:\\\"\u003CLeft>\\\",type:\\\"keyToKey\\\",toKeys:\\\"h\\\"},{keys:\\\"\u003CRight>\\\",type:\\\"keyToKey\\\",toKeys:\\\"l\\\"},{keys:\\\"\u003CUp>\\\",type:\\\"keyToKey\\\",toKeys:\\\"k\\\"},{keys:\\\"\u003CDown>\\\",type:\\\"keyToKey\\\",toKeys:\\\"j\\\"},{keys:\\\"\u003CSpace>\\\",type:\\\"keyToKey\\\",toKeys:\\\"l\\\"},{keys:\\\"\u003CBS>\\\",type:\\\"keyToKey\\\",toKeys:\\\"h\\\",context:\\\"normal\\\"},{keys:\\\"\u003CDel>\\\",type:\\\"keyToKey\\\",toKeys:\\\"x\\\",context:\\\"normal\\\"},{keys:\\\"\u003CC-Space>\\\",type:\\\"keyToKey\\\",toKeys:\\\"W\\\"},{keys:\\\"\u003CC-BS>\\\",type:\\\"keyToKey\\\",toKeys:\\\"B\\\",context:\\\"normal\\\"},{keys:\\\"\u003CS-Space>\\\",type:\\\"keyToKey\\\",toKeys:\\\"w\\\"},{keys:\\\"\u003CS-BS>\\\",type:\\\"keyToKey\\\",toKeys:\\\"b\\\",context:\\\"normal\\\"},{keys:\\\"\u003CC-n>\\\",type:\\\"keyToKey\\\",toKeys:\\\"j\\\"},{keys:\\\"\u003CC-p>\\\",type:\\\"keyToKey\\\",toKeys:\\\"k\\\"},{keys:\\\"\u003CC-[>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\"},{keys:\\\"\u003CC-c>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\"},{keys:\\\"\u003CC-[>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\",context:\\\"insert\\\"},{keys:\\\"\u003CC-c>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\",context:\\\"insert\\\"},{keys:\\\"s\\\",type:\\\"keyToKey\\\",toKeys:\\\"cl\\\",context:\\\"normal\\\"},{keys:\\\"s\\\",type:\\\"keyToKey\\\",toKeys:\\\"c\\\",context:\\\"visual\\\"},{keys:\\\"S\\\",type:\\\"keyToKey\\\",toKeys:\\\"cc\\\",context:\\\"normal\\\"},{keys:\\\"S\\\",type:\\\"keyToKey\\\",toKeys:\\\"VdO\\\",context:\\\"visual\\\"},{keys:\\\"\u003CHome>\\\",type:\\\"keyToKey\\\",toKeys:\\\"0\\\"},{keys:\\\"\u003CEnd>\\\",type:\\\"keyToKey\\\",toKeys:\\\"$\\\"},{keys:\\\"\u003CPageUp>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CC-b>\\\"},{keys:\\\"\u003CPageDown>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CC-f>\\\"},{keys:\\\"\u003CCR>\\\",type:\\\"keyToKey\\\",toKeys:\\\"j^\\\",context:\\\"normal\\\"},{keys:\\\"\u003CIns>\\\",type:\\\"action\\\",action:\\\"toggleOverwrite\\\",context:\\\"insert\\\"},{keys:\\\"H\\\",type:\\\"motion\\\",motion:\\\"moveToTopLine\\\",motionArgs:{linewise:!0,toJumplist:!0}},{keys:\\\"M\\\",type:\\\"motion\\\",motion:\\\"moveToMiddleLine\\\",motionArgs:{linewise:!0,toJumplist:!0}},{keys:\\\"L\\\",type:\\\"motion\\\",motion:\\\"moveToBottomLine\\\",motionArgs:{linewise:!0,toJumplist:!0}},{keys:\\\"h\\\",type:\\\"motion\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!1}},{keys:\\\"l\\\",type:\\\"motion\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!0}},{keys:\\\"j\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!0,linewise:!0}},{keys:\\\"k\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!1,linewise:!0}},{keys:\\\"gj\\\",type:\\\"motion\\\",m
{"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.7","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.7","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/HighlightPlugin/TypeMappings/application/javascript\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/application/javascript\",\"text\":\"javascript\"},\"$:/config/HighlightPlugin/TypeMappings/application/json\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/application/json\",\"text\":\"json\"},\"$:/config/HighlightPlugin/TypeMappings/text/css\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/css\",\"text\":\"css\"},\"$:/config/HighlightPlugin/TypeMappings/text/html\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/html\",\"text\":\"html\"},\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\",\"text\":\"xml\"},\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\",\"text\":\"markdown\"},\"$:/config/HighlightPlugin/TypeMappings/text/markdown\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/markdown\",\"text\":\"markdown\"},\"$:/plugins/tiddlywiki/highlight/highlight.js\":{\"text\":\"var hljs = require(\\\"$:/plugins/tiddlywiki/highlight/highlight.js\\\");\\n/*!\\n Highlight.js v11.4.0 (git: 2d0e7c1094)\\n (c) 2006-2022 Ivan Sagalaev and other contributors\\n License: BSD-3-Clause\\n */\\nvar hljs=function(){\\\"use strict\\\";var e={exports:{}};function t(e){\\nreturn e instanceof Map?e.clear=e.delete=e.set=()=>{\\nthrow Error(\\\"map is read-only\\\")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{\\nthrow Error(\\\"set is read-only\\\")\\n}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]\\n;\\\"object\\\"!=typeof i||Object.isFrozen(i)||t(i)})),e}\\ne.exports=t,e.exports.default=t;var n=e.exports;class i{constructor(e){\\nvoid 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}\\nignoreMatch(){this.isMatchIgnored=!0}}function r(e){\\nreturn e.replace(/&/g,\\\"&\\\").replace(/\u003C/g,\\\"<\\\").replace(/>/g,\\\">\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\")\\n}function s(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]\\n;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const o=e=>!!e.kind\\n;class a{constructor(e,t){\\nthis.buffer=\\\"\\\",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){\\nthis.buffer+=r(e)}openNode(e){if(!o(e))return;let t=e.kind\\n;t=e.sublanguage?\\\"language-\\\"+t:((e,{prefix:t})=>{if(e.includes(\\\".\\\")){\\nconst n=e.split(\\\".\\\")\\n;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${\\\"_\\\".repeat(t+1)}`))].join(\\\" \\\")\\n}return`${t}${e}`})(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){\\no(e)&&(this.buffer+=\\\"\u003C/span>\\\")}value(){return this.buffer}span(e){\\nthis.buffer+=`\u003Cspan class=\\\"${e}\\\">`}}class c{constructor(){this.rootNode={\\nchildren:[]},this.stack=[this.rootNode]}get top(){\\nreturn this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){\\nthis.top.children.push(e)}openNode(e){const t={kind:e,children:[]}\\n;this.add(t),this.stack.push(t)}closeNode(){\\nif(this.stack.length>1)return this.stack.pop()}closeAllNodes(){\\nfor(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}\\nwalk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){\\nreturn\\\"string\\\"==typeof t?e.addText(t):t.children&&(e.openNode(t),\\nt.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){\\n\\\"string\\\"!=typeof e&&e.children&&(e.children.every((e=>\\\"string\\\"==typeof e))?e.children=[e.children.join(\\\"\\\")]:e.children.forEach((e=>{\\nc._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}\\naddKeyword(e,t){\\\"\\\"!==e&&(this.openNode(t),this.addText(e),this.closeNode())}\\naddText(e){\\\"\\\"!==e&&this.add(e)}addSubl
{"title":"$:/plugins/tiddlywiki/katex","name":"KaTeX","description":"KaTeX library for mathematical typography","list":"readme usage config","library-version":"v0.15.3","version":"5.2.7","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/katex/ImplementationNotes\":{\"title\":\"$:/plugins/tiddlywiki/katex/ImplementationNotes\",\"text\":\"! CSS Handling\\n\\nThe ''original CSS from KaTeX'' includes a number of font definitions in this format:\\n\\n```\\n@font-face {\\n font-family: 'KaTeX_AMS';\\n src: url('fonts/KaTeX_AMS-Regular.eot');\\n src: url('fonts/KaTeX_AMS-Regular.eot?#iefix') format('embedded-opentype'),\\n url('fonts/KaTeX_AMS-Regular.woff') format('woff'),\\n url('fonts/KaTeX_AMS-Regular.ttf') format('truetype');\\n font-weight: normal;\\n font-style: normal;\\n}\\n```\\n\\nThese definitions are currently ''removed manually'' from [[$:/plugins/tiddlywiki/katex/katex.min.css]] so that they can be redefined as data URIs using TiddlyWiki's macro notation in $:/plugins/tiddlywiki/katex/styles\\n\\n```\\n@font-face {\\n font-family: 'KaTeX_AMS';\\n src: url(\u003C\u003Cdatauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff'>>) format('woff');\\n font-weight: normal;\\n font-style: normal;\\n}\\n```\\n\\nNote that the plugin currently only embeds the WOFF format fonts, which seems to be sufficient for most browsers.\\n\"},\"$:/plugins/tiddlywiki/katex/config\":{\"title\":\"$:/plugins/tiddlywiki/katex/config\",\"text\":\"\u003Cdiv class=\\\"tc-control-panel\\\">\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/KaTeX/Config]!has[draft.of]]\\\">\\n\\n\u003Cdiv>\\n\\n!! \u003C$link>\u003C$transclude field=\\\"caption\\\"/>\u003C/$link>\\n\\n\u003C$transclude>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/katex/developer\":{\"title\":\"$:/plugins/tiddlywiki/katex/developer\",\"text\":\"!! How to upgrade\\n\\n# Download latest release zip file from [[Github release|https://github.com/KaTeX/KaTeX/releases]]\\n# Backup existing files\\n#* `plugins/tiddlywiki/katex/files/tiddlywiki.files` file and \\n#* `katex.without-font-face.min.css` file\\n#* Learn more at: $:/plugins/tiddlywiki/katex/ImplementationNotes\\n# Rename extracted folder to \\\"files\\\" and \\n#* copy it to `plugins/tiddlywiki/katex/files`\\n#* (maybe delete the old folder first, to make a full overwrite)\\n#* delete unused files in it, like `*.mjs` files and `*.md` files\\n# Create `plugins/tiddlywiki/katex/files/tiddlywiki.files`\\n#* (or use the old one) and \\n#* register all needed files\\n# Register in `files/tiddlywiki.files`\\n#* `katex.without-font-face.min.css` ''as'' \\n#* `$:/plugins/tiddlywiki/katex/katex.min.css`\\n#* so fonts are loaded properly in tw environment\\n\\n\\n!! How to test\\n\\nTo create a new \\\"test edition\\\" type the following command in a console window:\\n\\n\u003C\u003C\u003C\\n```\\nnode tiddlywiki test-katex --init katexdemo\\n```\\n\u003C\u003C\u003C\\n\\n>It will create a new directory //test-katex// and clones the //katexdemo// edition.\u003Cbr>The output should be:\\n\\n\u003C\u003C\u003C\\n`Copied edition 'katexdemo' to test-katex`\\n\u003C\u003C\u003C\\n\\nType:\\n\\n\u003C\u003C\u003C\\n```\\nnode tiddlywiki test-katex --listen\\n```\\n\u003C\u003C\u003C\\n\\n>It should output\\n\\n\u003C\u003C\u003C\\n`syncer-server-filesystem: Dispatching 'save' task: $:/StoryList\\nServing on http://127.0.0.1:8080\\n(press ctrl-C to exit)\\n`\\n\u003C\u003C\u003C\\n\\nTest the new version in the browser at: [[http://127.0.0.1:8080]]\\n\\nMake sure all equations of math and chemistry are rendered properly.\\n\"},\"$:/plugins/tiddlywiki/katex/katex.min.css\":{\"text\":\".katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:\\\"0.15.3\\\"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1p
{"author":"Tobias Beer","core-version":">=5.1.9","created":"20220505135225785","dependents":"","description":"Create popups, sliders or accordion menus with the appear widget.","documentation":"https://tobibeer.github.io/tw5-appear","list":"readme","modified":"20220505135225785","plugin-type":"plugin","requires":"","source":"https://github.com/tobibeer/tw5-appear","title":"$:/plugins/tobibeer/appear","version":"0.6.2","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tobibeer/appear/defaults/button-class\":{\"title\":\"$:/plugins/tobibeer/appear/defaults/button-class\",\"text\":\"tc-btn-invisible tc-tiddlylink\"},\"$:/plugins/tobibeer/appear/defaults/default-state\":{\"title\":\"$:/plugins/tobibeer/appear/defaults/default-state\",\"text\":\"$:/temp/appear/\"},\"$:/plugins/tobibeer/appear/defaults/keep\":{\"title\":\"$:/plugins/tobibeer/appear/defaults/keep\",\"text\":\"yes\"},\"$:/plugins/tobibeer/appear/defaults/mode\":{\"title\":\"$:/plugins/tobibeer/appear/defaults/mode\",\"text\":\"block\"},\"$:/plugins/tobibeer/appear/defaults/show\":{\"title\":\"$:/plugins/tobibeer/appear/defaults/show\",\"text\":\"»\"},\"$:/plugins/tobibeer/appear/popup.js\":{\"title\":\"$:/plugins/tobibeer/appear/popup.js\",\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/tobibeer/appear/popup.js\\r\\ntype: application/javascript\\r\\nmodule-type: utils\\r\\n\\r\\nAn enhanced version of the core Popup to support:\\r\\n* absolute popups\\r\\n* preview popups\\r\\n* popup z-index\\r\\n\\r\\n@preserve\\r\\n\\\\*/\\n(function(){\\\"use strict\\\";var t=require(\\\"$:/core/modules/utils/dom/popup.js\\\").Popup,e=require(\\\"$:/core/modules/widgets/reveal.js\\\").reveal,s=e.prototype.refresh;t.prototype.show=function(t){var e,s=t.domNode,p=$tw.utils.hasClass(s,\\\"tc-popup-absolute\\\"),o=this.popupInfo(s),i=function(t){var e=t,s=0,p=0;do{s+=e.offsetLeft||0;p+=e.offsetTop||0;e=e.offsetParent}while(e);return{left:s,top:p}},l={left:s.offsetLeft,top:s.offsetTop};e=o.popupLevel;if(o.isHandle){e++}this.cancel(e);if(this.findPopup(t.title)===-1){this.popups.push({title:t.title,wiki:t.wiki,domNode:s})}l=p?i(s):l;t.wiki.setTextReference(t.title,\\\"(\\\"+l.left+\\\",\\\"+l.top+\\\",\\\"+s.offsetWidth+\\\",\\\"+s.offsetHeight+\\\")\\\");if(this.popups.length>0){this.rootElement.addEventListener(\\\"click\\\",this,true)}};t.prototype.popupInfo=function(t){var e,s=false,p=t;while(p&&e===undefined){if($tw.utils.hasClass(p,\\\"tc-popup-handle\\\")||$tw.utils.hasClass(p,\\\"tc-popup-keep\\\")){s=true}if($tw.utils.hasClass(p,\\\"tc-reveal\\\")&&($tw.utils.hasClass(p,\\\"tc-popup\\\")||$tw.utils.hasClass(p,\\\"tc-popup-handle\\\"))){e=parseInt(p.style.zIndex)-1e3}p=p.parentNode}var o={popupLevel:e||0,isHandle:s};return o};t.prototype.handleEvent=function(t){if(t.type===\\\"click\\\"){var e=this.popupInfo(t.target),s=e.popupLevel-1;if(e.isHandle){if(s\u003C0){s=1}else{s++}}this.cancel(s)}};e.prototype.refresh=function(){var t,e,p=this.isOpen;e=s.apply(this,arguments);t=this.domNodes[0];if(this.isOpen&&(p!==this.isOpen||!t.style.zIndex)&&t&&(this.type===\\\"popup\\\"||$tw.utils.hasClass(t,\\\"tc-block-dropdown\\\")&&$tw.utils.hasClass(t,\\\"tc-reveal\\\"))){t.style.zIndex=1e3+$tw.popup.popups.length}return e}})();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/plugins/tobibeer/appear/readme\":{\"title\":\"$:/plugins/tobibeer/appear/readme\",\"text\":\"This plugin provides the ''$appear'' widget that can render popups and sliders (inline or block) as well as accordion menus.\\n\\n!! Attributes\\r\\n; type\\r\\n: set to `popup` to have the content appear as a popup\\r\\n; show\\r\\n: the button label\\r\\n; hide\\r\\n: the hide button label\\r\\n; mode\\r\\n: either `block` or `inline`, with respect to the inner content\\r\\n: any other mode is interpreted as block mode, without the default styles applying, e.g. drop-shadows\\r\\n; once\\r\\n: allows to click the button once, then hides it (unless the state is deleted)\\r\\n; $state\\r\\n: the widget calculates a state for you, use this to append a simple id\\r\\n; state\\r\\n: alternatively,
{"author":"Tobias Beer","core-version":">=5.1.9","created":"20220505135243990","dependents":"","description":"Shows a tiddler preview when hovering internal links","documentation":"https://tobibeer.github.io/tw5-preview","list":"readme config","modified":"20220505135243990","plugin-type":"plugin","requires":"[[tobibeer/appear|http://tobibeer.github.io/tw5-plugins/#appear]]","source":"https://github.com/tobibeer/tw5-preview","title":"$:/plugins/tobibeer/preview","version":"0.5.6","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tobibeer/preview/config\":{\"title\":\"$:/plugins/tobibeer/preview/config\",\"text\":\"\\\\define default()\\r\\n\u003Cdt>$(defaults)$$(option)$\u003C/dt>\\r\\n\u003Cdd>\\r\\n//{{$:/plugins/tobibeer/preview/lingo/$(option)$}}\u003C$list\\r\\nfilter=\\\"[[$(option)$]prefix[template]]\\\">\\r\\n{{$(defaults)$$(option)$}}\u003C/$list>://\u003Cbr>\\r\\n\u003C$edit-text tag=input tiddler=\\\"$(defaults)$$(option)$\\\"/>\\r\\n\u003C/dd>\\r\\n\\\\end\\n\\n\u003Cdl class=\\\"preview-defaults\\\">\\r\\n\u003C$vars defaults=\\\"$:/plugins/tobibeer/preview/defaults/\\\">\\r\\n\u003C$list filter=\\\"[all[tiddlers+shadows]removeprefix\u003Cdefaults>sort[title]]\\\" variable=\\\"option\\\">\\r\\n\u003C\u003Cdefault>>\\r\\n\u003C/$list>\\r\\n\u003C/$vars>\\r\\n\u003C/dl>\\r\\n\u003Cstyle>.preview-defaults input {width:90%;}\u003C/style>\"},\"$:/plugins/tobibeer/preview/defaults/class\":{\"title\":\"$:/plugins/tobibeer/preview/defaults/class\",\"text\":\"tc-popup-keep\"},\"$:/plugins/tobibeer/preview/defaults/delay\":{\"title\":\"$:/plugins/tobibeer/preview/defaults/delay\",\"text\":\"1500\"},\"$:/plugins/tobibeer/preview/defaults/exclude\":{\"title\":\"$:/plugins/tobibeer/preview/defaults/exclude\",\"text\":\"[is[system]] [all[shadows]] [!has[text]]\"},\"$:/plugins/tobibeer/preview/defaults/keys\":{\"title\":\"$:/plugins/tobibeer/preview/defaults/keys\",\"text\":\"CTRL\"},\"$:/plugins/tobibeer/preview/defaults/not\":{\"title\":\"$:/plugins/tobibeer/preview/defaults/not\",\"text\":\"tc-drop-down tc-sidebar-scrollable tc-topbar tc-tiddler-title\"},\"$:/plugins/tobibeer/preview/defaults/template\":{\"title\":\"$:/plugins/tobibeer/preview/defaults/template\",\"text\":\"$:/plugins/tobibeer/preview/template\"},\"$:/plugins/tobibeer/preview/keyboard.js\":{\"title\":\"$:/plugins/tobibeer/preview/keyboard.js\",\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/tobibeer/preview/keyboard.js\\r\\ntype: application/javascript\\r\\nmodule-type: utils\\r\\n\\r\\nFixes $:/core/modules/utils/dom/keyboard.js by providing an alternative.\\r\\nDo not use as an API, let's fix the core.\\r\\n\\r\\n@preserve\\r\\n\\\\*/\\n(function(){\\\"use strict\\\";var e={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46};exports.parseKeyDescriptorTB=function(t){var l,r,y,s=t.toUpperCase().split(\\\"+\\\"),K={keyCode:null,shiftKey:false,altKey:false,ctrlKey:false};for(y=0;y\u003Cs.length;y++){l=false;r=s[y];if(r.substr(0,1)===\\\"!\\\"){l=true;r=r.substr(1)}if(r===\\\"CTRL\\\"){K.ctrlKey=l?null:true}else if(r===\\\"SHIFT\\\"){K.shiftKey=l?null:true}else if(r===\\\"ALT\\\"){K.altKey=l?null:true}else if(r===\\\"META\\\"){K.metaKey=l?null:true}else if(e[r]){K.keyCode=e[r]}else{K.keyCode=r.charCodeAt(0)}}return K};exports.checkKeyDescriptorTB=function(e,t){var l=!!t.metaKey;return(t.keyCode===null||e.keyCode===t.keyCode)&&(t.shiftKey===null?!e.shiftKey:e.shiftKey===t.shiftKey)&&(t.altKey===null?!e.altKey:e.altKey===t.altKey)&&(t.ctrlKey===null?!e.ctrlKey:e.ctrlKey===t.ctrlKey)&&(t.metaKey===null?!e.metaKey:e.metaKey===l)}})();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/plugins/tobibeer/preview/lingo/class\":{\"title\":\"$:/plugins/tobibeer/preview/lingo/class\",\"text\":\"css classes applied to the popup\"},\"$:/plugins/tobibeer/preview/lingo/delay\":{\"title\":\"$:/plugins/tobibeer/preview/lingo/delay\",\"text\":\"delay popup for this many milliseconds\"},\"$:/plugins/tobibeer/preview/lingo/exclude\":{\"title\":\"$:/plugins/tobibeer/preview/lingo/
{"title":"$:/sib/Buttons/Checkpoint","caption":"Checkpoint","condition":"[\u003CtargetTiddler>type[]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]] +[first[]]","created":"20230727194531822","description":"Save the current version of this tiddler so you can view it later","dropdown":"$:/sib/CheckpointDropdown","icon":"$:/core/images/timestamp-on","modified":"20230727194728438","shortcuts":"((checkpoint))","tags":"$:/tags/EditorToolbar","type":"text/vnd.tiddlywiki"},
{"title":"$:/sib/Buttons/CopyPublicZettelkastenLink","caption":"copy public link","created":"20201120172611922","creator":"soren","description":"Copy a link to this tiddler in the public Zettelkasten","list-after":"$:/core/ui/Buttons/info","modified":"20210922125543768","modifier":"soren","tags":"$:/tags/ViewToolbar","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define copier()\n https://zettelkasten.sorenbjornstad.com/#$(tidTitle)$\n\\end\n\n\u003C$set name=\"tidTitle\" value={{!!title}}>\n\u003C$button message=\"tm-copy-to-clipboard\" param=\u003C\u003Ccopier>> tooltip={{$:/sib/Buttons/CopyPublicZettelkastenLink!!caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\n\t\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n {{$:/core/images/permalink-button}}\n\t\u003C/$list>\n\t\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\t\u003Cspan class=\"tc-btn-text\">\n\t\u003C$text text=\" \"/>\n\t\u003C$text text={{$:/sib/Buttons/CopyPublicZettelkastenLink!!caption}}/>\n\t\u003C/span>\n\t\u003C/$list>\n\u003C/$button>\n\u003C/$set>"},
{"title":"$:/sib/Buttons/CopyTitleReference","caption":"copy tiddler title","created":"20200419143537510","creator":"soren","description":"Copy the name of this tiddler to the clipboard","list-after":"$:/core/ui/Buttons/info","modified":"20220215235957457","modifier":"soren","tags":"$:/tags/ViewToolbar","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\u003C$button message=\"tm-copy-to-clipboard\" param={{!!title}} tooltip={{$:/sib/Buttons/CopyTitleReference!!caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\n\t\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n\t\t\u003Ci class=\"far fa-copy\" style=\"font-size: 160%; position:relative; bottom:-4px; left:-1px;\"/>\n\t\u003C/$list>\n\t\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\t\u003Cspan class=\"tc-btn-text\">\n\t\u003C$text text=\" \"/>\n\t\u003C$text text={{$:/sib/Buttons/CopyTitleReference!!caption}}/>\n\t\u003C/span>\n\t\u003C/$list>\n\u003C/$button>"},
{"title":"$:/sib/Buttons/excise-private-chunk","caption":"Excise private chunk","condition":"[\u003CtargetTiddler>type[]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]] +[first[]]","created":"20210522034413324","creator":"soren","description":"Create a new private chunk from the selection","icon":"$:/core/images/locked-padlock","modified":"20210928031136154","modifier":"soren","shortcuts":"((excise-private-chunk))","tags":"$:/tags/EditorToolbar","type":"text/vnd.tiddlywiki","text":"\u003C$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excisePrivateChunk\"\n/>"},
{"title":"$:/sib/Documentation/Macros","caption":"Macros","created":"20210523143205876","creator":"soren","modified":"20230416155452545","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"Click into a macro to see an example of its usage and its definition.\n\n\u003Ctable>\n\t\u003Ctr>\n\t\t\u003Cth style=\"width: 10em;\">Name\u003C/th>\n\t\t\u003Cth>Description\u003C/th>\n\t\u003C/tr>\n\t\u003C$list filter=\"[prefix[$:/sib/Macros/]tag[$:/tags/Macro]!prefix[$:/sib/Macros/_]]\">\n\t\u003Ctr>\n\t\t\u003Ctd>\u003C$link to=\u003C\u003CcurrentTiddler>>>\u003C$text text={{{ [all[current]removeprefix[$:/sib/Macros/]] }}}/>\u003C/$link>\u003C/td>\n\t\t\u003Ctd>{{!!description}}\u003C/td>\n\t\u003C/tr>\n\t\u003C/$list>\n\u003C/table>"},
{"title":"$:/sib/EpistemicStatus/confident","caption":"confident","color":"green","created":"20210508225005508","modified":"20210818135736812","section":"main","stackorder":"10","tags":"","type":"text/vnd.tiddlywiki","text":"I would vouch for this idea without qualification in a public blog post or speech. That said, [[I could still be wrong|IntellectualHumility]], and I'm willing to hear why I'm wrong and [[change my mind|ChangeYourMind]] if warranted."},
{"title":"$:/sib/EpistemicStatus/Display","created":"20210508223048629","creator":"soren","description":"Show the [[epistemic status|EpistemicStatuses]] of the current tiddler, if any. The status is editable in the private edition.","modified":"20210920193540286","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All [[idea tiddlers|ZettelkastenCardType]]: those that are not tagged with a red type tag and are not system tiddlers, except that index tiddlers are included.","type":"text/vnd.tiddlywiki","text":"\\define color-style() color: $(itemColor)$;\n\n\u003C$list filter=\u003C\u003Cff EpistemicStatus>> variable=_>\n\u003C$list filter=\"[all[current]!is[system]]\">\n\u003C$list filter=\"[all[current]tag[Idea]] [all[current]tag[Index]]\" variable=_>\n\n\u003Cdiv style=\"float: right; vertical-align: center;\">\n\u003C$list filter=\"[[$:/config/sib/IsPublicEdition]text[true]]\" variable=_>\n\t\u003C$link to=\"EpistemicStatuses\">\u003Cspan style={{{ [prefix[$:/sib/EpistemicStatus]caption{!!es}get[color]addprefix[color: ]addsuffix[;]] }}}>epistemic status\u003C/span>\u003C/$link>:\n\t\u003C$select field=\"es\" default=\"\">\n\t\t\u003C$list filter=\"[prefix[$:/sib/EpistemicStatus]has[caption]nsort[stackorder]]\">\n\t\t\t\u003C$set name=\"itemColor\" value={{!!color}}>\n\t\t\t\t\u003Coption style=\u003C\u003Ccolor-style>> value={{!!caption}}>{{!!caption}}\u003C/option>\n\t\t\t\u003C/$set>\n\t\t\u003C/$list>\n\t\u003C/$select>\n\u003C/$list>\n\u003C$list filter=\"[[$:/config/sib/IsPublicEdition]!text[true]]\" variable=_>\n\u003C$list filter=\"[all[current]has[es]]\">\n\t[[epistemic status|EpistemicStatuses]]: \u003Cspan style={{{ [prefix[$:/sib/EpistemicStatus]caption{!!es}get[color]addprefix[color: ]addsuffix[;]] }}}>{{!!es}}\u003C/span>\n\u003C/$list>\n\u003C/$list>\n\u003C/div>\n\n\u003C/$list>\n\u003C/$list>\n\u003C/$list>"},
{"title":"$:/sib/EpistemicStatus/likely","caption":"likely","color":"lightgreen","created":"20210508225031010","modified":"20210509004556699","section":"main","stackorder":"20","tags":"","type":"text/vnd.tiddlywiki","text":"I believe this idea is more likely than not to be true, but perhaps with some qualifications. I may be suspicious that the effect size is smaller than claimed, or that it may be true only in a more specific case; or I may just not have finished thinking through enough implications or doing enough research to be fully confident about it."},
{"title":"$:/sib/EpistemicStatus/mythological","caption":"mythological","color":"white","created":"20210508225357539","modified":"20210508233248388","section":"auxiliary","stackorder":"120","tags":"","type":"text/vnd.tiddlywiki","text":"Judging the tiddler's correctness is a nonsensical operation or misses the point. Includes jokes, fiction, aphorisms, [[stories whose main purpose is not to tell what happened|SoWhat]], and so on."},
{"title":"$:/sib/EpistemicStatus/personal","caption":"personal","color":"gray","created":"20210508225329258","modified":"20210508230857314","section":"auxiliary","stackorder":"110","tags":"","type":"text/vnd.tiddlywiki","text":"The tiddler describes me on a subjective level, so it is difficult or impossible to get an objective assessment. I am probably the best expert on myself [[but still not very good|PeopleDontKnowWhatTheyWant]]."},
{"title":"$:/sib/EpistemicStatus/possible","caption":"possible","color":"lightblue","created":"20210508225155649","creator":"soren","modified":"20211229142954562","modifier":"soren","section":"main","stackorder":"30","tags":"","type":"text/vnd.tiddlywiki","text":"I [[withhold judgment|NoOpinion]] on the idea; I am merely reporting it."},
{"title":"$:/sib/EpistemicStatus/probably-wrong","caption":"probably wrong","color":"orange","created":"20210508225317301","modified":"20210508233223543","section":"main","stackorder":"50","tags":"","type":"text/vnd.tiddlywiki","text":"I would bet against this idea, or think it is so wild that I would be embarrassed to bring it up in a more formal context, but I think it's worth recording anyway."},
{"title":"$:/sib/EpistemicStatus/unlikely","caption":"unlikely","color":"yellow","created":"20210508225252519","modified":"20210522030711474","section":"main","stackorder":"40","tags":"","type":"text/vnd.tiddlywiki","text":"I find this idea interesting or worth recording, but suspect it is flawed or incorrect."},
{"title":"$:/sib/Fonts/SourceSansPro","text":"/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on March 20, 2021.\n\n+------------+--------------------------+-------------+------------+\n|to get: | font-family | font-weight | font-style |\n+------------+--------------------------+-------------+------------+\n|regular | Source Sans Pro | normal | normal |\n|italic | Source Sans Pro | normal | italic |\n|bold | Source Sans Pro | bold | normal |\n|bold italic | Source Sans Pro | bold | italic |\n|semibold | Source Sans Pro Semibold | normal | normal |\n+------------+--------------------------+-------------+------------+\n\nTW font embed instructions: https://groups.google.com/g/tiddlywiki/c/7HPSS67j4uU\n\nCopyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the copyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as distributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to
{"title":"$:/sib/GettingStarted","created":"20210523150144006","creator":"soren","description":"Guided wizard that walks you through basic settings and the most important things to know about this edition.","list":"$:/sib/GettingStarted/Warning $:/sib/GettingStarted/Title $:/sib/GettingStarted/Copyright $:/sib/GettingStarted/ZettelkastenCardTypes $:/sib/GettingStarted/ReferenceExplorer $:/sib/GettingStarted/ThingsToDo $:/sib/GettingStarted/NextSteps","modified":"20210922011910182","modifier":"soren","tags":"Meta Tool","tooltype":"configuration","type":"text/vnd.tiddlywiki","text":"\\define go-back() \u003C$action-setfield $tiddler=\"$:/config/zettelkasten/GettingStartedWizardCurr\" text={{{ [enlist{$:/sib/GettingStarted!!list}before{$:/config/zettelkasten/GettingStartedWizardCurr}] }}}/>\n\\define go-forward() \u003C$action-setfield $tiddler=\"$:/config/zettelkasten/GettingStartedWizardCurr\" text={{{ [enlist{$:/sib/GettingStarted!!list}after{$:/config/zettelkasten/GettingStartedWizardCurr}] }}}/>\n\\define wizard-navbar()\n\u003Cdiv style=\"margin: auto; text-align: center;\">\n\t\u003Ch2 style=\"margin-bottom: 5px;\">{{!!caption}}\u003C/h2>\n\n\t\u003C$list filter=\"[enlist{$:/sib/GettingStarted!!list}before{$:/config/zettelkasten/GettingStartedWizardCurr}!is[blank]]\" variable=_>\n\t\t\u003C$button actions=\u003C\u003Cgo-back>>>\n\t\t\t← Back\n\t\t\u003C/$button>\n\t\u003C/$list>\n\t\n\t\u003C$list filter=\"[enlist{$:/sib/GettingStarted!!list}after{$:/config/zettelkasten/GettingStartedWizardCurr}!is[blank]]\" variable=_>\n\t\t\u003C$button actions=\u003C\u003Cgo-forward>>>\n\t\t\tNext →\n\t\t\u003C/$button>\n\t\u003C/$list>\n\u003C/div>\n\\end\n\nWelcome to ~TiddlyZettelKasten, usually known as ''tzk'' (pronounced /tə'ziːk/, tuh-ZEEK). tzk is an occasionally updated version of [[Soren's Zettelkasten|https://zettelkasten.sorenbjornstad.com]] in a format that you can use as a launching point for your own Zettelkasten or similar wiki.\n\nYou are expected and encouraged to make tzk your own by changing its conventions, tools, tags, and so on as you learn more about the Zettelkasten approach to note-taking. Rather than a full-service application, tzk is a framework you can use to build your own system (although it works out of the box if you happen to like Soren's highly opinionated approach).\n\nIt's recommended that you have a basic understanding of TiddlyWiki before getting started with tzk. [[Grok TiddlyWiki|https://groktiddlywiki.com]] is a free online textbook you can use to learn TiddlyWiki; completing at least chapters 1 and 2 is recommended before getting too serious with tzk. (Jumping in first is totally fine, but if you find yourself with lots of questions about how things work, check //Grok ~TiddlyWiki// before getting frustrated).\n\nIf you're viewing this page on the web, you have two options for installation:\n\n\u003C$details summary=\"As a single file\">\n\nYou can start out by downloading the wiki as a single HTML file and working with it directly in your browser:\n\n{{$:/snippets/download-wiki-button}}\n\nYou will need a way of saving changes to this file as you work. You can [[view the full list of options at tiddlywiki.com|https://tiddlywiki.com/#Saving]]; if you've never used TiddlyWiki before and aren't sure what to pick, [[I recommend TiddlyDesktop|https://groktiddlywiki.com/read/#Installing%20TiddlyWiki]].\n\nYou can always convert your single-file wiki to Node.js later using the `tzk convert` command.\n\n\u003C/$details>\n\u003C$details summary=\"Through Node.js (full-service)\">\n\ntzk is primarily designed for use with Node.js and has an associated helper command-line interface. Using tzk this way is more involved and technical but offers the following features you can't get in the single-file version:\n\n* Instant setup of your wiki on Node.js.\n* Highly configurable builds, allowing you to publish different versions of your wiki -- a common use case is publishing some of your content on the web and keeping some of it private.\n* Space-efficient backups and version history with Git.\n\nF
{"title":"$:/sib/GettingStarted/NextSteps","caption":"Next steps","created":"20210828133924602","creator":"soren","modified":"20210922163144199","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"Where do you go from here?\n\nI recommend starting by ''adding some notes''! Add a couple of tiddlers for the ideas rolling around in your head. Read a book, add a source tiddler for it, and link to it in some idea tiddlers.\n\nOnce you've gotten a few notes into the system, you will be in a good place to ''decide what elements of this edition you like and what things you'll want to change''. If you want to get into customizing the wiki and you don't have much experience with TiddlyWiki, check out [[Grok TiddlyWiki|https://groktiddlywiki.com/read]], a complete textbook and reference designed for learning how this stuff works from the ground up.\n\nAt any time, you can watch [[an hour-long walkthrough video|https://www.youtube.com/watch?v=9X_T-DVie8o]] showing the most important features of tzk.\n\nAt any time, you can click the ''tools button {{$:/core/images/theme-button}}'' on the page toolbar (upper-right corner of the wiki, right under the title) to access a wide variety of tools, settings, and documentation related to the Zettelkasten edition.\n\nIf you have questions, comments, or suggestions, please feel free to get in touch at `zettelkasten@sorenbjornstad.com`."},
{"title":"$:/sib/GettingStarted/ReferenceExplorer","caption":"Finding related content","created":"20210920161148251","creator":"soren","modified":"20210920161326799","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"{{ReferenceExplorer}}"},
{"title":"$:/sib/GettingStarted/ThingsToDo","caption":"Keeping track of things to do","created":"20210828132735971","creator":"soren","modified":"20210828133749250","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"A Zettelkasten is never complete and always full of new things you could work on and existing things you can improve. As such, tzk has a variety of tools for keeping track of what you might want to work on next, so you'll always be ready to do something useful whenever you have time to work.\n\nThese tools are gathered together on the ''Write'' tab of the sidebar.\n\n; Stubs\n: Tag a tiddler \u003C\u003Ctag Stub>> to indicate that you've decided this topic deserves a tiddler, but haven't had time to write much of significance about it yet. If I have an idea but no time to write about it, I commonly add a tiddler with just a title, or a title and a sentence or two explaining what would go in it, then tag it as a stub and save it.\n\n; Missing\n: All tiddlers that you've linked to but not created appear here. Just because you linked to a tiddler doesn't mean you //have// to create it -- often it's sufficient just to gather a list of things that link to that person, place, or idea, which works just fine without ever creating the tiddler -- but this list often contains things that could be promoted to stubs or full-blown tiddlers, so it's good to skim through it from time to time.\n\n; Needing attention\n: If you have a tiddler that obviously needs some work -- for instance, it no longer represents your opinion, it's full of errors, half of it consists of text you copied and pasted from somewhere else, and so on -- tag it \u003C\u003Ctag NeedsAttention>> to add it to this list.\n\n; Needing excision\n: The \u003C\u003Ctag NeedsExcision>> tag is a more specific version of //Needing attention// which indicates the tiddler is too long and should be [[broken out into atomic units|https://groktiddlywiki.com/read/#Slicing%20Up%20Content]]. For instance, if you took a bunch of notes on a book but left them sitting in the tiddler about the book rather than splitting them up into separate tiddlers for each idea, you might add this tag to the book tiddler as a reminder to come back and think more clearly about the boundaries between ideas.\n\n; To-do items\n: If you need to be more specific about what needs to be done in a tiddler than the on-or-off NeedsAttention tag allows, in the text field of that tiddler, link to `[[TODO]]` and follow the link with a sentence ending in a period. For instance, ``[[TODO]]: Find a reference for this claim.`` A link to the tiddler containing the todo and the text of the todo item will then appear in this tab.\n\n; Open questions\n: Similar to to-do items, tiddlers containing a link to `[[OpenQuestion]]` appear here. Open questions are ones that you don't know how to answer, but think are important and hope that with more study or life experience you might be able to understand better.\n\n; Tray\n: If you have some tiddlers you want to keep “front of mind,” but you don't want to keep them open in the story river, you can drag and drop them into this tab, where they'll stay until you manually remove them."},
{"title":"$:/sib/GettingStarted/Title","caption":"Title","created":"20210825150825394","creator":"soren","modified":"20210920133523652","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"\\define set-favicon-actions()\n\u003C$action-sendmessage $message=\"tm-rename-tiddler\" from={{{[[$:/Import]links[]first[]]}}} to=\"$:/favicon.ico\"/>\n\\end\n\n\\define favicon-cell()\n[img width=24 [$:/favicon.ico]]\n\u003C$navigator>\n\t\u003C$browse accept=\"ico,png,gif\"/>\n\u003C/$navigator>\n\u003C$list filter=\"[[$:/Import]plugin-type[import]]\">\n\t\u003C$button actions=\u003C\u003Cset-favicon-actions>>>\n\t\tchange favicon\n\t\t\u003C$action-sendmessage $message=\"tm-perform-import\" $param=\"$:/Import\"/>\n\t\u003C/$button>\n\u003C/$list>\n\\end\n\n\u003C!-- Thanks to Saq for helping figure out how to import/replace the favicon:\n https://talk.tiddlywiki.org/t/importing-a-tiddler-with-a-specific-name/680 -->\n\t\t \n\nLet's start with some basic information.\n\nWhat do you want to call your Zettelkasten? The title and subtitle will appear at the top of the sidebar and in your web browser's title bar.\n\n\u003C$set name=\"tv-auto-open-on-import\" value=\"no\">\n\u003C$navigator>\n\n|!Title |\u003C$edit-text tiddler=\"$:/SiteTitle\" tag=\"input\"/>|\n|!Subtitle |\u003C$edit-text tiddler=\"$:/SiteSubtitle\" tag=\"input\"/>|\n\nThe favicon appears next to the title in tabs, bookmarks, and other places throughout your web browser's interface. You can upload a new favicon in ICO, PNG, or GIF format.\n\n|!Favicon |\u003C\u003Cfavicon-cell>>|\n\n\n\u003C/$navigator>\n\u003C/$set>"},
{"title":"$:/sib/GettingStarted/Warning","caption":"WARNING and DISCLAIMER","created":"20210828134445553","creator":"soren","modified":"20210920133400209","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"''tzk should be considered alpha software.'' The underlying platform, TiddlyWiki, is extremely stable, and it is highly unlikely you will lose any data as a result of using tzk, nor will the system become obsolete or unusable in the near future. However, there may not be an obvious upgrade path to newer versions, I cannot guarantee support if you encounter problems, and the edition remains primarily focused on my specific needs.\n\nIn other words, it's //safe// to use tzk for your production Zettelkasten, but you should expect to have to dive into some system tiddlers to make the edition work the way you want, and you may have to do some manual merging and copy-pasting of tiddlers if you want to backport features that I add to tzk in the future to your wiki. Think of the current version of tzk as a piece of hardware that you bought: you get it as-is, and if you want changes or upgrades to it, you have to make them yourself. If you're not willing to take on that responsibility, please do not use tzk for real work.\n\n!! Why?\n\nAs I am still trying to figure out how to get the most value out of TiddlyWiki and my Zettelkasten, I need to preserve my ability to rapidly make changes to my tooling. Worrying about backwards compatibility, upgrades, supportability, and changing things so they work well for other users and not just me would require a significant portion of my development time and motivation, and I don't have that time to give at the moment. If I tried to supply these things, I wouldn't be able to publish this at all. (Ordinarily I would just keep the tools to myself until they were a bit more mature, but I have gotten so many curious people casting jealous looks at my [[public Zettelkasten|https://zettelkasten.sorenbjornstad.com]] that I'm making an exception.)"},
{"title":"$:/sib/gis/DrivingDirections","caption":"Directions","created":"20201129175445792","creator":"soren","modified":"20210910154651732","modifier":"soren","tags":"$:/sib/gis/MappingTools","type":"text/vnd.tiddlywiki","text":"\\define dirUrl(lat, long) https://www.google.com/maps/embed/v1/directions?key=$(gmapsApiKey)$&origin=$(sourceLoc)$&destination=$(lat)$%2C$(long)$\n\n\u003C$list filter=\"[all[current]has[gis-lat]]\" variable=_>\n\u003Cdiv style=\"margin-bottom:1ex;\">\n\tDirections from \u003C$link to=\"PrivateMetadata\">home\u003C/$link> or: \u003C$edit-text tiddler=\"$:/temp/CurrentDirectionsSource\" tag=input default=\"\" size=56 />\n\u003C/div>\n\n\u003C$set name=\"directionsSource\" value={{{ [{$:/temp/CurrentDirectionsSource}!is[blank]encodeuri[]] ~[{PrivateMetadata##Address}encodeuri[]] }}}>\n\u003C$list filter=\"[\u003CdirectionsSource>!is[blank]]\" variable=_ emptyMessage=\"Please enter an address to start from, or set the `Address` index of the `PrivateMetadata` data tiddler to a default address.\">\n\u003C$vars\n gmapsApiKey={{$:/config/zettelkasten/gis/GMapsApiKey}}\n\tlat={{!!gis-lat}}\n\tlong={{!!gis-long}}\n\tsourceLoc=\u003C\u003CdirectionsSource>>>\n \u003Ciframe\n width=\"600\"\n height=\"450\"\n frameborder=\"0\"\n style=\"border:0\"\n src=\u003C\u003CdirUrl>>\n allowfullscreen>\u003C/iframe>\n\u003C/$vars>\n\u003C/$list>\n\u003C/$set>\n\n\u003C/$list>"},
{"title":"$:/sib/gis/MappingTools","created":"20201129175820541","creator":"soren","description":"Show the mapping tools available for place tiddlers with location information, or prompt the user to add such information.","list":"$:/sib/gis/SatelliteMap $:/sib/gis/DrivingDirections $:/sib/gis/Info","modified":"20210910154242175","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers tagged \u003C\u003Ctag Place>>.","type":"text/vnd.tiddlywiki","text":"\\define no-gis-info()\nThere is no GIS information available for this place, but you can add it (try from [[Google Maps|https://www.google.com/maps]]):\n\n{{||$:/sib/gis/AddInfo}}\n\\end\n\n\\define no-api-key()\nTo use the mapping tools on Place tiddlers, you must configure a Maps Embed API key in Google Cloud Platform (GCP), then set the text field of the $:/config/zettelkasten/gis/GMapsApiKey tiddler to this API key. The Maps Embed API is free to use. Documentation on the API may be [[found here|https://developers.google.com/maps/documentation/embed/get-started]].\n\nIf you don't want to see this message again, disable the //GIS// [[feature flag|$:/sib/Tools/FeatureFlags]].\n\\end\n\n\u003C$list filter=\"[all[current]tag[Place]]\" variable=_>\n\u003C$list filter=\u003C\u003Cff GisTools>> variable=_>\n\u003C$list filter=\"[all[current]has[gis-lat]]\" emptyMessage=\u003C\u003Cno-gis-info>> variable=_>\n\u003C$list filter=\"[{$:/config/zettelkasten/gis/GMapsApiKey}!is[blank]]\" emptyMessage=\u003C\u003Cno-api-key>> variable=\"gmapsApiKey\">\n\n\u003C\u003Ctabs \n\ttabsList:\"[list[$:/sib/gis/MappingTools]]\"\n\tdefault:\"$:/sib/gis/SatelliteMap\"\n\tretain:yes\n>>\n\n\u003C/$list>\n\u003C/$list>\n\u003C/$list>\n\u003C/$list>"},
{"title":"$:/sib/gis/SatelliteMap","caption":"Satellite","created":"20201129174511282","creator":"soren","modified":"20210910152248350","modifier":"soren","tags":"$:/sib/gis/MappingTools","type":"text/vnd.tiddlywiki","text":"\\define mapUrl() https://www.google.com/maps/embed/v1/view?key=$(gmapsApiKey)$&zoom=$(zoom)$¢er=$(lat)$%2C$(long)$&maptype=satellite\n\n\\define changebutton(operation, faClass)\n\t\u003C$button class=\"tc-btn-invisible tc-tiddlylink\">\n\t\t\u003C$action-setfield $field=\"gis-zoom\" $value={{{ [{!!gis-zoom}$operation$[1]] }}}/>\n\t\t\u003Ci class=\"fa $faClass$\"/>\n\t\u003C/$button>\n\\end\n\n\u003C$list filter=\"[all[current]has[gis-lat]]\" variable=_>\n\u003C$vars\n\tlat={{!!gis-lat}}\n\tlong={{!!gis-long}}\n\tzoom={{!!gis-zoom}}>\n\t\n \u003Ciframe\n width=\"600\"\n height=\"450\"\n frameborder=\"0\"\n style=\"border:0\"\n src=\u003C\u003CmapUrl>>\n allowfullscreen>\n\t\t\u003C/iframe>\n\u003C/$vars>\nEdit map zoom: \u003C\u003Cchangebutton add fa-search-plus>> \u003C\u003Cchangebutton subtract fa-search-minus>>\n\u003C/$list>\n\n\u003C!--\n\u003C$list filter=\"[all[current]!has[gis-lat]]\" variable=_>\n Please add `gis-lat`, `gis-long`, and `gis-zoom` fields to this tiddler to display a map.\n\u003C/$list>\n-->"},
{"title":"$:/sib/gui/KillPhrases","created":"20210731165017938","creator":"soren","description":"Configure phrases that should cause public builds to fail.","modified":"20210920155725847","modifier":"soren","tags":"Tool","tooltype":"configuration","type":"text/vnd.tiddlywiki","text":"//Kill phrases// are an extra measure of security to ensure you don't accidentally publish something that was supposed to be private. After building the public wiki, if the source of any tiddler therein contains any of the words or phrases below in any field, the build will fail and point out the location where a kill phrase ended up in the output.\n\nEnter kill phrases below, one per line.\n\n\u003Cdiv class=\"kill-phrase-entry\">\n\u003C$edit-text\n tiddler=\"$:/config/zettelkasten/Build/KillPhrases\"\n\tdefault=\"\"\n\t/>\n\u003C/div>\n\nEach line is treated as a Python-dialect regular expression ([[documentation|https://docs.python.org/3/library/re.html#regular-expression-syntax]] of this dialect).\n\nKill phrases are ''case-sensitive''. If you want to kill the build on multiple cases of a word, use a //character class// (`[sS]ecret` to allow both `secret` and `Secret`), or begin the phrase with `(?i)` to make the entire regular expression case-insensitive.}\n\nKill phrases ''match substrings'': that is, “kill” will also match “skillet” and “killdeer”. If you want to match only a whole word, use `\\b` (a //word boundary// marker) before and after the word, like `\\bkill\\b`. (This still ignores punctuation, so it will find `kill,` -- but that's probably what you want.)\n\nYour list of kill phrases will not be published so long as you do not alter the build filter (if you do, watch out -- system tiddlers, including the one which stores your kill phrases, are published by default).\n\n\u003Cstyle>\ndiv.kill-phrase-entry textarea {\n\twidth: 100%;\n}\n\u003C/style>"},
{"title":"$:/sib/gui/SidebarTabSelector","created":"20210731162946420","creator":"soren","description":"Choose which top-level tabs you want to show in the sidebar in your public and private editions.","modified":"20210920155630850","modifier":"soren","tags":"Tool","tooltype":"configuration","type":"text/vnd.tiddlywiki","text":"{{!!description}}\n\n\u003Ctable>\n\t\u003Ctr>\n\t\t\u003Cth style=\"min-width: 6em;\">Tab\u003C/th>\n\t\t\u003Cth>Private\u003C/th>\n\t\t\u003Cth>Public\u003C/th>\n\t\t\u003Cth>Description\u003C/th>\n\t\u003C/tr>\n\t\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n\t\t\u003C$list filter=\"[all[current]addprefix[$:/config/zettelkasten/SideBar/Visibility/]]\" variable=\"vizTiddler\">\n\t\t\t\u003Ctr>\n\t\t\t\t\u003Ctd>\u003C$link to=\u003C\u003CcurrentTiddler>>>{{!!caption}}\u003C/$link>\u003C/td>\n\t\t\t\t\u003Ctd>\u003C$checkbox tiddler=\u003C\u003CvizTiddler>> field=\"private\" checked=\"yes\" unchecked=\"no\"/>\u003C/td>\n\t\t\t\t\u003Ctd>\u003C$checkbox tiddler=\u003C\u003CvizTiddler>> field=\"public\" checked=\"yes\" unchecked=\"no\"/>\u003C/td>\n\t\t\t\t\u003Ctd>\u003C$transclude field=\"description\">(//built-in tab//)\u003C/$transclude>\u003C/td>\n\t\t\t\u003C/tr>\n\t\t\u003C/$list>\n\t\u003C/$list>\n\u003C/table>"},
{"title":"$:/sib/indite/Sidebar","created":"20210410005234756","modified":"20210410005104788","tags":"","type":"text/vnd.tiddlywiki","text":"This is the sidebar."},
{"title":"$:/sib/indite/ViewTemplate","caption":"Indite view template","created":"20210410004824597","creator":"soren","description":"Tiddlers that are part of the Indite writing system (under development) hide the normal view template via CSS and use this one instead.","modified":"20210924153731019","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers tagged \u003C\u003Ctag Indite>>.","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[Indite]]\" variable=_>\n\n\u003C$reveal tag=\"div\" class=\"indite-body\" type=\"nomatch\" stateTitle=\u003C\u003Cfolded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n\u003Cdiv style=\"border: 1px solid;\">\n\u003C$count filter=\"[all[current]list[]]\"/> children (drag and drop to add or reorder):\n\n\u003C$macrocall $name=\"list-links-draggable\" tiddler=\u003C\u003CcurrentTiddler>> itemTemplate=\"$:/sib/indite/ChildListItemTemplate\"/>\n\n\u003C/div>\n\n\u003Cdiv class=\"indite-text\">\n\n\u003C$transclude mode=\"block\"/>\n\n\u003C/div>\n\n\u003C/$reveal>\n\n\u003C/$list>"},
{"title":"$:/sib/js/dateadd.js","text":"/*\\\ntitle: $:/plugins/sobjornstad/TakeAway/dateadd.js\ntype: application/javascript\nmodule-type: macro\n\nCourtesy of stobot, adapted from Jed Carty:\nhttps://groups.google.com/g/tiddlywiki/c/y_GjM302u60/m/u_aZ6GhEBwAJ\nhttp://inmysocks.tiddlyspot.com/#$:/inmysocks/macros/add-time.js\n\nTakes a base date and adds days, months or years\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dateadd\";\n\nexports.params = [\n {name: \"basedate\"},\n {name: \"days\"},\n {name: \"months\"},\n {name: \"years\"},\n {name: \"template\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(basedate, days, months, years, template) {\n \n //Make each date object.\n \n if (basedate === \"\") {\n var newdate = new Date();\n } else {\n var baseyear = basedate.substr(0,4);\n var basemonth = basedate.substr(4,2);\n var baseday = basedate.substr(6,2);\n var newdate = new Date(Number(baseyear), Number(basemonth)-1, Number(baseday), 0, 0, 0);\n }\n\n var new_year = Number(newdate.getFullYear())+Number(years);\n var new_month = Number(newdate.getMonth())+Number(months);\n var new_day = Number(newdate.getDate())+Number(days);\n\n var output_date = new Date(new_year, new_month, new_day, 0, 0, 0);\n\n var result = (output_date.getFullYear()*10000) + ((output_date.getMonth()+1)*100) + (output_date.getDate());\n\n if(template === \"\"){\n return result;\n } else {\n return $tw.utils.formatDateString(output_date,template);\n }\n};\n\n})();","type":"application/javascript","module-type":"macro","created":"20230407020448179","creator":"soren","modified":"20230407020523536","modifier":"soren","tags":""},
{"title":"$:/sib/js/excise-private-chunk.js","text":"/*\\\ntitle: $:/sib/js/excise-private-chunk.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new private-chunk tiddler.\n\nSIB 2021-05-21: Copied from the standard excise operation and modified as needed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excisePrivateChunk\"] = function(event, operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = this.wiki.generateNewTitle(editTiddlerTitle + \"/p\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: \"PrivateChunk\"\n\t\t}\n\t));\n\toperation.replacement = \"{{\" + excisionTitle + \"||PrivateChunk}}\";\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();","type":"application/javascript","module-type":"texteditoroperation","created":"20210522033305614","modified":"20210522034730351","tags":""},
{"title":"$:/sib/js/ListSubscriptionsWidget","text":"/*\\\ntitle: action-refreshsubscriptions\ntype: application/javascript\nmodule-type: widget\nPull details on all subscriptions for a given user into the TiddlyWiki.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nlet ENDPOINT = \"https://0tkdn6wpl9.execute-api.us-east-1.amazonaws.com/default/SubscribeToZettelkastenTiddler\";\n\nfunction gfv(id) {\n\t\treturn document.getElementById(id).value\n}\n\nfunction sendRequest(widget, url, params, callback) {\n\t\tlet xhr = new XMLHttpRequest();\n\t\txhr.open('POST', url, true);\n\t\txhr.responseType = 'json';\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\n\t\txhr.onload = () => {\n\t\t\t\tlet status = xhr.status;\n\t\t\t\tif (status == 200) {\n\t\t\t\t\t\tconsole.log(xhr.response);\n\t\t\t\t\t\tif (xhr.response[\"status\"] == \"success\") {\n\t\t\t\t\t\t\t\tcallback(null, xhr.response, widget);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(status, xhr.response, widget);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback(status, xhr.response);\n\t\t\t\t}\n\t\t};\n\n\t\t// Turn the data object into an array of URL-encoded key/value pairs.\n\t\t// https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest\n\t\tlet urlEncodedDataPairs = [], name;\n\t\tfor (name in params) {\n\t\t\t\turlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(params[name]));\n\t\t}\n\t\txhr.send(urlEncodedDataPairs.join('&'))\n};\n\nfunction getSubscriptions(widget, user, token) {\n\t\tvar params = new Object();\n\t\tparams.user = user;\n\t\tparams.token = token;\n\t\tparams.operation = \"list\";\n\n\t\tsendRequest(widget, ENDPOINT, params, (err, data, widget) => {\n\t\t\t\tif (err != null) {\n\t\t\t\t\t\tif (data['reason'] === \"Invalid token\") {\n\t\t\t\t\t\t\talert(\"Your access code is invalid or missing. Please choose 'send a new one' and try the new access code you are emailed.\")\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert(\"Unknown error viewing subscriptions. Please contact zettelkasten@sorenbjornstad.com for assistance.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\t\tvar subs = data['subscribed_tiddlers'];\n\t\t\t\t\t\tvar tiddlerList = \"[[\" + subs.join(\"]] [[\") + \"]]\";\n\t\t\t\t\t\twidget.wiki.setText(\"$:/temp/Subscriptions\", \"list\", undefined, tiddlerList);\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t});\n}\n\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FeedbackWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFeedbackWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFeedbackWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nFeedbackWidget.prototype.execute = function() {\n\tthis.user = this.getAttribute(\"user\");\n\tthis.token = this.getAttribute(\"token\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nFeedbackWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"name\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nFeedbackWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this, options = {};\n\treturn getSubscriptions(self, this.user, this.token);\n};\n\nexports[\"action-refreshsubscriptions\"] = FeedbackWidget;\n\n})();","type":"application/javascript","module-type":"widget","created":"20210612152514906","modified":"20210612171809654","tags":""},
{"title":"$:/sib/js/SendFeedbackWidget","text":"/*\\\ntitle: action-sendfeedback\ntype: application/javascript\nmodule-type: widget\nAction widget to call an API.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nlet ENDPOINT = \"https://351uof5dxh.execute-api.us-east-1.amazonaws.com/default/startZettelkastenConversation\";\n\nfunction gfv(id) {\n\t\treturn document.getElementById(id).value\n}\n\nfunction sendRequest(url, params, callback) {\n\t\tlet xhr = new XMLHttpRequest();\n\t\txhr.open('POST', url, true);\n\t\txhr.responseType = 'json';\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\n\t\txhr.onload = () => {\n\t\t\t\tlet status = xhr.status;\n\t\t\t\tif (status == 200) {\n\t\t\t\t\t\tconsole.log(xhr.response);\n\t\t\t\t\t\tif (xhr.response[\"status\"] == \"success\") {\n\t\t\t\t\t\t\t\tcallback(null, xhr.response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(status, xhr.response);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback(status, xhr.response);\n\t\t\t\t}\n\t\t};\n\n\t\t// Turn the data object into an array of URL-encoded key/value pairs.\n\t\t// https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest\n\t\tlet urlEncodedDataPairs = [], name;\n\t\tfor (name in params) {\n\t\t\t\turlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(params[name]));\n\t\t}\n\t\txhr.send(urlEncodedDataPairs.join('&'))\n};\n\nfunction submitFeedback(tiddler, email, comment) {\n\t\tvar params = new Object();\n\t\tparams.tiddler = tiddler\n\t\tparams.email = email\n\t\tparams.comment = comment\n\n\t\tsendRequest(ENDPOINT, params, (err, data) => {\n\t\t\t\tif (err != null) {\n\t\t\t\t\t\talert(\"Error sending mail: \" + data.reason);\n\t\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\t\talert(\"Thanks for getting in touch! You'll receive a copy of your message and I will write back to you when I am able.\");\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t});\n}\n\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FeedbackWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFeedbackWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFeedbackWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nFeedbackWidget.prototype.execute = function() {\n\tthis.tiddlerName = this.getAttribute(\"tiddler\");\n\tthis.email = this.getAttribute(\"email\");\n\tthis.comment = this.getAttribute(\"comment\");\n\tthis.debuginfo = this.getAttribute(\"debuginfo\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nFeedbackWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"name\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nFeedbackWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\treturn submitFeedback(this.tiddlerName, this.email, this.comment);\n};\n\nexports[\"action-sendfeedback\"] = FeedbackWidget;\n\n})();","type":"application/javascript","module-type":"widget","created":"20210102234204312","modified":"20210608025558775","tags":""},
{"title":"$:/sib/js/SubscriptionManagementWidget","text":"/*\\\ntitle: action-managesubscription\ntype: application/javascript\nmodule-type: widget\nAction widget to call an API.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nlet ENDPOINT = \"https://0tkdn6wpl9.execute-api.us-east-1.amazonaws.com/default/SubscribeToZettelkastenTiddler\";\n\nfunction gfv(id) {\n\t\treturn document.getElementById(id).value\n}\n\nfunction sendRequest(url, params, callback) {\n\t\tlet xhr = new XMLHttpRequest();\n\t\txhr.open('POST', url, true);\n\t\txhr.responseType = 'json';\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\n\t\txhr.onload = () => {\n\t\t\t\tlet status = xhr.status;\n\t\t\t\tif (status == 200) {\n\t\t\t\t\t\tconsole.log(xhr.response);\n\t\t\t\t\t\tif (xhr.response[\"status\"] == \"success\") {\n\t\t\t\t\t\t\t\tcallback(null, xhr.response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(status, xhr.response);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback(status, xhr.response);\n\t\t\t\t}\n\t\t};\n\n\t\t// Turn the data object into an array of URL-encoded key/value pairs.\n\t\t// https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest\n\t\tlet urlEncodedDataPairs = [], name;\n\t\tfor (name in params) {\n\t\t\t\turlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(params[name]));\n\t\t}\n\t\txhr.send(urlEncodedDataPairs.join('&'))\n};\n\nfunction subscribe(tiddler, user, token, operation) {\n\t\tvar params = new Object();\n\t\tparams.tiddler = tiddler;\n\t\tparams.user = user;\n\t\tparams.token = token;\n\t\tparams.operation = operation;\n\n\t\tsendRequest(ENDPOINT, params, (err, data) => {\n\t\t\t\tif (err != null) {\n\t\t\t\t\tif (data['reason'] == \"Invalid token\") {\n\t\t\t\t\t\talert(\"Your access code is invalid or missing. Please choose 'send a new one' and try the new access code you are emailed.\")\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert(\"Unknown error managing subscriptions. Please contact zettelkasten@sorenbjornstad.com for assistance.\");\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(\"Subscription operation returned success.\");\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t});\n}\n\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FeedbackWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFeedbackWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFeedbackWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nFeedbackWidget.prototype.execute = function() {\n\tthis.tiddlerName = this.getAttribute(\"tiddler\");\n\tthis.user = this.getAttribute(\"user\");\n\tthis.token = this.getAttribute(\"token\");\n\tthis.operation = this.getAttribute(\"operation\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nFeedbackWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"name\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nFeedbackWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\treturn subscribe(this.tiddlerName, this.user, this.token, this.operation);\n};\n\nexports[\"action-managesubscription\"] = FeedbackWidget;\n\n})();","type":"application/javascript","module-type":"widget","created":"20210612035906052","modified":"20210612171757426","tags":""},
{"title":"$:/sib/Macros/cb","created":"20210807150635941","description":"Create a reference to an entry in Chrono Book, linking to the ChronoBook page and showing the UOF (Unified Occurrence Format) afterwards.","example":"\u003C\u003Ccb \"10.15\">>","modified":"20210807150453524","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define cb(uof) [[CB|ChronoBook]] $uof$"},
{"title":"$:/sib/Macros/check-item","created":"20210626162736737","description":"Create a single item on a persistent checklist. State for the checklist in a given tiddler is stored in a data tiddler called $:/checkify/TiddlerName.","example":"\u003Cdiv class=\"checklist\">\u003C\u003Ccheck-item One>>\u003C\u003Ccheck-item Two>>\u003C\u003Ccheck-item Three id:3>>\u003C/div>","modified":"20210626164153871","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\n\\define check-item(text, id:\"\")\n\u003C$set name=\"checkbox-index\" value={{{ [\u003C__id__>!is[blank]] ~[\u003C__text__>] }}}>\n\u003C$set name=\"tiddler-key\" value={{{ [all[current]!is[draft]] ~[all[current]get[draft.of]] }}}>\n\t\u003C$checkbox tiddler={{{ [[$:/checkify/]addsuffix\u003Ctiddler-key>] }}} index=\u003C\u003Ccheckbox-index>> checked=\"yes\" unchecked=\"no\" default=\"no\">\n\t\t\u003C\u003C__text__>>\n\t\u003C/$checkbox>\n\u003C/$set>\n\u003C/$set>\n\\end"},
{"title":"$:/sib/Macros/clarify","created":"20210522021311753","description":"Insert an empty div that clears any floats. Useful after large images, or to separate blockquotes using the `>` syntax.","example":"\u003C\u003Cfloat-image \"freezer-example.jpg\">>Text wrapping beside the float \u003C\u003Cclarify>>Text forced after the float by clarification.","modified":"20210622002720372","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define clarify() \u003Cdiv class=\"clarify\"/>"},
{"title":"$:/sib/Macros/colorsplotch","created":"20210522022802823","description":"Display a small box of color, the color being any CSS color. This macro usually only works properly at the beginning of a line.","example":"\u003C\u003Ccolorsplotch \"#ffffff\">> White","modified":"20210523135019901","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define colorsplotch(col) \u003Cdiv class=\"color-splotch\" style=\"background: $col$;\">"},
{"title":"$:/sib/Macros/ff","created":"20210622002240940","description":"Transclude a filter expression that returns `yes` if the specified [[feature flag|$:/sib/Tools/FeatureFlags]] is enabled for the current edition, and nothing otherwise.","example":"\u003C$list filter=\u003C\u003Cff ViewerPublicLine>> variable=_ emptyMessage=\"The viewer public line is off in this edition.\">The viewer public line is on in this edition. Transclude it here.\u003C/$list>","modified":"20210825145522659","modifier":"soren","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define ff(tid) [[$:/config/zettelkasten/FeatureFlags/$tid$]get{$:/config/sib/CurrentEditionPublicity}] -[[no]]"},
{"title":"$:/sib/Macros/float-image","created":"20210510222933926","description":"Show an image floated to the side of the text of a tiddler. This macro is often used with the `clarify` macro, which forces further content to come after the float.","example":"\u003C\u003Cfloat-image \"freezer-example.jpg\" width:200 side:left>> Text next to the float. \u003C\u003Cclarify>>","modified":"20210523135143792","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define float-image(tiddler, width:\"400\", side:\"right\")\n\t[img width=$width$ class=\"$side$-float\" [$tiddler$]]\n\\end"},
{"title":"$:/sib/Macros/fnote","created":"20210719234454927","creator":"soren","description":"Create a footnote at the current location. Based on Refnotes (https://kookma.github.io/TW-Refnotes/), but doesn't use the plugin.","example":"This is my body text.\u003C\u003Cfnote \"This is my footnote.\">>","modified":"20230510144012471","modifier":"soren","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define fnote(note)\n\u003Cdiv class=\"refnotes-tooltip refnotes-footnote\">\u003Cdiv class=\"refnotes-tooltiptext\">$note$\u003C/div>\u003C/div>\n\\end"},
{"title":"$:/sib/Macros/iex","created":"20221230152349542","creator":"soren","description":"(i)f (ex)ists: Display some content only if a tiddler exists.","example":"\u003C$macrocall $name=iex tiddler=MyTiddler content=\"\"\"\u003C\u003Cstretch MyTiddler>>\"\"\"/>","modified":"20221230152630225","modifier":"soren","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define iex(tiddler, content)\n\u003C$list filter=\"[\u003C__tiddler__>is[tiddler]]\" variable=_>\n\t$content$\n\u003C/$list>\n\\end"},
{"title":"$:/sib/Macros/jsub","created":"20230405171215676","creator":"soren","description":"Link a subtiddler of a journal tiddler in an expando, with the caption or title as the small text.","example":"\u003C\u003Cjsub RemNoteFiasco>>","modified":"20230405171926556","modifier":"soren","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define jsub(subpart)\n\t\u003C$macrocall\n\t\t$name=\"stretch-template\"\n\t\ttiddler={{{ [all[current]is[draft]then{!!draft.of}else\u003CcurrentTiddler>addsuffix[/]addsuffix\u003C__subpart__>] }}}\n\t\tsmallTemplate=\"$:/sib/Templates/Topical/JournalSubtiddlerStretch\"\n\t\tlargeTemplate=\"$:/sib/Templates/General/IdentityTemplate\"\n\t/>\n\\end"},
{"title":"$:/sib/Macros/privateperson","created":"20210522022034880","creator":"soren","description":"Show the provided string of initials, linking to the `PrivatePerson` tiddler. Ordinarily not used in the private Zettelkasten; names of people whose tiddlers are not public may be automatically replaced with calls to this macro by the build process for the public wiki.","example":"\u003C\u003Cprivateperson \"R.A.B.\">>","modified":"20210828135531817","modifier":"soren","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define privateperson(initials) //[[$initials$|PrivatePerson]]//"},
{"title":"$:/sib/Macros/rt","created":"20210522020717636","description":"Create a web link to an item in [[RandomThoughts]], with the link text \"RT #whatever\".","example":"\u003C\u003Crt 12345>>","modified":"20210523134724295","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define rt(refnum)\n[[RT|RandomThoughts]] [[$refnum$|https://randomthoughts.sorenbjornstad.com/#$refnum$]]\n\\end"},
{"title":"$:/sib/Macros/speaker","created":"20210522025359296","description":"Create a line of dialogue. To be used inside a div with the `dialogue` class.","example":"\u003Cdiv class=\"dialogue\">\u003C\u003Cspeaker \"Mother\" \"Did you look for cars before you ran across?\">>\u003C\u003Cspeaker Girl \"Nope. I just ran!\">>\u003C/div>","modified":"20210523135210957","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define speaker(name, txt) ''$name$:'' $txt$\u003Cbr>"},
{"title":"$:/sib/Macros/star-rating","created":"20210817143607812","description":"Show a rating out of 5 stars, with filled stars up until the argument and empty stars to fill out the total of 5.","example":"\u003C\u003Cstar-rating 4>>","modified":"20210817143846288","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define open-star() \u003Ci class=\"far fa-star\"/>\n\\define filled-star() \u003Ci class=\"fa fa-star\"/>\n\n\\define star-rating(stars) \u003C$list filter=\"[range\u003C__stars__>]\" variable=_>\u003C\u003Cfilled-star>>\u003C/$list>\u003C$set name=\"remainder\" value={{{ [[5]subtract\u003C__stars__>] }}}>\u003C$list filter=\"[range\u003Cremainder>]\" variable=_>\u003C\u003Copen-star>>\u003C/$list>\u003C/$set>\n"},
{"title":"$:/sib/Macros/subreddit","created":"20210522021038565","description":"Create a web link to a named subreddit, with the link text \"/r/yoursubreddit\".","example":"\u003C\u003Csubreddit TiddlyWiki5>>","modified":"20210523135249615","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define subreddit(name) [[/r/$name$|https://www.reddit.com/r/$name$/]]"},
{"title":"$:/sib/Macros/summarize","created":"20230329151407581","creator":"soren","description":"Render a link to the specified /tiddler/, followed by its description (or another specified summary /field/)..","example":"\u003C\u003Csummarize PeopleDontKnowWhatTheyWant>>","modified":"20230525185714728","modifier":"soren","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define summarize(tiddler, field:\"description\")\n\t\u003C$link to=\u003C\u003C__tiddler__>>/>:\n\t\u003C$wikify name=text text={{{ [\u003C__tiddler__>get\u003C__field__>] }}}>\n\t\t\u003C\u003Ctext>>\n\t\u003C/$wikify>\n\\end"},
{"title":"$:/sib/MediaRating/average","caption":"average","color":"yellow","created":"20210606220650099","modified":"20210606221147494","section":"main","stackorder":"30","tags":"","type":"text/vnd.tiddlywiki","text":"The work is entertaining or useful in some way and is worth working through quickly if the subject matter / summary interests you (or maybe slowly if it's primarily for entertainment purposes and this is more entertaining). It is not difficult to understand, unless perhaps you are unfamiliar with the subject, and there is little reason to come back to it again."},
{"title":"$:/sib/MediaRating/classic","caption":"classic","color":"gray","created":"20210606230345519","modified":"20210606230507495","section":"auxiliary","stackorder":"3","tags":"","type":"text/vnd.tiddlywiki","text":"I cannot, on my own subjective judgment at this time, countenance giving this work a rating of “good” or above, but because the work has stuck around for so long and is so well-known, I assume there must be something to it, so I compromise by assigning this status. I may come back to it later and see if I like it better."},
{"title":"$:/sib/MediaRating/Display","created":"20210606221940244","creator":"soren","description":"Show the [[rating|MediaRating]] of the current source tiddler, if any. The status is editable in the private edition.","modified":"20210920193209324","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All non-system tiddlers tagged `Source`. (Unlike the source details box, this doesn't go on sinks because I don't claim to be capable of rating my own work!)","type":"text/vnd.tiddlywiki","text":"\\define color-style() color: $(itemColor)$;\n\n\u003C$list filter=\u003C\u003Cff MediaRating>> variable=_>\n\u003C$list filter=\"[all[current]!is[system]]\">\n\u003C$list filter=\"[all[current]tag[Source]]\" variable=_>\n\n\u003Cdiv style=\"float: right; vertical-align: center;\">\n\u003C$list filter=\"[[$:/config/sib/IsPublicEdition]text[true]]\" variable=_>\n\t\u003C$link to=\"MediaRating\">\u003Cspan style={{{ [prefix[$:/sib/MediaRating/]caption{!!rating}get[color]addprefix[color: ]addsuffix[;]] }}}>rating\u003C/span>\u003C/$link>:\n\t\u003C$select field=\"rating\" default=\"\">\n\t\t\u003C$list filter=\"[prefix[$:/sib/MediaRating]has[caption]!nsort[stackorder]]\">\n\t\t\t\u003C$set name=\"itemColor\" value={{!!color}}>\n\t\t\t\t\u003Coption style=\u003C\u003Ccolor-style>> value={{!!caption}}>{{!!caption}}\u003C/option>\n\t\t\t\u003C/$set>\n\t\t\u003C/$list>\n\t\u003C/$select>\n\u003C/$list>\n\u003C$list filter=\"[[$:/config/sib/IsPublicEdition]!text[true]]\" variable=_>\n\u003C$list filter=\"[all[current]has[rating]]\">\n\t[[rating|MediaRating]]: \u003Cspan style={{{ [prefix[$:/sib/MediaRating/]caption{!!rating}get[color]addprefix[color: ]addsuffix[;]] }}}>{{!!rating}}\u003C/span>\n\u003C/$list>\n\u003C/$list>\n\u003C/div>\n\n\u003C/$list>\n\u003C/$list>\n\u003C/$list>"},
{"title":"$:/sib/MediaRating/distinguished","caption":"distinguished","color":"lightgreen","created":"20210606223811463","modified":"20210606224757982","section":"main","stackorder":"35","tags":"","type":"text/vnd.tiddlywiki","text":"These works are “average plus”: they may not quite rise to the level of providing significant insights on subjects of enduring interest needed to obtain a //good// rating, but they are of noticeably higher quality than their peers and are worth calling out as such. They may be somewhat more work to read or watch, have a particularly fine prose style or visual effect, have particularly enjoyable or beautiful subject matter, have a particularly high concentration of useful information, or some combination of these. They most often fall out of the “good” bracket by dint of having insufficient lasting importance (for instance, they talk about current issues in a way that will not be relevant in thirty years), or by covering an insufficient amount of insight-bearing territory. To a greater degree than other ratings, the distinction between //average// and //distinguished// is subjective."},
{"title":"$:/sib/MediaRating/good","caption":"good","color":"green","created":"20210606220541565","modified":"20210606225711134","section":"main","stackorder":"40","tags":"","type":"text/vnd.tiddlywiki","text":"These works “convey to the reader significant insights about subjects of enduring interest to human beings.” They are somewhat challenging to process, and might be worth revisiting if you don't feel you picked everything up the first time, but you may be disappointed on returning to them. This is an Adler and van Doren term, and one must be careful about applying it: //good// is such a nondescript word that it is easy to accidentally apply it to works that should rather be termed //distinguished// in this model. Since it may be difficult to judge “enduring interest” for current topics, a work should in most cases not be labeled //good// if it was published in the last ten years; indeed, this may be overly liberal. (It can plainly be //distinguished// the day after publication, though.)"},
{"title":"$:/sib/MediaRating/great","caption":"great","color":"dodgerblue","created":"20210606201123409","modified":"20210606224548456","section":"main","stackorder":"50","tags":"","type":"text/vnd.tiddlywiki","text":"These works do everything that good ones do, and additionally they “grow with you”: they will always be worth revisiting, and every time you do so you will find new insights. When you put a great work back on the physical or virtual shelf, no matter how carefully you studied it, you have a sneaking suspicion that it has more to give – you haven't fully understood it because it's above your level and probably always will be, not because you didn't read or watch it closely enough. There are probably fewer than a thousand of these in the whole world (Adler and van Doren claim there are fewer than a hundred, but the definition seems too fuzzy and subjective for me to be that confident)."},
{"title":"$:/sib/MediaRating/irrational","caption":"irrationally enjoyed","color":"white","created":"20210606220802580","modified":"20210606225447217","section":"auxiliary","stackorder":"5","tags":"","type":"text/vnd.tiddlywiki","text":"The work isn't //great// or //good// or maybe even //distinguished// by a traditional definition, but nevertheless I (and sometimes others) find it unexpectedly pleasurable and come back to it over and over again, with a tenacity and enjoyment that seems difficult to justify on the work's merits."},
{"title":"$:/sib/MediaRating/poor","caption":"poor","color":"orangered","created":"20210606220736962","modified":"20210606221128242","section":"main","stackorder":"10","tags":"","type":"text/vnd.tiddlywiki","text":"The work has insufficient merits to be worth your time unless you have somehow run out of other options."},
{"title":"$:/sib/MediaRating/skimmable","caption":"skimmable","color":"orange","created":"20210606220706034","modified":"20210606220546683","section":"main","stackorder":"20","tags":"","type":"text/vnd.tiddlywiki","text":"The work contains some interesting ideas, but as a whole is not particularly worthwhile. You will want to skim over most of it or watch it on high speed, and you might prefer to read someone else's summary or select a different work that touches on the same ideas."},
{"title":"$:/sib/Overrides/CodeMirrorPopupFix","text":"/* Fix CodeMirror hints appearing behind the story river.\n https://groups.google.com/g/tiddlywiki/c/wznyIhGJd9U */\n\n.CodeMirror-hints {\n\tz-index: 1000;\n}","created":"20210205231937423","modified":"20210522013616001","tags":"$:/tags/Stylesheet","type":"text/css"},
{"title":"$:/sib/RawMarkup/SimpleAnalytics","text":"\u003C!--\nThis snippet sends pageviews to Simple Analytics, a privacy-friendly analytics service.\nIt records only aggregate statistics and cannot identify you.\n-->\n\u003Cscript>window.sa_event=window.sa_event||function(){a=[].slice.call(arguments);sa_event.q?sa_event.q.push(a):sa_event.q=[a]};\u003C/script>\n\u003Cscript async defer src=\"https://scripts.simpleanalyticscdn.com/latest.js\">\u003C/script>\n\u003Cnoscript>\u003Cimg src=\"https://queue.simpleanalyticscdn.com/noscript.gif\" alt=\"\"\n/>\u003C/noscript>","type":"text/html","created":"20200913152403709","modified":"20210522015229611","tags":"$:/tags/RawMarkup"},
{"title":"$:/sib/RawMarkup/SplashScreen","created":"20200605141146097","creator":"soren","modified":"20210910163321618","modifier":"soren","tags":"$:/tags/RawMarkupWikified/TopBody","type":"text/vnd.tiddlywiki","text":"\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\rules only filteredtranscludeinline transcludeinline macrocallinline\n\n\u003C!-- Spinner mechanism shamelessly stolen from https://tiddlywiki.org. -->\n\n\u003Cdiv class=\"tc-remove-when-wiki-loaded\">\n\u003Cstyle scoped>\n\n.tc-splash-text {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 16px;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n\tmargin: 20px auto 0;\n\twidth: 200px;\n\ttext-align: center;\n\tcolor: \u003C\u003Ccolour foreground>>;\n\tfill: \u003C\u003Ccolour foreground>>;\n}\n\n.tc-splash-text img {\n\twidth: 150px;\n\t\u003C\u003Cbox-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\nhtml body.tc-body {\n\tbackground: \u003C\u003Ccolour page-background>>;\n}\n\n/*\nSpinner from https://github.com/tobiasahlin/SpinKit/ by Tobias Ahlin\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Tobias Ahlin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject 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, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n.tc-splash-spinner {\n\tmargin: 20px auto 0;\n\twidth: 70px;\n\ttext-align: center;\n}\n\n.tc-splash-spinner > div {\n\twidth: 18px;\n\theight: 18px;\n\tborder-radius: 100%;\n\tdisplay: inline-block;\n\t-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n\tanimation: sk-bouncedelay 1.4s infinite ease-in-out both;\n\tbackground-color: #f88;\n}\n\n.tc-splash-spinner .tc-splash-bounce-1 {\n\t-webkit-animation-delay: -0.32s;\n\tanimation-delay: -0.32s;\n\tbackground-color: #8f8;\n}\n\n.tc-splash-spinner .tc-splash-bounce-2 {\n\t-webkit-animation-delay: -0.16s;\n\tanimation-delay: -0.16s;\n\tbackground-color: #88f;\n}\n\n@-webkit-keyframes sk-bouncedelay {\n\t0%, 80%, 100% { -webkit-transform: scale(0) }\n\t40% { -webkit-transform: scale(1.0) }\n}\n\n@keyframes sk-bouncedelay {\n\t0%, 80%, 100% { \n\t-webkit-transform: scale(0);\n\ttransform: scale(0);\n\t} 40% { \n\t-webkit-transform: scale(1.0);\n\ttransform: scale(1.0);\n\t}\n}\n\u003C/style>\n\n\u003Cdiv class=\"tc-splash-spinner\">\n \u003Cdiv class=\"tc-splash-bounce-1\">\u003C/div>\n \u003Cdiv class=\"tc-splash-bounce-2\">\u003C/div>\n \u003Cdiv class=\"tc-splash-bounce-3\">\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"tc-splash-text\">\n\t{{$:/config/zettelkasten/SplashScreenMessage}}\n\u003C/div>\n\u003C/div>"},
{"title":"$:/sib/refexplorer/Footnotes","caption":"Footnotes","condition":"[search[fnote]]","created":"20210719234943395","creator":"soren","modified":"20230822144835533","modifier":"soren","tags":"$:/tags/ReferenceExplorerTab","type":"text/vnd.tiddlywiki","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n\u003C$vars \n fulltext=\u003C\u003C__text__>>\n start=\u003C\u003C__begin__>>\n stop=\u003C\u003C__end__>>\n output-macro=\u003C\u003C__output__>>\n>\n\u003C$list variable=\"p1\" filter=\"[\u003Cfulltext>splitbefore\u003Cstart>]\">\n\u003C$list variable=\"p2\" filter=\"[\u003Cfulltext>removeprefix\u003Cp1>]\">\n\u003C$list variable=\"p3\" filter=\"[\u003Cp2>splitbefore\u003Cstop>removesuffix\u003Cstop>]\">\n\u003C$macrocall $name=\u003C\u003Coutput-macro>> p=\u003C\u003Cp3>> />\n\u003C$reveal type=\"match\" text=\"all\" default=\u003C\u003C__mode__>> >\n\u003C$macrocall $name=\"find\"\n text={{{[\u003Cp2>removeprefix\u003Cp3>removeprefix\u003Cstop>]}}}\n begin=\u003C\u003Cstart>>\n end=\u003C\u003Cstop>>\n output=\u003C\u003Coutput-macro>>\n/>\n\u003C/$reveal>\n\u003C/$list>\n\u003C/$list>\n\u003C/$list>\n\u003C/$vars>\n\\end\n\n\\define simple(p)\n\u003C$text text=\u003C\u003C__p__>> />\n\\end\n\n\\define simple-list(p)\n\u003Cli>\u003C$text text=\u003C\u003C__p__>>/>\u003C/li>\n\\end\n\n\\define showfnotes(filter:\"[\u003CcurrentTiddler>]\", title:\"Empty\" class:\"fnote-list\", emptyMessage:\"\")\n\u003C$vars leftDelimiter=\"\u003C\u003Cfnote \">\n\u003C$list filter=\"[subfilter\u003C__filter__>search:text:regexp\u003CleftDelimiter>limit[1]]\" variable=null emptyMessage=\u003C\u003C__emptyMessage__>> >\u003C!-- check to see if there is any footnote -->\n\u003C$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=\u003C\u003C__title__>> >\n\u003Ch2>$title$\u003C/h2>\n\u003C/$reveal>\n\u003Col class=\"$class$\">\n\u003C$list filter=\u003C\u003C__filter__>> >\n\u003C$macrocall $name=\"find\" \n text={{!!text}}\n begin=\"\u003C\u003Cfnote \"\n end=\">>\"\n output=\"output-fnote\"\n/>\n\u003C/$list>\n\u003C/ol>\n\u003C/$list>\n\u003C/$vars>\n\\end\n\n\\define output-fnote(p)\n\u003C$vars output=$p$>\n\u003Cli>\u003C\u003Coutput>>\u003C/li>\n\u003C/$vars>\n\\end\n\n\u003C$tiddler tiddler=\u003C\u003CstoryTiddler>>>\n\u003C\u003Cshowfnotes emptyMessage:\"There are no footnotes in this tiddler. (Use the `fnote` macro to create a footnote.)\">>\n\u003C/$tiddler>\n\n\u003C!--\nBased on https://kookma.github.io/TW-Refnotes/.\nCopyright (c) 2019--2021 Mohammad Rahmani.\nCopyright (c) 2021 Soren Bjornstad.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n-->"},
{"title":"$:/sib/refexplorer/LinkTypeTemplate","created":"20200322005021864","creator":"soren","modified":"20210825190353974","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"\u003Ctd>\n\t\u003C!-- The list filter operator does not seem to offer any way to use a dynamic tiddler parameter other than the current tiddler, so we set the current tiddler to the story tiddler (it'll be overridden again by the list widget itself). We use storyTiddler where possible for clarity. -->\n\t\n\t\u003C$set name=\"currentTiddler\" value=\u003C\u003CstoryTiddler>> >\n\t\t\u003C$list filter=\"\n\t\t\t[\u003CcurrentRecord>]\n\t\t\t-[\u003CstoryTiddler>tagging[]] +[else[Tagged]]\n\t\t\t-[\u003CstoryTiddler>links[]] +[else[Link]]\n\t\t\t-[\u003CstoryTiddler>backlinks[]] +[else[Backlink]]\n\t\t\t-[\u003CcurrentRecord>] +[else[Subtiddler]]\n\t\t\">\n\t\t\t\u003C\u003CcurrentTiddler>>\n\t\t\u003C/$list>\n\t\u003C/$set>\n\u003C/td>"},
{"title":"$:/sib/refexplorer/ReferenceExplorer","created":"20200321225156394","creator":"soren","description":"Display the Reference Explorer, a table that shows related topics, for the current tiddler.","modified":"20230405175127650","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All non-system tiddlers.","type":"text/vnd.tiddlywiki","text":"\\import [[$:/sib/refexplorer/GlobalJournalSubtiddlerFilter]]\n\n\\define ref-explorer()\n\t\u003C$set name=\"tabList\" value={{{ [tag[$:/tags/ReferenceExplorerTab]] :reduce[\u003CstoryTiddler>subfilter{!!condition}then\u003CcurrentTiddler>addprefix[ ]addprefix\u003Caccumulator>] }}}>\n\t\u003C$set name=\"myDefaultTab\" value={{{ [\u003CstoryTiddler>has[refexplorer-starttab]get[refexplorer-starttab]addprefix[$:/sib/refexplorer/]] ~[enlist\u003CtabList>first[]] }}}>\n\t\u003C$list filter=\"[\u003CtabList>!is[blank]]\" variable=_>\n\t\t\u003C$macrocall $name=\"tabs\" tabsList=\u003C\u003CtabList>> default=\u003C\u003CmyDefaultTab>> class=\"sib-reference-explorer\"/>\n\t\u003C/$list>\n\t\u003C/$set>\n\t\u003C/$set>\n\\end\n\n\u003C!-- If this is a system tiddler, don't do anything. -->\n\u003C$list filter=\"[all[current]!is[system]]\" variable=_>\n\n\u003C!-- If the refexplorer-hide field is not set, just render the explorer. -->\n\u003C$reveal stateTitle=\u003C\u003CcurrentTiddler>>\n\t\t\t stateField=\"refexplorer-hide\"\n\t\t\t type=\"match\"\n\t\t\t text=\"\"\n\t\t\t default=\"\" >\n\t\u003C\u003Cref-explorer>>\n\u003C/$reveal>\n\n\u003C!-- Otherwise... -->\n\u003C$reveal stateTitle=\u003C\u003CcurrentTiddler>>\n\t\t\t stateField=\"refexplorer-hide\"\n\t\t\t type=\"nomatch\"\n\t\t\t text=\"\"\n\t\t\t default=\"\" >\n\t\t\t\t \n\t\u003C!-- If collapsed: -->\n\t\u003C$reveal stateTitle=\"$:/temp/sibrefexplorer-shows\"\n\t\t\t stateIndex=\u003C\u003CcurrentTiddler>>\n\t\t\t\t\t type=\"nomatch\"\n\t\t\t\t\t text=\"show\"\n\t\t\t\t\t default=\"hide\">\n\t\t\u003C\u003Cclarify>>\n\t\t\u003Chr>\n\t\t\u003Cdiv>\n\t\t\t\u003Cspan style=\"font-size: 50%;\">\n\t\t\t\t\u003C\u003Cfa-lbox fa-info>>\n\t\t\t\u003C/span>\n\t\t\tThis tiddler does not display its references automatically, likely because there are a large number of them which could slow the wiki down.\n\t\t\u003C/div>\n\t\t\u003C$button setTitle=\"$:/temp/sibrefexplorer-shows\"\n\t\t\t\t\t\t setIndex=\u003C\u003CcurrentTiddler>>\n\t\t\t\t\t\t setTo=\"show\">\n\t\t\tShow Reference Explorer\n\t\t\u003C/$button>\n\t\u003C/$reveal>\n\t\n\t\u003C!-- If expanded: -->\n\t\u003C$reveal stateTitle=\"$:/temp/sibrefexplorer-shows\"\n\t\t\t stateIndex=\u003C\u003CcurrentTiddler>>\n\t\t\t\t\t type=\"match\"\n\t\t\t\t\t text=\"show\"\n\t\t\t\t\t default=\"hide\">\n\t\t\u003C\u003Cclarify>>\n\t\t\u003Chr>\n\t\t\u003Cdiv>\n\t\t\t\u003Cspan style=\"font-size: 50%;\">\n\t\t\t\t\u003C\u003Cfa-lbox fa-info>>\n\t\t\t\u003C/span>\n\t\t\tExperiencing poor performance? Try hiding the reference explorer on this tiddler.\n\t\t\u003C/div>\n\t\t\u003C$button setTitle=\"$:/temp/sibrefexplorer-shows\"\n\t\t\t\t\t\t setIndex=\u003C\u003CcurrentTiddler>>\n\t\t\t\t\t\t setTo=\"hide\">\n\t\t\tHide Reference Explorer\n\t\t\u003C/$button>\n\t\t\u003C\u003Cref-explorer>>\n\t\u003C/$reveal>\n\u003C/$reveal>\n\n\u003C/$list>\n"},
{"title":"$:/sib/Reviewer/Tiddlers due for review","created":"20210119013649056","list-before":"$:/core/ui/PageTemplate/sidebar","modified":"20210522022533184","type":"text/vnd.tiddlywiki","text":"\\define hasReviewsFilter(frag:\"\") [!days:due[-1]] [days:due[0]] +[tag[SpacedRepetition]has[due]$frag$]\n\n''Please retag this $:/tags/PageTemplate to use''\n\n\u003C$list filter=\"[all[current]!is[blank]]\">\nTiddlers due for review:\n\n\u003Cul>\n\t\u003C$list filter=\u003C\u003ChasReviewsFilter \"sort[due]\">> emptyMessage=\"Congratulations! You're all caught up.\">\n\t\t\u003Cli>\u003C$link to=\u003C\u003CcurrentTiddler>>/> (due \u003C$view format=\"date\" template=\"YYYY-0MM-0DD\" field=\"due\"/>)\u003C/li>\n\t\u003C/$list>\n\u003C/ul>\n\u003C/$list>\n\n\u003C$list filter=\"[all[current]then[]else[dummy]!is[blank]]\">\n\u003Cdiv class=\"review-notification\">\n\u003C$list filter=\u003C\u003ChasReviewsFilter \"first[]\">>>\n\tYou have tiddlers due for review.\n\t\u003C$link to=\"$:/sib/Reviewer/Tiddlers due for review\">Click here\u003C/$link> to see them.\n\u003C/$list>\n\u003C/div>\n\n\u003Cstyle>\n.review-notification {\n\ttext-align: center;\n\tbackground-color: \u003C\u003Ccolor message-background>>;\n\twidth: 50%;\n\tmargin: auto;\n}\n\u003C/style>\n\u003C/$list>"},
{"title":"$:/sib/SideBar/Explore","caption":"Explore","created":"20200913180105683","description":"Curated public navigation menu for those less familiar with TiddlyWiki.","extras":"$:/core/ui/MoreSideBar/Tags $:/core/ui/MoreSideBar/Recent $:/sib/SideBar/Explore/Bibliographies $:/core/ui/MoreSideBar/All $:/core/ui/MoreSideBar/Explorer","modified":"20210731163510974","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"//To learn about navigation options, visit the [[PublicHomepage]].//\n\n\u003Cdiv class=\"tc-more-sidebar\">\n\u003C$macrocall $name=\"tabs\" tabsList=\"[enlist{$:/sib/SideBar/Explore!!extras}]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n\u003C/div>"},
{"title":"$:/sib/SideBar/Write","caption":"Write","created":"20201203015757977","description":"When you have some time to work on your Zettelkasten but don't have a particular task in mind, come here to see what needs doing.","list":"$:/sib/SideBar/Write/Stub $:/core/ui/MoreSideBar/Missing NeedsAttention NeedsExcision TODO OpenQuestion $:/sib/Tools/Tray","modified":"20210825122036070","modifier":"soren","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\u003Cdiv class=\"tc-more-sidebar\">\n\u003C$macrocall $name=\"tabs\" tabsList={{$:/sib/SideBar/Write!!list}} default=\"$:/sib/SideBar/Write/Stub\" state=\"$:/state/tab/writesidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n\u003C/div>"},
{"title":"$:/sib/SideBar/Write/Stub","caption":"Stubs","created":"20200516155336361","creator":"soren","list-after":"$:/core/ui/MoreSideBar/Missing","modified":"20211204001205484","modifier":"soren","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[tag[Stub]sort[]] -[[$:/TagSaver]]\" emptyMessage=\"No stubs right now! You're awesome!\">\n\t\u003C$link to=\u003C\u003CcurrentTiddler>>>\u003C\u003CcurrentTiddler>>\u003C/$link>\u003Cbr/>\n\u003C/$list>\n"},
{"title":"$:/sib/styles/body","created":"20210615030339909","creator":"soren","modified":"20230416141202623","modifier":"soren","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* Allow the story river to get a good bit wider than the text since this gives useful space to the navbars and balances out any empty space more nicely, but not so long that it looks ridiculous. */\ndiv.tc-tiddler-frame { max-width: 60em; margin-left: auto; margin-right: auto; }\n\ndiv.tc-tiddler-edit-frame { max-width: 90em; margin-left: auto; margin-right: auto; }\n\ndiv.tc-tiddler-body { max-width: 50em; margin: auto; }\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor { width: 69%; }\n\ndiv[data-tiddler-title*=\"$:/sib/Tools/ReadingInbox\"] div.tc-tiddler-body, div[data-tags*=\"Indite\"] div.tc-tiddler-body {\n\tmax-width: 100%;\n}\ndiv[data-tiddler-title*=\"$:/sib/Tools/ReadingInbox\"],\ndiv[data-tags*=\"Indite\"] {\n\tmax-width: 90em;\n}\n\ndiv[data-tiddler-title*=\"LifetimeReading\"] div.tc-tiddler-body {\n\tmax-width: 100%;\n}\ndiv[data-tiddler-title*=\"LifetimeReading\"] {\n\tmax-width: 90em;\n}\n\ndiv[data-tags*=\"Wide\"] div.tc-tiddler-body {\n\tmax-width: 100%;\n}\ndiv[data-tags*=\"Wide\"] {\n\tmax-width: 75em;\n}\n\ndiv.tc-tiddler-preview-preview {\n\twidth: 29%;\n}\n\nh2:not(.tc-title) { \n\ttext-align: center;\n}"},
{"title":"$:/sib/styles/footnote","created":"20210719234124096","creator":"soren","modified":"20230822142939467","modifier":"soren","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/*\nBased on https://kookma.github.io/TW-Refnotes/.\nCopyright (c) 2019--2021 Mohammad Rahmani.\nCopyright (c) 2021, 2023 Soren Bjornstad.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n/*\n\n/* Automatic counter for fnote macro. The counter resets at the begining of each tiddler. */\n.tc-tiddler-frame {\n counter-reset: fnote-count;\n}\n.refnotes-footnote {\n counter-increment: fnote-count;\n}\n.refnotes-footnote:after {\n content: counter(fnote-count);\n font-size:small;\n\tvertical-align: top;\n\tfont-size: 0.8em;\n /*vertical-align: super;\n line-height: 1.5;*/\n margin-left: 0em;\n color: yellow;\n}\n.refnotes-footnote.refnotes-update:after {\n color: deepskyblue;\n}\n\n\n/* tooltip class used for ref, fnote and other macros */\n.refnotes-tooltip {\n position: relative;\n display: inline-block;\n cursor: pointer; \n}\n\n.refnotes-tooltip .refnotes-tooltiptext{\n font-size: 0.90em; /* change if it is too small */\n}\n\n.refnotes-tooltip .refnotes-tooltiptext {\n visibility: hidden;\n background-color: #fff;\n color: #222222; \n text-align: left;\n border-radius: 2px;\n padding: 5px 10px;\n max-width: 30vw;\n max-height:20em;\n overflow-y: auto;\n cursor: auto;\n width: max-content;\n width: -moz-max-content;\n width: -webkit-max-content;\n width: -o-max-content;\n\n /* Position the tooltip */\n position: absolute;\n z-index: 9999;\n bottom: 100%;\n left: 50%;\n margin-left: -40px;\n box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19);\n}\n\n.refnotes-tooltip:hover .refnotes-tooltiptext {\n visibility: visible;\n /*opacity: 0.9;*/\n}\n\n/* for small screens */\n\n@media screen and (max-width: 960px) {\n.refnotes-tooltip .refnotes-tooltiptext {\n /* Position the tooltip */\n \tposition:fixed;\n top:0;\n left: 0;\n margin-left: 0px;\n bottom: unset;\n width:100%;\n max-width: 100vw;\n z-index: 9999;\n} \n\n.refnotes-tooltip:hover .refnotes-tooltiptext {\n opacity: 1;\n} \n \n}\n\n/* Footnote class*/\n\n.fnote-list{\n/* color:blue;*/\n font-size:90%;\n}\n\n.fnote-pretty{\n display: block;\n margin: 0.5em;\n margin-right: auto;\n width: 100% !important;\n border-collapse: collapse;\n padding: 15px 15px 15px 25px; /*left padding=25px*/\n border-width: 0px;\n border-style: solid;\n border-left-width: 1px;\n background-color: rgb(255,248,220);\n color: rgb(91,49,7);\n line-height: 1.2em; \n font-size:0.9em;\n}"},
{"title":"$:/sib/styles/hr","created":"20210624125244567","creator":"soren","modified":"20211025010048942","modifier":"soren","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* Based on: Flaired edges, by Tomas Theunissen\n https://css-tricks.com/examples/hrs/ */\n\n.tc-tiddler-body > hr, .tc-tiddler-preview-preview > hr {\n overflow: visible; /* For IE */\n height: 30px;\n border-style: solid;\n border-color: \u003C\u003Ccolor primary>>;\n border-width: 1px 0 0 0;\n border-radius: 20px;\n\t\tmargin-bottom: -15px;\n\t\tmax-width: 80%;\n\t\tmargin-top: 30px;\n}\n.tc-tiddler-body hr:before, .tc-tiddler-preview-preview hr:before { /* Not really supposed to work, but does */\n display: block;\n content: \"\";\n height: 30px;\n border-style: solid;\n border-color: \u003C\u003Ccolor primary>>;\n border-width: 0 0 1px 0;\n border-radius: 20px;\n margin-top: -31px;\n}"},
{"title":"$:/sib/styles/OpenTopBar","created":"20210627163819671","modified":"20210627200105492","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"div.sib-quick-tiddler-jump {\n\tbackground-color: \u003C\u003Ccolor menubar-background>>;\n\tposition: fixed;\n\tz-index: 850;\n\tdisplay: inline-block;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\ttext-align: center;\n\theight: {{$:/config/sib/TopBarHeight}};\n\toverflow: auto;\n\tborder-bottom: 1px solid \u003C\u003Ccolor muted-foreground>>;\n\tpadding-bottom: 3px;\n\tpadding-top: 3px;\n\tfont-size: 12px;\n}\n\ndiv.sib-quick-tiddler-jump a {\n\tcolor: \u003C\u003Ccolor menubar-foreground>>;\n}\n\ndiv.sib-quick-tiddler-jump a.tc-tiddlylink-shadow {\n\tfont-weight: normal;\n}\n\ndiv.sib-quick-tiddler-jump ul {\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0;\n}\n\n/* Droppable placeholders take up no space until we drag something there. */\ndiv.sib-quick-tiddler-jump ul li.tc-droppable div.tc-droppable-placeholder {\n\theight: 0;\n}\n\n/* TW inserts this as a placeholder after the last item. We have to resize it to match the rest. */\ndiv.sib-quick-tiddler-jump ul > div.tc-droppable div.tc-droppable-placeholder svg {\n\theight: 0;\n\twidth: 1rem;\n}\n\ndiv.sib-quick-tiddler-jump .tc-dropzone.tc-dragover:before {\n\tdisplay: inline-block;\n}\n\ndiv.sib-quick-tiddler-jump ul > li.tc-droppable div,\n\t\tdiv.sib-quick-tiddler-jump ul > div.tc-droppable div {\n\tdisplay: inline-block;\n}\n\ndiv.sib-quick-tiddler-jump .tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: inline-block;\n\tbackground-color: green;\n\tborder: 0px;\n\twidth: 1rem;\n\theight: 1rem;\n\tmargin-bottom: 0;\n\tmargin-top: 0;\n\tpadding-bottom: 0;\n\tpadding-top: 0;\n}\n\ndiv.sib-quick-tiddler-jump ul li, div.sib-quick-tiddler-jump ul > div.tc-droppable {\n\tdisplay: inline-block;\n}\n\n.sib-quick-tiddler-jump ul li div:nth-child(2):after {\n\tpadding-left: 5px;\n\tcontent: \"·\";\n\tpadding-right: 5px;\n}\n\n/* not last-child because there's a dropzone after it */\n.sib-quick-tiddler-jump ul li:nth-last-child(2) div:after {\n\tcontent: \"\";\n}"},
{"title":"$:/sib/Templates/Automatic/FrozenTiddlerEditWarning","created":"20230407030211378","creator":"soren","modified":"20230407031011568","modifier":"soren","tags":"$:/tags/EditTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[Frozen]]\">\n\u003Cspan style=\"color: gray; margin-left: 0.25em;\">\u003Ci class=\"fas fa-icicles\"/> This tiddler is frozen. Edits should be limited to links, metadata, and copyedits.\u003C/span>\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/JournalNavigation","created":"20230405164752085","creator":"soren","description":"Show the previous and next journal entries.","modified":"20230822195423771","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers tagged \u003C\u003Ctag Journal>>.","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[Journal]]\">\n\n\u003C$vars\n previousEntry={{{ [!is[system]tag[Journal]sort[]before\u003CcurrentTiddler>] }}}\n nextEntry={{{ [!is[system]tag[Journal]sort[]after\u003CcurrentTiddler>] }}}>\n\t\n\u003Cdiv style=\"display: flex; justify-content: space-between;\">\n\t\u003Cdiv style=\"display: inline-block;\">\n\t\t« Previous: \u003C$link to=\u003C\u003CpreviousEntry>>/>\n\t\u003C/div>\n\t\u003Cdiv style=\"display: inline-block;\">\n\t\tNext: \u003C$link to=\u003C\u003CnextEntry>>/> »\n\t\u003C/div>\n\u003C/div>\n\n\u003C/$vars>\n\n{{||$:/sib/Templates/Topical/JournalPersonPlaceExplorer}}\n\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/MacroDescription","created":"20210522021355703","description":"Provide a summary of the purpose, usage, and definition of the global macro defined in the current tiddler.","modified":"20210523141047728","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers within the $:/sib/Macros namespace that are tagged \u003C\u003Ctag $:/tags/Macro>>.","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]prefix[$:/sib/Macros/]tag[$:/tags/Macro]]\">\n\n!! \u003Ccode>\u003C$text text={{{ [all[current]removeprefix[$:/sib/Macros/]] }}}/>\u003C/code> macro\n\n; Purpose\n: {{!!description}}\n\n; Example\n: \u003Cpre>\u003Ccode>\u003C$view field=\"example\"/>\u003C/code>\u003C/pre>\n: {{!!example}}\n\n; Definition\n: \u003C$codeblock code={{{ [all[current]get[text]] }}}/>\n\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/MissingTiddlerCreationNotification","created":"20201204132021892","creator":"soren","modified":"20211027125509141","modifier":"soren","tags":"$:/tags/EditTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]get[draft.of]prefix[New ]]\" variable=\"draftof\">\n \u003C$list filter=\"[all[current]get[draft.title]backlinks[]first[]]\" variable=_>\n Creating missing tiddler \u003C$link to={{!!draft.title}}/>. The following tiddlers will link here when you save:\n \u003C\u003Clist-links \"[all[current]get[draft.title]backlinks[]]\">>\n\t\u003C/$list>\n\u003C/$list>\n"},
{"title":"$:/sib/Templates/Automatic/MissingTiddlerQuickCreate","created":"20230131043004421","creator":"soren","description":"Show options to quickly create an empty tiddler with a given tag from a missing title.","modified":"20230405164922599","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All missing tiddlers.","type":"text/vnd.tiddlywiki","text":"\\define new-item(tag) \u003C$action-createtiddler $basetitle=\u003C\u003CcurrentTiddler>> tags=\"\"\"$tag$\"\"\"/>\n\n\\define stub-type(type) \u003C$button class=\"tc-btn-invisible\" actions=\u003C\u003Cnew-item \"\"\"$type$\"\"\">>>\u003C\u003Ctag-pill \"\"\"$type$\"\"\">>\u003C/$button>\n\n\u003C$list filter=\"[all[current]is[missing]]\">\n\tCreate stub:\n\t\u003C\u003Cstub-type PAO>>\n\t\u003C\u003Cstub-type Place>>\n\u003C/$list>\n"},
{"title":"$:/sib/Templates/Automatic/PrivateChunkParentNotice","created":"20200516175612822","description":"Show a notice that this is a private chunk of another tiddler, and provide another link to the parent tiddler.","modified":"20210523140536264","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers tagged \u003C\u003Ctag PrivateChunk>>.","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[PrivateChunk]]\">\n\t\t//This is a PrivateChunk of the public tiddler \u003C$link to={{{ [all[current]split[/]first[]] }}}/>.//\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/Publicity/LevelDisplay","created":"20200508004653657","modified":"20210606175143055","tags":"$:/tags/EditTemplate","type":"text/vnd.tiddlywiki","text":"\\define editingSystemTiddler(not)[all[current]has[draft.of]get[draft.title]$not$is[system]]\n\\define editingPublicZk(not) [[$:/config/sib/IsPublicEdition]] +[get[text]$not$match[true]]\n\n\n\u003C$list filter=\u003C\u003CeditingPublicZk \"!\">> variable=_>\n\t\u003Cdiv style=\"color: orangered; font-weight: bold\">\n\t\tWARNING: You are editing the public Zettelkasten. Your changes will not be saved unless you export them manually.\n\t\u003C/div>\n\u003C/$list>\n\n\u003C$list filter=\u003C\u003CeditingPublicZk>> variable=_>\n\t\u003C$list filter=\u003C\u003CeditingSystemTiddler>> >\n\t\u003Cdiv style=\"color: #d08770; float:left;\">\n\t\t\u003Cdiv style=\"width: 16px; float:left;\">{{$:/core/images/theme-button}}\u003C/div>\n\t\t\u003Cdiv style=\"padding-top: 5px; padding-left: 20px;\">\n\t\t\tYou are editing a //system tiddler//. System tiddlers are intrinsically public.\n\t\t\u003C/div>\n\t\u003C/div>\n\t\u003C/$list>\n\n\t\u003C$list filter=\u003C\u003CeditingSystemTiddler \"!\">> variable=_>\n\t\t\u003C$list filter=\"[all[current]!tag[Public]]\">\n\t\t\u003Cdiv style=\"color: #81a1c1; float:left;\">\n\t\t\t\u003Cdiv style=\"width: 16px; float:left;\">{{$:/core/images/locked-padlock}}\u003C/div>\n\t\t\t\u003Cdiv style=\"padding-top: 5px; padding-left: 20px;\">\n\t\t\t\tYou are editing a //private tiddler//.\n\t\t\t\u003C/div>\n\t\t\u003C/div>\n\t\t\u003C/$list>\n\n\t\t\u003C$list filter=\"[all[current]tag[Public]!is[system]]\">\n\t\t\u003Cdiv style=\"color: #d08770; float:left;\">\n\t\t\t\u003Cdiv style=\"width: 16px; float:left;\">{{$:/core/images/globe}}\u003C/div>\n\t\t\t\u003Cdiv style=\"padding-top: 4px; padding-left: 20px;\">You are editing a //public tiddler//.\n\t\t\t\u003C/div>\n\t\t\u003C/div>\n\t\t\u003C/$list>\n\t\u003C/$list>\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/Publicity/ViewerPublicLine","created":"20200508002211355","creator":"soren","description":"Show a checkbox to make the tiddler private or public while viewing it.","modified":"20210825185507543","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All non-system tiddlers, in the private edition. Never, in the public edition.","type":"text/vnd.tiddlywiki","text":"\u003C!-- Clear any outstanding floats or things will look really weird. This also clears for the Reference Explorer since the public checkbox is floated, so it comes outside the list widget. -->\n\u003Cdiv class=\"sib-viewer-clarify\"/>\n\n\u003C!-- If this is a system tiddler, don't show the public line. -->\n\u003C$list filter=\"[all[current]!is[system]]\" variable=_>\n\n\u003C$list filter=\u003C\u003Cff ViewerPublicLine>> variable=_>\n\t\u003Cdiv class=\"sib-viewer-public-line\">\n\t\t\u003C$checkbox tag=Public> Publish this tiddler\u003C/$checkbox>\n\t\u003C/div>\n\u003C/$list>\n\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/ReaderActions","created":"20210608021806427","description":"Provide links that allow users to get in touch with the author, share content, or otherwise interact with it.","modified":"20210622002447440","tags":"$:/tags/ViewTemplate","transcludedin":"All non-system tiddlers, if this is the public edition.","type":"text/vnd.tiddlywiki","text":"\\define startConvoAction()\n\t\u003C$action-createtiddler $basetitle=\"$:/temp/Conversation\" $savetitle=\"$:/temp/ConversationCollector\" target=\u003C\u003CcurrentTiddler>> email={{$:/config/sobjornstad/UserEmail}} comment=\"\"/>\n\t\u003C$action-navigate $to=\"StartAConversation\"/>\n\\end\n\n\\define subscribeAction()\n\u003C$action-setfield $tiddler=\u003C\u003Cqualify \"$:/temp/SubscribeSection\">> text=\"open\"/>\n \u003C!--\u003C$action-managesubscription tiddler=\u003C\u003CcurrentTiddler>> user=\"greata@sorenbjornstad.com\" operation=\"subscribe\"/>-->\n\\end\n\n\\define complete-subscription-action()\n \u003C$action-managesubscription tiddler=\u003C\u003CcurrentTiddler>> user={{$:/config/sobjornstad/UserEmail}} operation=\"subscribe\"/>\n\t\u003C$action-setfield $tiddler=\u003C\u003Cqualify \"$:/temp/SubscribeSection\">> text=\"\"/>\n\\end\n\n\u003C$list filter=\"[all[current]!is[system]]\" variable=_>\n\u003C$list filter=\u003C\u003Cff ContactButtons>> variable=_>\n\u003Cdiv style=\"text-align: center;\">\n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Send Soren email about this idea or note.\" actions=\u003C\u003CstartConvoAction>>>\n\t\u003Ci class=\"fa fa-envelope\"/> start a conversation\n\u003C/$button> \n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Get emails whenever this idea or note is updated.\" actions=\u003C\u003CsubscribeAction>>>\n \u003Ci class=\"fa fa-bell\"/> subscribe\n\u003C/$button>\n\u003C/div>\n\n\u003Cdiv class=\"sib-subscribe-info\">\n\u003C$reveal state=\u003C\u003Cqualify \"$:/temp/SubscribeSection\">> type=\"match\" text=\"open\">\n \u003C$list filter=\"[all[current]is[missing]]\">//This tiddler doesn't exist yet. You'll be notified if and when it is created.//\u003Cbr>\u003C/$list>\n\tSubscribe with email: \u003C$edit-text tiddler=\"$:/config/sobjornstad/UserEmail\" tag=\"input\" default=\"\"/>\n\t\u003C$button actions=\u003C\u003Ccomplete-subscription-action>>>Subscribe\u003C/$button>\n\u003C/$reveal>\n\u003C/div>\n\n\u003C/$list>\n\u003C/$list>\n\n\n\u003Cstyle>\ndiv.sib-subscribe-info {\n\ttext-align: center;\n\tmargin-top: 0.5rem;\n}\ndiv.sib-subscribe-info input {\n\twidth: 20em;\n\tmax-width: 50%;\n}\n\u003C/style>"},
{"title":"$:/sib/Templates/Automatic/Source","created":"20200808023836194","creator":"soren","description":"Display a table of fields and other information about the source described by this tiddler.","modified":"20210916133730677","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers tagged \u003C\u003Ctag Source>> or \u003C\u003Ctag Sink>>.","type":"text/vnd.tiddlywiki","text":"\\define isbnsearch(isbn) https://isbnsearch.org/isbn/$(isbn)$\n\n\u003C$list filter=\"[all[current]tag[Source]] [all[current]tag[Sink]]\">\n\n\u003Ctable class=\"sourceDeetsTable\">\n\t\u003Ctr>\n\t\t\u003Cth>Title\u003C/th>\n\t\t\u003Ctd>{{!!caption}}\u003C/td>\n\t\u003C/tr>\n\t\u003Ctr>\n\t\t\u003Cth>Author\u003C/th>\n\t\t\u003Ctd>{{!!author}}\u003C/td>\n\t\u003C/tr>\n\t\u003Ctr>\n\t\t\u003Cth>Publication year\u003C/th>\n\t\t\u003Ctd>{{!!year}}\u003C/td>\n\t\u003C/tr>\n\t\u003Ctr>\n\t\t\u003Cth>Medium\u003C/th>\n\t\t\u003Ctd>{{!!medium}}\u003C/td>\n\t\u003C/tr>\n\t\u003C$list filter={{{ [all[current]has[universe]!universe[nonfiction]] }}}>\n\t\u003Ctr>\n\t\t\u003Cth>Universe\u003C/th>\n\t\t\u003Ctd>\n\t\t\t\u003C$link to={{!!universe}}/>\n\t\t\u003C/td>\n\t\u003C/tr>\n\t\u003C/$list>\n\t\u003Ctr>\n\t\t\u003Cth>URL\u003C/th>\n\t\t\u003Ctd>{{!!url}}\u003C/td>\n\t\u003C/tr>\n\t\u003C$list filter=\"[all[current]has[isbn]]\">\n\t\u003Ctr>\n\t\t\u003Cth>ISBN\u003C/th>\n\t\t\u003Ctd>\n\t\t\t\u003C$set name=isbn value={{!!isbn}}>\n\t\t\t\t\u003Ca href=\u003C\u003Cisbnsearch>> class=\"tc-tiddlylink-external\">{{!!isbn}}\u003C/a>\n\t\t\t\u003C/$set>\n\t\t\u003C/td>\n\t\u003C/tr>\n\t\u003C/$list>\n\t\u003Ctr>\n\t\t\u003Cth>Bibliographies\u003C/th>\n\t\t\u003Ctd>\n\t\t\t\u003C$list filter=\"[all[current]enlist{!!bibliography}]\">\n\t\t\t\t\u003C$link to={{{ [tag[Bibliography]bibliography\u003CcurrentTiddler>] }}}>\n\t\t\t\t\t\u003C$text text=\u003C\u003CcurrentTiddler>>/>\n\t\t\t\t\u003C/$link>\n\t\t\t\u003C/$list>\n\t\t\u003C/td>\n\t\u003C/tr>\n\t\u003Ctr>\n\t\t\u003Cth>Status\u003C/th>\n\t\t\u003Ctd>\n\t\t\t\u003C\u003Cread-status-selector>>\n\t\t\t\u003C$list filter=\"[all[current]readstatus[read]]\">\n\t\t\t\ton \u003C$view field=\"completed\" format=\"date\" template=\"YYYY-0MM-0DD\"/>\n\t\t\t\u003C/$list>\n\t\t\t\u003C$list filter=\"[all[current]readstatus[reread]]\">\n\t\t\t\t(last read \u003C$view field=\"completed\" format=\"date\" template=\"YYYY-0MM-0DD\"/>)\n\t\t\t\u003C/$list>\n\t\t\u003C/td>\n\t\u003C/tr>\n\u003C/table>\n\n\u003Cstyle>\n.sourceDeetsTable tr th {\n\ttext-align: right;\n}\n\u003C/style>\n\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/SpoilerBanner","created":"20210606181123394","creator":"soren","description":"Show a banner to public users warning them that spoilers may be present in tiddlers related to a work of fiction they may not have read.","modified":"20210909023752258","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers that have a `universe` field which is not set to `nonfiction`, if this is the public edition.","type":"text/vnd.tiddlywiki","text":"\\define hide-action() \u003C$action-setfield $tiddler=\"$:/config/sib/HideSpoilerBanner\" text=\"yes\"/>\n\n\u003C$list filter=\u003C\u003Cff SpoilerBanner>> variable=_>\n\u003C$list filter=\"[[$:/config/sib/HideSpoilerBanner]!text[yes]]\" variable=_>\n\u003C$list filter=\"[all[current]has[universe]!universe[nonfiction]]\">\n\t\u003Cdiv class=\"sib-spoiler-banner\">\n\t\t\u003Cdiv style=\"display: inline-block; vertical-align: center; margin-top: 6px; margin-left: 1em;\">\n\t\t\t\u003Cspan style=\"height: 44px; fill: yellow;\">{{$:/core/images/warning}}\u003C/span>\n\t\t\u003C/div>\n\t\t\u003Cdiv style=\"display: inline-block; margin-left: 1em; margin-right: 1em;\">\n\t\t\u003C$list filter=\"[all[current]tag[Source]]\" variable=_>\n\t\t\tThis tiddler is about a work of fiction. Absolutely no attempt is made to avoid or \u003Cbr>\n\t\t\tmark spoilers; read at your own risk. (\u003C$button class=\"tc-tiddlylink tc-btn-invisible\" actions=\u003C\u003Chide-action>>>don't show again this session\u003C/$button>)\u003Cbr>\n\t\t\u003C/$list>\n\t\t\u003C$list filter=\"[all[current]!tag[Source]]\">\n\t\t\tThis tiddler may contain spoilers for //\u003C$link to={{!!universe}}>\u003C$text text={{{ [{!!universe}get[caption]] }}}/>\u003C/$link>//.\u003Cbr>\n\t\t\tRead at your own risk. (\u003C$button class=\"tc-tiddlylink tc-btn-invisible\" actions=\u003C\u003Chide-action>>>don't show again this session\u003C/$button>)\u003Cbr>\n\t\t\u003C/$list>\n\t\t\u003C/div>\n\t\u003C/div>\n\u003C/$list>\n\u003C/$list>\n\u003C/$list>\n\n\u003Cstyle>\n.sib-spoiler-banner {\n\tbackground-color: \u003C\u003Ccolor message-background>>;\n\tdisplay: block;\n\tborder-radius: 10px;\n\tpadding: 5px;\n\tmargin: 0 auto;\n\twidth: 35rem;\n}\n\u003C/style>"},
{"title":"$:/sib/Templates/Automatic/StoryRiverFooter","created":"20210825140429794","creator":"soren","modified":"20210902152411592","modifier":"soren","tags":"$:/tags/BelowStory","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\u003C\u003Cff CopyrightFooter>> variable=_>\n\n\u003Cdiv class=\"zk-footer-row\">\n\u003C$list filter=\"[[$:/config/zettelkasten/copyright/UserNotice]has[text]]\" emptyMessage={{$:/config/zettelkasten/copyright/InitialNotice}}>{{$:/config/zettelkasten/copyright/UserNotice}}\u003C/$list>\nSee the [[content copyright notice|CopyrightNotice]] for details.\n\u003C/div>\n\u003Cdiv class=\"zk-footer-row\">\nZettelkasten [[edition of TiddlyWiki|https://zettelkasten.sorenbjornstad.com]] by [[Soren Bjornstad|https://sorenbjornstad.com]].\n\u003C/div>\n\n\u003Cstyle>\ndiv.zk-footer-row {\n\tcolor: \u003C\u003Ccolor muted-foreground>>;\n\ttext-align: center;\n}\n\ndiv.zk-footer-row a.tc-tiddlylink, div.zk-footer-row a.tc-tiddlylink-external {\n\tcolor: \u003C\u003Ccolor muted-foreground>>;\n\ttext-decoration: underline;\n}\n\u003C/style>\n\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/Subtiddler","created":"20211120164840100","creator":"soren","description":"Navigate to the parent or a sibling of the current subtiddler. Subtiddler names are separated from that of their supertiddlers by a / (and are not system tiddlers).","modified":"20220202173655863","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers whose titles contain a slash and are not system tiddlers.","type":"text/vnd.tiddlywiki","text":"\\define expand-siblings() \u003C$action-setfield $tiddler=\"$:/temp/ShowSiblings\" $index=\u003C\u003CcurrentTiddler>> $value=\"yes\" />\n\\define contract-siblings() \u003C$action-setfield $tiddler=\"$:/temp/ShowSiblings\" $index=\u003C\u003CcurrentTiddler>> $value=\"no\" />\n\\define siblings-filter() [prefix\u003CparentTiddlerPlusSlash>!match\u003CcurrentTiddler>]\n\n\u003C$list filter=\"[all[current]!is[system]regexp:title[/]]\" variable=_>\n\u003C$set name=\"parentTiddler\" value={{{ [all[current]split[/]butlast[]join[/]] }}}>\n\u003C$set name=\"parentTiddlerPlusSlash\" value={{{ [\u003CparentTiddler>addsuffix[/]] }}}>\n\u003Cdiv style=\"text-align: center;\">\n\nThis is a subtiddler of \u003C$link to=\u003C\u003CparentTiddler>>/>.\u003Cbr>\n\t\u003C$reveal stateTitle=\"$:/temp/ShowSiblings\" stateIndex=\u003C\u003CcurrentTiddler>> type=\"nomatch\" text=\"yes\">\n\t\t\u003C$list filter=\"[prefix\u003CparentTiddlerPlusSlash>!match\u003CcurrentTiddler>first[]]\" variable=_ emptyMessage=\"This is the only subtiddler.\">\n\t\t\u003C$button class=\"tc-btn-invisible tc-tiddlylink\" actions=\u003C\u003Cexpand-siblings>>>{{$:/core/images/right-arrow}} Siblings of this subtiddler\u003C/$button> (\u003C$count filter=\u003C\u003Csiblings-filter>>/>)\n\t\t\u003C/$list>\n\t\u003C/$reveal>\n\t\u003C$reveal stateTitle=\"$:/temp/ShowSiblings\" stateIndex=\u003C\u003CcurrentTiddler>> type=\"match\" text=\"yes\">\n\t\t\u003C$button class=\"tc-btn-invisible tc-tiddlylink\" actions=\u003C\u003Ccontract-siblings>>>{{$:/core/images/down-arrow}} Siblings of this subtiddler:\u003C/$button>\u003Cbr>\n\t\t\u003C$list filter=\u003C\u003Csiblings-filter>>>\n\t\t\t\u003C$link to=\u003C\u003CcurrentTiddler>>>\u003C$text text={{{ [\u003CcurrentTiddler>removeprefix\u003CparentTiddlerPlusSlash>] }}}/>\u003C/$link>\u003Cbr>\n\t\t\u003C/$list>\n\t\u003C/$reveal>\n\n\u003C/div>\n\u003C/$set>\n\u003C/$set>\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/TypeTagChecker","created":"20211120170347843","creator":"soren","description":"Show a warning on tiddlers that don't have a type selected.","modified":"20211221014011578","modifier":"soren","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers that exist, aren't system tiddlers or subtiddlers, and don't have at least one tag of the color #ff0000.","type":"text/vnd.tiddlywiki","text":"\u003C!-- System tiddlers, missing tiddlers, and subtiddlers are exempt from the warning. -->\n\u003C$list filter=\"[all[current]!is[system]!is[missing]!regexp[/]]\">\n\u003C$list filter=\"[all[current]tags[]color[#ff0000]] ~[[Oops]] +[match[Oops]]\" variable=_>\n\t\u003Cdiv style=\"display: inline-block; vertical-align: center; margin-top: 6px; margin-left: 1em; fill: yellow;\">\n\t\t\u003Cspan style=\"height: 44px\">{{$:/core/images/warning}}\u003C/span>\n\t\u003C/div>\n\t\u003Cdiv style=\"display: inline-block; margin-left: 1em; color: yellow; font-weight: bold;\">\n\t\tThis tiddler does not have a type tag (type tags appear in red). You should probably attach one.\u003Cbr>\n\t\tSee [[ZettelkastenCardType]] for details on the available options.\n\t\u003C/div>\n\u003C/$list>\n\u003C/$list>"},
{"title":"$:/sib/Templates/Automatic/Untitled","created":"20210307160101458","description":"Display buttons enabling a workflow where you paste content directly into TiddlyWiki and then use a custom form to turn it into a tiddler.","modified":"20210523141850561","tags":"$:/tags/ViewTemplate","transcludedin":"Tiddlers whose name begins with `Untitled` (the name you get when you paste text into TiddlyWiki).","type":"text/vnd.tiddlywiki","text":"\\define make-source()\n\u003C$action-sendmessage $message=\"tm-close-tiddler\" $param=\"$:/Import\"/>\n\u003C$action-setfield $field=\"tags\" $value=\"Source\"/>\n\u003C$action-setfield $field=\"url\" $value={{!!text}}/>\n\u003C$action-setfield $field=\"text\" $value=\"\"/>\n\u003C$action-setfield $field=\"type\" $value=\"\"/>\n\u003C$action-setfield $field=\"medium\" $value=\"article\"/>\n\u003C$action-setfield $field=\"year\" $value=\u003C\u003Cnow \"YYYY\">>/>\n\\end\n\n\\define finish-import()\n\u003C$action-setfield $field=\"title\" $value={{$:/temp/RenameTitle}}/>\n\u003C$action-sendmessage $message=\"tm-close-tiddler\" $param=\u003C\u003CcurrentTiddler>>/>\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>>/>\n\u003C$action-navigate $to={{$:/temp/RenameTitle}}/>\n\u003C$action-deletetiddler $tiddler=\"$:/temp/RenameTitle\"/>\n\\end\n\n\u003C$list filter=\"[all[current]prefix[Untitled]]\">\n\u003Cdiv class=\"import-options\">\n\u003Ch3>Import Options\u003C/h3>\n\n\u003C$button actions=\u003C\u003Cmake-source>>>Create Source\u003C/$button>\n\u003C$reveal type=\"match\" state=\"!!tags\" text=\"Source\">\n\n|!Tiddler Title |\u003C$edit-text tiddler=\"$:/temp/RenameTitle\" default=\"\" tag=\"input\"/>|\n|!Source Title |\u003C$edit-text field=\"caption\" default=\"\" tag=\"input\"/>|\n|!Author |\u003C$edit-text field=\"author\" default=\"\" tag=\"input\"/>|\n|!Medium |\u003C$radio field=\"medium\" value=\"article\"> Article\u003C/$radio> \u003C$radio field=\"medium\" value=\"book\">Book\u003C/$radio>|\n|!Year |\u003C$edit-text field=\"year\" default=\u003C\u003Cnow \"YYYY\">> tag=\"input\"/>|\n|!Read status |\u003C\u003Cread-status-selector>>|\n|!Completed |\u003C$edit-date field=\"completed\"/>|\n\n\u003C$button actions=\u003C\u003Cfinish-import>>>Import\u003C/$button>\n\n\u003C/$reveal>\n\u003C/div>\n\u003C/$list>\n\n\u003Cstyle>\ndiv.import-options {\n\tpadding: 5px;\n\tborder: 2px solid \u003C\u003Ccolor \"tag-background\">>;\n\twidth: 100%;\n}\n\ndiv.import-options h3 {\n\ttext-align: center;\n\tmargin-top: 5px;\n\tmargin-bottom: 0;\n}\n\u003C/style>"},
{"title":"$:/sib/Templates/Automatic/ViewTemplateDescription","created":"20210523140149097","description":"Provide a summary of the purpose, usage, and definition of the view template defined in the current tiddler.","modified":"20210523141255035","tags":"$:/tags/ViewTemplate","transcludedin":"All tiddlers within the $:/sib namespace that are tagged \u003C\u003Ctag $:/tags/ViewTemplate>>.","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]prefix[$:/sib/]tag[$:/tags/ViewTemplate]]\">\n\n!! \u003Ccode>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/code> view template\n\n; Purpose\n: {{!!description}}\n\n; Transcluded in\n: {{!!transcludedin}}\n\n; Definition\n: \u003C$codeblock code={{{ [all[current]get[text]] }}} language=\"html\"/>\n\n\u003C/$list>"},
{"title":"$:/sib/Templates/Topical/MaudWikiImport","created":"20200115233038885","creator":"soren","modified":"20221129234135365","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"//This tiddler was originally part of MaudWiki.//"},
{"title":"$:/sib/Templates/Topical/SabbaticalUpdates/DateNavigation","created":"20210807194134012","description":"Show links to the chronologically previous and next sabbatical update tiddlers.","modified":"20210807194948834","tags":"$:/tags/ViewTemplate","transcludedin":"Subtiddlers of SabbaticalUpdate.","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]prefix[SabbaticalUpdate/]]\" variable=_>\n\n\u003Cdiv class=\"sab-upd-navigator\">\n\u003Cdiv style=\"text-align: left;\">\n← Previous: \u003C$list filter=\"[prefix[SabbaticalUpdate]sort[]!field:title[SabbaticalUpdate]before\u003CcurrentTiddler>]\" variable=\"prevTiddler\" emptyMessage=\"//(at first update)//\">\u003C$link to=\u003C\u003CprevTiddler>>>\u003C$text text={{{ [\u003CprevTiddler>get[caption]] }}}/>\u003C/$link>\u003C/$list>\n\u003C/div>\n\u003Cdiv style=\"text-align: right;\">\nNext: \u003C$list filter=\"[prefix[SabbaticalUpdate]sort[]!field:title[SabbaticalUpdate]after\u003CcurrentTiddler>]\" variable=\"nextTiddler\" emptyMessage=\"//(at last update)//\">\u003C$link to=\u003C\u003CnextTiddler>>>\u003C$text text={{{ [\u003CnextTiddler>get[caption]] }}}/>\u003C/$link>\u003C/$list> →\n\u003C/div>\n\u003C/div>\n\n\u003C/$list>\n\n\u003Cstyle>\ndiv.sab-upd-navigator div {\n\tborder-top: 1px solid \u003C\u003Ccolor table-border>>;\n\tpadding-top: 10px;\n\tmargin-top: 6ex;\n\twidth: 50%;\n\tfloat: left;\n}\n\u003C/style>"},
{"title":"$:/sib/Templates/Topical/SabbaticalUpdates/ReadOnZettelkasten","created":"20210807191548391","modified":"20210807192805541","tags":"","type":"text/vnd.tiddlywiki","text":"If you're currently on Control-Alt-Backspace, you can \u003C$link to=\u003C\u003CcurrentTiddler>>>read this post on Soren's Zettelkasten\u003C/$link>."},
{"title":"$:/sib/Templates/Topical/WhoIAmTab","created":"20201121012833365","creator":"soren","modified":"20210825162920735","modifier":"soren","tags":"","type":"text/vnd.tiddlywiki","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\n\u003C$set name=\"storyTiddler\" value=\u003C\u003CcurrentTab>>>\n\u003C$transclude mode=\"block\"/>\n\n\u003C$link to=\u003C\u003CcurrentTiddler>>>\u003Ci class=\"fa fa-expand\"/> Explode this section\u003C/$link>\n{{||$:/sib/refexplorer/ReferenceExplorer}}\n\u003C/$set>\n\u003C/$tiddler>"},
{"title":"$:/sib/Tools","created":"20210825121854435","creator":"soren","description":"Tools to manage your Zettelkasten.","modified":"20210920160417142","modifier":"soren","tags":"Meta","type":"text/vnd.tiddlywiki","text":"\\define item() \u003Cli>\u003C$link to=\u003C\u003CcurrentTiddler>>>\u003C$text text={{{ [all[current]split[/]last[]] }}}/>\u003C/$link>: {{!!description}}\u003C/li>\n\n\\define sorter() [split[/]last[]sort[]]\n\n\\define tooltype(type) \u003Cul>\u003C$list filter=\"[tag[Tool]tooltype[$type$]sortsub\u003Csorter>]\">\u003C\u003Citem>>\u003C/$list>\u003C/ul>\n\n!! Documentation\n\n* [[ZettelkastenCardType]]: The types of red tags you can assign to tiddlers to get specific effects.\n* [[OurNamingConventions]]: Naming conventions for tiddler titles; you're expected to edit this tiddler to match the conventions you wish to use yourself.\n* [[$:/sib/Documentation]]: Documentation on the macros and view templates available within the Zettelkasten.\n\n\n!! Configuration\n\n\u003C\u003Ctooltype configuration>>\n\n\n!! Aggregation\n\n\u003C\u003Ctooltype aggregator>>\n\n\n!! Maintenance\n\n\u003C\u003Ctooltype maintenance>>"},
{"title":"$:/sib/Tools/FeatureFlags","created":"20210622001737586","creator":"soren","description":"Selectively hide and show interface elements or other features.","modified":"20230407023023477","modifier":"soren","tags":"Meta Tool Public","tooltype":"configuration","type":"text/vnd.tiddlywiki","text":"Feature flags allow many elements of the wiki to be selectively enabled and disabled. Feature flags may be set to different values in the private and public editions of your wiki.\n\nTo add your own feature flag, create a new tiddler under `$:/config/zettelkasten/FeatureFlags` and set its `caption` and `description` fields to the values you'd like to see in the table below. You can then check the feature flag's value using the [[ff macro|$:/sib/Macros/ff]]; see the macro's tiddler for an example.\n\n\u003Ctable>\n\t\u003Ctr>\n\t\t\u003Cth>Feature\u003C/th>\n\t\t\u003Cth>Private\u003C/th>\n\t\t\u003Cth>Public\u003C/th>\n\t\t\u003Cth>Description\u003C/th>\n\t\u003C/tr>\n\t\u003C$list filter=\"[prefix[$:/config/zettelkasten/FeatureFlags/]sort[caption]]\">\n\t\u003Ctr>\n\t\t\u003Ctd>{{!!caption}}\u003C/td>\n\t\t\u003Ctd>\u003C$checkbox field=\"private\" checked=\"yes\" unchecked=\"no\"/>\u003C/td>\n\t\t\u003Ctd>\u003C$checkbox field=\"public\" checked=\"yes\" unchecked=\"no\"/>\u003C/td>\n\t\t\u003Ctd>{{!!description}}\u003C/td>\n\t\u003C/tr>\n\t\u003C/$list>\n\u003C/table>"},
{"title":"$:/sib/Tools/LowLinkTiddlers","created":"20210118021217305","creator":"soren","description":"Find non-subtiddler idea tiddlers that have fewer than a specified number of outbound links.","modified":"20210920155025769","modifier":"soren","tags":"Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"\\define sorty() [links[]count[]]\nFind non-subtiddler idea tiddlers that have fewer than \u003C$edit-text tiddler=\"$:/temp/LowLinkTiddlers\" tag=\"input\" default=\"\"/> outbound links:\n\n\u003Cul>\n\u003C$list filter=\"[!is[system]has[text]tag[Idea]!search:title[/]sortsub\u003Csorty>]\">\n\t\u003C$list filter=\"[all[current]links[]count[]compare:number:lt{$:/temp/LowLinkTiddlers}]\" variable=\"count\">\n\t\t\u003Cli>\u003C$link to=\u003C\u003CcurrentTiddler>>/>: \u003C\u003Ccount>> outbound links\u003C/li>\n\t\u003C/$list>\n\u003C/$list>\n\u003C/ul>"},
{"title":"$:/sib/Tools/MissingPeople","created":"20200309202554627","creator":"soren","description":"Show all missing tiddlers that have the naming convention for people.","modified":"20210920155034053","modifier":"soren","tags":"Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"\"Missing\" of course meaning that the ZK doesn't know about them, not that nobody in ConsensusPhysicalReality knows about them...\n\n\u003Cul>\n\u003C$list filter=\"[all[missing]regexp[^(Mr|Ms|The)]sort[]]\" emptyMessage=\"No references to nonexistent people right now!\">\n\t\u003Cli>\u003C$link>\u003C\u003CcurrentTiddler>>\u003C/$link>\u003C/li>\n\u003C/$list>\n\u003C/ul>"},
{"title":"$:/sib/Tools/PaletteBrowser","created":"20210329204050908","creator":"soren","description":"View all the colors in the current palette and conveniently copy their hex codes or `\u003C\u003Ccolor>>` macros for use elsewhere in the wiki.","modified":"20210920155041358","modifier":"soren","tags":"Meta Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"\\define colorsplotch(col)\n\t\u003Cdiv class=\"color-splotch\" style=\"background: $col$;\">\n\\end\n\n\\define copy-hex() \u003C$action-sendmessage $message=\"tm-copy-to-clipboard\" $param=\u003C\u003Chexvalue>>/>\n\\define copy-mac() \u003C$action-sendmessage $message=\"tm-copy-to-clipboard\" $param=\"\"\"\u003C\u003Ccolor $(currentTiddler)$>>\"\"\"/>\n\n\u003Cdiv style=\"text-align: center;\">Current palette: \u003C$link to={{$:/palette}}/>\u003C/div>\n\n\u003Ctable>\n\t\u003Ctr>\n\t\t\u003Cth>\u003C/th>\n\t\t\u003Cth>HTML color code\u003C/th>\n\t\t\u003Cth>TiddlyWiki name\u003C/th>\n\t\t\u003Cth>Copy to clipboard\u003C/th>\n\t\u003C/tr>\n\u003C$list filter=\"[{$:/palette}indexes[]]\">\n\t\u003C$list filter=\"[{$:/palette}getindex\u003CcurrentTiddler>]\" variable=\"hexvalue\">\n\t\t\u003Ctr>\n\t\t\t\u003Ctd>\u003C$macrocall $name=colorsplotch col=\u003C\u003Chexvalue>>/>\u003C/td>\n\t\t\t\u003Ctd>\u003C\u003Chexvalue>>\u003C/td>\n\t\t \u003Ctd>\u003C\u003CcurrentTiddler>>\u003C/td>\n\t\t\t\u003Ctd>\n\t\t\t\t\u003C$button class=\"tc-tiddlylink tc-btn-invisible\" actions=\u003C\u003Ccopy-mac>>>`\u003C\u003Ccolor>>` macro\u003C/$button> -- \n\t\t\t\t\u003C$button class=\"tc-tiddlylink tc-btn-invisible\" actions=\u003C\u003Ccopy-hex>>>hex code\u003C/$button>\n\t\t\t\u003C/td>\n\t\t\u003C/tr>\n\t\u003C/$list>\n\u003C/$list>\n\u003C/table>\n\n\u003Cstyle>\n.color-splotch {\n\tfloat: left;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid #000000;\n\tmargin: 0;\n}\n\u003C/style>"},
{"title":"$:/sib/Tools/ReadingInbox","created":"20210215024632766","creator":"soren","description":"Show sources you might want to read soon.","modified":"20210920155102294","modifier":"soren","tags":"Tool","tooltype":"aggregator","type":"text/vnd.tiddlywiki","text":"\\define tableRow(dueFragment)\n\u003Ctr>\n\t\u003Ctd>\u003C$list filter=\"[all[current]has[url]]\">\u003Ca href={{!!url}} class=\"tc-tiddlylink-external\">go\u003C/a>\u003C/$list>\u003C/td>\n\t\u003Ctd>\u003C$link to=\u003C\u003CcurrentTiddler>>>open\u003C/$link>\u003C/td>\n\t\u003Ctd>//{{!!caption}}//\u003C/td>\n\t\u003Ctd>{{!!author}}\u003C/td>\n\t\u003Ctd>{{!!medium}}\u003C/td>\n\t\u003Ctd>{{!!bibliography}}\u003C/td>\n\t\u003C!--\u003Ctd>$dueFragment$\u003C/td>-->\n\t\u003Ctd>\n\t\t\u003C\u003Cread-status-selector>>\n\t\u003C/td>\n\t\u003Ctd>\n\t\t\u003C$button class=\"tc-tiddlylink tc-btn-invisible\">\n\t\t\t\u003C$macrocall $name=inbox-postpone ivlExpr=\"1\"/>\n\t\t\ttomorrow\n\t\t\u003C/$button> |\n\t\t\u003C$button class=\"tc-tiddlylink tc-btn-invisible\">\n\t\t\t\u003C$macrocall $name=inbox-postpone ivlExpr=\"5\"/>\n\t\t\tin 5 days\n\t\t\u003C/$button> |\n\t\t\u003C$button class=\"tc-tiddlylink tc-btn-invisible\">\n\t\t\t\u003C$macrocall $name=inbox-postpone ivlExpr={{{ [all[current]get[ivl]else[5]multiply[2]] }}}/>\n\t\t\tlater\n\t\t\u003C/$button> |\n\t\t\u003C$button class=\"tc-tiddlylink tc-btn-invisible\">\n\t\t\t\u003C$macrocall $name=inbox-postpone ivlExpr={{{ [all[current]get[ivl]else[5]multiply[3]] }}}/>\n\t\t\teven later\n\t\t\u003C/$button>\n\t\u003C/td>\n\u003C/tr>\n\\end\n\nThis table first lists anything in progress; try to limit this to a handful of works. Then it lists items that are unread and potentially interesting, but have not been postponed. Postponing uses //exponential backoff//, to use MrAndyMatuschak's term: if you pick //later// or //even later//, the time until you see the item again doubles or triples from its previous value. This allows you to get items that presently seem of low value out of your way without requiring you to decide you will certainly never read it; perhaps some time later, they will look interesting again.\n\nThe table does not include [[lifetime reading items|LifetimeReading]] unless they're currently in progress, as it would then become miles long and cease to function effectively as an “inbox”; those items are a separate queue.\n\n\u003Ctable>\n\t\u003Ctr>\n\t\t\u003Cth style=\"width: 3.5em;\">Text\u003C/th>\n\t\t\u003Cth>Tiddler\u003C/th>\n\t\t\u003Cth>Title\u003C/th>\n\t\t\u003Cth style=\"width: 15%;\">Author\u003C/th>\n\t\t\u003Cth>Medium\u003C/th>\n\t\t\u003Cth>Biblio\u003C/th>\n\t\t\u003C!--\u003Cth style=\"width: 6.2em;\">Due\u003C/th>-->\n\t\t\u003Cth style=\"width: 6.5em;\">Status\u003C/th>\n\t\t\u003Cth style=\"width: 18em;\">Postpone\u003C/th>\n\t\u003C/tr>\n\t\u003C$list filter=\"[!days:due[-1]] [days:due[0]] +[sort[due]] [!has[due]] +[tag[Source]readstatus[partial]!is[draft]]\">\n\t\t\u003C\u003CtableRow \"\"\"(reading)\"\"\">>\n\t\u003C/$list>\n\t\u003C$list filter=\"[!days:due[-1]] [days:due[0]] +[sort[due]] [!has[due]] +[tag[Source]readstatus[unread]!bibliography[LifetimeReading]!is[draft]]\">\n\t\t\u003C\u003CtableRow \"\"\"\u003C$view field=\"due\" format=\"date\" template=\"YYYY-0MM-0DD\"/>\"\"\">>\n\t\u003C/$list>\n\u003C/table>\n\nSee also RecentlyRead for completed items."},
{"title":"$:/sib/Tools/RelationshipValueTool","created":"20200401230406669","creator":"soren","description":"Show all values used for a particular field in the wiki.","modified":"20210920155116145","modifier":"soren","tags":"Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"This tool shows you what values have been used for a particular field. For instance, when filling out the `medium` field on a [[Source]], you might want to know what values you've already used for this field.\n\nIf you're not sure what field you're looking for, expand the list of all fields:\n\n\u003C$details summary=\"List of all fields\">\n\n\u003Cul>\n\u003C$list filter=\"[fields[]sort[]]\">\n\t\u003Cli>\u003C\u003CcurrentTiddler>>\u003C/li>\n\u003C/$list>\n\u003C/ul>\n\n\u003C/$details>\n\n----\n|!Field to search |\u003C$edit-text tiddler=\"$:/temp/field-list-tool\" default=\"\" tag=input/>|\n\nThe following values have been used for the \u003Ccode>{{$:/temp/field-list-tool}}\u003C/code> field in this wiki:\n\n\u003Cul>\n\t\u003C$list filter=\"[!is[system]each:list-item{$:/temp/field-list-tool}sort[]]\">\n\t\t\u003Cli>\u003C\u003CcurrentTiddler>>\u003C/li>\n\t\u003C/$list>\n\u003C/ul>"},
{"title":"$:/sib/Tools/SmartOrphanList","created":"20200325215908710","creator":"soren","description":"List of orphans that excludes types of tiddlers that wouldn't be expected to have hardlinks; you can also permanently hide items.","modified":"20210920155127747","modifier":"soren","tags":"Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"The following list of outstanding orphans excludes images and attachments (as they don't hard-link when used), templates, meta items, stubs (as they haven't been filled out yet), and any items that have been manually excluded.\n\n{{||$:/sib/Tools/SmartOrphanList/Table}}"},
{"title":"$:/sib/Tools/SmartOrphanList/Table","created":"20210522014752620","creator":"soren","modified":"20210920140719298","modifier":"soren","tbl-add-records":"","tbl-anything":"","tbl-button-actions":"\u003C$action-setfield $tiddler=\u003C\u003CcurrentRecord>> $field=\"hideorphan\" $value=\"true\" modified=\"no\" />","tbl-button-icon":"{{$:/core/images/delete-button}}","tbl-button-tip":"Exclude this tiddler from the smart orphans list","tbl-caption":"''{{!!title}}''","tbl-checkbox-actions-selected":"","tbl-checkbox-actions-unselected":"","tbl-checkbox-field":"","tbl-checkbox-tag":"","tbl-checkbox-tip":"","tbl-checkbox-value-selected":"","tbl-checkbox-value-unselected":"","tbl-class":"tbl-style-default","tbl-columns":"tbl-expand title modified tags tbl-button","tbl-expand":"","tbl-filter":"[is[orphan]!field:hideorphan[true]!tag[Image]!tag[Attachment]!tag[Template]!tag[Meta]!tag[Tool]!tag[Stub]!tag[PrivateChunk]!tag[Bibliography]!tag[Journal]!search:title[/]!tag[Indite]]","tbl-limit":"25","tbl-mode":"normal","tbl-page-marker":"ThreePersonTeam","tbl-show-caption":"true","tbl-show-colgroup":"false","tbl-show-edit":"true","tbl-show-footer":"false","tbl-show-header":"true","tbl-show-mode":"true","tbl-show-pagination":"auto","tbl-sort-by":"title","tbl-sort-negate":"false","tbl-sort-type":"nsort","tbl-style-colgroup":"","tbl-style-container":"","tbl-style-table":"width:100%;","type":"text/vnd.tiddlywiki","text":"\u003C\u003Ctable $:/sib/Tools/SmartOrphanList/Table>>"},
{"title":"$:/sib/Tools/Statistics","created":"20200516031757915","creator":"soren","description":"General information about the number of tiddlers accumulated in the wiki.","modified":"20210920155422635","modifier":"soren","tags":"Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"* \u003C$list filter=\"[!is[system]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> (non-system) tiddlers\n** \u003C$list filter=\"[tag[Idea]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> ideas\n** \u003C$list filter=\"[tag[PAO]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> people\n** \u003C$list filter=\"[tag[Source]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> sources\n** \u003C$list filter=\"[tag[Sink]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> sinks\n** \u003C$list filter=\"[all[tags]!is[system]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> tags\n** \u003C$list filter=\"[!is[system]tag[Journal]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> journal entries\n* \u003C$list filter=\"[tag[Public]count[]]\">\u003C\u003CcurrentTiddler>>\u003C/$list> public tiddlers \u003C\u003CpublicAmount>>"},
{"title":"$:/sib/Tools/TagReplace","created":"20200225231807460","creator":"soren","description":"Do a find and replace to merge tags. (Pure renames can be accomplished by editing the tag tiddler.)","modified":"20210920155146151","modifier":"soren","tags":"Tool","tooltype":"maintenance","type":"text/vnd.tiddlywiki","text":"\u003C!--\nhttps://groups.google.com/forum/#!msg/tiddlywiki/OCntQ79DuwM/_vYCTYRXfaUJ\n\nVersion taken from the linked \"TiddlyWiki Magic\" post\n-->\n\n|!Search tag: | \u003C$edit-text tiddler=\"$:/temp/RenameTags/search\" tag=\"input\" type=\"text\"/> |\n|!Replace by: | \u003C$edit-text tiddler=\"$:/temp/RenameTags/replace\" tag=\"input\" type=\"text\"/> |\n\n---\n\u003C$reveal type=\"nomatch\" text=\"\" state=\"$:/temp/RenameTags/replace\">\n\nApply the tag \u003C$tiddler tiddler={{$:/temp/RenameTags/replace}}>\u003C$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\u003C/$tiddler> to the following tiddlers:\n\n\u003C$list filter=\"[!has[draft.of]tag{$:/temp/RenameTags/search}!tag{$:/temp/RenameTags/replace}sort[created]]\">\n\u003C$checkbox tag={{$:/temp/RenameTags/replace}}> \u003C$link to={{!!title}}>\u003C$view field=\"title\"/>\u003C/$link>\u003C/$checkbox>\u003Cbr/>\n\u003C/$list>\n\u003C/$reveal>\n\n\u003C$reveal type=\"nomatch\" text=\"\" state=\"$:/temp/RenameTags/search\">\n\nRemove the tag \u003C$tiddler tiddler={{$:/temp/RenameTags/search}}>\u003C$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\u003C/$tiddler> from the following tiddlers:\n\n\u003C$list filter=\"[!has[draft.of]tag{$:/temp/RenameTags/search}tag{$:/temp/RenameTags/replace}sort[created]]\">\n\u003C$checkbox tag={{$:/temp/RenameTags/search}}> ~~\u003C$link to={{!!title}}>\u003C$view field=\"title\"/>\u003C/$link>~~\u003C/$checkbox>\u003Cbr/>\n\u003C/$list>\n\u003C/$reveal>"},
{"title":"$:/sib/Tools/Tray","caption":"Tray","created":"20210701023215046","creator":"soren","description":"Items we're currently working on but don't need to leave open. Drag and drop a link to a tiddler to add it.","list":"","modified":"20230912045100622","modifier":"soren","tags":"Meta Tool","tooltype":"aggregator","type":"text/vnd.tiddlywiki","text":"Stuff I'm working on but don't need to keep open:\n\n\u003C\u003Clist-links-draggable \"$:/sib/Tools/Tray\" itemTemplate:\"$:/sib/Tools/Tray/Template\">>"},
{"title":"$:/SiteSubtitle","created":"20200118003902418","creator":"soren","modified":"20200118003906515","modifier":"soren","type":"text/vnd.tiddlywiki","text":"Say something clever about it here"},
{"title":"$:/TagSaver","created":"20210827213731043","creator":"soren","modified":"20231016023752916","modifier":"soren","tags":"Attachment Bibliography Class Conversation Idea Image Index Journal Meta Notes PAO Place Publication Sink Source Tool PrivateChunk Public NeedsAttention NeedsExcision Stub $:/TagSaver Wide Frozen","type":"text/vnd.tiddlywiki","text":"! Apologies for the noise, please read here\n\nThis tiddler exists to ensure that all tags foundational to the Zettelkasten continue to be displayed in the “Tags” bar even in an empty edition. Once you've used all of the tags on this tiddler on real tiddlers, or if you feel you do not need them displayed there anymore, you can delete this tiddler.\n\nAll the noise is because the tags cause a bunch of templates to be transcluded. :-)\n\n! End of the important part"},
{"title":"Attachment","caption":"Any embedded file that is not an [[Image]].","color":"#ff0000","created":"20200122024451228","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825155401976","modifier":"soren","refexplorer-hide":"yes","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"The //Attachment// tag is applied to any file embedded within the wiki as a tiddler that is not an [[Image]]."},
{"title":"Bibliography","caption":"An aggregation of sources that might be useful to someone studying a particular topic the ZK touches on.","color":"#ff0000","created":"20200808024704618","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210827233651142","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"A ''bibliography'' provides a concise list of useful [[Source]]s for someone who's unfamiliar with a topic that's treated at length in the Zettelkasten, without requiring the reader (or the author, hoping to find them some references!) to aimlessly wander through the ConceptWeb hoping to find more sources.\n\n\n!! Current bibliographies in this Zettelkasten\n\n\u003C\u003Clist-links \"[!is[system]tag[Bibliography]]\">>\n\n\n!! How bibliographies work\n\nEach bibliography has its own tiddler:\n\n* The tiddler can be named anything, but conventionally ends with the word `Bibliography`.\n* It should be tagged `bibliography`.\n* It should have a `bibliography` field containing a //bibliography key//, which will be used to connect it to sources. The bibliography key is usually a short string of letters and numbers, but may contain other characters if needed for some reason.\n* The body of the tiddler can contain information about the bibliography, or even interactive features, as desired. Where the sources contained in the bibliography should be displayed, transclude the bibliography-list template: `{{||$:/sib/Templates/Topical/BibliographyList}}`.\n\nA source (or a [[Publication]]) is placed in a bibliography as follows:\n\n* The bibliography key (see above) is added to the `bibliography` field of the source. `bibliography` is a list field, so a source can be contained in multiple bibliographies if appropriate; all the bibliography keys are added to this field, separated by spaces. If the bibliography key itself contains spaces, it should be placed in double square brackets, like `[[my bibliography key]]` (as with any other list field).\n* A short summary of the source should be added to the `description` field of the source; this will be used on the list.\n* The `caption`, `year`, `medium`, and, if available, `url` fields will also be used on the bibliography list and should be filled out with appropriate metadata; see [[Source]] for details."},
{"title":"Class","caption":"A [[metasource|Metasource]] representing a class or course which uses multiple [[Source]]s.","color":"#ff0000","created":"20200312153108522","creator":"soren","icon":"$:/core/images/tag-button","modified":"20230405211410333","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}"},
{"title":"Conversation","caption":"Raw notes or reflections on a conversation or meeting with someone.","color":"#ff0000","created":"20200702013212138","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825155537333","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}"},
{"title":"CopyrightNotice","created":"20210523180344305","modified":"20210525001746812","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"A TiddlyWiki [[blurs the lines between code and data|CodeDataEquivalence]], but most [[TiddlyWiki]]s can be divided into two types of tiddlers, ''content'' and ''system tiddlers''. These two types of tiddlers are licensed differently.\n\n!! Content\n\n{{$:/config/zettelkasten/copyright/Content}}\n\n!! System tiddlers\n\n{{$:/config/zettelkasten/copyright/System}}"},
{"title":"Footnote","created":"20210917204123567","creator":"soren","modified":"20210917204403789","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"To add a footnote in a Zettelkasten tiddler, use the [[fnote|$:/sib/Macros/fnote]] macro in the spot where you want to create the footnote. Footnotes are primarily accessed by hovering over the number; the ReferenceExplorer also displays footnotes on a [[footnotes tab|$:/sib/refexplorer/Footnotes]].\n\nInternal links in footnotes don't appear in the reference explorer, so they shouldn't be used to discuss concepts critical to the central idea of the tiddler. In general, I use footnotes more in quasi-essays aimed primarily at discussing something in detail or sharing information with the public than in tightly focused and internally-bound notes."},
{"title":"Idea","caption":"The core of the Zettelkasten. Ideas are tiddlers that describe some concept, thought, lesson, or similar topic.","color":"#ff0000","created":"20210721004110425","creator":"soren","description":"","icon":"$:/core/images/tag-button","modified":"20210825160340787","modifier":"soren","refexplorer-hide":"true","tags":"Public Meta","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\n!! Fields\n\n; description\n: When possible, the main idea of a tiddler should be summed up into a sentence or two and placed in the `description` field. This be displayed next to a gem icon underneath the tiddler's title, and it will appear in a tooltip when you hover over the tiddler in the ReferenceExplorer. (If no `description` field is available, a short excerpt of the beginning of the tiddler is shown in this tooltip.)\n; es\n: The [[epistemic status|EpistemicStatuses]] of this idea, if one is appropriate. This may be chosen from the drop-down in the upper-right of the tiddler in view mode.\n; universe\n: If this idea is associated with a fictional [[Source]], that source's universe key.\n; url\n: If this idea has a single URL strongly associated with it (for instance, a blog post describing the idea that everyone knows about), it may be placed here."},
{"title":"Image","caption":"Any image in a standard format embedded within the wiki for transclusion in other tiddlers.","color":"#ff0000","created":"20200118044638935","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825160451093","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}} See also [[Attachment]]."},
{"title":"Index","caption":"A tiddler that serves primarily as an overview of or collection of links to other information, containing little information of its own.","color":"#ff0000","created":"20200314213905906","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825160727571","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"//Not to be confused with [[Indexing]], the art and science of creating lists of keywords that describe where information is to be found in a resource.//\n\nAn ''index'' tiddler serves primarily as an overview of or collection of links to other information, containing little information of its own. These tiddlers become more and more useful the larger your Zettelkasten gets; you can use them to create ad-hoc lists or hierarchies or keep track of ideas in a specific topic you're currently working on.\n\nIndex tiddlers don't have any special naming conventions or fields."},
{"title":"Journal","caption":"Journal tiddlers describe events as they happen. They might be written daily or near-daily to describe what's going on, or be created for a particular event.","color":"#ff0000","created":"20200425035307739","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210828132307946","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\nJournal tiddlers don't have any special naming conventions or fields."},
{"title":"Meta","caption":"Content that is about the ZettelKasten itself or its software.","color":"#ff0000","created":"20200115231440413","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825160942535","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\nMeta tiddlers don't have any special naming conventions or fields."},
{"title":"NeedsAttention","caption":"Needing attention","color":"#fff12e","created":"20200115231518581","creator":"soren","icon":"$:/core/images/info-button","modified":"20201203021140893","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[\u003CcurrentTiddler>!is[blank]]\">\nMarks tiddlers that need some kind of work done on them not defined by another existing tag (e.g., NeedsExcision, NeedsPhotograph, [[Stub]]).\n\u003C/$list>\n\n\u003C$list filter=\"[\u003CcurrentTiddler>is[blank]then[true]]\">\n \u003C$list filter=\"[tag[NeedsAttention]]\">\n\t\t\u003C$link/>\u003Cbr>\n\t\u003C/$list>\n\u003C/$list>"},
{"title":"NeedsExcision","caption":"Needing excision","color":"#fff12e","created":"20200117032011552","creator":"soren","icon":"$:/core/images/new-here-button","modified":"20201203021151197","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[\u003CcurrentTiddler>!is[blank]]\">\nArticles that are not atomic and need to be split into pieces.\n\u003C/$list>\n\n\u003C$list filter=\"[\u003CcurrentTiddler>is[blank]then[true]]\">\n \u003C$list filter=\"[tag[NeedsExcision]]\">\n\t\t\u003C$link />\u003Cbr>\n\t\u003C/$list>\n\u003C/$list>"},
{"title":"NeedsPhotograph","color":"#fff12e","created":"20200203142752768","creator":"soren","icon":"$:/core/images/new-here-button","modified":"20210102041913072","modifier":"soren","tags":"Meta","type":"text/vnd.tiddlywiki","text":"Tag for things that would do well to have a picture of some kind added for illustration purposes."},
{"title":"NeedsRemoval","caption":"Items that were placed in the ZK due to convenience but do not really belong and should be migrated to another notes system.","color":"#fff12e","created":"20200325230351650","creator":"soren","icon":"$:/core/images/info-button","modified":"20210825122842375","modifier":"soren","tags":"Meta","type":"text/vnd.tiddlywiki","text":"Tag for items that have drifted into the ZettelKasten but do not belong and should be removed to another notes source."},
{"title":"Notes","caption":"Raw notes from an ephemeral or non-print source such as a lecture.","color":"#ff0000","created":"20200512003031926","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825161003319","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\nNotes tiddlers don't have any special naming conventions or fields."},
{"title":"OpenQuestion","caption":"Open questions","created":"20200325232310538","creator":"soren","description":"Tiddlers that pose questions that don't currently have answers.","modified":"20210920155901913","modifier":"soren","tags":"Meta Tool","tooltype":"aggregator","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[\u003CcurrentTiddler>!is[blank]!is[system]]\">\n\tTarget tiddler for questions I'm pondering and don't know how to answer. To get your question included, just start a phrase in the text with `OpenQuestion:`.\n\n\t\u003Cul>\n\t\u003C$list filter=\"[all[current]backlinks[]!is[system]![OurProjectSurface]![Questions]]\">\n\t\u003Cli>\u003C$link to=\u003C\u003CcurrentTiddler>>>\u003C\u003CcurrentTiddler>>\u003C/$link>\u003C/li>\n\t\u003C/$list>\n\t\u003C/ul>\n\u003C/$list>\n\n\u003C$list filter=\"[\u003CcurrentTiddler>is[blank]then[true]]\">\n \u003C$list filter=\"[[OpenQuestion]backlinks[]!is[system]![OurProjectSurface]![Questions]]\">\n\t\t\u003C$link to=\u003C\u003CcurrentTiddler>>/>\u003Cbr>\n\t\u003C/$list>\n\u003C/$list>"},
{"title":"OurNamingConventions","created":"20200115225047720","creator":"soren","modified":"20210920205010621","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"In order to help keep track of all the entries here, certain [[NamingConvention]]s are observed on tiddler titles. Titles serve as [[IdeaApi]]s, so need to be clear and consistent.\n\n!!! Casing\n\nTiddlyWiki titles are case-sensitive, which can cause some irritation when you accidentally create tiddlers that differ only in case. These rules help to keep the capitalization consistent and avoid such confusion:\n\n* Titles should generally be WikiCamelCase (really, PascalCase, but everyone in the wiki world calls it CamelCase). However, a single-word concept or title should not have its capitalization mangled or gratuitous words added for the sole purpose of making it into a ~CamelCase title; it should simply be rendered as the single word.\n** It is, however, OK and encouraged to spell out a number or standard abbreviation where this enables a match with the ~CamelCase pattern, e.g., NineteenEightyFour. This tends to read better anyway.\n* When writing ~CamelCase titles, capitalization is normalized as if all components were normal words. Acronyms do not retain upper-casing or proprietary weirdness. So it is QwertyResidue, not *QWERTYResidue; TheAdoSupportTeam, not *~TheADOSupportTeam.\n** But acronyms and proprietary weirdness not incorporated into a ~CamelCase word do retain their capitalization: [[BDFL]], not *Bdfl; [[LaTeX]], not *Latex.\n* Barring proprietary weirdness (e.g., [[xkcd]]), titles always begin with a capital letter.\n\n\n!!! Wording\n\n* Titles, when they are nouns, are always singular.\n** But names of organizations (e.g., TheManitouSingers) and titles of sources (e.g., ComputerStupidities) should not have their number mangled to match.\n** The last word of a phrasal title might be pluralized. This is fine as long as the title as a whole is not a plural noun. E.g., SpacedRepetitionEncouragesFloatingIdeas is fine.\n\n* `The` may not begin any title which does not refer to an organization or group of people (see //Type patterns//, below). `The` should simply be omitted in such cases; e.g., GreatGatsby, not *~TheGreatGatsby. It's often hard to remember if `The` is part of the title anyway!\n\n* Abbreviations should be avoided unless they are standard/genericized (e.g., SQL, HTML).\n\n* Numbers should be spelled out unless this looks silly, especially when they're small (e.g., EightSeasons, not *8Seasons).\n\n* Punctuation, including apostrophes, is removed, and accented characters are turned to standard Latin letters, in titles. This avoids confusion about whether this was done, as well as possible quoting and encoding issues in filenames, URLs, etc. The correct spelling should be used within the tiddler.\n\n* If the tiddler is about the relationship between two things, or discusses two things, it should place those two things in alphabetical order within the title, absent a strong reason to do otherwise.\n\n!!! Type patterns\n\nTitles of certain [[ZettelkastenCardType]]s follow specific patterns:\n\n* //PAO//, ''^(Mr|Ms|The)[A-Z][a-zA-Z]+'': Identifies a person, author, or organization. 'The' is used for nongendered, impersonal sources.\n* //Source//, ''^[A-Z][a-zA-Z]*[0-9]{4,8}'': Identifies a source (an individual instance of a book, article, or other medium). Typically the page will note it as written by a //PAO//. The final number should be the publication date to as many digits of precision as known.\n* //Image//, ''.*\\.(png|jpg|gif)$'': Identifies an image embedded in the wiki.\n* //Meta//, ''^Our[A-Z][a-zA-Z]+'': Something (like this article) that discusses the wiki rather than an idea.\n\n!!! Looser conventions\n\nThese aren't types, but are generally conventions I try to follow.\n\n* ''My'' before a name indicates that it's a work I created."},
{"title":"PAO","caption":"A Person, Animal, or Organization exhibiting agency.","color":"#ff0000","created":"20200115231447676","creator":"soren","icon":"$:/core/images/tag-button","modified":"20230406024908885","modifier":"soren","refexplorer-hide":"true","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"\\define invalidFilter()\n[tag[PAO]!prefix[Mr]!prefix[Ms]!prefix[Mx]!prefix[The]]\n\\end\n\nTiddler type, the name of which stands for “''P''erson, ''A''nimal, or ''O''rganization.”\n\nSee $:/sib/Tools/MissingPeople to find PAOs that have been referenced but not had a tiddler created.\n\n!! Linking\n\nIf a person, animal, or organization is referenced anywhere in the wiki, it should virtually always have its name written ~CamelCase to create a PAO tiddler. The tiddler need not contain any meaningful content; it can be blank except for the title and the PAO tag. This is a matter of searchability -- if you do this, you can quickly jump to all tiddlers that mention a person if all you remember is the person's name, and you can move between ideas that mention the person using the ReferenceExplorer.\n\nSources should be connected to their authors by linking to the author or authors' PAO tiddler somewhere in the body text.\n\n\n!! Naming conventions\n\nIn addition to being tagged `PAO`, PAOs should have names which begin with `Mr`, `Ms`, `Mx`, or `The`. The first three indicate a person/animal and indicate gender (`Mx` is for non-binary people or people of unidentified gender). `The` is used for organizations. Note that the titles of tiddlers which do not represent organizations should consequently not begin with //The// to avoid confusion; see OurNamingConventions.\n\n\n!! Tags and fields\n\nP's, A's and O's need not be part of ConsensusPhysicalReality. When one comes from a work of fiction, it should additionally be tagged \u003C\u003Ctag Character>> and have its `universe` field populated with an appropriate universe key (see the explanation in [[Source]]).\n\n\n!! Private person replacement\n\nWhen building a private wiki using the `tzk` build tools, the `replace_private_people()` builder may be used to replace the names of people who aren't tagged \u003C\u003Ctag Public>> throughout the wiki, in order to prevent anything you say about those people from becoming searchable on the web.\n\n\n!! In this wiki\n\nCurrently, there are \u003C$count filter=\"[tag[PAO]]\"/> PAOs:\n\n\u003Cul>\n\t\u003Cli>\u003C$count filter=\"[tag[PAO]prefix[Mr]]\"/> male\u003C/li>\n\t\u003Cli>\u003C$count filter=\"[tag[PAO]prefix[Ms]]\"/> female\u003C/li>\n\t\u003Cli>\u003C$count filter=\"[tag[PAO]prefix[The]]\"/> organizations\u003C/li>\n\t\u003Cli>\n\t\t\u003C$count filter=\u003C\u003CinvalidFilter>>/> folks with an unrecognized PAO prefix:\n\t\t\u003Cul>\n\t\t\t\u003C$list filter=\u003C\u003CinvalidFilter>> >\n\t\t\t\t\u003Cli>\u003C\u003CcurrentTiddler>>\u003C/li>\n\t\t\t\u003C/$list>\n\t\t\u003C/ul>\n\t\u003C/li>\n\u003C/ul>"},
{"title":"Place","caption":"A physical location in ConsensusPhysicalReality or in a fictional world.","color":"#ff0000","created":"20200121032316713","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210910155618846","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\nFor places that have usable addresses or GPS coordinates, you can configure maps and directions to appear at the bottom of the tiddler via Google Maps. To do this in an empty edition of this Zettelkasten:\n\n# Set up a Maps Embed API key in Google Cloud Platform (this is rather technical, so if you don't know what an API key is, you may want to skip this feature). Set $:/config/zettelkasten/gis/GMapsApiKey to your new key.\n# (Optionally) set the `Address` index of the `PrivateMetadata` data tiddler to your home address; this will save you having to type it in every time you want directions from your home to somewhere else. Since this isn't a system tiddler, it won't be published unless you check the “publish this tiddler” option.\n# Turn on the //GIS tools// [[feature flag|$:/sib/Tools/FeatureFlags]].\n\nYou should now see a form on any tiddler tagged \u003C\u003Ctag Place>> where you can enter latitude and longitude and zoom level for the place. If you don't already have a favorite tool for finding latitude and longitude, in Google Maps, you can right-click on any point and select the first option to copy the coordinates to your clipboard. I usually start with a zoom level of 12 to 15 depending on the size of the place (you can see the current zoom level at the end of a Google Maps URL, followed by a //z//).\n\nAfter clicking //Add//, you'll be able to see maps, directions, or raw data for the location. The data is stored in the `gis-lat`, `gis-long`, and `gis-zoom` fields; you can also add a `gis-address` field if you'd like to display a street address on the //Info// tab."},
{"title":"PrivateChunk","color":"#000001","created":"20200509180315396","creator":"soren","icon":"$:/core/images/excise","modified":"20210901215354072","modifier":"soren","refexplorer-hide":"true","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"\u003C!-- not being used as a template -->\n\u003C$list filter=\"[all[current]field:title[PrivateChunk]]\">\n\nTiddlers whose subject matter is sensitive or personal are not made publicly available. However, sometimes a topic is almost entirely fit for publication, but you'd like to add a little bit of private commentary to it. In this case, you can use a //private chunk//. This is a separate tiddler, generally named the same as the public tiddler followed by a `/p`, and tagged \u003C\u003Ctag PrivateChunk>> (this tiddler). To include the private chunk in the public tiddler, it is transcluded, using `PrivateChunk` (this tiddler again) as a template. Some list magic hides this bit and shows the template bit when this is done.\n\nSince you won't mark the private chunk as public, when the wiki is published, the private chunks don't come along. The title must not contain any sensitive information, since the transclusion directive will still be present in the source, but this shouldn't be a concern if the naming convention above is followed.\n\nThe lock button {{$:/core/images/locked-padlock}} on the editor toolbar can be used to create a new private chunk from the selected text.\n\n\u003C/$list>\n\n\u003C!-- being used as a template -->\n\u003C$list filter=\"[all[current]is[tiddler]!field:title[PrivateChunk]]\" variable=_>\n\t\u003C$list filter=\"[all[current]!tag[PrivateChunk]]\" variable=_>\n\t\t\u003Cspan style=\"color: yellow;\">Warning: This private chunk is not tagged PrivateChunk.\u003C/span>\n\t\t\u003C$fieldmangler tiddler=\u003C\u003CcurrentTiddler>>>\n\t\t\u003C$button>\n\t\t \u003C$action-sendmessage $message=\"tm-add-tag\" $param=\"PrivateChunk\"/>\n\t\t Add tag\n\t\t\u003C/$button>\n\t\t\u003C/$fieldmangler>\n\t\u003C/$list>\n\n \u003Cdiv class=\"sib-private-chunk\">\u003C$link to=\u003C\u003CcurrentTiddler>>>private\u003C/$link>:\n\t\t\u003C$transclude name=\u003C\u003CcurrentTiddler>> mode=\"block\"/>\n\t\u003C/div>\n\u003C/$list>"},
{"title":"Public","color":"#000001","created":"20200507032259254","icon":"$:/core/images/globe","modified":"20200512034215900","refexplorer-hide":"true","tags":"Public Meta","type":"text/vnd.tiddlywiki","text":"All tiddlers tagged with this tag, as well as all system tiddlers, will be included in the nightly upload to https://zettelkasten.sorenbjornstad.com.\n\nTiddlers not tagged Public may still be redlinked from elsewhere in the wiki, which may be useful for establishing connections between other ideas."},
{"title":"Publication","caption":"A [[metasource|Metasource]] consisting of an organization or location that publishes or groups together multiple Sources.","color":"#ff0000","created":"20200201045921067","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825162348971","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\nFor instance, magazines, newspapers, journals, book series, and websites are publications. Articles, papers, individual books, and pages on websites are [[Source]]s.\n\nPublications have no special naming conventions or fields."},
{"title":"ReferenceExplorer","created":"20200410133657263","creator":"soren","modified":"20210920192218164","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"At the bottom of every tiddler in the Zettelkasten is the ''Reference Explorer'', which shows all links between tiddlers, separated into tabs based on the ZettelkastenCardType, and allows quickly navigating through them. Several auxiliary tabs (//Link graph// and //Footnotes//) are available as well.\n\nOnly the tabs that have at least one item on them for the current tiddler will be shown, and if the current tiddler has no links or relationships at all or is a system tiddler, the reference explorer will not appear.\n\nThe possible tabs are as follows:\n\n* [[Ideas|Idea]]\n* People ([[PAO]] tag)\n* [[Places|Place]]\n* [[Sources|Source]] (and [[Metasources|Metasource]])\n* [[Sinks|Sink]]\n* [[Indexes|Index]]\n* [[Subtiddlers|Subtiddler]] -- tiddlers named for the current tiddler plus some additional characters, usually separated by `/`\n* Link graph -- a graphical view of the outbound links from this tiddler, going several layers deep\n* [[Footnotes|Footnote]] -- display of all footnotes in the current tiddler (you can also hover over a footnote indicator to read it)\n* All -- all the types of links combined into one view\n\nIt's possible to add new tabs or customize the existing ones by editing the tiddlers tagged with [[$:/tags/ReferenceExplorerTab]].\n\nThe behavior of the explorer can be customized per-tiddler by setting the following fields:\n\n* `refexplorer-starttab` -- Instead of starting the Reference Explorer on the first tab that is shown, start it on the tab with this name (`$:/sib/refexplorer/` is prepended to this value to select a tiddler name).\n* `refexplorer-hide` -- if set to `yes`, don't show the Reference Explorer until the user clicks a button. Useful to avoid performance issues on tiddlers that have dozens, hundreds, or thousands of links or tagged tiddlers.\n\nThe Reference Explorer is homegrown for the ZK wiki. It used to use TiddlyTables, but once I settled on how it should work, I rewrote it with pure HTML tables to improve performance (they use much of the CSS from TiddlyTables, so they're hard to tell apart!). Its system tiddlers can be found in `$:/sib/refexplorer`; you can borrow these for another wiki [[under the MIT license|CopyrightNotice]] if you so desire.\n\n\u003C$details summary=\"Flashcards\">\n\u003C\u003Crememberq \"20210123160338153\"\n\t\"What variable must be set manually when trying to transclude the ReferenceExplorer within a nested tiddler (e.g., within a tab)?\"\n\t\"`storyTiddler`\">>\n\t\n\u003C\u003Crememberq \"20210123160402884\"\n\t\"If the ReferenceExplorer shows the references for the wrong tiddler, what variable is most likely set incorrectly?\"\n\t\"`storyTiddler`\">>\n\u003C/$details>"},
{"title":"Sink","caption":"The opposite of a [[Source]]: where ideas leave the system in the form of things I create.","color":"#ff0000","created":"20200226131429312","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210825162301331","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\nSinks are very much like sources in most regards. They use the same naming conventions and fields as [[Source]]s, to the extent that this makes sense."},
{"title":"Source","caption":"A single source of ideas, such as a blog post, book, or musical work. Sources may be part of [[Publication]]s or [[Class]]es.","color":"#ff0000","created":"20200115231452835","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210920171016829","modifier":"soren","refexplorer-hide":"true","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"{{!!caption}}\n\n{{SorenSourceInfo}}\n\n\n!! Naming\n\nThe names of source tiddlers consist of a short CamelCase slug -- possibly the [[mangled|OurNamingConventions]] title, or a description of it if the title is long -- plus, if available, the publication year. The actual title of the source goes in the `caption` field.\n\n\n!! Fields\n\nAs sources often need to be reformatted, displayed in tables, searched in complex ways, and so on, they should have a significant amount of metadata attached in fields.\n\n; bibliography\n: A list of [[bibliographies|Bibliography]] to include this source in.\n; caption\n: The full title and subtitle of the source, as it is known outside the wiki.\n; description\n: A one- or two-sentence explanation of what the source is. Optional, but highly recommended if the source is included in any bibliographies using the `bibliography` field.\n; medium\n: Description of what kind of source this is -- `article`, `book`, `website`, `film`, etc. Use the [[RelationshipValueTool|$:/sib/Tools/RelationshipValueTool]] for a full, up-to-date list.\n; rating\n: An appropriate MediaRating. Optional, but highly recommended if you've finished reading/consuming the source.\n; url\n: If the source is available online and not behind a paywall, a URL leading to the source. Otherwise, don't bother -- anyone who doesn't have a copy will have to do their own research anyway.\n; universe\n: If the source is fiction, an arbitrary //universe key// which is placed on all sources and ideas taking place in the same fictional world. If you're not sure what to use as a universe key, you can just use the title of the source; but if multiple sources share the same universe (say, books in a series) you'll want to use the same key for all of them.\n; year\n: If the source is not published on an ongoing basis (e.g., a website), the year of its publication. Updated editions should use the new copyright date if updated by the author, but not if the edition is merely a re-release by the publisher without substantive changes, or the addition of commentary or introductions.\n\n!!! Only used for books\n\n; format\n: `paperback`, `hardcover`, or `ebook`. Only relevant if //owned//.\n; isbn\n: The ISBN of the edition at issue, without dashes. (This can be scanned in with my barcode reader if a barcode is available.)\n; owned\n: `yes` or `no`\n; readstatus\n: `read` (fully read), `partial` (partly read), `unread` (never read), or `reread` (have read fully, but would be interested in reading again)."},
{"title":"Stub","color":"#fff12e","created":"20200116024803799","creator":"soren","icon":"$:/core/images/new-here-button","modified":"20200530141202429","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"Stub tiddlers, like in [[Wikipedia]] or similar, are those that have been created with a few momentary thoughts, or even just a title, but need more expansion to be useful.\n\nThings don't have to be tagged with \u003C\u003Ctag Stub>> just because they're short. We don't want to go OverEngineering things, because many tiddlers may be dead-ends. If they aren't dead-ends, then we'll end up seeing them again and can improve on them if appropriate. Things should be tagged Stub if we believe the material is inadequate for even the present moment and the only limitation to expanding it is time."},
{"title":"Subtiddler","created":"20210920160651222","creator":"soren","modified":"20210920204851937","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"A ''subtiddler'' is a tiddler which is tightly coupled to another, larger tiddler. It's not an idea of its own, it's a part of some larger idea which benefits from being compartmentalized.\n\nSubtiddlers are identified by containing one or more slashes `/` in their names. The main tiddler or //supertiddler//'s title comes prior to the slash, then the subtiddler's name. There can be multiple levels of hierarchy if needed, but this is generally rare.\n\nSubtiddlers of the current tiddler appear on a [[Subtiddlers tab|$:/sib/refexplorer/Subtiddlers]] of the ReferenceExplorer."},
{"title":"TODO","caption":"To-do items","created":"20201203005550171","creator":"soren","description":"List of all tiddlers which contain a link to TODO.","modified":"20210920155226812","modifier":"soren","tags":"Meta Tool","tooltype":"aggregator","type":"text/vnd.tiddlywiki","text":"\\define todore() \\[\\[TODO\\]\\]:\n\\define splitre() [\\.\\?!](\\s|$)\n\nTo add a TODO item to this list, simply link to [[TODO]].\n\n\u003Cdl>\n\u003C$list filter=\"[[TODO]backlinks[]] -[[TODO]]\" variable=outer>\n \u003C$list filter=\"[\u003Couter>get[text]splitregexp\u003Ctodore>last[]splitregexp\u003Csplitre>first[]]\" variable=inner>\n\t \u003Cdt>\u003C$link to=\u003C\u003Couter>>/>\u003C/dt>\n\t\t\u003Cdd>''TODO:'' \u003C\u003Cinner>>.\u003C/dd>\n\t\u003C/$list>\n\u003C/$list>\n\u003C/dl>"},
{"title":"Tool","caption":"Tiddler that provides miniature widgets helping to perform administrative or search tasks in the ZK.","color":"#ff0000","created":"20200225233351305","creator":"soren","icon":"$:/core/images/tag-button","modified":"20210921153046753","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"A tiddler designed to help you work with the rest of the wiki.\n\nA list of tools can be found at [[$:/sib/Tools]]."},
{"title":"UpdateStatuses","created":"20230407015234920","creator":"soren","description":"Update statuses give a vague idea of how reliably a tiddler represents my current thinking.","modified":"20230407030031171","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"Each tiddler has an ''update status'' which aims to give a rough idea of whether you can rely on the information in that tiddler to be aligned with my current thinking. See DocumentationStates for inspiration.\n\nFor now update statuses are something of an experiment and apply only to idea tiddlers; I may expand the system if it works well.\n\n; \u003Cspan style=\"color: lightgreen;\">maintained\u003C/span>\n: The tiddler describes an idea, opinion, etc., that can change over time, and has been touched within the preceding 6 months. It's probably not wildly out of date.\n; \u003Cspan style=\"color: tomato;\">stale\u003C/span>\n: The tiddler is of a type that can be maintained, but: (a) it hasn't been edited or explicitly marked as still relevant for 6 months; or (b) it contains a TODO or is tagged NeedsAttention. A stale tiddler is not necessarily out of date with my current thinking -- in fact, it usually isn't -- but it's worth recognizing that some time has gone past and things may have changed.\n; \u003Cspan style=\"color: lightblue;\">frozen\u003C/span>\n: The tiddler is intended as a record of my thinking at a point in time, and thus cannot go out of date. Tag a tiddler [[Frozen]] to give it this status."},
{"title":"ZettelkastenCardType","created":"20200410135331736","creator":"soren","description":"What types of tiddlers are used within this Zettelkasten?","modified":"20210920160035899","modifier":"soren","tags":"Meta Public","type":"text/vnd.tiddlywiki","text":"This ZettelKasten has tiddlers (also “cards”, or “Zettel” in ZK terminology) of a number of defined //types//. Ideas, are of course, the ZK's //raison d'être//; but the other types are useful because they help to put ideas in context and link them together (e.g., what other ideas did this person have or were found in this source?). Types are identified by the red tags with tag icons next to them.\n\nClick on a type to learn more about what it's used for, its naming conventions, and the fields that should be used on tiddlers of that type.\n\n\u003Cul>\n\t\u003C$list filter=\"[color[#ff0000]!has[draft.of]icon[$:/core/images/tag-button]sort[title]]\">\n\t\t\u003Cli>\u003C$link>{{!!title}}\u003C/$link> -- {{!!caption}}\u003C/li>\n\t\u003C/$list>\n\u003C/ul>"}
function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m<n;m++)h=a[e>>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m=
if(0>h)throw new sjcl.exception.invalid("this isn't base64!");26<e?(e-=26,c.push(g^h>>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));returnc}};sjcl.codec.base64url={fromBits:function(a){returnsjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){returnsjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(newsjcl.hash.sha256).update(a).finalize()};
function u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]=
f[7]+q|0}
sjcl.mode.ccm={name:"ccm",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1<a&&sjcl.mode.ccm.G.splice(a,1)},fa:function(a){varb=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){varf,g=b.slice(0),h=sjcl.bitArray,k=h.bitLength(c)/8,l=h.bitLength(g)/8;e=e||64;d=d||[];if(7>k)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c,
8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))thrownewsjcl.exception.corrupt("ccm:tagdoesn'tmatch");
sjcl.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4<b.length;g+=4)m=b.slice(g,g+4),n=l(n,m),p=p.concat(l(c,a.encrypt(l(c,m)))),c=h(c);m=b.slice(g);b=k.bitLength(m);g=a.encrypt(l(c,[0,0,0,b]));m=k.clamp(l(m.concat([0,0,0]),g),b);n=l(n,l(m.concat([0,0,0]),g));n=a.encrypt(l(n,l(c,h(c))));
d.length&&(n=l(n,f?d:sjcl.mode.ocb2.pmac(a,d)));return p.concat(k.concat(m,k.clamp(n,e)))},decrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("ocb iv must be 128 bits");e=e||64;var g=sjcl.mode.ocb2.S,h=sjcl.bitArray,k=h.i,l=[0,0,0,0],n=g(a.encrypt(c)),m,p,r=sjcl.bitArray.bitLength(b)-e,q=[];d=d||[];for(c=0;c+4<r/32;c+=4)m=k(n,a.decrypt(k(n,b.slice(c,c+4)))),l=k(l,m),q=q.concat(m),n=g(n);p=r-32*c;m=a.encrypt(k(n,[0,0,0,p]));m=k(m,h.clamp(b.slice(c),p).concat([0,
0,0]));l=k(l,m);l=a.encrypt(k(l,k(n,g(n))));d.length&&(l=k(l,f?d:sjcl.mode.ocb2.pmac(a,d)));if(!h.equal(h.clamp(l,e),h.bitSlice(b,r)))throw new sjcl.exception.corrupt("ocb: tag doesn't match");return q.concat(h.clamp(m,p))},pmac:function(a,b){var c,d=sjcl.mode.ocb2.S,e=sjcl.bitArray,f=e.i,g=[0,0,0,0],h=a.encrypt([0,0,0,0]),h=f(h,d(d(h)));for(c=0;c+4<b.length;c+=4)h=d(h),g=f(g,a.encrypt(f(h,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);
sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(a){if(this.aa)throw new sjcl.exception.invalid("encrypt on already updated hmac called!");this.update(a);return this.digest(a)};sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]);this.aa=!1};sjcl.misc.hmac.prototype.update=function(a){this.aa=!0;this.R.update(a)};sjcl.misc.hmac.prototype.digest=function(){var a=this.R.finalize(),a=(new this.W(this.w[1])).update(a).finalize();this.reset();return a};
sjcl.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;g<c;g++)for(f=a.encrypt(f),h=0;h<f.length;h++)e[h]^=f[h];l=l.concat(e)}d&&(l=n.clamp(l,d));returnl};
(k=1);if(!k){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A("seeded",Math.max(this.o,this.f)),A("progress",this.getProgress()))},
this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],deletee[d]},la:function(){C(this,1)},oa:function(a){varb,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");C(this,0)},qa:function(a){a=
function A(a,b){var c,d=sjcl.random.K[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}functionC(a,b){"undefined"!==typeofwindow&&window.performance&&"function"===typeofwindow.performance.now?a.addEntropy(window.performance.now(),b,"loadtime"):a.addEntropy((newDate).valueOf(),b,"loadtime")}functiony(a){a.b=z(a).concat(z(a));a.L=newsjcl.cipher.aes(a.b)}functionz(a){for(varb=0;4>b&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)}
function B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);
else break a;sjcl.random.addEntropy(F,1024,"crypto['getRandomValues']")}}catch(a){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(a))}
b.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(g,b.ct,b.iv,b.tag,f,b.ts):sjcl.mode[b.mode].decrypt(g,b.ct,b.iv,f,b.ts);e.g(d,b);d.key=a;return 1===c.raw?f:sjcl.codec.utf8String.fromBits(f)},decrypt:function(a,b,c,d){var e=sjcl.json;return e.ia(a,e.decode(b),c,d)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid("json encode: invalid property name");c+=d+'"'+
b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+sjcl.codec.base64.fromBits(a[b],0)+'"';break;default:throw new sjcl.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new sjcl.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))thrownewsjcl.exception.invalid("jsondecode:thisisn'tjson!");
null!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]="true"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new sjcl.exception.invalid("required parameter overridden");a[d]=b[d]}return a},sa:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},ra:function(a,
Information about each module is kept in an object with these members:
moduleType: type of module
definition: object, function or string defining the module; see below
exports: exports of the module, filled in after execution
The `definition` can be of several types:
* An object can be used to directly specify the exports of the module
* A function with the arguments `module,require,exports` that returns `exports`
* A string function body with the same arguments
Each moduleInfo object is stored in two hashmaps: $tw.modules.titles and $tw.modules.types. The first is indexed by title and the second is indexed by type and then title
*/
$tw.modules = {
titles: {}, // hashmap by module name of moduleInfo
types: {} // hashmap by module type and then name of moduleInfo
};
/*
Define a JavaScript tiddler module for later execution
moduleName: name of module being defined
moduleType: type of module
definition: module definition; see discussion above
The main boot kernel for TiddlyWiki. This single file creates a barebones TW environment that is just sufficient to bootstrap the modules containing the main logic of the application.
On the server this file is executed directly to boot TiddlyWiki. In the browser, this file is packed into a single HTML file.
\*/
var _boot = (function($tw) {
/*jslint node: true, browser: true */
/*global modules: false, $tw: false */
"use strict";
// Include bootprefix if we're not given module data
if(!$tw) {
$tw = require("./bootprefix.js").bootprefix();
}
$tw.utils = $tw.utils || Object.create(null);
/////////////////////////// Standard node.js libraries
promptMsg = ( $tw.language == undefined ? "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser" : $tw.language.getString("InternalJavaScriptError/Hint") );
Fill in any null or undefined properties of an object with the properties from a list of source objects. Each property that is an object is called recursively
Get the browser location.hash. We don't use location.hash because of the way that Firefox auto-urldecodes it (see http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash)
submitText: text to use for submit button (defaults to "Login")
serviceName: text of the human readable service name
noUserName: set true to disable username prompt
canCancel: set true to enable a cancel button (callback called with null)
repeatPassword: set true to prompt for the password twice
callback: function to be called on submission with parameter of object {username:,password:}. Callback must return `true` to remove the password prompt
Return an array of classes created from the modules of a specified type. Each module should export the properties to be added to those of the optional base class
Wiki constructor. State is stored in private members that only a small number of privileged accessor methods have direct access. Methods added via the prototype have to use these accessors and cannot access the state data directly.
options include:
enableIndexers - Array of indexer names to enable, or null to use all available indexers
*/
$tw.Wiki = function(options) {
options = options || {};
var self = this,
tiddlers = Object.create(null), // Hashmap of tiddlers
// Register the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting registration to an array of tiddler titles. Return the array of titles affected
self.unregisterPluginTiddlers(null,[title]); // Unregister the plugin if it's already registered
pluginTiddlers.push(tiddler);
registeredTitles.push(tiddler.fields.title);
}
}
};
if(titles) {
$tw.utils.each(titles,function(title) {
checkTiddler(self.getTiddler(title),title);
});
} else {
this.each(function(tiddler,title) {
checkTiddler(tiddler,title);
});
}
return registeredTitles;
};
// Unregister the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting unregistering to an array of tiddler titles. Returns an array of the titles affected
Enable safe mode by deleting any tiddlers that override a shadow tiddler
*/
$tw.Wiki.prototype.processSafeMode = function() {
var self = this,
overrides = [];
// Find the overriding tiddlers
this.each(function(tiddler,title) {
if(self.isShadowTiddler(title)) {
console.log(title);
overrides.push(title);
}
});
// Assemble a report tiddler
var titleReportTiddler = "TiddlyWiki Safe Mode",
report = [];
report.push("TiddlyWiki has been started in [[safe mode|https://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:")
Decrypt any tiddlers stored within the element with the ID "encryptedArea". The function is asynchronous to allow the user to be prompted for a password
callback: function to be called the decryption is complete
// Storing encrypted tiddlers on the server isn't supported yet
callback();
};
} // End of if($tw.browser && !$tw.node)
/////////////////////////// Node definitions
if($tw.node) {
/*
Load the tiddlers contained in a particular file (and optionally extract fields from the accompanying .meta file) returned as {filepath:,type:,tiddlers:[],hasMetaFile:}
Load all the tiddlers recursively from a directory, including honouring `tiddlywiki.files` files for drawing in external files. Returns an array of {filepath:,type:,tiddlers: [{..fields...}],hasMetaFile:}. Note that no file information is returned for externally loaded tiddlers, just the `tiddlers` property.