<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":"$:/core","name":"Core","description":"TiddlyWiki5 core","author":"JeremyRuston","core-version":">=5.0.0","plugin-priority":"0","list":"readme","version":"5.3.1","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|https://jasmine.github.io/]]\\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\":\"\\\\parameters (size:\\\"22pt\\\")\\n\u003Csvg width=\u003C\u003Csize>> height=\u003C\u003Csize>> 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 1
{"title":"$:/core/ui/PageTemplate/topleftbar","text":"\u003C!-- The menubar plugin overrides this tiddler to remove the core top left menu. The menu items that it would include are instead included in the menubar -->"},
{"title":"$:/core/ui/PageTemplate/toprightbar","text":"\u003C!-- The menubar plugin overrides this tiddler to remove the core top right menu. The menu items that it would include are instead included in the menubar -->"},
{"title":"$:/Import","text":"The following tiddlers were imported:\n\n# [[boton--exportar]]","status":"complete","modified":"20231014021147491","modifier":"copincha"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/danielo515/2click2edit/ClickListener.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nThis widgets adds an double click event listener to its parent\\n\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar ClickListener = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nClickListener.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nClickListener.prototype.render = function(parent,nextSibling) {\\n\\tthis.parentDomNode = parent;\\n\\tthis.execute();\\n\\tvar self = this;\\n /*Since the event listener have been added to the parent, the \\\"this\\\" property is pointing to the\\n wrong object, we should call our edit function with our widget object set as the this property.*/\\n parent.addEventListener(\\\"dblclick\\\",function(event){self.editTiddler.call(self,event)});\\n};\\n\\nClickListener.prototype.editTiddler = function(event) {\\n this.dispatchEvent({type: \\\"tm-edit-tiddler\\\", param: this.getVariable(\\\"currentTiddler\\\")}); \\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nClickListener.prototype.execute = function() {\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nClickListener.prototype.refresh = function(changedTiddlers) {\\n\\treturn false;\\n};\\n\\nexports.click = ClickListener;\\n\\n})();\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ClickListener.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/danielo515/2click2edit/readme\": {\n \"title\": \"$:/plugins/danielo515/2click2edit/readme\",\n \"text\": \"This plugin adds the ability to edit tiddlers by double clicking on its body.\\nJust try to edit any tiddler shown here by double clicking on it.\\n\\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \\nfor it officially.\\n\"\n },\n \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\": {\n \"tags\": \"$:/tags/ViewTemplate\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$click>\"\n }\n }\n}","bag":"default","revision":"0","version":"0.1","type":"application/json","title":"$:/plugins/danielo515/2click2edit","source":"https://github.com/danielo515/TW5-2click2edit","plugin-type":"plugin","list":"readme","description":"double click to edit tiddlers","dependents":"","core-version":">=5.1.0","author":"Danielo Rodriguez"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/topstoryview/config.js\": {\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\\ntype: application/javascript\\nmodule-type: library\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.config={classNames:{storyRiver:\\\"tc-story-river\\\",backDrop:\\\"story-backdrop\\\",tiddlerFrame:\\\"tc-tiddler-frame\\\",tiddlerTitle:\\\"tc-title\\\"},references:{userConfig:\\\"$:/config/topStoryView\\\",focussedTiddlerStore:\\\"$:/temp/focussedTiddler\\\",refreshTrigger:\\\"$:/temp/focussedTiddler/refresh\\\"},checkbackTime:$tw.utils.getAnimationDuration()}})();\",\n \"title\": \"$:/plugins/felixhayashi/topstoryview/config.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/felixhayashi/topstoryview/layout\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/layout\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"tags\": [\n \"$:/tags/Stylesheet\"\n ],\n \"text\": \"html .tc-story-river:after {\\n content: \\\"\\\";\\n display: block; }\\n\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Configuration\",\n \"text\": \"Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Scroll offset:\u003C/th>\\n \u003Ctd>\u003C$edit-text tiddler=\\\"$:/config/topStoryView\\\" field=\\\"scroll-offset\\\" tag=\\\"input\\\" default=\\\"150px\\\" />\u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/topstoryview/License\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information.\"\n },\n \"$:/plugins/felixhayashi/topstoryview/top.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\\ntype: application/javascript\\nmodule-type: storyview\\n\\nViews the story as a linear sequence\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";var t=require(\\\"$:/plugins/felixhayashi/topstoryview/config.js\\\").config;var e=\\\"cubic-bezier(0.645, 0.045, 0.355, 1)\\\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\\\"th-opening-default-tiddlers-list\\\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\\\"scroll-offset\\\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return
{"name":"Relink","title":"$:/plugins/flibbles/relink","description":"Flexibility when relinking renamed tiddlers","author":"Flibbles","version":"2.3.5","core-version":">=5.1.22","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration license","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink/js/bulkops.js\":{\"text\":\"/*\\\\\\nmodule-type: startup\\n\\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\\n\\nThis is a startup instead of a wikimethods module-type because it's the only\\nway to ensure this runs after the old relinkTiddler method is applied.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\n\\nexports.name = \\\"redefine-relinkTiddler\\\";\\nexports.synchronous = true;\\n// load-modules is when wikimethods are applied in\\n// ``$:/core/modules/startup/load-modules.js``\\nexports.after = ['load-modules'];\\n// We come before commands because they may do renaming, or jasmine testing\\nexports.before = ['commands'];\\n\\nexports.startup = function() {\\n\\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\\n};\\n\\n/** Walks through all relinkable tiddlers and relinks them.\\n * This replaces the existing function in core Tiddlywiki.\\n */\\nfunction relinkTiddler(fromTitle, toTitle, options) {\\n\\toptions = options || {};\\n\\tvar failures = [];\\n\\tvar indexer = utils.getIndexer(this);\\n\\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\\n\\tfor (var title in records) {\\n\\t\\tvar entries = records[title],\\n\\t\\t\\tchanges = Object.create(null),\\n\\t\\t\\tupdate = false,\\n\\t\\t\\tfails = false;\\n\\t\\tfor (var field in entries) {\\n\\t\\t\\tvar entry = entries[field];\\n\\t\\t\\tfails = fails || entry.impossible;\\n\\t\\t\\tif (entry.output !== undefined) {\\n\\t\\t\\t\\tchanges[field] = entry.output;\\n\\t\\t\\t\\tupdate = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (fails) {\\n\\t\\t\\tfailures.push(title);\\n\\t\\t}\\n\\t\\t// If any fields changed, update tiddler\\n\\t\\tif (update) {\\n\\t\\t\\tconsole.log(\\\"Renaming '\\\"+fromTitle+\\\"' to '\\\"+toTitle+\\\"' in '\\\" + title + \\\"'\\\");\\n\\n\\t\\t\\tvar tiddler = this.getTiddler(title);\\n\\t\\t\\tvar modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\\n\\t\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\\n\\t\\t\\tnewTiddler = $tw.hooks.invokeHook(\\\"th-relinking-tiddler\\\",newTiddler,tiddler);\\n\\t\\t\\tthis.addTiddler(newTiddler);\\n\\t\\t\\t// If the title changed, we need to perform a nested rename\\n\\t\\t\\tif (newTiddler.fields.title !== title) {\\n\\t\\t\\t\\tthis.deleteTiddler(title);\\n\\t\\t\\t\\tthis.relinkTiddler(title, newTiddler.fields.title,options);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif (failures.length > 0) {\\n\\t\\tvar options = $tw.utils.extend(\\n\\t\\t\\t{ variables: {to: toTitle, from: fromTitle},\\n\\t\\t\\t wiki: this},\\n\\t\\t\\toptions );\\n\\t\\tlanguage.reportFailures(failures, options);\\n\\t}\\n};\\n\\n})();\\n\",\"module-type\":\"startup\",\"title\":\"$:/plugins/flibbles/relink/js/bulkops.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/indexer.js\":{\"text\":\"/*\\\\\\nmodule-type: indexer\\n\\nIndexes results from tiddler reference reports so we don't have to call them\\nso much.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\nfunction Indexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nIndexer.prototype.init = function() {\\n\\tthis.rebuild();\\n};\\n\\nIndexer.prototype.rebuild = function() {\\n\\tthis.index = null;\\n\\tthis.backIndex = null;\\n\\tthis.contexts = Object.create(null);\\n\\tthis.changedTiddlers = undefined;\\n\\tthis.lastRelinks = O
{"name":"Relink Field Names","title":"$:/plugins/flibbles/relink-fieldnames","description":"Renames field names with titles matching Relinked tiddlers","author":"Flibbles","version":"2.3.5","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme reference","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/flibbles/relink/attributes/$action-deletefield/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletefield/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$action-listops/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$action-setfield/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setfield/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$button/setField\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/setField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$checkbox/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$edit-text/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-text/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$edit/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$fields/exclude\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/exclude\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$fields/include\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/include\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$jsontiddler/exclude\":{\"title\":\"$:/config/flibbles/relink/attributes/$jsontiddler/exclude\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$radio/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$range/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$reveal/stateField\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/stateField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$select/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$setvariable/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$set/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$transclude/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$view/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/fieldnames/blacklist\":{\"title\":\"$:/config/flibbles/relink/fieldnames/blacklist\",\"filter\":\"[all[shadows+tiddlers]removeprefix[$:/language/Docs/Fields/]]\",\"text\":\"This tiddler specifies what fields //Relink-fieldname// should refuse to change. Edit its `filter` field if you'd like to change that list.\\n\"},\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\\nmodule-type: relinkfieldtype\\ntype: application/javascript\\n\\nThis field type behaves exactly like the \\\"title\\\" field type, except that\\nit ignores any titles that appear on the field name blacklist.\\n\\n\\\\*/\\n\\nexports.name = 'fieldname';\\n\\nvar utils = require(\\\"../utils.js\\\");\\n\\nex
{"name":"Relink Markdown","title":"$:/plugins/flibbles/relink-markdown","description":"Markdown support for Relink","author":"Flibbles","version":"2.3.5","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","list":"readme","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink-markdown/fieldtypes/markdown.js\":{\"title\":\"$:/plugins/flibbles/relink-markdown/fieldtypes/markdown.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfieldtype\\ntitle: $:/plugins/flibbles/relink-markdown/fieldtypes/markdown.js\\ntype: application/javascript\\n\\nThis relinks tiddlers which contain markdown. It tries to be agnostic to\\nwhichever markdown plugin you're using.\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\\\");\\nvar coreUtils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\nvar utils = require(\\\"$:/plugins/flibbles/relink-markdown/utils/markdown.js\\\");\\nvar WikiParser = require(\\\"$:/core/modules/parsers/wikiparser/wikiparser.js\\\")['text/vnd.tiddlywiki'];\\n\\nfunction MarkdownWalker(text, options) {\\n\\tthis.wiki = options.wiki;\\n\\tthis.options = Object.create(options);\\n\\tthis.options.macrodefCanBeDisabled = true;\\n\\tif(!this.mdInlineRuleClasses) {\\n\\t\\tMarkdownWalker.prototype.mdInlineRuleClasses = $tw.modules.createClassesFromModules(\\\"relinkmarkdownrule\\\",\\\"inline\\\",$tw.MarkdownRuleBase);\\n\\t}\\n\\tif(!this.mdBlockRuleClasses) {\\n\\t\\tMarkdownWalker.prototype.mdBlockRuleClasses = $tw.modules.createClassesFromModules(\\\"relinkmarkdownrule\\\",\\\"block\\\",$tw.MarkdownRuleBase);\\n\\t}\\n\\tthis.source = text || \\\"\\\";\\n\\tthis.sourceLength = this.source.length;\\n\\t// Set current parse position\\n\\tthis.pos = 0;\\n\\t// Instantiate the parser block and inline rules\\n\\tthis.blockRules = this.instantiateRules(this.mdBlockRuleClasses,\\\"block\\\",0);\\n\\tthis.inlineRules = this.instantiateRules(this.mdInlineRuleClasses,\\\"inline\\\",0);\\n\\t// instantiateRules first with indent==undefined so we can match regardless\\n\\t// of tabdepth. Now we need to be strict about it.\\n\\tthis.indent = 0;\\n\\tthis.parseBlocks();\\n};\\n\\nMarkdownWalker.prototype = Object.create(WikiParser.prototype);\\n\\nmodule.exports\\n\\nMarkdownWalker.prototype.parseBlock = function(terminatorRegExpString) {\\n\\tvar terminatorRegExp = /([^\\\\S\\\\n]*\\\\r?\\\\n)/mg;\\n\\tthis.skipEmptyLines();\\n\\tif(this.pos >= this.sourceLength) {\\n\\t\\treturn [];\\n\\t}\\n\\t// Look for a block rule that applies at the current position\\n\\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\\n\\tif(nextMatch && nextMatch.matchIndex === this.pos) {\\n\\t\\treturn this.handleRule(nextMatch);\\n\\t}\\n\\treturn this.parseInlineRun(terminatorRegExp);\\n};\\n\\nMarkdownWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\\n\\toptions = options || {};\\n\\tvar tree = [];\\n\\t// Find the next occurrence of the terminator\\n\\tterminatorRegExp.lastIndex = this.pos;\\n\\tvar terminatorMatch = terminatorRegExp.exec(this.source);\\n\\t// Find the next occurrence of a inlinerule\\n\\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\\n\\t// Loop around until we've reached the end of the text\\n\\twhile(this.pos \u003C this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\\n\\t\\t// Return if we've found the terminator, and it precedes any inline rule match\\n\\t\\tif(terminatorMatch) {\\n\\t\\t\\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\\n\\t\\t\\t\\tthis.handleWikitext(this.pos, terminatorMatch.index);\\n\\t\\t\\t\\t//if(options.eatTerminator) {\\n\\t\\t\\t\\t\\tthis.pos += terminatorMatch[0].length;\\n\\t\\t\\t\\t//}\\n\\t\\t\\t\\treturn tree;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t// Process any inline rule, along with the text preceding it\\n\\t\\tif(inlineRuleMatch) {\\n\\t\\t\\t// Preceding text\\n\\t\\t\\tthis.handleWikitext(this.pos, inlineRuleM
{"name":"Relink Titles","title":"$:/plugins/flibbles/relink-titles","description":"Renames tiddlers with titles derived from Relinked tiddler","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink-titles/configuration\":{\"title\":\"$:/plugins/flibbles/relink-titles/configuration\",\"caption\":\"{{$:/plugins/flibbles/relink-titles/language/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink-titles/language/\\n\\\\define prefix() $:/config/flibbles/relink-titles/relink/\\n\\\\whitespace trim\\n\\n\u003Cdiv class=\\\"tc-control-panel\\\">\\n\\n\u003C\u003Clingo Help>>\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[[relinktitlesrule]modules[]]\\\">\\n\u003Ctr>\\n\u003Ctd>\\n\u003C$checkbox\\n\\ttiddler={{{ [all[current]addprefix\u003Cprefix>] }}}\\n\\tfield=\\\"text\\\"\\n\\tchecked=\\\"enabled\\\"\\n\\tunchecked=\\\"disabled\\\"\\n\\tdefault=\\\"enabled\\\">\\n \\n''{{!!caption}}''\\n\u003C/$checkbox>\u003C/td>\u003Ctd>\\n\\n\u003C$transclude field='description' />\\n\\n\u003C/td>\u003C/tr>\u003C/$list>\\n\u003C/tbody>\u003C/table>\u003C/div>\\n\"},\"$:/plugins/flibbles/relink-titles/language/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Caption\",\"text\":\"Titles\"},\"$:/plugins/flibbles/relink-titles/language/Directory/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Directory/Caption\",\"text\":\"Rename subdirectories\"},\"$:/plugins/flibbles/relink-titles/language/Directory/Description\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Directory/Description\",\"text\":\"For wikis set up hierarchically using `/`, like a filesystem. This option will update all tiddlers nested inside the target tiddler. i.e. `fromTiddler/path/file` becomes `toTiddler/path/file`.\"},\"$:/plugins/flibbles/relink-titles/language/Lookup/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Lookup/Caption\",\"text\":\"Lookup tiddlers\"},\"$:/plugins/flibbles/relink-titles/language/Help\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Help\",\"text\":\"See the \u003Ca href={{{ [{$:/plugins/flibbles/relink-titles!!demo}addsuffix[#Plugins/Titles]] }}} class=\\\"tc-tiddlylink-external\\\">//Relink-titles// documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink-titles/readme\":{\"title\":\"$:/plugins/flibbles/relink-titles/readme\",\"text\":\"Highly customizable relinking of tiddler titles //related// to the renamed tiddler.\\n\\n* Rename a hierarchy of subtiddlers when renaming a root tiddler.\\n* Make custom filter rules to rename other tiddlers the way you want when Relinking.\\n* Integrates with other plugins for plugin-specific rules.\\n\\nSee \u003Ca href={{$:/plugins/flibbles/relink-titles!!source}} class=\\\"tc-tiddlylink-external\\\">the tw5-relink website\u003C/a> for more details and examples.\\n\\n{{$:/core/images/warning}} ''Warning:'' You must use //Relink// v1.10.2 or greater with this, or this plugin may delete some tiddler bodies while trying to relink titles.\\n\"},\"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\":{\"title\":\"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\",\"text\":\"/*\\\\\\nmodule-type: relinkoperator\\ntitle: $:/plugins/flibbles/relink-titles/relinkoperations/title.js\\ntype: application/javascript\\n\\nRenames tiddlers which have titles derived from fromTitle. Then it makes\\nsure that those tiddlers are properly relinked too.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar configPrefix = \\\"$:/config/flibbles/relink-titles/relink/\\\";\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n// This is using hotDirectories, which is a deprecat
{"title":"$:/plugins/sq/streams","name":"Streams","description":"Rapid data entry with a keyboard driven workflow. Divide content into smaller tiddlers as you write.","plugin-type":"plugin","plugin-priority":"1","author":"Saq Imtiaz","version":"1.2.24","core-version":">=5.1.23","list":"Settings CHANGELOG","source":"https://saqimtiaz.github.io/streams/","dependents":"$:/plugins/flibbles/relink","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/sq/streams/CHANGELOG\":{\"title\":\"$:/plugins/sq/streams/CHANGELOG\",\"text\":\"Release notes for the current release:\\n\\n{{$:/plugins/sq/streams/releasenotes}}\\n\\n[[Full changelog|https://saqimtiaz.github.io/streams/#CHANGELOG]] for Streams\\n\"},\"$:/plugins/sq/streams/Settings/config\":{\"title\":\"$:/plugins/sq/streams/Settings/config\",\"caption\":\"Configuration\",\"text\":\"\\\\define sortBySettingsGroupFilter()\\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\\n\\\\end\\n\\n\u003C$edit-text tiddler=\\\"$:/state/sq/streams/settings/search\\\" class=\\\"sq-search-input\\\" default=\\\"\\\" tag=\\\"input\\\" type=\\\"search\\\" placeholder=\\\"search...\\\"/>\\n\\n\u003Cdiv class=\\\"sq-list-group sq-list-group-box-shadow sq-list-stream-settings\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/sq/streams]has[settings-template]] +[search:title,caption,description{$:/state/sq/streams/settings/search}] +[sortsub\u003CsortBySettingsGroupFilter>]\\\">\\n\u003C$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\\\"list-condition\\\">\\n\u003Cdiv class=\\\"sq-list-group-item\\\">\\n\u003C$transclude tiddler={{!!settings-template}}/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/div>\"},\"$:/plugins/sq/streams/Settings/shortcuts\":{\"title\":\"$:/plugins/sq/streams/Settings/shortcuts\",\"caption\":\"Shortcuts\",\"text\":\"\\\\import $:/core/ui/ControlPanel/KeyboardShortcuts\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]removeprefix[$:/config/ShortcutInfo/]]\\\" variable=\\\"shortcutName\\\">\\n\u003C\u003Cshortcut-item>>\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\"},\"$:/plugins/sq/streams/Settings\":{\"title\":\"$:/plugins/sq/streams/Settings\",\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"Streams settings\",\"text\":\"\u003C\u003Ctabs \\\"$:/plugins/sq/streams/Settings/config $:/plugins/sq/streams/Settings/shortcuts\\\" \\\"$:/plugins/sq/streams/Settings/config\\\" \\\"$:/state/streams/settings/tabs\\\">>\\n\"},\"$:/plugins/sq/streams/action-macros\":{\"title\":\"$:/plugins/sq/streams/action-macros\",\"text\":\"\\\\whitespace trim\\n\\n\\\\define swiped-right-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[contextmenu]]\\\" variable=\\\"_NULL\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value={{$:/config/sq/streams/swipe-contextmenu-position}}/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define swiped-left-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cunindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define oncontext-menu-actions()\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value=\\\"left\\\"/>\\n
{"text":"{\n \"tiddlers\": {\n \"GeoTiddler\": {\n \"title\": \"GeoTiddler\",\n \"created\": \"20151130173416239\",\n \"modified\": \"20170115153450584\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"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\"\n },\n \"$:/plugins/sycom/leaflet/devDiary\": {\n \"title\": \"$:/plugins/sycom/leaflet/devDiary\",\n \"created\": \"20151110173416000\",\n \"modified\": \"20180531171500000\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Some notes about coding this plugin. Might be useful to others...\\n\\n* 20180602\\n** added a template that will display a map of embeded object for tiddlers containing one of the geoTiddlers fiels.\\n** updtated leaflet and marker-cluster to 1.3.1 - the easy way. Just replaced with new version and no deprecation at all \\\\o/ !\\n* 20180531\\n** converting all `.svg.tid` files to `.svg` + `.svg.meta` pairs. Will allow git client to make svg viewable in web interface. Also compressed SVG as much as possible with great https://jakearchibald.github.io/svgomg/ tool.\\n** tweak : for svg embedding local TiddlyWiki colors (eg `$primary$`), forced type to `text/vnd.tiddlywiki` to preserve them.\\n* 20170317\\n** lot of work around cluster size, cluster color when using filter. Cluster size depends on point % for the cluster, clusterRadius and zoom.\\n* 20170311\\n** added styling options and also the grouping tiddler capabilities. Discovered that direct styling in SVG ''does not always'' [[overwrite css styling|http://stackoverflow.com/questions/24293880/svg-why-does-external-css-override-inline-style-for-text]].\\n* 20170129\\n** adding some markers. And it's possible to create yours.\\n* 20170115\\n** darling birthday edit. Clustering by tiddler is on track. Will have to look for clustering direct passing object through widget.\\n* 20161111\\n** armistice edit! can now disable clustering or set clustering distance. Bug #9 fixed. may be cluster size will be too big for big databases\\n* 20161106\\n** color parameter is partially implemented. Note that direct styling like `fill` in svg element wont take on class styling through css...\\n* 20161104\\n** after many attemps, managed to include tiddler excerpt in popups for mapping ge
{"text":"/*\\\ncreated: 20151028202401905\nmodified: 20170318234011605\ntitle: $:/plugins/sycom/leaflet/mapWidget.tid\ntype: application/javascript\nmodule-type: widget\n\nA widget for displaying leaflet map in TiddlyWiki\n\n\\*/\n\n(function() {\n /* ----------------------- */\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n var Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n L = require(\"$:/plugins/sycom/leaflet/lib/leaflet.js\"),\n markerClusterGroup = require(\"$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js\");\n\n var mapWidget = function(parseTreeNode, options) {\n this.initialise(parseTreeNode, options);\n };\n\n // global vars\n var Map = [], // map collection\n map = 0, // map order number\n tn = 0, // tiddler number\n fCluster = [], // the clusters\n Colour = [], // the colors\n clusterRadius = [], // cluster radii\n clusterType = [], // clustering for whole map or for each tiddler\n lfltDefBounds = [\n [52.75, -2.55],\n [52.85, -2.65]\n ], // default bounds when nothing given\n bounds, // global bounds for map ?todo one per map?\n iter = [], // iteration indicator to avoid infinite loops\n setting = {}; // the map's settings\n\n /* Inherit from the base widget class */\n mapWidget.prototype = new Widget();\n\n /* Render this widget into the DOM */\n mapWidget.prototype.render = function(parent, nextSibling) {\n bounds = null;\n // Compute our attributes\n this.computeAttributes();\n // Get the base settings for rendering : width / height (default : 100% / 500px)\n // !todo : make a settings tidler in order to let user set it for the whole wiki (may be inspired from roadtree)\n // !todo what happens if windows is resized?\n var width = this.getAttribute(\"width\", \"100%\"),\n height = this.getAttribute(\"height\", \"500px\");\n // creating the div container\n var div = this.document.createElement(\"div\");\n div.setAttribute(\"id\", \"lfltMap-\" + map);\n div.setAttribute(\"style\", \"width:\" + width + \";height:\" + height);\n // Save the parent dom node\n this.parentDomNode = parent;\n // Compute our attributes\n // this.computeAttributes();\n // create the container\n parent.insertBefore(div, nextSibling);\n this.domNodes.push(div);\n // Create the map\n this.createMap();\n // Execute our logic\n this.execute();\n // increment map number indicator\n map += 1;\n };\n\n /* Create the map for the widget */\n mapWidget.prototype.createMap = function(parent, nextSibling) {\n // create the leaflet and push it to #lfltMap\n Map[map] = L.map('lfltMap-' + map);\n // Install base tile layer (if none provided, default is \"osm\")\n // get tilelayers from JSON\n var fonds = JSON.parse(this.wiki.getTiddlerText(\"$:/plugins/sycom/leaflet/lib/tileLayers.json\"));\n // create tile layers list object from json list\n var Tiles = []; // leaflet tile layers\n var tiles = {}; // tile identifier for control\n // look for tile parameter\n setting.tile = this.getAttribute(\"tile\", \"osm\");\n setting.marker = this.getAttribute(\"marker\", null);\n // create tile layer list\n for (var i in fonds) {\n if (i == setting.tile || fonds[i].id == setting.tile) {\n setting.tile = fonds[i].id;\n }\n var couche = new L.TileLayer(fonds[i].url, {\n attribution: fonds[i].attrib,\n minZoom: fonds[i].zMin,\n maxZoom: fonds[i].zMax,\n unloadInvisibleTiles: true\n });\n Tiles[fonds[i].id] = couche;\n tiles[fonds[i].
{"title":"$:/plugins/tiddlywiki/filesystem","name":"Filesystem","description":"Synchronize changes from the node.js server to the local filesystem","list":"readme","version":"5.3.1","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/filesystem/filesystemadaptor.js\":{\"title\":\"$:/plugins/tiddlywiki/filesystem/filesystemadaptor.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/filesystem/filesystemadaptor.js\\ntype: application/javascript\\nmodule-type: syncadaptor\\n\\nA sync adaptor module for synchronising with the local filesystem via node.js APIs\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Get a reference to the file system\\nvar fs = $tw.node ? require(\\\"fs\\\") : null,\\n\\tpath = $tw.node ? require(\\\"path\\\") : null;\\n\\nfunction FileSystemAdaptor(options) {\\n\\tvar self = this;\\n\\tthis.wiki = options.wiki;\\n\\tthis.boot = options.boot || $tw.boot;\\n\\tthis.logger = new $tw.utils.Logger(\\\"filesystem\\\",{colour: \\\"blue\\\"});\\n\\t// Create the \u003Cwiki>/tiddlers folder if it doesn't exist\\n\\t$tw.utils.createDirectory(this.boot.wikiTiddlersPath);\\n}\\n\\nFileSystemAdaptor.prototype.name = \\\"filesystem\\\";\\n\\nFileSystemAdaptor.prototype.supportsLazyLoading = false;\\n\\nFileSystemAdaptor.prototype.isReady = function() {\\n\\t// The file system adaptor is always ready\\n\\treturn true;\\n};\\n\\nFileSystemAdaptor.prototype.getTiddlerInfo = function(tiddler) {\\n\\t//Returns the existing fileInfo for the tiddler. To regenerate, call getTiddlerFileInfo().\\n\\tvar title = tiddler.fields.title;\\n\\treturn this.boot.files[title];\\n};\\n\\n/*\\nReturn a fileInfo object for a tiddler, creating it if necessary:\\n filepath: the absolute path to the file containing the tiddler\\n type: the type of the tiddler file (NOT the type of the tiddler -- see below)\\n hasMetaFile: true if the file also has a companion .meta file\\n\\nThe boot process populates this.boot.files for each of the tiddler files that it loads.\\nThe type is found by looking up the extension in $tw.config.fileExtensionInfo (eg \\\"application/x-tiddler\\\" for \\\".tid\\\" files).\\n\\nIt is the responsibility of the filesystem adaptor to update this.boot.files for new files that are created.\\n*/\\nFileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) {\\n\\t// Always generate a fileInfo object when this fuction is called\\n\\tvar title = tiddler.fields.title, newInfo, pathFilters, extFilters,\\n\\t\\tfileInfo = this.boot.files[title];\\n\\tif(this.wiki.tiddlerExists(\\\"$:/config/FileSystemPaths\\\")) {\\n\\t\\tpathFilters = this.wiki.getTiddlerText(\\\"$:/config/FileSystemPaths\\\",\\\"\\\").split(\\\"\\\\n\\\");\\n\\t}\\n\\tif(this.wiki.tiddlerExists(\\\"$:/config/FileSystemExtensions\\\")) {\\n\\t\\textFilters = this.wiki.getTiddlerText(\\\"$:/config/FileSystemExtensions\\\",\\\"\\\").split(\\\"\\\\n\\\");\\n\\t}\\n\\tnewInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\\n\\t\\tdirectory: this.boot.wikiTiddlersPath,\\n\\t\\tpathFilters: pathFilters,\\n\\t\\textFilters: extFilters,\\n\\t\\twiki: this.wiki,\\n\\t\\tfileInfo: fileInfo\\n\\t});\\n\\tcallback(null,newInfo);\\n};\\n\\n\\n/*\\nSave a tiddler and invoke the callback with (err,adaptorInfo,revision)\\n*/\\nFileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback,options) {\\n\\tvar self = this;\\n\\tvar syncerInfo = options.tiddlerInfo || {};\\n\\tthis.getTiddlerFileInfo(tiddler,function(err,fileInfo) {\\n\\t\\tif(err) {\\n\\t\\t\\treturn callback(err);\\n\\t\\t}\\n\\t\\t$tw.utils.saveTiddlerToFile(tiddler,fileInfo,function(err,fileInfo) {\\n\\t\\t\\tif(err) {\\n\\t\\t\\t\\tif ((err.code == \\\"EPERM\\\" || err.code == \\\"EACCES\\\") && err.syscall == \\\"open\\\") {\\n\\t\\t\\t\\t\\tfileInfo = fileInfo || self.boot.files[tiddler.fields.title];\\n\\t\\t\\t\\t\\tfileInfo.writeError = true;\\n\\t\\t\\t\\t\\tself.boot.files[tiddler.fields.title] = fileInfo;\\n\\t\\t\\t\\t\\t$tw.syncer.log
{"title":"$:/plugins/tiddlywiki/menubar","name":"Menu Bar","description":"Menu Bar","list":"readme config","version":"5.3.1","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/DefaultColourMappings/menubar-foreground\":{\"title\":\"$:/config/DefaultColourMappings/menubar-foreground\",\"text\":\"#fff\"},\"$:/config/DefaultColourMappings/menubar-background\":{\"title\":\"$:/config/DefaultColourMappings/menubar-background\",\"text\":\"#5778d8\"},\"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols\":{\"title\":\"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols\",\"text\":\"hide\"},\"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server\":{\"title\":\"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server\",\"text\":\"hide\"},\"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar\":{\"title\":\"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar\",\"text\":\"hide\"},\"$:/config/plugins/menubar/TableOfContents/Tag\":{\"title\":\"$:/config/plugins/menubar/TableOfContents/Tag\",\"text\":\"TableOfContents\"},\"$:/config/plugins/menubar/breakpoint\":{\"title\":\"$:/config/plugins/menubar/breakpoint\",\"text\":\"620px\"},\"$:/plugins/tiddlywiki/menubar/config\":{\"title\":\"$:/plugins/tiddlywiki/menubar/config\",\"tags\":\"$:/tags/ControlPanel/Toolbars\",\"caption\":\"Menu Bar\",\"text\":\"\\\\define config-base() $:/config/plugins/menubar/MenuItems/Visibility/\\n\\n! Menu Bar Configuration\\n\\n!! Menu Items\\n\\nSelect which menu items will be shown. You can also drag items to reorder them.\\n\\n\u003C$set name=\\\"tv-config-toolbar-icons\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-text\\\" value=\\\"yes\\\">\\n\\n\u003C$macrocall $name=\\\"list-tagged-draggable\\\" tag=\\\"$:/tags/MenuBar\\\" itemTemplate=\\\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\\\"/>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\\n\\n!! Breakpoint Position\\n\\nThe breakpoint position between narrow and wide screens. Should include CSS units (eg. `400px`).\\n\\n\u003C$edit-text tiddler=\\\"$:/config/plugins/menubar/breakpoint\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n!! Contents Tag\\n\\nThe tag for the ~TableOfContents used in the Contents dropdown\\n\\n\u003C$edit-text tiddler=\\\"$:/config/plugins/menubar/TableOfContents/Tag\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n!! Menu Bar Colours\\n\\nTo change the colour of the menu bar, define the colours `menubar-foreground` and `menubar-background` in the currently selected palette\\n\"},\"$:/plugins/tiddlywiki/menubar/items/contents\":{\"title\":\"$:/plugins/tiddlywiki/menubar/items/contents\",\"caption\":\"Contents\",\"description\":\"Table of Contents\",\"is-dropdown\":\"yes\",\"tags\":\"$:/tags/MenuBar\",\"text\":\"\u003Cdiv class=\\\"tc-table-of-contents\\\">\\n\\n\u003C$macrocall $name=\\\"toc-selective-expandable\\\" tag={{$:/config/plugins/menubar/TableOfContents/Tag}}/>\\n\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/menubar/items/hamburger\":{\"title\":\"$:/plugins/tiddlywiki/menubar/items/hamburger\",\"tags\":\"$:/tags/MenuBar\",\"caption\":\"Hamburger\",\"description\":\"Show the full menu bar on a narrow screen\",\"custom-menu-content\":\"{{$:/plugins/tiddlywiki/menubar/items/hamburger}}\",\"show-when\":\"narrow\",\"text\":\"\u003C$list filter=\\\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[no]]\\\">\\n\u003C$button set=\\\"$:/state/popup/menubar/hamburger\\\" setTo=\\\"yes\\\">\\n{{$:/core/images/menu-button}}\\n\u003C/$button>\\n\u003C/$list>\\n\u003C$list filter=\\\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[yes]]\\\">\\n\u003C$button set=\\\"$:/state/popup/menubar/hamburger\\\" setTo=\\\"no\\\">\\n{{$:/core/images/close-button}}\\n\u003C/$button>\\n\u003C/$list>\\n\"},\"$:/plugins/tiddlywiki/menubar/items/pagecontrols\":{\"title\":\"$:/plugins/tiddlywiki/me
{"title":"$:/plugins/tiddlywiki/menubar/config","tags":"$:/tags/ControlPanel/Toolbars","caption":"Menu Bar","text":"\\define config-base() $:/config/plugins/menubar/MenuItems/Visibility/\n\n! Menu Bar Configuration\n\n!! Menu Items\n\nSelect which menu items will be shown. You can also drag items to reorder them.\n\n\u003C$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n\u003C$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n\u003C$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/MenuBar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n\u003C/$set>\n\n\u003C/$set>\n\n!! Breakpoint Position\n\nThe breakpoint position between narrow and wide screens. Should include CSS units (eg. `400px`).\n\n\u003C$edit-text tiddler=\"$:/config/plugins/menubar/breakpoint\" default=\"\" tag=\"input\"/>\n\n!! Contents Tag\n\nThe tag for the ~TableOfContents used in the Contents dropdown\n\n\u003C$edit-text tiddler=\"$:/config/plugins/menubar/TableOfContents/Tag\" default=\"\" tag=\"input\"/>\n\n!! Menu Bar Colours\n\nTo change the colour of the menu bar, define the colours `menubar-foreground` and `menubar-background` in the currently selected palette\n"},
{"title":"$:/plugins/tiddlywiki/menubar/items/topleftbar","tags":"$:/tags/MenuBar","description":"Items from $:/tags/TopLeftBar","caption":"Legacy Top Left Bar","custom-menu-content":"\u003C$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/topleftbar\" mode=\"inline\"/>","text":"\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"inline\"/>\n\n\u003C/$list>"},
{"title":"$:/plugins/tiddlywiki/menubar/items/toprightbar","tags":"$:/tags/MenuBar","description":"Items from $:/tags/TopRightBar","caption":"Legacy Top Right Bar","custom-menu-content":"\u003C$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/toprightbar\" mode=\"inline\"/>","custom-menu-styles-wide":"float: right;","text":"\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]reverse[]]\" variable=\"listItem\" storyview=\"pop\">\n\n\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"inline\"/>\n\n\u003C/$list>"},
{"created":"20231014024330642","creator":"copincha","title":"$:/state/sq/streams/current-edit-tiddler-586171394","text":"Desarrollo del wiki/20231014024330637","modified":"20231014024330642","modifier":"copincha"},
{"created":"20231011012631751","text":"* boquillas\nresistencia \nbmg\n\nconstruccion de impresoras\n","tags":"","title":"3d -- lista","modified":"20231011022037395"},
{"created":"20230928041724703","text":"\u003Ccenter>[img height=150px [media/image/copincha-logo.png]]\u003C/center>\n\n''Copincha'' es un [[hackerspace|Hackerspace]] situado en La Habana. Es un laboratorio para el desarrollo de collectividades alrededor de las technologías digitales, la filosofía de hazlo tu mismo (DIY) y la colaboración abierta. \n\n\n\u003C\u003C\u003C\nEn la jerga local cubana, \"pincha\" significa trabajo. Copincha así se traduce como trabajo colaborativo.\n\n\u003C\u003C\u003C\n\nFacilitamos un programa de talleres y charlas, desde las que se generan preguntas, opiniones, ayuda y soluciones colectivas.\n\nEmpleamos herramientas digitales que nos dan autonomía y en la medida de lo posible soberanía sobre nuestros datos, mantenemos así nuestro propio [[repositorio de código abierto|https://git.copincha.org/]]. Aprendemos juntos cosas nuevas con cada proyecto y mantenemos documentación de nuestras actividades en [[Copinchapedia|https://copinchapedia.copincha.org/]].\n\nCopincha es un laboratorio comunitario. En el argot cubano, \"pincha\" significa trabajo, por lo que \"Copincha\" puede entenderse como \"trabajo colectivo\".\n\nBasados en las filosofías del \"Hágalo Ud mismo (DIY)\" y \"Hagámoslo juntos (DIWO)\", utilizamos métodos colaborativos y de código abierto para compartir conocimientos y desarrollar soluciones a retos locales, como la escasez de recursos y el acceso limitado a Internet. Organizamos charlas, talleres, reuniones informales llamadas \"Sorpresas de Café\" donde discutimos el impacto social y el potencial de varias tecnologías. \n\nPromovemos prácticas transdisciplinares sostenibles que puedan ser documentadas, compartidas y reproducidas por otros. Somos un colectivo bastante heterogéneo - ingenieros, hackers, hobbistas, diseñadores, científicos, artistas, ... que nos gusta compartir saberes y apoyarnos mutuamente en nuestros proyectos - en contacto a través de grupos de WhatsApp y Telegram. También apoyamos a otros grupos proporcionándoles espacio y acceso a conocimientos y a la infraestructura tecnológica comunitaria que juntos vamos construyendo en la marcha.","title":"About","modified":"20231011030653589","tags":"contenidos"},
{"created":"20231001004026091","text":"","tags":"todo","title":"agregar marca de licencia creative commons","modified":"20231001050110801"},
{"created":"20230928192600848","text":"Maurice es el cofundador de un hackerspace/laboratorio comunitario en La Habana, Cuba, donde sus miembros desarrollan y comparten soluciones de código abierto a retos locales, como la escasez de recursos y el acceso limitado a Internet. Uno de sus principales proyectos actuales trata sobre la conversión de residuos plásticos en filamentos que puedan alimentar impresoras 3D, que a su vez pueden construirse con piezas impresas a partir de plástico reciclado. Ha impartido cursos de formación sobre todo este proceso, desde la clasificación de los tipos de plástico hasta la construcción de extrusoras de bricolaje, pasando por el modelado 3D paramétrico y el resto del flujo de trabajo de la impresión 3D. (Puedes leer más sobre su trayectoria y el hackerspace en su página web: https://m00.copincha.org/) ¿Le interesaría este tipo de taller a Resistor?\nMaurice estará en Estados Unidos este verano para asistir a la Conferencia sobre la Web Descentralizada (DWeb) del Archivo de Internet y hacer una residencia en el Action Lab de Nueva York, pero tendrá mucho tiempo libre a finales de julio y agosto. Viene con un visado de negocios/turismo, por lo que no puede realizar trabajos remunerados, pero estaría encantado de ofrecer una clase de forma voluntaria. En cualquier caso, tiene muchas ganas de visitar Resistor cuando llegue.","tags":"","title":"carta resistor","modified":"20230928192613885"},
{"created":"20231011030508240","creator":"copincha","text":"Copincha es un hackerspace sin ánimo de lucro y totalmente voluntario en La Habana. Un lugar para que la gente se reúna y socialice, trabaje en proyectos y comparta conocimientos.\u003Cbr>\u003Cbr>\nDamos la bienvenida a cualquier persona interesada en el arte, la artesanía y la tecnología. Le invitamos a venir, trabajar y ser parte de la comunidad. \u003Cbr>\u003Cbr>\nEn la jerga local cubana, \"pincha\" significa trabajo. Por lo tanto, Copincha se traduce como trabajo colaborativo. ","modified":"20231014014416240","title":"copincha--about--descripcion-corta","tags":"","modifier":"copincha"},
{"created":"20231011030535123","text":"Facilitamos un programa de talleres y charlas donde generamos preguntas, opiniones, ayuda y soluciones de manera colectiva, y donde discutimos el impacto social y el potencial de diversas tecnologías. \n\nEmpleamos herramientas digitales que nos otorgan autonomía y, en la medida de lo posible, soberanía sobre nuestros datos.\n\n Mantenemos nuestro propio repositorio de código abierto y aprendemos juntos con cada proyecto. Además, documentamos nuestras actividades en Copinchapedia, nuestra enciclopedia colaborativa.\n\nNos encanta compartir conocimientos y apoyarnos mutuamente en nuestros proyectos es por ellos que promovemos las prácticas que puedan ser documentadas, compartidas y reproducidas por otros.\n\nMantenemos un contacto constante a través de grupos de WhatsApp y Telegram.\n\nBrindamos nuestro apoyo a otros grupos, proporcionándoles espacio y acceso a conocimientos y recursos tecnologicos que colectivizamos sobre la marcha.\n\nEstamos comprometidos con fomentar el trabajo colaborativo, el aprendizaje continuo y la difusión del conocimiento. Si deseas formar parte de nuestra comunidad y explorar las posibilidades de la tecnología, eres bienvenido ","modified":"20231011030606915","title":"copincha--about--descripcion-larga","tags":""},
{"created":"20231010162841130","text":"Copincha es un hackerspace sin fines de lucro y totalmente voluntario en la ciudad de La Habana. Nuestro espacio es un lugar para que las personas se reúnan y socialicen, trabajen en proyectos y compartan conocimientos. Damos la bienvenida a cualquier persona interesada en el arte, la artesanía y la tecnología aprender, trabajar y ser parte de la comunidad.","tags":"","title":"copincha--descripcion--1","modified":"20231011012622220"},
{"created":"20231001034828011","creator":"copincha","text":"{{!!banner}}\n\n! {{!!name}}\n\nLaboratorio iniciado en 2021 para fomentar la búsqueda de soluciones de impresión 3D asequibles y respetuosas con el medio ambiente en Cuba. En este proyecto construimos extrusoras de filamento de plástico reciclado que se utiliza como materia prima para las [[impresoras 3D RepRap]] que también construimos \n\nWeb: {{!!web}}\n","tags":"impresion-3d copincha--actividad--proyecto","title":"copincha--projecto--3d-a-lo-cubano","modified":"20231014012553894","caption":"{{!!name}}","name":"3D a lo Cubano","banner":"[img [./media/3d-a-lo-cubano--banner.svg]]","web":"https://3d-a-lo-cubano.copincha.org/","modifier":"copincha"},
{"created":"20230930234024042","creator":"copincha","text":"{{!!banner}}\n\n! {{!!name}}\n\nEs un proyecto de colaboración abierta para combatir la contaminación plástica en La Habana. Como nodo local de la red global [[Precious Plastic|https://preciousplastic.com]], conectamos sus conocimientos y experiencias con las locales.\n\nWeb: https://pph.copincha.org\n\n\n\n\n\n\n\n\n","title":"copincha--proyecto--hackerspace","modified":"20231014012609747","tags":"copincha--actividad--proyecto","banner":"[img [./media/hackerspace--banner.svg]]","name":"Copincha Hackerspace","caption":"{{!!name}}","modifier":"copincha"},
{"created":"20230928081511282","creator":"copincha","text":"{{!!banner}}\n\n! {{!!name}}\n\nEs un proyecto de colaboración abierta para combatir la contaminación plástica en La Habana. Como nodo local de la red global [[Precious Plastic|https://preciousplastic.com]], conectamos sus conocimientos y experiencias con las locales.\n\nWeb: https://pph.copincha.org\n\n\n\n\n\n\n\n\n","title":"copincha--proyecto--pph","modified":"20231014012622618","tags":"plastico reciclaje copincha--actividad--proyecto","banner":"[img [./media/pph--banner.svg]]","name":"Precious Plastic Havana","caption":"{{!!name}}","modifier":"copincha"},
{"created":"20231011130355678","text":"!Red\n\n{{copincha--red--descripcion}}\n\n{{copincha--red--mapa}}\n\n[[Ver mas ... |About]]","modified":"20231013212132022","title":"copincha--red--como-funciona","tags":"copincha--red","caption":"Como funciona"},
{"created":"20231011031026486","text":"Bienvenidos a Copincha\n\nEs una red voluntaria de creadores en torno a la tecnologia iniciada en la Habana, aunque sus miembros viven y colaboran desde Cuba y otras partes en el mundo. \n\n> En la jerga local cubana, \"pincha\" significa trabajo. Copincha así se traduce como trabajo colaborativo.\n\nFacilitamos encuentros, talleres y charlas donde discutimos el impacto social y el potencial de diversas tecnologías y donde generamos preguntas, opiniones, ayuda y soluciones de manera colectiva.\n\nEmpleamos herramientas digitales que nos otorgan autonomía y, en la medida de lo posible, soberanía sobre nuestros datos.\n\nMantenemos nuestro propio repositorio de código abierto y aprendemos juntos con cada proyecto. Además, documentamos nuestras actividades en Copinchapedia, nuestra enciclopedia colaborativa.\n\n\nNos encanta compartir conocimientos y apoyarnos mutuamente en nuestros proyectos es por ellos que promovemos las prácticas que puedan ser documentadas, compartidas y reproducidas por otros.\n\nMantenemos un contacto constante a través de grupos de WhatsApp y Telegram.\n\nBrindamos nuestro apoyo a otros grupos, proporcionándoles espacio y acceso a conocimientos y recursos tecnologicos que colectivizamos sobre la marcha.\n\nEstamos comprometidos con fomentar el trabajo colaborativo, el aprendizaje continuo y la difusión del conocimiento. Si deseas formar parte de nuestra comunidad y explorar las posibilidades de la tecnología, eres bienvenido\n\nLe invitamos a ser parte de la comunidad.\n\n\u003Cbr>\n\n\n","modified":"20231013212308959","title":"copincha--red--descripcion","tags":""},
{"created":"20231001043217539","text":"* ''Gente'' \u003Cbr>\u003Cbr> Personas dispuestas a ayudar y colaborar en proyectos y actividades.\u003Cbr>\u003Cbr>\n\n\u003C\u003Ctoc-selective-expandable 'miembros'>>\n","title":"copincha--red--gente","caption":"Gente","description":"Sobre los miembros","is-dropdown":"yes","tags":"copincha--red","modified":"20231013212235287","list-before":"$:/plugins/tiddlywiki/menubar/items/join"},
{"created":"20231011034704437","text":"!! Tipo de espacios:\n\n* ''Laboratorio Colectivo'' \u003Cbr>\u003Cbr> Lugares donde las personas se reúnen y socializan, trabajan en proyectos y compartan conocimientos. \u003Cbr>\u003Cbr>\n\n* ''Laboratorio Personal'' \u003Cbr>\u003Cbr> Varios de los miembros de copincha tienen su propio taller en su casa. Ellos comparten sus recursos para mantener vivva la red apoyando los proyectos de la comunidad. \u003Cbr>\u003Cbr>","modified":"20231013212212675","title":"copincha--red--laboratorios","tags":"copincha--red","caption":"Laboratorios"},
{"created":"20230928063648195","text":"Te puedes unir de la siguiente forma","tags":"copincha--red","title":"copincha--red--unirse","modified":"20231013212249685","caption":"Unirse"},
{"created":"20230929172520412","text":"https://bun.sh/","tags":"","title":"crear servidor alternativa a node.js","modified":"20230929172545663"},
{"created":"20230927222942065","modified":"20230927222942065","title":"Crear una Paleta","text":"Crear una paleta\n\npara crear una paleta solo debes copiar el tiddler de paleta que tienes la etiqueta $:/tags/Palette\n\nuna vez copiada cambiar los valores en los campos ","tags":""},
{"created":"20230927063243063","creator":"copincha","text":"Aprendizaje-tw\n\n* [[Crear una Paleta]]\n\nPor hacer en el wiki:\n\n* ","tags":"Notas","title":"Desarrollo del wiki","modified":"20231014024339245","stream-list":"[[Desarrollo del wiki/20230928050314967]] [[Desarrollo del wiki/20231014024330637]]","stream-type":"default","modifier":"copincha"},
{"created":"20230928050314973","text":"[[quitar elementos de tiddler]]","parent":"Desarrollo del wiki","stream-type":"default","stream-list":"","modified":"20230928050332953","title":"Desarrollo del wiki/20230928050314967"},
{"created":"20231014024330640","creator":"copincha","text":"","parent":"Desarrollo del wiki","stream-type":"default","stream-list":"","modified":"20231014024330640","modifier":"copincha","title":"Desarrollo del wiki/20231014024330637"},
{"created":"20230928160731701","text":"Un diseño intersticial es un enfoque de diseño que se utiliza en diversas disciplinas, como la arquitectura, el diseño web, el diseño gráfico y otros campos creativos. El término \"intersticial\" se refiere a algo que está ubicado o que ocurre entre dos cosas o en un espacio intermedio. En el contexto del diseño, un diseño intersticial implica crear elementos, estructuras o soluciones que se insertan de manera armónica y funcional en un espacio o contexto existente.\n\nAquí hay ejemplos de cómo se puede aplicar el concepto de diseño intersticial en diferentes campos:\n\n1. Diseño web: En diseño web, un anuncio intersticial es un tipo de anuncio que se muestra a los usuarios entre las páginas de un sitio web. Por lo general, aparece antes de que el usuario acceda al contenido deseado y puede ocupar toda la pantalla temporalmente. El objetivo es captar la atención del usuario antes de que vea el contenido principal del sitio web.\n\n2. Arquitectura: En arquitectura, un diseño intersticial podría referirse a la creación de una estructura o edificio que se integra de manera armoniosa en un entorno existente. Esto implica considerar cuidadosamente el contexto circundante y diseñar la nueva estructura de manera que se mezcle con el entorno en lugar de destacarse de manera discordante.\n\n3. Diseño gráfico: En diseño gráfico, un diseño intersticial podría referirse a la creación de elementos gráficos que se insertan entre otros elementos en una composición de diseño, como imágenes, texto o ilustraciones. Estos elementos intersticiales pueden utilizarse para separar secciones de contenido o agregar interés visual.\n\nEn resumen, un diseño intersticial es un enfoque que se centra en la integración armoniosa y efectiva de elementos o soluciones en un espacio o contexto existente, ya sea en diseño web, arquitectura, diseño gráfico u otras disciplinas creativas. El objetivo es lograr una transición fluida y una experiencia cohesiva para los usuarios o espectadores.","title":"Diseno intersticial","modified":"20230928165618248"},
{"created":"20230928163648359","text":"El diseño participativo intersticial es un enfoque de diseño que promueve la participación activa de diferentes actores y partes interesadas en el proceso de diseño de un sistema, producto o servicio. Se basa en la idea de que la participación y la colaboración de diversas perspectivas pueden generar soluciones más inclusivas y efectivas.\n\nLa palabra \"intersticial\" se refiere a los espacios o momentos dentro del proceso de diseño en los que se fomenta la participación. Estos espacios suelen ser momentos de encuentro y diálogo entre los diseñadores y las personas que serán afectadas o beneficiadas por el diseño. El objetivo es promover la co-creación, la retroalimentación y la toma de decisiones conjuntas.\n\nEn un diseño participativo intersticial, se busca incluir a diferentes partes interesadas, como usuarios finales, expertos en la materia, diseñadores, desarrolladores y otros actores relevantes. Cada uno aporta su conocimiento, experiencia y opiniones para enriquecer el proceso de diseño.\n\nEste enfoque intersticial se caracteriza por ser iterativo y flexible. Se pueden organizar talleres, sesiones de lluvia de ideas, pruebas de prototipos y otras actividades que permitan la participación activa de todos los involucrados. Además, se fomenta la transparencia y la apertura en la comunicación, para construir una relación de confianza entre los participantes.\n\nEl diseño participativo intersticial tiene como objetivo final desarrollar soluciones más contextualizadas y adaptadas a las necesidades reales de las personas. Al involucrar a los usuarios y otras partes interesadas desde las primeras etapas del diseño, se pueden evitar problemas potenciales y generar soluciones más satisfactorias.","title":"Diseno participativo intersticial","modified":"20230928165555359"},
{"created":"20231013232147363","creator":"copincha","text":"\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n\u003Cdiv class=\"tc-control-panel\">\n\n|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k\n| \u003C$link to=\"$:/SiteTitle\">\u003C\u003Clingo Title/Prompt>>\u003C/$link>|\u003C$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n| \u003C$link to=\"$:/SiteSubtitle\">\u003C\u003Clingo Subtitle/Prompt>>\u003C/$link>|\u003C$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|^ \u003C$link to=\"$:/DefaultTiddlers\">\u003C\u003Clingo DefaultTiddlers/Prompt>>\u003C/$link>\u003Cbr>\u003C\u003Clingo DefaultTiddlers/TopHint>>|\u003C$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/>\u003Cbr>//\u003C\u003Clingo DefaultTiddlers/BottomHint>>// |\n\u003C/div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n","title":"GettingStarted","modified":"20231013232147363","modifier":"copincha"},
{"created":"20210304163741217","text":"! {{!!title}}\n\nLos hackerspaces son lugares físicos gestionados de forma comunitaria, donde las personas se reunen y comparten su interés por la tecnología, trabajan en sus proyectos y aprenden de los demás.","type":"text/vnd.tiddlywiki","tmap.id":"45ae7ea8-487e-4aae-973e-2ee87dd23a67","title":"Hackerspace","tags":"glosario","modifier":"M0","modified":"20230930070215504","creator":"M0"},
{"created":"20231001035659543","text":"Las impresoras 3D RepRap son impresoras que pueden autorreplicarse imprimiendo un kit de sus propias piezas, un kit que cualquiera puede montar con tiempo y materiales.","title":"impresoras 3D RepRap","modified":"20231001035701384"},
{"created":"20230928161216472","text":"La intersticialidad se refiere a la característica de estar ubicado o existir en el espacio entre cosas o elementos. \n\nEspacio intersticial en el contexto social y cultural:** A nivel social y cultural, la intersticialidad se puede usar para describir la experiencia o la identidad de personas o grupos que se encuentran en un espacio entre dos culturas, identidades, o roles sociales. Esto puede ser relevante en discusiones sobre migración, identidad étnica, o cualquier situación en la que una persona o grupo se sienta \"en el medio\" de dos realidades culturales o sociales.","title":"Intersticialidad","modified":"20230928165539638"},
{"created":"20230928073732659","text":"[[Intersticialidad]]\n\n[[Diseno intersticial]]\n\n[[Diseno participativo intersticial]]\n\n[[Ventajas de la instersticialidad]]\n\n[[Ventajas de la instersticialidad 1]]\n\n[[La maquina intersticial 1]]\n\n[[carta resistor]]\n\n---\n\n# A quien van dirijido?\n\n# Cuantas sesiones serian?\n\n# Cuales son los colectivo?\n\n* XFR\n\n* Archivistas\n\n* Bases?\n\n* Tecnologia como un proceso rizomatico\n\n** En la medida que somos capaces de crear e interconectar alternativas reevaluamos el pontencial de la tecnologia para nosotors mismo y nuestra comunidad.\n\nIntersticialidad \n\n\n* diy-diwo\n** hardware abierto\n*** opensource vs privado \n*** opensorce y autonomia comunitaria\n*** opensource y sentido de pertenencia\n*** amplificar la participacion\n***pequena escala\n***vista panoramica\n\n* sinergia\n** tejido comunitario.\n*** tejido con el territorios\n** tejido digital desde lo online\n*** trabajar en red, (con otros colectivos, otros contextos)\n** que problemas solucionan?\n*** reciclaje. \n\nofrecer a partir de la escusa de la maquina,.\n\ntoca las 3 patas:\n\nmedioambiental del reciclaje\nreuso\n\nsocial\nparticipacion \n\ndisenar de manera colectiva y abierta. \n\n* openstructures\n\n** disenar con una pauta en comun\n** disenar metasistemas:\n** contienen y organizan la diversidad\n\n\n....\n\n2. definir las dinamicas\n\n * desarrolalr diferentes proyectos o miniproyectos que haya en diferentes colectivos,.\n * la creatividad en sinergias. caso habana . poder explircar como se va articulando. \n * poder comunica, comunicar, sistematizar. \n * modulos,. como hacer maquinas de forma modular, y para que:\n\n la suma de trabajar en colectivo que la suma de las partes\n\n \n\n","title":"La maquina intersticial","modified":"20231013204635919","tags":"page--actividades--talleres"},
{"created":"20230928192759382","text":"! La maquina intersticial\n\nPropuestas:\n\n# Como disenar de forma modular para reciclar, reusar y reparar y reciclar.\u003Cbr>\u003Cbr>\n\n# Como fabricar tu propio filamento 3D a partir de botellas de plástico reciclado.\u003Cbr>\u003Cbr>\n\n# Construir cosas creando intersticialidad participativa.\u003Cbr>\u003Cbr>\n\nIntersectar la actividad entre las redes:\n\n* Precious Plastic.\nRed mundial de recicladores con soluciones de código abierto \n\n* Openstructures\n\nOpenStructures es un modelo de construcción modular de código abierto basado en una retícula geométrica compartida, denominada retícula OS. Fue concebido por el diseñador Thomas Lommée.\n\nSegún Lommee, el proyecto OpenStructures explora la posibilidad de un sistema modular en el que \"todo el mundo diseña para todo el mundo\". OpenStructures está desarrollando una base de datos en la que cualquiera puede compartir diseños que, a su vez, están a disposición del público para su descarga. Cada diseño de componente en el sistema OS contará con piezas OS previamente diseñadas que se utilizaron para crearlo. Además, cada pieza contará con diseños de componentes que puedan fabricarse a partir de ella.\n\nEl modelo OpenStructures incluye a fabricantes a gran y pequeña escala, así como a artesanos. Se les invita a crear sus propios diseños de acuerdo con el estándar OS para su venta en el mercado, que a su vez pueden arreglarse o desmontarse al final de su vida útil y convertirse en nuevos productos[3].\n\nRed de fabricación a base de una retícula modular de diseño común y la red Reprap de construcción de máquinas autorreplicables de código abierto. A través de la comprensión de estas relaciones colaborativas, desarrollaremos sistemas sinérgicos que permitan a los participantes reflexionar sobre la construcción de comunidades más resilientes. donde se promueve el reuso de componentes y materiales. y tambien que las maquinas puedan ser construidas con l mayor variedad de procesos disponibles localmente y sin mucha complejid de formas en sus partes para ue cualquiera pueda reproducir estas partes por mas cantidad de procesos.\n\nDurante estos cursos, abordaremos temáticas fundamentales:\n\n* La clasificación de los plásticos y su importancia en el proceso de reciclaje local\n\n* El proceso de transformar estos residuos plásticos en filamentos aptos para ser utilizados en impresoras 3D.\n\n* El diseno modular usando la reticula de openstructures y su importancia para la reutilizacion de componentes y la creacion de dinamicas aprticipativas.\n\n* El diseno 3D y la creación de modelos paramétricos, utilizando software de codigo abierto. donde Los participantes aprenderán a modelar piezas y objetos que se adaptarán a las necesidades específicas de cada proyecto. Fomentando la creatividad y la personalización. \n\n\ntodo esto es la practica que tengo,. que se enfoca ahora po busca en lo instersticial. o se cohesiona como practica hlistica. \n\n\nLas técnicas fabricacion digital asociados\n\nAbordaremos esto revisando la construcción diy de extrusores de filamentos de impresion 3D y , desde la búsqueda de relaciones intersticiales entre distintas redes, los participantes aprenderán a construir estos extrusores a través de un enfoque DIY (Do It Yourself) y DIWO (Do It With Others). Se fomentará el reuso de las partes diseñadas, promoviendo así el valor de la economía circular y el aprovechamiento de recursos.\n\nEn resumen, los cursos de formación que ofrecemos proporcionarán a los participantes las habilidades y conocimientos necesarios para la construcción y utilización de impresoras 3D que funcionen gracias a filamentos obtenidos a partir de plástico reciclado. Trabajaremos de forma colaborativa, aprovechando las ventajas del código abierto, el diseño modular y la autorreplicación de máquinas para crear comunidades más resilientes.","tags":"","title":"La maquina intersticial 1","modified":"20231010160818097"},
{"created":"20231003131647616","text":"","tags":"todo","title":"mapa - quitar controles de zoom","modified":"20231003131743167"},
{"created":"20231002010512928","text":"* mediar cada resistecia con el pirometro para saber el maximo de temperatura a 12v\n\n** si hay una resistencia que trabaja a 12V\n*** deberia pinchar todo bien\n\n** si no alcanza la temperatura \n*** hay que probar con otra fuente \n*** saber que tipo de resistencia tengo \n**** medir la resistencia interna 12v miden 1 ohm , las de 24 v miden 4 o 7 v\n*** si me dan de 24 v entonces tengo que comprar una de 12 v \n\n*** si me dan de 12 v entonces el problema parece ser en la fuente. \n\n**** si es la fuente entonces debo cambiar la fuente a una de 12v con mas de 6 amperes. \n\n**** y entonces mirar como se comporta con el pirometro,.\n\n\n\n\n\n\n\n","tags":"todo","title":"maquina de filamento","modified":"20231002011301307"},
{"created":"20230928091359995","creator":"copincha","text":"{{copincha--actividad}}\n","title":"page--actividad","caption":"Actividad","description":"Table of Proyectos","is-dropdown":"yes","tags":"$:/tags/MenuBar","modified":"20231013234841142","list-after":"page--red","modifier":"copincha"},
{"created":"20230927224934205","text":"[img [./media/image/page--home--banner.jpg]]\n\n! Bienvenido a {{$:/SiteTitle}}\n\nEn este sitio documentamos colaborativamente el conocimiento y las experiencias de [[Copincha|page--owner]]. Todo el trabajo se publica bajo una [[Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional|https://creativecommons.org/licenses/by-sa/4.0/]].\n\nEste sitio está cambiando todo el tiempo. A menudo se agregan ligeros ajustes, una sección completamente nueva o se elimina algo que ya no es relevante. Así que espere enlaces rotos y errores de escritura ocasionales en material nuevo. Hacemos lo posible por mantenerlo ordenado.\n\nAl recopilar estos materiales, hemos tomado prestado ocasionalmente muchos recursos en línea (como: textos, imágenes o ideas inspiradoras). Intentamos reunir el crédito de todas las fuentes en cada página; pero por favor, [[contáctenos|mailto:comunidad@copincha.org]] si encuentra alguna omisión o igualmente para brindarnos preguntas o comentarios.","title":"page--home","modified":"20231014014633441","nombre de pagina":"","modifier":"copincha"},
{"created":"20230928091243648","creator":"copincha","text":"{{copincha--red}}\n","title":"page--red","caption":"Red","description":"Table of Proyectos","is-dropdown":"yes","tags":"$:/tags/MenuBar","modified":"20231013234835937","modifier":"copincha"},
{"created":"20231013214649613","creator":"copincha","text":"! Filtro para publicar\n\n[!is[system]sort[title]][title[$:/palettes/copincha]][title[$:/config/DefaultColourMappings/menubar-background]][title[$:/SiteTitle]][title[$:/SiteSubtitle]][title[$:/DefaultTiddlers]]\n[title[$:/language/DefaultNewTiddlerTitle]][title[$:/status/UserName]]","tags":"Filtros","title":"publicar--filtro","modified":"20231013221242169","modifier":"copincha"},
{"created":"20230928050341828","text":"$:/core/ui/ViewTemplate/","title":"quitar elementos de tiddler","modified":"20230928050343529"},
{"created":"20230928185727463","text":"Cuando algo es más \"intersticial\", se refiere a que está integrado o se encuentra en el espacio entre otras cosas o sistemas. Aquí tienes algunas ventajas de adoptar un enfoque más intersticial:\n\n1. Flexibilidad y adaptabilidad: Al estar ubicado entre diferentes elementos, un enfoque intersticial permite una mayor flexibilidad y adaptabilidad a los cambios. Puede responder de manera más efectiva a las necesidades cambiantes y acomodar diferentes contextos o sistemas sin tener que realizar cambios drásticos.\n\n2. Conexión y sinergia: Adoptar un enfoque intersticial fomenta la conexión y la sinergia entre diferentes partes o sistemas. Permite la integración de diferentes ideas, perspectivas y conocimientos, lo que puede conducir a soluciones más completas y robustas. Al conectar diferentes elementos, se pueden lograr resultados más integrales y eficaces.\n\n3. Innovación y creatividad: La intersticialidad proporciona oportunidades para la innovación y la creatividad. Al interactuar con diferentes elementos o perspectivas, se pueden generar nuevas ideas, soluciones originales y enfoques no convencionales. Al tener una visión más amplia y diversa, se pueden explorar oportunidades innovadoras que pueden ser pasadas por alto en un enfoque más convencional.\n\n4. Colaboración y participación: Adoptar un enfoque intersticial fomenta la colaboración y la participación activa de diferentes partes interesadas. Permite que diferentes personas y grupos trabajen juntos, compartan ideas y contribuyan a la toma de decisiones. Esto promueve la igualdad de participación y la valoración de diversas perspectivas, lo que a menudo conduce a soluciones más equitativas y sostenibles.\n\n5. Resolución de conflictos: En contextos en los que hay conflictos o divergencias de intereses, un enfoque intersticial puede ayudar a encontrar soluciones comunes o puntos de conexión. Al integrar diferentes perspectivas y encontrar áreas de superposición o intersección, se puede avanzar hacia la resolución de conflictos y la construcción de consensos.\n\nEn resumen, adoptar un enfoque más intersticial ofrece ventajas como flexibilidad, conexión, innovación, colaboración y resolución de conflictos. Permite aprovechar la diversidad y los intercambios entre diferentes elementos o sistemas para lograr mejores resultados.","title":"Ventajas de la instersticialidad","modified":"20230928185749855"},
{"created":"20230928185802600","text":"Cuando algo es más \"intersticial\", se refiere a que está integrado o se encuentra en el espacio entre otras cosas o sistemas. Aquí tienes algunas ventajas de adoptar un enfoque más intersticial:\n\n1. Flexibilidad y adaptabilidad: Al estar ubicado entre diferentes elementos, un enfoque intersticial permite una mayor flexibilidad y adaptabilidad a los cambios. Puede responder de manera más efectiva a las necesidades cambiantes y acomodar diferentes contextos o sistemas sin tener que realizar cambios drásticos.\n\nModular\n\n2. Conexión y sinergia: Adoptar un enfoque intersticial fomenta la conexión y la sinergia entre diferentes partes o sistemas. Permite la integración de diferentes ideas, perspectivas y conocimientos, lo que puede conducir a soluciones más completas y robustas. Al conectar diferentes elementos, se pueden lograr resultados más integrales y eficaces.\n\n3. Innovación y creatividad: La intersticialidad proporciona oportunidades para la innovación y la creatividad. Al interactuar con diferentes elementos o perspectivas, se pueden generar nuevas ideas, soluciones originales y enfoques no convencionales. Al tener una visión más amplia y diversa, se pueden explorar oportunidades innovadoras que pueden ser pasadas por alto en un enfoque más convencional.\n\n\n4. Colaboración y participación: Adoptar un enfoque intersticial fomenta la colaboración y la participación activa de diferentes partes interesadas. Permite que diferentes personas y grupos trabajen juntos, compartan ideas y contribuyan a la toma de decisiones. Esto promueve la igualdad de participación y la valoración de diversas perspectivas, lo que a menudo conduce a soluciones más equitativas y sostenibles.\n\n5. Resolución de conflictos: En contextos en los que hay conflictos o divergencias de intereses, un enfoque intersticial puede ayudar a encontrar soluciones comunes o puntos de conexión. Al integrar diferentes perspectivas y encontrar áreas de superposición o intersección, se puede avanzar hacia la resolución de conflictos y la construcción de consensos.\n\nEn resumen, adoptar un enfoque más intersticial ofrece ventajas como flexibilidad, conexión, innovación, colaboración y resolución de conflictos. Permite aprovechar la diversidad y los intercambios entre diferentes elementos o sistemas para lograr mejores resultados.","title":"Ventajas de la instersticialidad 1","modified":"20230928191613509","tags":""}
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.