|
|
|
|
|
|
|
|
|
<!doctype html>
|
|
|
|
|
<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->
|
|
|
|
|
<!-- saved from url=(0021)https://tiddlywiki.com -->
|
|
|
|
|
<html lang="en-GB">
|
|
|
|
|
<head>
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
|
|
|
<!--~~ Raw markup for the top of the head section ~~-->
|
|
|
|
|
|
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
|
|
|
|
<meta name="application-name" content="TiddlyWiki" />
|
|
|
|
|
<meta name="generator" content="TiddlyWiki" />
|
|
|
|
|
<meta name="tiddlywiki-version" content="5.2.3" />
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
|
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
|
|
|
<meta name="mobile-web-app-capable" content="yes"/>
|
|
|
|
|
<meta name="format-detection" content="telephone=no" />
|
|
|
|
|
<meta name="copyright" content="TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2004-2007, Jeremy Ruston
|
|
|
|
|
Copyright (c) 2007-2022, UnaMesa Association
|
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
|
|
|
|
|
|
* Redistributions of source code must retain the above copyright notice, this
|
|
|
|
|
list of conditions and the following disclaimer.
|
|
|
|
|
|
|
|
|
|
* Redistributions in binary form must reproduce the above copyright notice,
|
|
|
|
|
this list of conditions and the following disclaimer in the documentation
|
|
|
|
|
and/or other materials provided with the distribution.
|
|
|
|
|
|
|
|
|
|
* Neither the name of the copyright holder nor the names of its
|
|
|
|
|
contributors may be used to endorse or promote products derived from
|
|
|
|
|
this software without specific prior written permission.
|
|
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
|
|
|
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
|
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
|
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
|
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
|
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
|
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
|
|
|
|
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
|
|
|
|
<title>m00 — Cuaderno Personal</title>
|
|
|
|
|
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
|
|
|
|
|
|
|
|
|
|
<!--~~ Raw markup ~~-->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
var iosDragDropShim = { enableEnterLeave: true, holdToDrag: 300 };
|
|
|
|
|
(function(doc) {
|
|
|
|
|
|
|
|
|
|
function _exposeIosHtml5DragDropShim(config) {
|
|
|
|
|
log = noop; // noOp, remove this line to enable debugging
|
|
|
|
|
|
|
|
|
|
var coordinateSystemForElementFromPoint;
|
|
|
|
|
|
|
|
|
|
var DRAG_OVER_EMIT_FREQ = 50;
|
|
|
|
|
|
|
|
|
|
function main() {
|
|
|
|
|
config = config || {};
|
|
|
|
|
if (!config.hasOwnProperty("simulateAnchorClick")) config.simulateAnchorClick = true;
|
|
|
|
|
|
|
|
|
|
coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\d+)+ like Mac/) ? "page" : "client";
|
|
|
|
|
|
|
|
|
|
var div = doc.createElement('div');
|
|
|
|
|
var dragDiv = 'draggable' in div;
|
|
|
|
|
var evts = 'ondragstart' in div && 'ondrop' in div;
|
|
|
|
|
|
|
|
|
|
var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent);
|
|
|
|
|
log((needsPatch ? "" : "not ") + "patching html5 drag drop");
|
|
|
|
|
|
|
|
|
|
if(!needsPatch) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!config.enableEnterLeave) {
|
|
|
|
|
DragDrop.prototype.synthesizeEnterLeave = noop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(config.holdToDrag){
|
|
|
|
|
doc.addEventListener("touchstart", touchstartDelay(config.holdToDrag), {passive:false});
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
doc.addEventListener("touchstart", touchstart, {passive:false});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DragDrop(event, el) {
|
|
|
|
|
|
|
|
|
|
this.dragData = {};
|
|
|
|
|
this.dragDataTypes = [];
|
|
|
|
|
this.dragImage = null;
|
|
|
|
|
this.dragImageTransform = null;
|
|
|
|
|
this.dragImageWebKitTransform = null;
|
|
|
|
|
this.customDragImage = null;
|
|
|
|
|
this.customDragImageX = null;
|
|
|
|
|
this.customDragImageY = null;
|
|
|
|
|
this.el = el || event.target;
|
|
|
|
|
this.dragOverTimer = null;
|
|
|
|
|
this.lastMoveEvent = null;
|
|
|
|
|
|
|
|
|
|
log("dragstart");
|
|
|
|
|
|
|
|
|
|
if (this.dispatchDragStart()) {
|
|
|
|
|
this.createDragImage();
|
|
|
|
|
this.listen();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DragDrop.prototype = {
|
|
|
|
|
listen: function() {
|
|
|
|
|
var move = onEvt(doc, "touchmove", this.move, this);
|
|
|
|
|
var end = onEvt(doc, "touchend", ontouchend, this);
|
|
|
|
|
var cancel = onEvt(doc, "touchcancel", cleanup, this);
|
|
|
|
|
|
|
|
|
|
function ontouchend(event) {
|
|
|
|
|
this.dragend(event, event.target);
|
|
|
|
|
cleanup.call(this);
|
|
|
|
|
}
|
|
|
|
|
function cleanup() {
|
|
|
|
|
log("cleanup");
|
|
|
|
|
this.dragDataTypes = [];
|
|
|
|
|
if (this.dragImage !== null) {
|
|
|
|
|
this.dragImage.parentNode.removeChild(this.dragImage);
|
|
|
|
|
this.dragImage = null;
|
|
|
|
|
this.dragImageTransform = null;
|
|
|
|
|
this.dragImageWebKitTransform = null;
|
|
|
|
|
}
|
|
|
|
|
this.customDragImage = null;
|
|
|
|
|
this.customDragImageX = null;
|
|
|
|
|
this.customDragImageY = null;
|
|
|
|
|
this.el = this.dragData = null;
|
|
|
|
|
return [move, end, cancel].forEach(function(handler) {
|
|
|
|
|
return handler.off();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
move: function(event) {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
var pageXs = [], pageYs = [];
|
|
|
|
|
[].forEach.call(event.changedTouches, function(touch) {
|
|
|
|
|
pageXs.push(touch.pageX);
|
|
|
|
|
pageYs.push(touch.pageY);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2);
|
|
|
|
|
var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2);
|
|
|
|
|
this.translateDragImage(x, y);
|
|
|
|
|
|
|
|
|
|
this.synthesizeEnterLeave(event);
|
|
|
|
|
this.synthesizeOver(event);
|
|
|
|
|
},
|
|
|
|
|
// We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance
|
|
|
|
|
// http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/
|
|
|
|
|
translateDragImage: function(x, y) {
|
|
|
|
|
var translate = "translate(" + x + "px," + y + "px) ";
|
|
|
|
|
|
|
|
|
|
if (this.dragImageWebKitTransform !== null) {
|
|
|
|
|
this.dragImage.style["-webkit-transform"] = translate + this.dragImageWebKitTransform;
|
|
|
|
|
}
|
|
|
|
|
if (this.dragImageTransform !== null) {
|
|
|
|
|
this.dragImage.style.transform = translate + this.dragImageTransform;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
synthesizeEnterLeave: function(event) {
|
|
|
|
|
var target = elementFromTouchEvent(this.el,event)
|
|
|
|
|
if (target != this.lastEnter) {
|
|
|
|
|
if (this.lastEnter) {
|
|
|
|
|
this.dispatchLeave(event);
|
|
|
|
|
}
|
|
|
|
|
this.lastEnter = target;
|
|
|
|
|
if (this.lastEnter) {
|
|
|
|
|
this.dispatchEnter(event);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
synthesizeOver: function(event) {
|
|
|
|
|
this.lastMoveEvent = event;
|
|
|
|
|
if(this.lastEnter && !this.dragOverTimer) {
|
|
|
|
|
this.dragOverTimer = setInterval(this.dispatchOver.bind(this), DRAG_OVER_EMIT_FREQ);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
clearDragOverTimer: function() {
|
|
|
|
|
if(this.dragOverTimer) {
|
|
|
|
|
clearInterval(this.dragOverTimer);
|
|
|
|
|
this.dragOverTimer = null;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
dragend: function(event) {
|
|
|
|
|
|
|
|
|
|
// we'll dispatch drop if there's a target, then dragEnd.
|
|
|
|
|
// drop comes first http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model
|
|
|
|
|
log("dragend");
|
|
|
|
|
|
|
|
|
|
if (this.lastEnter) {
|
|
|
|
|
this.dispatchLeave(event);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var target = elementFromTouchEvent(this.el,event)
|
|
|
|
|
if (target) {
|
|
|
|
|
log("found drop target " + target.tagName);
|
|
|
|
|
this.dispatchDrop(target, event);
|
|
|
|
|
} else {
|
|
|
|
|
log("no drop target");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var dragendEvt = doc.createEvent("Event");
|
|
|
|
|
dragendEvt.initEvent("dragend", true, true);
|
|
|
|
|
this.el.dispatchEvent(dragendEvt);
|
|
|
|
|
this.clearDragOverTimer();
|
|
|
|
|
},
|
|
|
|
|
dispatchDrop: function(target, event) {
|
|
|
|
|
var dropEvt = doc.createEvent("Event");
|
|
|
|
|
dropEvt.initEvent("drop", true, true);
|
|
|
|
|
|
|
|
|
|
var touch = event.changedTouches[0];
|
|
|
|
|
var x = touch[coordinateSystemForElementFromPoint + 'X'];
|
|
|
|
|
var y = touch[coordinateSystemForElementFromPoint + 'Y'];
|
|
|
|
|
|
|
|
|
|
var targetOffset = getOffset(target);
|
|
|
|
|
|
|
|
|
|
dropEvt.offsetX = x - targetOffset.x;
|
|
|
|
|
dropEvt.offsetY = y - targetOffset.y;
|
|
|
|
|
|
|
|
|
|
dropEvt.dataTransfer = {
|
|
|
|
|
types: this.dragDataTypes,
|
|
|
|
|
getData: function(type) {
|
|
|
|
|
return this.dragData[type];
|
|
|
|
|
}.bind(this),
|
|
|
|
|
dropEffect: "move"
|
|
|
|
|
};
|
|
|
|
|
dropEvt.preventDefault = function() {
|
|
|
|
|
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=14638 - if we don't cancel it, we'll snap back
|
|
|
|
|
}.bind(this);
|
|
|
|
|
|
|
|
|
|
once(doc, "drop", function() {
|
|
|
|
|
log("drop event not canceled");
|
|
|
|
|
},this);
|
|
|
|
|
|
|
|
|
|
target.dispatchEvent(dropEvt);
|
|
|
|
|
},
|
|
|
|
|
dispatchEnter: function(event) {
|
|
|
|
|
|
|
|
|
|
var enterEvt = doc.createEvent("Event");
|
|
|
|
|
enterEvt.initEvent("dragenter", true, true);
|
|
|
|
|
enterEvt.dataTransfer = {
|
|
|
|
|
types: this.dragDataTypes,
|
|
|
|
|
getData: function(type) {
|
|
|
|
|
return this.dragData[type];
|
|
|
|
|
}.bind(this)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var touch = event.changedTouches[0];
|
|
|
|
|
enterEvt.pageX = touch.pageX;
|
|
|
|
|
enterEvt.pageY = touch.pageY;
|
|
|
|
|
enterEvt.clientX = touch.clientX;
|
|
|
|
|
enterEvt.clientY = touch.clientY;
|
|
|
|
|
|
|
|
|
|
this.lastEnter.dispatchEvent(enterEvt);
|
|
|
|
|
},
|
|
|
|
|
dispatchOver: function() {
|
|
|
|
|
|
|
|
|
|
var overEvt = doc.createEvent("Event");
|
|
|
|
|
overEvt.initEvent("dragover", true, true);
|
|
|
|
|
overEvt.dataTransfer = {
|
|
|
|
|
types: this.dragDataTypes,
|
|
|
|
|
getData: function(type) {
|
|
|
|
|
return this.dragData[type];
|
|
|
|
|
}.bind(this)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var touch = this.lastMoveEvent.changedTouches[0];
|
|
|
|
|
overEvt.pageX = touch.pageX;
|
|
|
|
|
overEvt.pageY = touch.pageY;
|
|
|
|
|
overEvt.clientX = touch.clientX;
|
|
|
|
|
overEvt.clientY = touch.clientY;
|
|
|
|
|
|
|
|
|
|
this.lastEnter.dispatchEvent(overEvt);
|
|
|
|
|
},
|
|
|
|
|
dispatchLeave: function(event) {
|
|
|
|
|
|
|
|
|
|
var leaveEvt = doc.createEvent("Event");
|
|
|
|
|
leaveEvt.initEvent("dragleave", true, true);
|
|
|
|
|
leaveEvt.dataTransfer = {
|
|
|
|
|
types: this.dragDataTypes,
|
|
|
|
|
getData: function(type) {
|
|
|
|
|
return this.dragData[type];
|
|
|
|
|
}.bind(this)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var touch = event.changedTouches[0];
|
|
|
|
|
leaveEvt.pageX = touch.pageX;
|
|
|
|
|
leaveEvt.pageY = touch.pageY;
|
|
|
|
|
leaveEvt.clientX = touch.clientX;
|
|
|
|
|
leaveEvt.clientY = touch.clientY;
|
|
|
|
|
|
|
|
|
|
this.lastEnter.dispatchEvent(leaveEvt);
|
|
|
|
|
this.lastEnter = null;
|
|
|
|
|
this.clearDragOverTimer();
|
|
|
|
|
},
|
|
|
|
|
dispatchDragStart: function() {
|
|
|
|
|
var evt = doc.createEvent("Event");
|
|
|
|
|
evt.initEvent("dragstart", true, true);
|
|
|
|
|
evt.dataTransfer = {
|
|
|
|
|
setData: function(type, val) {
|
|
|
|
|
this.dragData[type] = val;
|
|
|
|
|
if (this.dragDataTypes.indexOf(type) == -1) {
|
|
|
|
|
this.dragDataTypes[this.dragDataTypes.length] = type;
|
|
|
|
|
}
|
|
|
|
|
return val;
|
|
|
|
|
}.bind(this),
|
|
|
|
|
setDragImage: function(el, x, y){
|
|
|
|
|
this.customDragImage = el;
|
|
|
|
|
this.customDragImageX = x
|
|
|
|
|
this.customDragImageY = y
|
|
|
|
|
}.bind(this),
|
|
|
|
|
dropEffect: "move"
|
|
|
|
|
};
|
|
|
|
|
return this.el.dispatchEvent(evt);
|
|
|
|
|
},
|
|
|
|
|
createDragImage: function() {
|
|
|
|
|
if (this.customDragImage) {
|
|
|
|
|
this.dragImage = this.customDragImage.cloneNode(true);
|
|
|
|
|
duplicateStyle(this.customDragImage, this.dragImage);
|
|
|
|
|
} else {
|
|
|
|
|
this.dragImage = this.el.cloneNode(true);
|
|
|
|
|
duplicateStyle(this.el, this.dragImage);
|
|
|
|
|
}
|
|
|
|
|
this.dragImage.style.opacity = "0.5";
|
|
|
|
|
this.dragImage.style.position = "absolute";
|
|
|
|
|
this.dragImage.style.left = "0px";
|
|
|
|
|
this.dragImage.style.top = "0px";
|
|
|
|
|
this.dragImage.style.zIndex = "999999";
|
|
|
|
|
|
|
|
|
|
var transform = this.dragImage.style.transform;
|
|
|
|
|
if (typeof transform !== "undefined") {
|
|
|
|
|
this.dragImageTransform = "";
|
|
|
|
|
if (transform != "none") {
|
|
|
|
|
this.dragImageTransform = transform.replace(/translate\(\D*\d+[^,]*,\D*\d+[^,]*\)\s*/g, '');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var webkitTransform = this.dragImage.style["-webkit-transform"];
|
|
|
|
|
if (typeof webkitTransform !== "undefined") {
|
|
|
|
|
this.dragImageWebKitTransform = "";
|
|
|
|
|
if (webkitTransform != "none") {
|
|
|
|
|
this.dragImageWebKitTransform = webkitTransform.replace(/translate\(\D*\d+[^,]*,\D*\d+[^,]*\)\s*/g, '');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.translateDragImage(-9999, -9999);
|
|
|
|
|
|
|
|
|
|
doc.body.appendChild(this.dragImage);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// delayed touch start event
|
|
|
|
|
function touchstartDelay(delay) {
|
|
|
|
|
return function(evt){
|
|
|
|
|
var el = evt.target;
|
|
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
if (elementIsDraggable(el)) {
|
|
|
|
|
var heldItem = function() {
|
|
|
|
|
end.off();
|
|
|
|
|
cancel.off();
|
|
|
|
|
scroll.off();
|
|
|
|
|
touchstart(evt);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onReleasedItem = function() {
|
|
|
|
|
end.off();
|
|
|
|
|
cancel.off();
|
|
|
|
|
scroll.off();
|
|
|
|
|
clearTimeout(timer);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var timer = setTimeout(heldItem, delay);
|
|
|
|
|
|
|
|
|
|
var end = onEvt(el, 'touchend', onReleasedItem, this);
|
|
|
|
|
var cancel = onEvt(el, 'touchcancel', onReleasedItem, this);
|
|
|
|
|
var scroll = onEvt(window, 'scroll', onReleasedItem, this);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} while ((el = el.parentNode) && el !== doc.body);
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// event listeners
|
|
|
|
|
function touchstart(evt) {
|
|
|
|
|
var el = evt.target;
|
|
|
|
|
do {
|
|
|
|
|
if (elementIsDraggable(el)) {
|
|
|
|
|
handleTouchStartOnAnchor(evt, el);
|
|
|
|
|
|
|
|
|
|
evt.preventDefault();
|
|
|
|
|
new DragDrop(evt,el);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} while((el = el.parentNode) && el !== doc.body);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function elementIsDraggable(el){
|
|
|
|
|
// if an element is not draggable either explicitly or implicitly we can exit immediately
|
|
|
|
|
if(!el.draggable) return false;
|
|
|
|
|
|
|
|
|
|
// if an element has been explicitly set to be draggable we're good to go
|
|
|
|
|
if(el.hasAttribute("draggable")) return true;
|
|
|
|
|
|
|
|
|
|
// otherwise we investigate the implicit option
|
|
|
|
|
return (!config.requireExplicitDraggable);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function elementIsAnchor(el){
|
|
|
|
|
return el.tagName.toLowerCase() == "a";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleTouchStartOnAnchor(evt, el){
|
|
|
|
|
// If draggable isn't explicitly set for anchors, then simulate a click event.
|
|
|
|
|
// Otherwise plain old vanilla links will stop working.
|
|
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks
|
|
|
|
|
if (!el.hasAttribute("draggable") && elementIsAnchor(el) && config.simulateAnchorClick) {
|
|
|
|
|
var clickEvt = document.createEvent("MouseEvents");
|
|
|
|
|
clickEvt.initMouseEvent("click", true, true, el.ownerDocument.defaultView, 1,
|
|
|
|
|
evt.screenX, evt.screenY, evt.clientX, evt.clientY,
|
|
|
|
|
evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, null);
|
|
|
|
|
el.dispatchEvent(clickEvt);
|
|
|
|
|
log("Simulating click to anchor");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// DOM helpers
|
|
|
|
|
function elementFromTouchEvent(el,event) {
|
|
|
|
|
var touch = event.changedTouches[0];
|
|
|
|
|
var target = doc.elementFromPoint(
|
|
|
|
|
touch[coordinateSystemForElementFromPoint + "X"],
|
|
|
|
|
touch[coordinateSystemForElementFromPoint + "Y"]
|
|
|
|
|
);
|
|
|
|
|
return target;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//calculate the offset position of an element (relative to the window, not the document)
|
|
|
|
|
function getOffset(el) {
|
|
|
|
|
var rect = el.getBoundingClientRect();
|
|
|
|
|
return {
|
|
|
|
|
"x": rect.left,
|
|
|
|
|
"y": rect.top
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function onEvt(el, event, handler, context) {
|
|
|
|
|
if(context) {
|
|
|
|
|
handler = handler.bind(context);
|
|
|
|
|
}
|
|
|
|
|
el.addEventListener(event, handler, {passive:false});
|
|
|
|
|
return {
|
|
|
|
|
off: function() {
|
|
|
|
|
return el.removeEventListener(event, handler, {passive:false});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function once(el, event, handler, context) {
|
|
|
|
|
if(context) {
|
|
|
|
|
handler = handler.bind(context);
|
|
|
|
|
}
|
|
|
|
|
function listener(evt) {
|
|
|
|
|
handler(evt);
|
|
|
|
|
return el.removeEventListener(event,listener);
|
|
|
|
|
}
|
|
|
|
|
return el.addEventListener(event,listener);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// duplicateStyle expects dstNode to be a clone of srcNode
|
|
|
|
|
function duplicateStyle(srcNode, dstNode) {
|
|
|
|
|
// Is this node an element?
|
|
|
|
|
if (srcNode.nodeType == 1) {
|
|
|
|
|
// Remove any potential conflict attributes
|
|
|
|
|
dstNode.removeAttribute("id");
|
|
|
|
|
dstNode.removeAttribute("class");
|
|
|
|
|
dstNode.removeAttribute("style");
|
|
|
|
|
dstNode.removeAttribute("draggable");
|
|
|
|
|
|
|
|
|
|
// Clone the style
|
|
|
|
|
var cs = window.getComputedStyle(srcNode);
|
|
|
|
|
for (var i = 0; i < cs.length; i++) {
|
|
|
|
|
var csName = cs[i];
|
|
|
|
|
dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Pointer events as none makes the drag image transparent to document.elementFromPoint()
|
|
|
|
|
dstNode.style.pointerEvents = "none";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Do the same for the children
|
|
|
|
|
if (srcNode.hasChildNodes()) {
|
|
|
|
|
for (var j = 0; j < srcNode.childNodes.length; j++) {
|
|
|
|
|
duplicateStyle(srcNode.childNodes[j], dstNode.childNodes[j]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// general helpers
|
|
|
|
|
function log(msg) {
|
|
|
|
|
console.log(msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function average(arr) {
|
|
|
|
|
if (arr.length === 0) return 0;
|
|
|
|
|
return arr.reduce((function(s, v) {
|
|
|
|
|
return v + s;
|
|
|
|
|
}), 0) / arr.length;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function noop() {}
|
|
|
|
|
|
|
|
|
|
main();
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (typeof module === 'object' && typeof module.exports === 'object') {
|
|
|
|
|
module.exports = _exposeIosHtml5DragDropShim;
|
|
|
|
|
} else if (typeof window !== 'undefined') {
|
|
|
|
|
_exposeIosHtml5DragDropShim(window.iosDragDropShim);
|
|
|
|
|
}
|
|
|
|
|
})(document);
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
<body class="tc-body">
|
|
|
|
|
<!--~~ Raw markup for the top of the body section ~~-->
|
|
|
|
|
|
|
|
|
|
<!--~~ Static styles ~~-->
|
|
|
|
|
<div id="styleArea">
|
|
|
|
|
<style data-tiddler-title="$:/boot/boot.css" data-tiddler-type="text/css" type="text/css">/*
|
|
|
|
|
Basic styles used before we boot up the parsing engine
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Error message and password prompt
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
.tc-error-form {
|
|
|
|
|
font-family: sans-serif;
|
|
|
|
|
color: #fff;
|
|
|
|
|
z-index: 20000;
|
|
|
|
|
position: fixed;
|
|
|
|
|
background-color: rgb(255, 75, 75);
|
|
|
|
|
border: 8px solid rgb(255, 0, 0);
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
width: 50%;
|
|
|
|
|
margin-left: 25%;
|
|
|
|
|
margin-top: 4em;
|
|
|
|
|
padding: 0 2em 1em 2em;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-error-form h1 {
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-error-prompt {
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #000;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-error-message {
|
|
|
|
|
overflow: auto;
|
|
|
|
|
max-height: 40em;
|
|
|
|
|
padding-right: 1em;
|
|
|
|
|
margin: 1em 0;
|
|
|
|
|
white-space: pre-line;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-password-wrapper {
|
|
|
|
|
font-family: sans-serif;
|
|
|
|
|
z-index: 20000;
|
|
|
|
|
position: fixed;
|
|
|
|
|
text-align: center;
|
|
|
|
|
width: 200px;
|
|
|
|
|
top: 4em;
|
|
|
|
|
left: 50%;
|
|
|
|
|
margin-left: -144px; /* - width/2 - paddingHorz/2 - border */
|
|
|
|
|
padding: 16px 16px 16px 16px;
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-password-wrapper {
|
|
|
|
|
color: #000;
|
|
|
|
|
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
|
|
|
|
background-color: rgb(197, 235, 183);
|
|
|
|
|
border: 8px solid rgb(164, 197, 152);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-password-wrapper form {
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-password-wrapper h1 {
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
line-height: 20px;
|
|
|
|
|
padding-bottom: 16px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tc-password-wrapper input {
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
</div>
|
|
|
|
|
<!--~~ Static content for Google and browsers without JavaScript ~~-->
|
|
|
|
|
<noscript>
|
|
|
|
|
<div id="splashArea">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>This <a class="tc-tiddlylink-external" href="https://tiddlywiki.com" rel="noopener noreferrer" target="_blank">TiddlyWiki</a> contains the following tiddlers:</p><p><ul>
|
|
|
|
|
|
|
|
|
|
<li>!!Calculo</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/_sq/Stories/config/openLinkDivert</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/_sq/Stories/config/showRiverDropZones</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/_sq/Stories/config/sidebaroverlaybreakpoint</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/_sq/Stories/config/Story2-storyview</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/_sq/Stories/config/twostorybreakpoint</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/_sq/Stories/divertTiddlerMacro</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/ak/plugins/EmbedYouTube</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/build</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/_sq/Stories/story2</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/AnimationDuration</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/AutoFocus</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/autoCloseTags</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/cursorBlinkRate</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/indentUnit</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/indentWithTabs</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/keyMap</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/lineNumbers</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/showCursorWhenSelecting</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/smartIndent</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/styleActiveLine</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/tabSize</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/codemirror/theme</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/DefaultMoreSidebarTab</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/EditToolbarButtons/Visibility/$:/_sq/Stories/divertTiddlerEditMacro</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/delete</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ExternalWiki/tobibeer</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/fa5/decorate-extlinks</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/fa5/decorate-syslinks</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/Navigation/openLinkFromInsideRiver</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/Navigation/openLinkFromOutsideRiver</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/NewJournal/Tags</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/NewJournal/Text</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/NewJournal/Title</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/_sq/Stories/Templates/StoryTogglePageControl</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-tiddler</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/save-wiki</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/trashbin</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/plugins/kookma/commander/buttons/pagecontrol</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/plugins/kookma/utility/ui/Buttons/ViewFields</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/plugins/TWaddle/SideEditor/new-btn</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/PageControlButtons/Visibility/$:/themes/nico/notebook/ui/Buttons/SwitchPalette</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/Plugins/Disabled/$:/plugins/nico/notebook-mobile</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/RelinkOnRename</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/section-editor/config-editor-type</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ShortcutInfo/advanced-search-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ShortcutInfo/change-sidebar-layout</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ShortcutInfo/sidebar-search</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ShortcutInfo/toggle-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/shortcuts/advanced-search-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/shortcuts/change-sidebar-layout</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/shortcuts/sidebar-search</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/shortcuts/toggle-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/sq/streams/editor-engine</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/sq/streams/enable-edit-toolbar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/sq/streams/node-max-width</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/sq/streams/stream-enable-filter</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/Tiddlers/TitleLinks</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/Toolbar/Icons</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/Toolbar/Text</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/_sq/Stories/divertTiddlerMacro</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/plugins/Gk0Wk/page-toc/PageTOCButton</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/plugins/kookma/favorites/ui/buttons/add-remove</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/plugins/kookma/trashbin/ui/toolbar-button</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/config/ViewToolbarButtons/Visibility/$:/Tekan/TiddlerToBoard</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/ControlPanel</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/images/facebook</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/images/github</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/images/instagram</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/images/telegram</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/images/twitter</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/images/whatsapp</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/templates/server/static.sidebar.wikitext</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/Buttons/info</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/Buttons/more-tiddler-actions</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/Buttons/trashbin</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/ControlPanel/Settings/codemirror/keyMap</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/ControlPanel/Toolbars/ViewToolbar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/KeyboardShortcuts/change-sidebar-layout</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/KeyboardShortcuts/sidebar-search</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/KeyboardShortcuts/toggle-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/MoreSideBar/Recent</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/alerts</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/drafts</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/pluginreloadwarning</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/story</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/topleftbar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/PageTemplate/toprightbar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/SideBar/More</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/SideBar/Open</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/SideBar/Recent</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/SideBar/Tools</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/SideBarSegments/tabs</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/TopBar/menu</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/ViewTemplate/subtitle</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/core/ui/ViewTemplate/title</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/DefaultTiddlers</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/favicon.ico</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/favorites/favlist</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Import</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Import/20220418161223410</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Import/20220418161224932</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Import/20220418164647907</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Import/20220418164649705</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Import/20220418164651994</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/isEncrypted</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/keepstate/trashbin/sort</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/DefaultNewTiddlerTitle</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-button-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-controls-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-foreground-shadow</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-muted-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-background</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-background-selected</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-border</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-border-selected</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-divider</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/language/SideBar/Recent/Caption</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/languages/es-ES</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/layout</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/NewNote</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/palette</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/palettes/Twilight</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/pluginlibrary/tobibeer/official</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/adithyab/cmplus</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/cdaven/markdown-export</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/danielo515/2click2edit</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/felixhayashi/respawn</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/felixhayashi/topstoryview</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/flibbles/relink</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/flibbles/relink-titles</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/echarts</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/highlight-generator</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/jQuery</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/lodash</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon/body</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon/style.css</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/wide</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/wide</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon/style/cover-right/wide</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/wide</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/page-toc</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/sidebar-resizer</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/sidebar-resizer/hook.js</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/sidebar-resizer/LICENSE</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/sidebar-resizer/readme</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/sidebar-resizer/resizer</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/sidebar-resizer/style.css</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/commander</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/commander/buttons/pagecontrol</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/favorites</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/favorites/macros/sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/favorites/recent</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/favorites/sidebar-tab</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/favorites/ui/buttons/add-remove</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/section</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/image-basic</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/slider</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/slider2</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/slider3</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/slider4</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/slider5</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/macros/slider6</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/styles/misc/ui-buttons</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/styles/multicols/storyriver</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/trashbin</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/trashbin/sidebar-tab</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/trashbin/styles/show-trashed</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/trashbin/ui/sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/trashbin/ui/toolbar-button</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/trashbin/viewtemplate/trash-item</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/utility/styles/tw-version</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/utility/ui/Buttons/ViewFields</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/nico/notebook-mobile</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/snowgoon88/edit-comptext</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/sq/streams</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/sq/streams-as-editor</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/sq/streams-search</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tgrosinger/tw5-checklist</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/TheDiveO/FontAwesome</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/browser-sniff</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-autocomplete</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-closebrackets</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-closetag</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-fullscreen</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-keymap-sublime-text</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-mode-css</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-mode-htmlmixed</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-mode-javascript</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-mode-markdown</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-mode-xml</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror-search-replace</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror/keyboard</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/codemirror/usage</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/dynannotate</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/dynaview</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/highlight</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/internals</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/markdown</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/markdown/new-markdown-button</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/mobiledragdrop</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tiddlywiki/railroad</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tobibeer/external</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tobibeer/preview/popups</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/tobibeer/split</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/TWaddle/SideEditor</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/TWaddle/SideEditor/Metrics</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/plugins/wikilabs/link-to-tabs</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/richlink/.dictionary</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/richlink/youtube</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/section-editor/state/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/SiteSubtitle</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/SiteTitle</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/AddNote</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/advancedsearch/currentTab</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/advancedsearch/standard/currentTab</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/encrypt</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/Excise/--1372893260/tagnew</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/import/select-all</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/notebook-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/notebook-sidebar-section</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/palettemanager/$:/palettes/Twilight/diff-insert-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/palettemanager/$:/palettes/Twilight/diff-invisible-foreground</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/plugin-info--506288826-$:/plugins/kookma/commander---1769462396</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/plugin-info--700587726-$:/plugins/tiddlywiki/mobiledragdrop</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/plugin-info--8325626-$:/plugins/felixhayashi/respawn--1609290673</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/plugin-info-1605320774-$:/themes/nico/notebook--1711715474</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft 2 of 'proyectos' by M0/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft 2 of 'proyectos/copincha' by M0/Caracteristicas</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft 4 of 'proyectos/copincha' by M0/Caracteristicas</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft 4 of 'proyectos/copincha' by M0/Resumen</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft 4 of 'proyectos/copincha' by M0/Wiki</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft 5 of 'proyectos/copincha' by M0/Conucos</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft of 'Nuevo Tiddler 6' by M0/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft of 'Nuevo Tiddler 6' by M0/Simple text</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft of 'proyectos' by M0/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft of 'proyectos/copincha' by M0/Caracteristicas</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Draft of 'proyectos/copincha' by M0/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/Nuevo Tiddler 6/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyecto/copincha/Resumen</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/Caracteristicas</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/copincha/Caracteristicas</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/copincha/Caracteristicas1</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/copincha/Caracteristicas2</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/copincha/Conucos</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/copincha/Resumen</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/proyectos/copincha/Wiki</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/slider ejemplo texto1/Texto Nivel 1</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/shiraz/slider-macro/slider ejemplo texto4/Texto Nivel 4</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/showeditpreview</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/ShowPaletteEditor</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/current-edit-tiddler--199661880</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/current-edit-tiddler--2110055736</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/current-edit-tiddler--932498594</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/current-edit-tiddler-1548655816</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/current-edit-tiddler-332800094</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/current-edit-tiddler-453720542</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220517042707056-265847841</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220517042745045-533040847</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220517042808629--901895093</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220517042813045-1946399665</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220517043036664-1825383974</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220518033318014-361744328</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Bienvenidos/20220820025358490-1702184717</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/copincha-263223728</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Enfermedades--910457774</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Enfermedades/20220518021147893--1840161913</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Enfermedades/20220518021147893--890600416</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/glosario/conucos--1988602351</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174228756--1178021069</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174228756--173708157</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174228756--367177533</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174317522-1265601831</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174317522-1988680207</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174317522-2074784359</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174338102-1760987822</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174338102-301749992</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174338102-614386536</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174548627--1054464299</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174548627--1378355499</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174548627-380073109</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174720887--623346815</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174720887-1858270837</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820174720887-1976267585</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820185718652--1605516120</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820185718652--201976914</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820185718652-798438062</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190000798--1321485005</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190000798--334289213</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190000798-1839317635</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190156222--862823187</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190156222-1884949965</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190156222-402052617</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190156222-718114345</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820190156222-810354121</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820203751069--1147374116</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820203751069--1935116964</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820203751069--2126377414</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/Proyectos/20220820203905830--964944079</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220820232310672--2066391243</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903182940269--1608097014</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903182940269-2137705100</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903182940269-742536972</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903184105628--862300124</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903184155050--1507077082</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903184939497--1123027177</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903184939497--969049537</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903184939497-1961954551</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903190821935--2061246485</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191438328--2018090555</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191438328--772763794</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191438328-1583527980</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191546252--2108479452</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191546252--427604874</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191546252-1505588499</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191955069--1760755841</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191955069--2114293772</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220903191955069--439178394</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220904021815056-396636244</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220904025915931--1753093301</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220904025915931--1947102901</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/sq/streams/visibility/proyectos/20220904030144511--2123920057</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/streams/settings/tabs-2120062062</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab--1498284803</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab--1963855381</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab--2112689675</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab--697582678</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab--86143343</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab--959111941</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab-1749438307</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tab/search-results/advancedsearch</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/tabs/controlpanel/toolbars-1345989671</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/toc/proyectos-proyectos/copincha--973757775</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/state/toc/proyectos-proyectos/copincha-879406318</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/status/RequireReloadDueToPluginChange</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/status/UserName</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/StoryList</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/tags/PageControls</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/tags/SideBarSegment</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Tekan/CurrentBoard</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/Tekan/TiddlerToBoard</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/theme</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/base</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/metrics/sidebar-width</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/metrics/story-width</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/options/stickytitles</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/settings/codefontfamily</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/settings/editorfontfamily</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/settings/fontfamily</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/shortcuts/toggle-sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/ui/Bottombar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/ui/Sidebar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/ui/Sidebar/Headings</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/ui/Sidebar/SectionTemplate</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/nico/notebook/ui/Topbar</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/snowwhite</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/metrics/bodylineheight</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/metrics/fontsize</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/metrics/lineheight</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/options/codewrapping</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/options/sidebarlayout</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/settings/backgroundimage</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/themes/tiddlywiki/vanilla/settings/editorfontfamily</li>
|
|
|
|
|
|
|
|
|
|
<li>$:/view</li>
|
|
|
|
|
|
|
|
|
|
<li>08/28/2022/20220828145325031</li>
|
|
|
|
|
|
|
|
|
|
<li>08/28/2022/20220828145338455</li>
|
|
|
|
|
|
|
|
|
|
<li>08/28/2022/20220828145348406</li>
|
|
|
|
|
|
|
|
|
|
<li>aaa</li>
|
|
|
|
|
|
|
|
|
|
<li>Add YouTube Video</li>
|
|
|
|
|
|
|
|
|
|
<li>adithyab/palettes/SolarizedLight</li>
|
|
|
|
|
|
|
|
|
|
<li>Alias ViewTemplate</li>
|
|
|
|
|
|
|
|
|
|
<li>Cafe Sorpresa - 21 de mayo de 2021 1</li>
|
|
|
|
|
|
|
|
|
|
<li>Calculo</li>
|
|
|
|
|
|
|
|
|
|
<li>Cibernetica</li>
|
|
|
|
|
|
|
|
|
|
<li>Ciclo Copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>code</li>
|
|
|
|
|
|
|
|
|
|
<li>codigo HTML</li>
|
|
|
|
|
|
|
|
|
|
<li>Configuración</li>
|
|
|
|
|
|
|
|
|
|
<li>Contenidos</li>
|
|
|
|
|
|
|
|
|
|
<li>copincha - datos</li>
|
|
|
|
|
|
|
|
|
|
<li>copinchapedia</li>
|
|
|
|
|
|
|
|
|
|
<li>Copinchapedia</li>
|
|
|
|
|
|
|
|
|
|
<li>Copinchapedia TW</li>
|
|
|
|
|
|
|
|
|
|
<li>copinchapedia-TW</li>
|
|
|
|
|
|
|
|
|
|
<li>cosa para importar</li>
|
|
|
|
|
|
|
|
|
|
<li>Crear Codigo QR</li>
|
|
|
|
|
|
|
|
|
|
<li>crear enlace corto</li>
|
|
|
|
|
|
|
|
|
|
<li>crear enlaces a un archivo local</li>
|
|
|
|
|
|
|
|
|
|
<li>Crear un wiki personal en TiddlyWiki</li>
|
|
|
|
|
|
|
|
|
|
<li>css--borderless</li>
|
|
|
|
|
|
|
|
|
|
<li>css--borderless--example</li>
|
|
|
|
|
|
|
|
|
|
<li>cumpleanos</li>
|
|
|
|
|
|
|
|
|
|
<li>Customizing</li>
|
|
|
|
|
|
|
|
|
|
<li>datos personales</li>
|
|
|
|
|
|
|
|
|
|
<li>desde</li>
|
|
|
|
|
|
|
|
|
|
<li>Donacion por EnZona</li>
|
|
|
|
|
|
|
|
|
|
<li>Donacion por PayPal</li>
|
|
|
|
|
|
|
|
|
|
<li>Donacion por TransferMovil</li>
|
|
|
|
|
|
|
|
|
|
<li>Donaciones</li>
|
|
|
|
|
|
|
|
|
|
<li>Draft of 'Julia' by M0</li>
|
|
|
|
|
|
|
|
|
|
<li>Draft of 'm00--projects' by m00</li>
|
|
|
|
|
|
|
|
|
|
<li>Draft of 'm00--proyectos' by M0</li>
|
|
|
|
|
|
|
|
|
|
<li>Draft of 'personalizacion' by M0</li>
|
|
|
|
|
|
|
|
|
|
<li>ejemplo</li>
|
|
|
|
|
|
|
|
|
|
<li>felixhayashi/vis</li>
|
|
|
|
|
|
|
|
|
|
<li>fondo-de-pagina</li>
|
|
|
|
|
|
|
|
|
|
<li>Formato de texto</li>
|
|
|
|
|
|
|
|
|
|
<li>fossil - Instalacion</li>
|
|
|
|
|
|
|
|
|
|
<li>GIG - personal information</li>
|
|
|
|
|
|
|
|
|
|
<li>Git</li>
|
|
|
|
|
|
|
|
|
|
<li>Gk0Wk/echarts</li>
|
|
|
|
|
|
|
|
|
|
<li>glosario/conuco</li>
|
|
|
|
|
|
|
|
|
|
<li>glosario/copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>glosario/copincha/resumen</li>
|
|
|
|
|
|
|
|
|
|
<li>grafoscopedia</li>
|
|
|
|
|
|
|
|
|
|
<li>Guyana</li>
|
|
|
|
|
|
|
|
|
|
<li>Guyana/20220321003516413</li>
|
|
|
|
|
|
|
|
|
|
<li>Guyana/20220321003522536</li>
|
|
|
|
|
|
|
|
|
|
<li>Guyana/20220321003529588</li>
|
|
|
|
|
|
|
|
|
|
<li>Guyana/20220321003534930</li>
|
|
|
|
|
|
|
|
|
|
<li>hackerspace</li>
|
|
|
|
|
|
|
|
|
|
<li>info style</li>
|
|
|
|
|
|
|
|
|
|
<li>insertar-objeto-3d</li>
|
|
|
|
|
|
|
|
|
|
<li>insertar-objeto-3d/20220830042530518</li>
|
|
|
|
|
|
|
|
|
|
<li>insertar-objeto-3d/20220830042559004</li>
|
|
|
|
|
|
|
|
|
|
<li>insertar-objeto-3d/20220830042627756</li>
|
|
|
|
|
|
|
|
|
|
<li>Instalación</li>
|
|
|
|
|
|
|
|
|
|
<li>Install</li>
|
|
|
|
|
|
|
|
|
|
<li>joihoiug;ouh;iu</li>
|
|
|
|
|
|
|
|
|
|
<li>Lab1</li>
|
|
|
|
|
|
|
|
|
|
<li>Lab2</li>
|
|
|
|
|
|
|
|
|
|
<li>Lab3</li>
|
|
|
|
|
|
|
|
|
|
<li>Lab4</li>
|
|
|
|
|
|
|
|
|
|
<li>M0-bio</li>
|
|
|
|
|
|
|
|
|
|
<li>M0-bio-proyectos</li>
|
|
|
|
|
|
|
|
|
|
<li>M0-datos personales - español</li>
|
|
|
|
|
|
|
|
|
|
<li>M0-datos personales - ingles</li>
|
|
|
|
|
|
|
|
|
|
<li>m00</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio--about</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175219338</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175224639</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175241275</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175247326</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175307878</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175341175</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175404853</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175416136</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175427850</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175444164</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175509793</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175520594</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175525399</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175531751</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175538026</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175549623</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175558267</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175623327</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175732893</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175825002</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820175854232</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180126805</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180133718</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180138265</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180149362</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180235987</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180248486</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180314934</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180354708</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180501194</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220820180511366</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828150535165</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828150605574</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151220953</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151242814</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151336655</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151345129</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151351165</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151510578</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151553645</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151641656</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--bio/20220828151658670</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--contact</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--contact/20220820181412481</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--contact/20220904214658883</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220820174548627</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220820221722596</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220820232310672</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220903182940269</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220903183618384</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220903190821935</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220903191656359</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/20220904021808488</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/caracteristica/diy</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/caracteristicas</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/3d-a-lo-cubano</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/arts</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/cartografia-de-bolsillo</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/cubacreativa</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/fablab-copincha</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/precious-plastic-la-habana</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/precious-plastic/lab</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/punto-de-acceso</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/red-verde</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conuco/uso-racional-de-energia</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/conucos/seacamp</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/logo</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/logo-button</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/logo-opensource</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/resumen</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/copincha/wiki</li>
|
|
|
|
|
|
|
|
|
|
<li>m00--cv/pphlab/logo-button</li>
|
|
|
|
|
|
|
|
|
|
<li>m00/20210923120044899</li>
|
|
|
|
|
|
|
|
|
|
<li>m00/20210923120049350</li>
|
|
|
|
|
|
|
|
|
|
<li>m00/20210923120617965</li>
|
|
|
|
|
|
|
|
|
|
<li>m00/20210923120617965/20210923120629416</li>
|
|
|
|
|
|
|
|
|
|
<li>Magic Sauce</li>
|
|
|
|
|
|
|
|
|
|
<li>moo--bio--cv</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320162923878</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320162935684</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163054007</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163107484</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163148202</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163644785</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163708240</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163945008</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320163953626</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320164246847</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320164256776</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165154859</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165219612</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165227719</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165230784</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165233057</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165237221</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165320074</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165326863</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320165433722</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320170459225</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320170901136</li>
|
|
|
|
|
|
|
|
|
|
<li>Nestor/20220320170907467</li>
|
|
|
|
|
|
|
|
|
|
<li>notas recuperadas</li>
|
|
|
|
|
|
|
|
|
|
<li>Notebook Mod</li>
|
|
|
|
|
|
|
|
|
|
<li>Notebook theme</li>
|
|
|
|
|
|
|
|
|
|
<li>Nuevo Tiddler</li>
|
|
|
|
|
|
|
|
|
|
<li>Nuevo Tiddler 1</li>
|
|
|
|
|
|
|
|
|
|
<li>Nuevo Tiddler 2</li>
|
|
|
|
|
|
|
|
|
|
<li>Nuevo Tiddler 3</li>
|
|
|
|
|
|
|
|
|
|
<li>Nuevo Tiddler 5</li>
|
|
|
|
|
|
|
|
|
|
<li>Nuevo Tiddler 6</li>
|
|
|
|
|
|
|
|
|
|
<li>Organizando una Feria</li>
|
|
|
|
|
|
|
|
|
|
<li>Organizando una Feria/</li>
|
|
|
|
|
|
|
|
|
|
<li>Personalización</li>
|
|
|
|
|
|
|
|
|
|
<li>Presentacion Lucerne</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820203751069</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820203801417</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820203805015</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820203807830</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820203905830</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820221722596</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820221802840</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820221806501</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820221841837</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820232310672</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820232400689</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820232418488</li>
|
|
|
|
|
|
|
|
|
|
<li>Proyectos/20220820232427552</li>
|
|
|
|
|
|
|
|
|
|
<li>proyectos/copincha/conuco/precious-plastic-la-habana</li>
|
|
|
|
|
|
|
|
|
|
<li>Prueba de Markdown</li>
|
|
|
|
|
|
|
|
|
|
<li>Pruebas</li>
|
|
|
|
|
|
|
|
|
|
<li>Publicar desde TiddlyHost</li>
|
|
|
|
|
|
|
|
|
|
<li>Renombrar</li>
|
|
|
|
|
|
|
|
|
|
<li>Revisiones</li>
|
|
|
|
|
|
|
|
|
|
<li>sidebar/documentos</li>
|
|
|
|
|
|
|
|
|
|
<li>sidebar/home</li>
|
|
|
|
|
|
|
|
|
|
<li>sidebar/main-buttons</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo texto1</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo texto2</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo texto3</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo texto4</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo texto5</li>
|
|
|
|
|
|
|
|
|
|
<li>slider ejemplo texto6</li>
|
|
|
|
|
|
|
|
|
|
<li>Solicitud de visa a ifa</li>
|
|
|
|
|
|
|
|
|
|
<li>Tablas</li>
|
|
|
|
|
|
|
|
|
|
<li>Tamano de titulo</li>
|
|
|
|
|
|
|
|
|
|
<li>Tiddlers</li>
|
|
|
|
|
|
|
|
|
|
<li>Tipos de Donaciones</li>
|
|
|
|
|
|
|
|
|
|
<li>Trashbin</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled 1</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled 2</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled 3</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled 4</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled 5</li>
|
|
|
|
|
|
|
|
|
|
<li>Untitled 6</li>
|
|
|
|
|
|
|
|
|
|
<li>Visa</li>
|
|
|
|
|
|
|
|
|
|
<li>visualizar pdf</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
.tc-remove-when-wiki-loaded {display: none;}
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</noscript>
|
|
|
|
|
<!--~~ Ordinary tiddlers ~~-->
|
|
|
|
|
<script class="tiddlywiki-tiddler-store" type="application/json">[
|
|
|
|
|
{"created":"20220820172653458","creator":"M0","text":"","title":"!!Calculo","modified":"20220820172656157","modifier":"M0","tmap.id":"629468f5-2d09-445e-9d47-d47e37402031"},
|
|
|
|
|
{"text":"bottom","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/_sq/Stories/config/openLinkDivert","modified":"20200422063802598","created":"20170629173808777"},
|
|
|
|
|
{"text":"disable","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/_sq/Stories/config/showRiverDropZones","modified":"20200523213957947","created":"20200417170940547"},
|
|
|
|
|
{"text":"1500px","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/_sq/Stories/config/sidebaroverlaybreakpoint","modified":"20200416182732404","created":"20170616192704225"},
|
|
|
|
|
{"text":"classic","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/_sq/Stories/config/Story2-storyview","tags":"","modified":"20200417205214764","created":"20200415213157946"},
|
|
|
|
|
{"text":"1100px","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/_sq/Stories/config/twostorybreakpoint","modified":"20200416182753284","created":"20170616192701335"},
|
|
|
|
|
{"created":"20170609055347900","text":"\\define divertTiddlerButton()\n\u003C$set name=\"otherStoryList\" filter=\"[enlist{$:/_sq/Stories/StoriesList!!list}] -[\u003Ctv-story-list>]\" select=\"0\">\n\u003C$set name=\"otherHistoryList\" filter=\"[enlist{$:/_sq/Stories/HistoriesList!!list}] -[\u003Ctv-history-list>]\" select=\"0\">\n\t\u003C$button class=\u003C\u003Ctv-config-toolbar-class>> tooltip=\"Divert this tiddler to the other story\">\n\t\t\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> >\n\t\t\t\u003C$action-sendmessage $message=\"tm-close-tiddler\" $param=\u003C\u003CcurrentTiddler>> />\n\t\t\u003C/$navigator>\n\t\t\u003C$navigator story=\u003C\u003CotherStoryList>> history=\u003C\u003CotherHistoryList>> >\n\t\t\t\u003C$action-navigate $to=\u003C\u003CcurrentTiddler>> />\n\t\t\u003C/$navigator>\t\n\t\t\u003Cspan class=\"sq-button-divert-right sq-button-divert\">{{$:/_sq/Stories/icons/divert-right.svg}}\u003C/span>\u003Cspan class=\"sq-button-divert-left sq-button-divert\">{{$:/_sq/Stories/icons/divert-left.svg}}\u003C/span>\n\t\u003C/$button>\n\u003C/$set>\n\u003C/$set>\n\\end\n\n\u003C\u003CdivertTiddlerButton>>\n","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/_sq/Stories/divertTiddlerMacro","tags":"$:/tags/ViewToolbar","modified":"20200806034422564","list-before":"","description":"Divert left/right","caption":"{{$:/_sq/Stories/icons/divert-right.svg}} divert left/right"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/ak/plugins/EmbedYouTube/EmbedYouTube.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/ak/plugins/EmbedYouTube/EmbedYouTube.js\\ntype: application/javascript\\nmodule-type: macro\\n\\n\\n\u003C\u003CembedYouTube \\\"YouTube url\\\" \\\"YouTube API\\\">>\\n\\n\\\\*/\\n\\n(function(){\\n\\n\\n\\\"use strict\\\";\\n\\n\\n\\nexports.name = \\\"embedYouTube\\\";\\n\\n\\nexports.params = [{name: \\\"url\\\"}, {name: \\\"APIKey\\\"}];\\n\\n/*\\nRun the macro\\n*/\\n\\nexports.run = function(url, APIKey) {\\n\\n var url = url || \\\"None\\\";\\n var encurl = encodeURI(url) || \\\"None\\\";\\n var tiddlerTitle = \\\"None\\\";\\n var tiddlerText = \\\"None\\\";\\n\\n\\n var regExp = /.*(?:youtu.be\\\\/|v\\\\/|u\\\\/\\\\w\\\\/|embed\\\\/|watch\\\\?v=)([^#\\\\&\\\\?]*).*/;\\n var match = url.match(regExp);\\n// console.log(\\\">>>>>>>>>>>>>>>>>>>>\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\\\");\\n var VideoCode = (match&&match[1].length==11)? match[1] : false ;\\n// console.log(\\\">>>>>>>>>>>>>>>>>>>>\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\\\");\\n\\n\\n//\\nvar ytApiKey = APIKey;\\n\\n//\\n\\n tiddlerText = \\\"\u003Ciframe width='560' height='315' src='https://www.youtube.com/embed/\\\" + VideoCode + \\\"' frameborder='0' >\u003C/iframe>\\\"\\n\\n // console.log(\\\">>>>>>>>>>>>>>>>>> \\\" + tiddlerTitle + \\\"\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\\\");\\n\\n// $tw.wiki.addTiddler({title:tiddlerTitle, text:tiddlerText});\\n\\n// $.get(, function(data) {tiddlerTitle = (data.items[0].snippet.title);});\\n\\n$tw.utils.httpRequest({url: \\\"https://www.googleapis.com/youtube/v3/videos?part=snippet&id=\\\" + VideoCode + \\\"&key=\\\" + ytApiKey, callback: function (error,data){\\n if (error){\\n console.log(\\\"ERROR:\\\"+error);\\n }\\n\\n const parser = JSON.parse(data);\\n\\n //console.log(\\\">>>>>>>>>>>>>>>>>> \\\" + parser[\\\"items\\\"][0][\\\"snippet\\\"][\\\"title\\\"] + \\\"\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\\\");\\n \\n tiddlerTitle = parser[\\\"items\\\"][0][\\\"snippet\\\"][\\\"title\\\"] ;\\n\\n $tw.wiki.addTiddler({title:tiddlerTitle, text:tiddlerText});\\n \\n }}) \\n\\n\\n return \\\"[[\\\"+tiddlerTitle +\\\"]]\\\";\\n};\\n\\n\\n})();\",\n \"bag\": \"default\",\n \"revision\": \"22\",\n \"type\": \"application/javascript\",\n \"title\": \"$:/ak/plugins/EmbedYouTube/EmbedYouTube.js\",\n \"tags\": \"\",\n \"module-type\": \"macro\",\n \"modified\": \"20200426150727358\",\n \"created\": \"20200426122110951\"\n },\n \"$:/ak/plugins/EmbedYouTube/change.log\": {\n \"created\": \"20200426151520281\",\n \"text\": \"\\\"\\\"\\\"\\n''2020-04-25'': v0.0.4 initial release\\n\\\"\\\"\\\"\",\n \"bag\": \"default\",\n \"revision\": \"1\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"title\": \"$:/ak/plugins/EmbedYouTube/change.log\",\n \"tags\": \"\",\n \"modified\": \"20200426152636462\"\n },\n \"$:/ak/plugins/EmbedYouTube/state/EmbedYouTube\": {\n \"created\": \"20200426121839070\",\n \"text\": \"\",\n \"bag\": \"default\",\n \"revision\": \"51\",\n \"url\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"title\": \"$:/ak/plugins/EmbedYouTube/state/EmbedYouTube\",\n \"modified\": \"20200426152007932\",\n \"apikey\": \"\"\n },\n \"Add YouTube Video\": {\n \"text\": \"\\\\define embed-YTVideo()\\n\u003C\u003CembedYouTube \\\"$(extUrl)$\\\" \\\"$(APIKey)$\\\">>\\n\\\\end\\n\\n\u003C$edit-text class='tc-edit-texteditor' tiddler='$:/ak/plugins/EmbedYouTube/state/EmbedYouTube' field='url' placeholder='YouTube video URL'/>\u00
|
|
|
|
|
{"title":"$:/build","commit":"f6904587926a74f2dc604fa068ba86409ef25868","text":"Built from branch 'tiddlywiki-com' at commit f6904587926a74f2dc604fa068ba86409ef25868 of https://github.com/Jermolene/TiddlyWiki5 at 2022-08-02 11:35:19 UTC\n"},
|
|
|
|
|
{"created":"20170615081040584","text":"no","bag":"default","revision":"0","type":"text/vnd.tiddlywiki","title":"$:/config/_sq/Stories/story2","modified":"20220418161545529"},
|
|
|
|
|
{"title":"$:/config/AnimationDuration","text":"400"},
|
|
|
|
|
{"title":"$:/config/AutoFocus","text":"title"},
|
|
|
|
|
{"title":"$:/config/codemirror/autoCloseTags","type":"bool","text":"true\n"},
|
|
|
|
|
{"title":"$:/config/codemirror/cursorBlinkRate","type":"integer","text":"530"},
|
|
|
|
|
{"title":"$:/config/codemirror/indentUnit","text":"4","type":"integer","created":"20210428074518239","modified":"20211202024030582","revision":"0","bag":"default"},
|
|
|
|
|
{"title":"$:/config/codemirror/indentWithTabs","type":"bool","text":"true"},
|
|
|
|
|
{"created":"20220418170636921","creator":"M0","title":"$:/config/codemirror/keyMap","type":"string","text":"sublime\n","modified":"20220418170636921","modifier":"M0"},
|
|
|
|
|
{"created":"20220418125407631","text":"true","title":"$:/config/codemirror/lineNumbers","type":"bool","modified":"20220418125407631"},
|
|
|
|
|
{"title":"$:/config/codemirror/showCursorWhenSelecting","type":"bool","text":"true"},
|
|
|
|
|
{"title":"$:/config/codemirror/smartIndent","type":"bool","text":"true"},
|
|
|
|
|
{"title":"$:/config/codemirror/styleActiveLine","type":"bool","text":"false"},
|
|
|
|
|
{"created":"20220418125426773","title":"$:/config/codemirror/tabSize","type":"integer","text":"4","modified":"20220418125426773"},
|
|
|
|
|
{"created":"20220418170642984","creator":"M0","title":"$:/config/codemirror/theme","type":"string","text":"cmplus","modified":"20220418170642984","modifier":"M0"},
|
|
|
|
|
{"created":"20220820014609536","creator":"M0","title":"$:/config/DefaultMoreSidebarTab","text":"$:/core/ui/MoreSideBar/All","modified":"20220820014609536","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165732943","creator":"M0","text":"hide","title":"$:/config/EditToolbarButtons/Visibility/$:/_sq/Stories/divertTiddlerEditMacro","modified":"20220418165732943","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165731600","creator":"M0","text":"hide","title":"$:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/delete","modified":"20220418165731600","modifier":"M0"},
|
|
|
|
|
{"created":"20220418214027768","creator":"Tobias Beer","text":"http://tobibeer.github.io/tw5-plugins","bag":"default","revision":"0","top":"150px","title":"$:/config/ExternalWiki/tobibeer","modified":"20220418214027768","modifier":"Tobias Beer"},
|
|
|
|
|
{"created":"20220418190238810","creator":"M0","text":"yes","title":"$:/config/fa5/decorate-extlinks","modified":"20220904213850214","modifier":"M0"},
|
|
|
|
|
{"created":"20220418190233299","creator":"M0","text":"yes","title":"$:/config/fa5/decorate-syslinks","modified":"20220418190236824","modifier":"M0"},
|
|
|
|
|
{"created":"20220820014430136","creator":"M0","title":"$:/config/Navigation/openLinkFromInsideRiver","text":"above","modified":"20220820014430136","modifier":"M0"},
|
|
|
|
|
{"title":"$:/config/Navigation/openLinkFromOutsideRiver","text":"top"},
|
|
|
|
|
{"title":"$:/config/NewJournal/Tags","text":"Diario\n"},
|
|
|
|
|
{"title":"$:/config/NewJournal/Text","text":""},
|
|
|
|
|
{"title":"$:/config/NewJournal/Title","text":"DD de MMM de YYYY"},
|
|
|
|
|
{"created":"20220418165650599","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/_sq/Stories/Templates/StoryTogglePageControl","modified":"20220418165650599","modifier":"M0"},
|
|
|
|
|
{"created":"20220820024009058","creator":"M0","text":"show","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search","modified":"20220904214111862","modifier":"M0"},
|
|
|
|
|
{"created":"20220904214115381","creator":"M0","text":"show","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page","modified":"20230304174339801","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165608490","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home","modified":"20220820024044691","modifier":"M0"},
|
|
|
|
|
{"created":"20220517033311022","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import","modified":"20220820055020028","modifier":"M0"},
|
|
|
|
|
{"created":"20230304173615621","creator":"M0","text":"show","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language","modified":"20230304173615621","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165646719","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions","modified":"20220820054948899","modifier":"M0"},
|
|
|
|
|
{"created":"20220517035033204","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image","modified":"20220517035038687","modifier":"M0"},
|
|
|
|
|
{"created":"20220517035042038","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal","modified":"20220820023948691","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165623992","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-tiddler","modified":"20220418211008359","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165645359","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh","modified":"20220418210954134","modifier":"M0"},
|
|
|
|
|
{"created":"20220418210950550","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/save-wiki","modified":"20220820024504584","modifier":"M0"},
|
|
|
|
|
{"created":"20220904214100383","creator":"M0","text":"show","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/trashbin","modified":"20220904214106350","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165636074","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/commander/buttons/pagecontrol","modified":"20220418165636074","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165652318","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","modified":"20220418165652318","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165654511","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/utility/ui/Buttons/ViewFields","modified":"20220418165654511","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165630126","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button","modified":"20220418165630126","modifier":"M0"},
|
|
|
|
|
{"created":"20220904214040941","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/plugins/TWaddle/SideEditor/new-btn","modified":"20220904214040941","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165655919","creator":"M0","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/themes/nico/notebook/ui/Buttons/SwitchPalette","modified":"20220418165655919","modifier":"M0"},
|
|
|
|
|
{"created":"20220903062128573","creator":"M0","title":"$:/config/Plugins/Disabled/$:/plugins/nico/notebook-mobile","text":"no","modified":"20220903062210965","modifier":"M0"},
|
|
|
|
|
{"created":"20220418205653460","creator":"M0","text":"yes","title":"$:/config/RelinkOnRename","modified":"20220829144416272","modifier":"M0"},
|
|
|
|
|
{"created":"20220418190705826","creator":"M0","text":"simple-textarea","title":"$:/config/section-editor/config-editor-type","modified":"20220418190707174","modifier":"M0"},
|
|
|
|
|
{"title":"$:/config/ShortcutInfo/advanced-search-sidebar","text":"{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"},
|
|
|
|
|
{"title":"$:/config/ShortcutInfo/change-sidebar-layout","text":"{{$:/language/Shortcuts/SidebarLayout/Hint}}"},
|
|
|
|
|
{"title":"$:/config/ShortcutInfo/sidebar-search","text":"{{$:/language/Buttons/SidebarSearch/Hint}}"},
|
|
|
|
|
{"title":"$:/config/ShortcutInfo/toggle-sidebar","text":"{{$:/language/Buttons/ToggleSidebar/Hint}}"},
|
|
|
|
|
{"title":"$:/config/shortcuts/advanced-search-sidebar","text":"alt-Enter"},
|
|
|
|
|
{"title":"$:/config/shortcuts/change-sidebar-layout","text":"shift-alt-Down"},
|
|
|
|
|
{"title":"$:/config/shortcuts/sidebar-search","text":""},
|
|
|
|
|
{"title":"$:/config/shortcuts/toggle-sidebar","text":"alt-shift-S"},
|
|
|
|
|
{"created":"20220418164800184","title":"$:/config/sq/streams/editor-engine","description":"Editor to use for Streams","caption":"Editor to use for Streams","settings-template":"$:/plugins/sq/streams/ui/templates/settings/select","option-names":"[[Default]] [[CodeMirror]]","option-values":"text codemirror","condition":"[[widget]modules[]prefix[$:/plugins/tiddlywiki/codemirror/edit-codemirror.js]]","text":"codemirror","modified":"20220418164800184"},
|
|
|
|
|
{"created":"20220418170119377","creator":"M0","text":"no","title":"$:/config/sq/streams/enable-edit-toolbar","description":"Enable toolbar in editor","caption":"Show toolbar in editor","settings-template":"$:/plugins/sq/streams/ui/templates/settings/input-switch","modified":"20220418170126761","modifier":"M0"},
|
|
|
|
|
{"created":"20220418220423430","creator":"M0","title":"$:/config/sq/streams/node-max-width","description":"Maximum displayed width of a Stream node","caption":"Maximum node width","settings-template":"$:/plugins/sq/streams/ui/templates/settings/input","text":"100%","modified":"20220418220437058","modifier":"M0"},
|
|
|
|
|
{"created":"20220820034847396","creator":"M0","title":"$:/config/sq/streams/stream-enable-filter","description":"Filter that determines which tiddlers get the add node button at the bottom","caption":"Filter to enable Streams","settings-template":"$:/plugins/sq/streams/ui/templates/settings/input","text":"[!is[shadow]]","modified":"20220820034849056","modifier":"M0"},
|
|
|
|
|
{"created":"20160112001347610","creator":"Mat von TWaddle","text":"yes","title":"$:/config/Tiddlers/TitleLinks","modified":"20220904210223989","modifier":"Mat von TWaddle"},
|
|
|
|
|
{"created":"20220820015153193","creator":"M0","text":"yes","title":"$:/config/Toolbar/Icons","modified":"20220820015600930","modifier":"M0"},
|
|
|
|
|
{"created":"20220820015151244","creator":"M0","text":"no","title":"$:/config/Toolbar/Text","modified":"20220820015604161","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165539016","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/_sq/Stories/divertTiddlerMacro","modified":"20220418165539016","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235229772","creator":"M0","text":"show","title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close","modified":"20220819235231828","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165553383","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit","modified":"20220418165553383","modifier":"M0"},
|
|
|
|
|
{"created":"20220418165534519","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info","modified":"20220819235151229","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235116552","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/Gk0Wk/page-toc/PageTOCButton","modified":"20220819235116552","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235112973","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/kookma/favorites/ui/buttons/add-remove","modified":"20220819235112973","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235225812","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/kookma/trashbin/ui/toolbar-button","modified":"20220819235225812","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235131140","creator":"M0","text":"hide","title":"$:/config/ViewToolbarButtons/Visibility/$:/Tekan/TiddlerToBoard","modified":"20220819235131140","modifier":"M0"},
|
|
|
|
|
{"created":"20220819202807865","creator":"M0","text":"\\whitespace trim\n\u003Cdiv class=\"tc-control-panel\">\n\u003C$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n\u003C/div>\n","title":"$:/ControlPanel","color":"#bbb","modified":"20220819202809994","modifier":"M0"},
|
|
|
|
|
{"title":"$:/core","name":"Core","description":"TiddlyWiki5 core","author":"JeremyRuston","core-version":">=5.0.0","plugin-priority":"0","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/Acknowledgements\":{\"title\":\"$:/Acknowledgements\",\"text\":\"TiddlyWiki incorporates code from these fine OpenSource projects:\\n\\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\\n\\nAnd media from these projects:\\n\\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\\n\"},\"$:/core/copyright.txt\":{\"title\":\"$:/core/copyright.txt\",\"type\":\"text/plain\",\"text\":\"TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n\\nCopyright (c) 2004-2007, Jeremy Ruston\\nCopyright (c) 2007-2022, UnaMesa Association\\nAll rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are met:\\n\\n* Redistributions of source code must retain the above copyright notice, this\\n list of conditions and the following disclaimer.\\n\\n* Redistributions in binary form must reproduce the above copyright notice,\\n this list of conditions and the following disclaimer in the documentation\\n and/or other materials provided with the distribution.\\n\\n* Neither the name of the copyright holder nor the names of its\\n contributors may be used to endorse or promote products derived from\\n this software without specific prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\"},\"$:/core/icon\":{\"title\":\"$:/core/icon\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 128 128\\\">\u003Cpath d=\\\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.3
|
|
|
|
|
{"title":"$:/core/images/facebook","text":"\u003Csvg width=\"22pt\" height=\"22pt\" class=\"tc-image-cui-cib-facebook tc-image-button\" viewBox=\"0 0 32 32\">\u003Cpath style=\"fill:#000000;\" d=\"M32 16c0-8.839-7.167-16-16-16-8.839 0-16 7.161-16 16 0 7.984 5.849 14.604 13.5 15.803v-11.177h-4.063v-4.625h4.063v-3.527c0-4.009 2.385-6.223 6.041-6.223 1.751 0 3.584 0.312 3.584 0.312v3.937h-2.021c-1.984 0-2.604 1.235-2.604 2.5v3h4.437l-0.713 4.625h-3.724v11.177c7.645-1.199 13.5-7.819 13.5-15.803z\"/>\u003C/svg>","caption":"cib-facebook","collection":"Brand","created":"20210613065139094","creator":"M0","library":"CoreUI Icons","library_version":"2.0.1","modified":"20210831064629511","modifier":"M0","tags":"$:/tags/Image Icons Images SVG"},
|
|
|
|
|
{"title":"$:/core/images/github","text":"\u003Csvg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\">\u003Cpath fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/>\u003C/svg>","tags":"$:/tags/Image"},
|
|
|
|
|
{"title":"$:/core/images/instagram","text":"\u003Csvg width=\"22pt\" height=\"22pt\" class=\"tc-image-cui-cib-instagram tc-image-button\" viewBox=\"0 0 32 32\">\u003Cpath style=\"fill:#000000;\" d=\"M16 0c-4.349 0-4.891 0.021-6.593 0.093-1.709 0.084-2.865 0.349-3.885 0.745-1.052 0.412-1.948 0.959-2.833 1.849-0.891 0.885-1.443 1.781-1.849 2.833-0.396 1.020-0.661 2.176-0.745 3.885-0.077 1.703-0.093 2.244-0.093 6.593s0.021 4.891 0.093 6.593c0.084 1.704 0.349 2.865 0.745 3.885 0.412 1.052 0.959 1.948 1.849 2.833 0.885 0.891 1.781 1.443 2.833 1.849 1.020 0.391 2.181 0.661 3.885 0.745 1.703 0.077 2.244 0.093 6.593 0.093s4.891-0.021 6.593-0.093c1.704-0.084 2.865-0.355 3.885-0.745 1.052-0.412 1.948-0.959 2.833-1.849 0.891-0.885 1.443-1.776 1.849-2.833 0.391-1.020 0.661-2.181 0.745-3.885 0.077-1.703 0.093-2.244 0.093-6.593s-0.021-4.891-0.093-6.593c-0.084-1.704-0.355-2.871-0.745-3.885-0.412-1.052-0.959-1.948-1.849-2.833-0.885-0.891-1.776-1.443-2.833-1.849-1.020-0.396-2.181-0.661-3.885-0.745-1.703-0.077-2.244-0.093-6.593-0.093zM16 2.88c4.271 0 4.781 0.021 6.469 0.093 1.557 0.073 2.405 0.333 2.968 0.553 0.751 0.291 1.276 0.635 1.844 1.197 0.557 0.557 0.901 1.088 1.192 1.839 0.22 0.563 0.48 1.411 0.553 2.968 0.072 1.688 0.093 2.199 0.093 6.469s-0.021 4.781-0.099 6.469c-0.084 1.557-0.344 2.405-0.563 2.968-0.303 0.751-0.641 1.276-1.199 1.844-0.563 0.557-1.099 0.901-1.844 1.192-0.556 0.22-1.416 0.48-2.979 0.553-1.697 0.072-2.197 0.093-6.479 0.093s-4.781-0.021-6.48-0.099c-1.557-0.084-2.416-0.344-2.979-0.563-0.76-0.303-1.281-0.641-1.839-1.199-0.563-0.563-0.921-1.099-1.197-1.844-0.224-0.556-0.48-1.416-0.563-2.979-0.057-1.677-0.084-2.197-0.084-6.459 0-4.26 0.027-4.781 0.084-6.479 0.083-1.563 0.339-2.421 0.563-2.979 0.276-0.761 0.635-1.281 1.197-1.844 0.557-0.557 1.079-0.917 1.839-1.199 0.563-0.219 1.401-0.479 2.964-0.557 1.697-0.061 2.197-0.083 6.473-0.083zM16 7.787c-4.541 0-8.213 3.677-8.213 8.213 0 4.541 3.677 8.213 8.213 8.213 4.541 0 8.213-3.677 8.213-8.213 0-4.541-3.677-8.213-8.213-8.213zM16 21.333c-2.948 0-5.333-2.385-5.333-5.333s2.385-5.333 5.333-5.333c2.948 0 5.333 2.385 5.333 5.333s-2.385 5.333-5.333 5.333zM26.464 7.459c0 1.063-0.865 1.921-1.923 1.921-1.063 0-1.921-0.859-1.921-1.921 0-1.057 0.864-1.917 1.921-1.917s1.923 0.86 1.923 1.917z\"/>\u003C/svg>","caption":"cib-instagram","collection":"Brand","created":"20210613063851924","creator":"M0","library":"CoreUI Icons","library_version":"2.0.1","modified":"20210831064634982","modifier":"M0","tags":"$:/tags/Image Icons Images SVG"},
|
|
|
|
|
{"title":"$:/core/images/telegram","text":"\u003Csvg width=\"22pt\" height=\"22pt\" class=\"tc-image-fa-telegram-plane tc-image-button\" viewBox=\"0 0 448 512\">\u003Cpath style=\"fill:#000000;\" d=\"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"/>\u003C/svg>","caption":"telegram-plane","collection":"Solid","created":"20210613065042962","creator":"M0","library":"Font Awesome","library_version":"5.15.2","modified":"20210925043721025","modifier":"M0","tags":"$:/tags/Image Icons Images SVG"},
|
|
|
|
|
{"title":"$:/core/images/twitter","text":"\u003Csvg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\">\u003Cpath style=\"fill:#000000;\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/>\u003C/svg>","created":"20210925043640995","modified":"20210925043713338","tags":"$:/tags/Image"},
|
|
|
|
|
{"title":"$:/core/images/whatsapp","text":"\u003Csvg class=\"tc-image-social-whatsapp tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 38 38.295997619628906\">\u003Cpath fill-rule=\"evenodd\" d=\"M28.092 22.894c-.468-.256-2.766-1.496-3.196-1.671-.43-.175-.745-.267-1.08.199-.336.463-1.289 1.502-1.578 1.81-.29.307-.57.335-1.036.079-.468-.256-1.984-.817-3.741-2.506-1.368-1.315-2.266-2.91-2.526-3.397-.26-.487-.002-.736.245-.964.223-.205.498-.538.746-.807.248-.27.336-.465.506-.776.17-.313.102-.593-.008-.836-.11-.243-.975-2.621-1.336-3.59-.361-.967-.764-.823-1.042-.834-.277-.01-.594-.062-.911-.074-.318-.012-.838.088-1.292.549-.454.459-1.728 1.565-1.815 3.908-.088 2.343 1.533 4.671 1.759 4.997.226.327 3.096 5.405 7.865 7.494 4.77 2.088 4.794 1.452 5.67 1.405.875-.046 2.86-1.047 3.299-2.143.439-1.097.474-2.05.362-2.254-.112-.202-.425-.334-.891-.59zm-8.747 11.29c-3.154 0-6.092-.946-8.544-2.567l-5.968 1.91 1.94-5.767a15.447 15.447 0 0 1-2.957-9.105c0-8.564 6.966-15.53 15.529-15.53 8.563 0 15.53 6.966 15.53 15.53 0 8.563-6.967 15.53-15.53 15.53zm0-34.184C9.042 0 .69 8.352.69 18.655c0 3.525.979 6.82 2.677 9.633L0 38.296l10.329-3.306a18.577 18.577 0 0 0 9.016 2.32C29.647 37.31 38 28.957 38 18.655 38 8.352 29.647 0 19.345 0z\"/>\u003C/svg>","caption":"social-whatsapp","collection":"windows","library":"svg-icon","tags":"$:/tags/Image Icons Images SVG"},
|
|
|
|
|
{"title":"$:/core/templates/server/static.sidebar.wikitext","text":"\\whitespace trim\n\u003Cdiv class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\" role=\"region\" aria-label={{$:/language/SideBar/Caption}}>\n\u003Cdiv class=\"tc-sidebar-header\">\n\u003Ch1 class=\"tc-site-title\">\n\u003C$transclude tiddler=\"$:/SiteTitle\"/>\n\u003C/h1>\n\u003Cdiv class=\"tc-site-subtitle\">\n\u003C$transclude tiddler=\"$:/SiteSubtitle\"/>\n\u003C/div>\n\u003Ch2>\n\u003C/h2>\n\u003Cdiv class=\"tc-sidebar-lists\">\n\u003C$list filter={{$:/DefaultTiddlers}}>\n\u003Cdiv class=\"tc-menu-list-subitem\">\n\u003C$link>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$link>\n\u003C/div>\n\u003C/$list>\n\u003C/div>\n\u003C!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n\u003Ch2>\n{{$:/language/SideBar/Recent/Caption}}\n\u003C/h2>\n\u003Cdiv class=\"tc-sidebar-lists\">\n\u003C$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n\u003C/div>\n\u003C/div>\n\u003C/div>\n-->\n"},
|
|
|
|
|
{"title":"$:/core/ui/Buttons/info","tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}","description":"{{$:/language/Buttons/Info/Hint}}","text":"\\whitespace trim\n\\define button-content()\n\\whitespace trim\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\n\u003C$text text={{$:/language/Buttons/Info/Caption}}/>\n\u003C/span>\n\u003C/$list>\n\\end\n\u003C$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n\u003C$button popup=\u003C\u003CtiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\"tc-selected\">\n\u003C$macrocall $name=\"button-content\" mode=\"inline\"/>\n\u003C/$button>\n\u003C/$reveal>\n\u003C$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n\u003C$reveal state=\u003C\u003CtiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n\u003C$button set=\u003C\u003CtiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\"tc-selected\">\n\u003C$macrocall $name=\"button-content\" mode=\"inline\"/>\n\u003C/$button>\n\u003C/$reveal>\n\u003C$reveal state=\u003C\u003CtiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n\u003C$button set=\u003C\u003CtiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\"tc-selected\">\n\u003C$macrocall $name=\"button-content\" mode=\"inline\"/>\n\u003C/$button>\n\u003C/$reveal>\n\u003C/$reveal>"},
|
|
|
|
|
{"title":"$:/core/ui/Buttons/more-tiddler-actions","tags":"$:/tags/ViewToolbar","caption":"{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}","description":"{{$:/language/Buttons/More/Hint}}","text":"\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n\u003C$button popup=\u003C\u003Cqualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\"tc-selected\">\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\n\u003C$text text={{$:/language/Buttons/More/Caption}}/>\n\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\u003C$reveal state=\u003C\u003Cqualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n\u003Cdiv class=\"tc-drop-down\">\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$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n\u003C$reveal type=\"match\" state=\u003C\u003Cconfig-title>> text=\"hide\">\n\n\u003C$set name=\"tv-config-toolbar-class\" filter=\"[\u003Ctv-config-toolbar-class>] [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"inline\"/>\n\n\u003C/$set>\n\n\u003C/$reveal>\n\n\u003C/$list>\n\n\u003C/$set>\n\n\u003C/$set>\n\n\u003C/$set>\n\n\u003C/div>\n\n\u003C/$reveal>"},
|
|
|
|
|
{"created":"20220820162040112","creator":"M0","text":"\\whitespace trim\n\\define trashbin-button(class)\n\\whitespace trim\n\u003C$button to=\"Trashbin\" tooltip=Papelera aria-label=Papelera class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/kookma/trashbin/images/trash-alt}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text=Papelera/>\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\\end\n\n\u003C$list filter=\"[list[$:/StoryList]] +[field:title[Trashbin]]\" emptyMessage=\u003C\u003Ctrashbin-button>>>\n\u003C\u003Ctrashbin-button \"tc-selected\">>\n\u003C/$list>\n","title":"$:/core/ui/Buttons/trashbin","tags":"$:/tags/PageControls","caption":"{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}","description":"{{$:/language/Buttons/AdvancedSearch/Hint}}","modified":"20220820165009107","modifier":"M0"},
|
|
|
|
|
{"title":"$:/core/ui/ControlPanel/Settings/codemirror/keyMap","tags":"$:/tags/ControlPanel/Settings/CodeMirror","caption":"{{$:/language/codemirror/keyMap/hint}}","text":"\\define lingo-base() $:/language/codemirror/keyMap\n\n\u003C$link to=\"$:/config/codemirror/keyMap\">\u003C\u003Clingo hint>>\u003C/$link>\n\n\u003C$select tiddler=\"$:/config/codemirror/keyMap\" default=\"default\">\n\u003Coption value=\"default\">default\u003C/option>\n\u003C$list filter=\"[all[shadows+tiddlers]module-type[codemirror-keymap]!has[draft.of]get[text]]\">\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\n\u003C/$list>\n\u003C/$select>\n\n"},
|
|
|
|
|
{"title":"$:/core/ui/ControlPanel/Toolbars/ViewToolbar","tags":"$:/tags/ControlPanel/Toolbars","caption":"{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}","text":"\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\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/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n\u003C/$set>\n\n\u003C/$set>\n"},
|
|
|
|
|
{"title":"$:/core/ui/KeyboardShortcuts/change-sidebar-layout","tags":"$:/tags/KeyboardShortcut","key":"((change-sidebar-layout))","text":"\\whitespace trim\n\u003C$list\n\tfilter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\"\n\temptyMessage=\"\u003C$action-setfield $tiddler='$:/themes/tiddlywiki/vanilla/options/sidebarlayout' text='fixed-fluid'/>\">\n\u003C$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n\u003C/$list>\n"},
|
|
|
|
|
{"title":"$:/core/ui/KeyboardShortcuts/sidebar-search","tags":"$:/tags/KeyboardShortcut","key":"((sidebar-search))","text":"\u003C$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"},
|
|
|
|
|
{"title":"$:/core/ui/KeyboardShortcuts/toggle-sidebar","tags":"$:/tags/KeyboardShortcut","key":"((toggle-sidebar))","text":"\\whitespace trim\n\u003C$list\n\tfilter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\"\n\temptyMessage=\"\u003C$action-setfield $tiddler='$:/state/sidebar' text='yes'/>\">\n\u003C$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n\u003C/$list>\n"},
|
|
|
|
|
{"title":"$:/core/ui/MoreSideBar/Recent","tags":"$:/tags/MoreSideBar","caption":"{{$:/language/SideBar/Recent/Caption}}","text":"\u003C$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"},
|
|
|
|
|
{"created":"20220517033559022","creator":"M0","title":"$:/core/ui/PageTemplate/alerts","tags":"$:/tags/PageTemplate","text":"\u003Cdiv class=\"tc-alerts\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n\u003C/div>\n","modified":"20220820014217049","modifier":"M0"},
|
|
|
|
|
{"created":"20220517033559022","creator":"M0","title":"$:/core/ui/PageTemplate/drafts","tags":"$:/tags/PageTemplate","text":"\\whitespace trim\n\u003C$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n\u003C$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n\u003C$link>\n{{$:/core/images/edit-button}} \u003C$text text=\u003C\u003CcurrentTiddler>>/>\n\u003C/$link>\n\u003C/$list>\n\u003C/$reveal>\n","modified":"20220820014217050","modifier":"M0"},
|
|
|
|
|
{"created":"20220517033559022","creator":"M0","title":"$:/core/ui/PageTemplate/pluginreloadwarning","tags":"$:/tags/PageTemplate","text":"\\define lingo-base() $:/language/\n\n\u003C$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n\u003C$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n\u003Cdiv class=\"tc-plugin-reload-warning\">\n\n\u003C$set name=\"tv-config-toolbar-class\" value=\"\">\n\n\u003C\u003Clingo PluginReloadWarning>> \u003C$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}\u003C/$button>\n\n\u003C/$set>\n\n\u003C/div>\n\n\u003C/$reveal>\n\n\u003C/$list>\n","modified":"20220820014217050","modifier":"M0"},
|
|
|
|
|
{"title":"$:/core/ui/PageTemplate/sidebar","created":"20200430072116835","modified":"20201217174129501","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\nOverwritten by $:/themes/nico/notebook so that the default sidebar does not get rendered.\n"},
|
|
|
|
|
{"created":"20220517033559021","creator":"M0","title":"$:/core/ui/PageTemplate/story","tags":"$:/tags/PageTemplate","text":"\\whitespace trim\n\u003Csection class=\"tc-story-river\">\n\n\u003Csection class=\"story-backdrop\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n\u003C$transclude/>\n\n\u003C/$list>\n\n\u003C/section>\n\n\u003C$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/StoryTiddlerTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n\u003Csection class=\"story-frontdrop\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n\u003C$transclude/>\n\n\u003C/$list>\n\n\u003C/section>\n\n\u003C/section>\n","modified":"20220820014217051","modifier":"M0"},
|
|
|
|
|
{"created":"20220517033559021","creator":"M0","title":"$:/core/ui/PageTemplate/topleftbar","tags":"$:/tags/PageTemplate","text":"\u003Cspan class=\"tc-topbar tc-topbar-left\">\n\n\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>\n\n\u003C/span>\n","modified":"20220820014217053","modifier":"M0"},
|
|
|
|
|
{"created":"20220517033559021","creator":"M0","title":"$:/core/ui/PageTemplate/toprightbar","tags":"$:/tags/PageTemplate","text":"\u003Cspan class=\"tc-topbar tc-topbar-right\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"inline\"/>\n\n\u003C/$list>\n\n\u003C/span>\n","modified":"20220820014217053","modifier":"M0"},
|
|
|
|
|
{"created":"20220819233123319","creator":"M0","text":"\\whitespace trim\n\u003Cdiv class=\"tc-more-sidebar\">\n\u003C$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n\u003C/div>\n","title":"$:/core/ui/SideBar/More","tags":"","caption":"{{$:/language/SideBar/More/Caption}}","modified":"20220819233125254","modifier":"M0"},
|
|
|
|
|
{"created":"20220819233642184","creator":"M0","text":"\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\"/>\n\\end\n\n\\define placeholder()\n\u003Cdiv class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n\u003C$droppable actions=\u003C\u003Cdrop-actions>> enable=\u003C\u003Ctv-allow-drag-and-drop>> tag=\"div\">\n\u003C\u003Cplaceholder>>\n\u003Cdiv>\n$button$\n\u003C/div>\n\u003C/$droppable>\n\\end\n\n\u003Cdiv class=\"tc-sidebar-tab-open\">\n\u003C$list filter=\"[list\u003Ctv-story-list>]\" history=\u003C\u003Ctv-history-list>> storyview=\"pop\">\n\u003Cdiv class=\"tc-sidebar-tab-open-item\">\n\u003C$macrocall $name=\"droppable-item\" button=\"\u003C$button message='tm-close-tiddler' tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class='tc-btn-invisible tc-btn-mini tc-small-gap-right'>{{$:/core/images/close-button}}\u003C/$button>\u003C$link to={{!!title}}>\u003C$view field='title'/>\u003C/$link>\"/>\n\u003C/div>\n\u003C/$list>\n\u003C$tiddler tiddler=\"\">\n\u003Cdiv>\n\u003C$macrocall $name=\"droppable-item\" button=\"\u003C$button message='tm-close-all-tiddlers' class='tc-btn-invisible tc-btn-mini'>\u003C\u003Clingo Button>>\u003C/$button>\"/>\n\u003C/div>\n\u003C/$tiddler>\n\u003C/div>\n","title":"$:/core/ui/SideBar/Open","tags":"","caption":"{{$:/language/SideBar/Open/Caption}}","modified":"20220904033045910","modifier":"M0","orden":"01"},
|
|
|
|
|
{"title":"$:/core/ui/SideBar/Recent","tags":"$:/tags/SideBar","caption":"{{$:/language/SideBar/Recent/Caption}}","text":"\u003C$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"},
|
|
|
|
|
{"created":"20220819233529604","creator":"M0","text":"\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n\u003C\u003Clingo Basics/Version/Prompt>> \u003C\u003Cversion>>\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$set name=\"tv-config-toolbar-class\" value=\"\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n\u003Cdiv style=\"position:relative;\" class={{{ [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n\u003C$checkbox tiddler=\u003C\u003Cconfig-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> \u003C$transclude tiddler=\u003C\u003ClistItem>>/> \u003Ci class=\"tc-muted\">\u003C$transclude tiddler=\u003C\u003ClistItem>> field=\"description\"/>\u003C/i>\n\n\u003C/div>\n\n\u003C/$list>\n\n\u003C/$set>\n\n\u003C/$set>\n\n\u003C/$set>\n","title":"$:/core/ui/SideBar/Tools","tags":"","caption":"{{$:/language/SideBar/Tools/Caption}}","modified":"20220819233531615","modifier":"M0"},
|
|
|
|
|
{"title":"$:/core/ui/SideBarSegments/tabs","tags":"$:/tags/SideBarSegment","text":"\u003Cdiv class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n\u003C$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\"/>\n\n\u003C/div>\n"},
|
|
|
|
|
{"title":"$:/core/ui/TopBar/menu","tags":"$:/tags/TopRightBar","text":"\\whitespace trim\n\u003C$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n\u003C$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}\u003C/$button>\n\u003C/$list>\n\u003C$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n\u003C$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}\u003C/$button>\n\u003C/$list>\n"},
|
|
|
|
|
{"created":"20220904211825705","creator":"M0","text":"","title":"$:/core/ui/ViewTemplate/subtitle","tags":"$:/tags/ViewTemplate","modified":"20220904211830359","modifier":"M0"},
|
|
|
|
|
{"created":"20220904201454368","creator":"M0","text":"\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\u003Cdiv class=\"tc-tiddler-title\">\n\u003Cdiv class=\"tc-titlebar\">\n\u003Cspan class=\"tc-tiddler-controls\">\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] :filter[lookup[$:/config/ViewToolbarButtons/Visibility/]!match[hide]]\" storyview=\"pop\" variable=\"listItem\">\u003C$set name=\"tv-config-toolbar-class\" filter=\"[\u003Ctv-config-toolbar-class>] [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\">\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\u003C/$set>\u003C/$list>\n\u003C/span>\n\u003C$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n\u003C$link>\n\u003C$list filter=\"[\u003CcurrentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] +[!is[blank]]\" variable=\"ignore\">\n\u003C$let foregroundColor={{{ [\u003CcurrentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}}>\n\u003Cspan class=\"tc-tiddler-title-icon\" style=\u003C\u003Ctitle-styles>>>\n{{||$:/core/ui/TiddlerIcon}}\n\u003C/span>\n\u003C/$let>\n\u003C/$list>\n\u003C$transclude tiddler={{{ [\u003CcurrentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateTitleFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/title/default]] }}} />\n\u003C/$link>\n\u003C/$set>\n\u003C/div>\n\n\u003C$reveal type=\"nomatch\" text=\"\" default=\"\" state=\u003C\u003CtiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\">\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"block\"/>\u003C/$list>\n\n\u003C/$reveal>\n\u003C/div>\n","title":"$:/core/ui/ViewTemplate/title","tags":"$:/tags/ViewTemplate","modified":"20220904201959613","modifier":"M0"},
|
|
|
|
|
{"created":"20220418100022543","title":"$:/DefaultTiddlers","text":"m00\n","modified":"20230304222712698","modifier":"M0"},
|
|
|
|
|
{"title":"$:/favicon.ico","type":"image/x-icon","text":"AAABAAEAAAAAAAEAIABxrwEAFgAAAIlQTkcNChoKAAAADUlIRFIAAAJEAAACRAgGAAAA9+A7WgAAIABJREFUeJzsvXmYXOV95/s5S51aetNuJBAYCUkgFmFsE3AwxhCwnQmZiY0x9p3rubHH12P73iR3nuTemcdPcnMzmbETPInH4JjFjAVILEaA2JERqxASEkKtfd9aLbXU+1Jd61nuH+953zpVXa21perl/eg5T7eqa/nVqVPn/Z7fagRBgEaj0Wg0Gs1Exqy1ARqNRqPRaDS1RgsijUaj0Wg0Ex4tiDQajUaj0Ux4tCDSaDQajUYz4dGCSKPRaDQazYRHCyKNRqPRaDQTHi2INBqNRqPRTHi0INJoNBqNRjPh0YJIo9FoNBrNhMeutQEajWZMYAPTgWnAVGAKMBmYFG6N4dYA1AN1QApIAgkgHm6xcLPCzQSM8DUCwAe8cCuGWz7cckAWyACDQBoYAPrDrTfceoBuoAvoBDoAd4T3h0ajGWcYenSHRjPhmR1uFwEXArOAmeF2ATADIYTGMp1AO3AMaAu3o8ARoBU4HG4ajWaCogWRRjP+mQRcFm5zgEvD7ZJwi9XOtFFFETgUbgfCbT+wN9x6a2eaRqM512hBpNGMHy4Brgi3BeE2H+Hx0Zw9R4HdwK5w2xFuh2pplEajGRm0INJoxh4NwDXhdjVwFXAlIq9Hc/7pBrYBW4EtwOZwG6ilURqN5vTQgkijGd00AJ8GrgM+BVyLEECa0c9WoBnYCHwMbECLJI1m1KIFkUYzurgGuB74bLh9qrbmaEaYjcD6cFuH8CRpNJpRgBZEGk3tsIHfB24MtxsQFV2aiUM7sBZYE26r0S0CNJqaoAWRRnP+sICbgc8DNyHEUKqmFmlGGxmEKHofWAW8h+jJpNFozjFaEGk055bPALcAXwi3hppaoxlrDADvhts7wEc1tUajGcdoQaTRjCwXALeF262IUniNZqQ4BLwFvBlux2prjkYzftCCSKM5ez4D3AHcjvAGaTTni3eAN4Dfob1HGs1ZoQWRRnNmfDncvgRcXmNbNBqAncAK4PVw02g0p4EWRBrNqREH/lW4/SEiNKbRjFaOAa8Cr4RbvrbmaDSjHy2INJrhiQN3htsfoTtBa8Ym3cDLwEvhpsWRRlMFLYg0mqHcCfwb4I8Z+1PeNZooncCLwHKEONJoNCFaEGk0gpuBryKEkK4M00wEDiGE0XOIfkcazYRGCyLNRGYB8LVwu67Gtmg0teRj4Nlw21VjWzSamqAFkWaiEQe+DtyNCI1pNJpyXgJ+CzyDzjfSTCC0INJMFH4P+AZCCF1YY1s0mrHAEYQwehr4sMa2aDTnHC2INOOZJPBN4B5E00SNRnNmvAE8BTwJZGtsi0ZzTtCCSDMeuQb4X4BvARfV2BaNZjzRCjwBLAU219gWjWZE0YJIM57418C/Be6qtSEazQRgGbAEeKHWhmg0I4EWRJqxTgPw7XC7vsa2aDQTkXXAY+E2UGNbNJozRgsizVjlMuDfhdvsGtui0WjgMPBouO2tsS0azWmjBZFmrPF7wP8G/CmihF6j0Ywu8sBvgMXo6jTNGEILIs1Y4XbgO4iKMY1GMzZ4CvifiCo1jWZUowWRZrTzr4HvopsoajRjmZeAR9AJ2JpRjBZEmtHK14F/D9xRa0M0Gs2I8Tvg14gu2BrNqEILIs1o4xvA94Dbam2IRqM5Z7wJPIzogq3RjAq0INKMFu4Cvg/8Qa0N0Wg0542VwIOInkYaTU3RgkhTa/4Y+A/AV2ptiEajqRmvAQ8AL9baEM3ERQsiTa34A+AHwFdrbYhGoxk1PAf8CuE50mjOK1oQac431wM/RDRU1Gg0mmo8CvwLogu2RnNe0IJIc764DPgR8H8Ado1t0Wg0ox8XuB/4JbrzteY8oAWR5lzTCPyfCCF0QY1t0Wg0Y49jCGF0H9BfY1s04xgtiDTnku8gxNC1tTZEo9GMeZoRouh/1toQzfhECyLNueAO4M+Af1VrQzQazbjjFeAXiCaPGs2IoQWRZiSZD/w5Imlao9FoziX/AvwPYHetDdGMD7Qg0owEJvB/AX8BXFRjWzQazcShFfg58M+AX2NbNGMcLYg0Z8udCDH0xVobUkvk98gwjKp/932/7G/D3U+jgdLxBKVjpdoxFgQBQRBgmub5NXD08TZCFL1Ua0M0YxctiDRnylzgP6LDY8NS7bulhZCmGkEQDBE6EsMwqgqk4R47wfkX4J+AfbU2RDP20IJIcyb8ACGGLqu1IaOV6PdKX8FrTpXhhI8WRKfFXoQo+lWtDdGMLbQg0pwONwJ/iR63ccqcLJSm0ZwtWhANy3PAz4A1tTZEMzbQgkhzKsQRQugvgUk1tmVUooWP5nxyIo+RpoxehCj6GZCvsS2aUY4WRJqTcTvwV+FPzTCcTBBVfs/0IqaJUi2HSN4mc4gqk6sl+lg6Jd4A7g1/ajRV0YJIMxwNCCH0fyM8RJpTpDJ/KPpTLnDyd40GRBWizDMLggDf95UIMk0T13XV79FjSHNa5IF/RAijgRrbohmFaEGkqcaXEELo1lobMhaRV/eVYghKgkiLIk0Uz/OU2AmCAM/zygRRLpfDsixs28ayrFqbO9Z5CyGMVtTaEM3oQpe+aKIkgb8FlqPFUBlRgRP9f7ULCrmQWZaF53kMDg5SLBaxbRvf9ykWi2WhENd1z+db0YxCoiI5CAJs26ZQKKjbfN9Xx49E/u55Xtlt0fvI56v8/wS/EL4VcY77W8Q5T6MBtIdIU+IW4P8BvlxjO0Yl0ZCG/H/lIuZ5nhJCIBYquVi5rotpmuo5TNPEsiwMwxjy3JrxT7Xzbj6fJ5FIqL8XCgV1jEgP0uDgIJZlUVdXN+R4O9Fzn2oJ/wTkdeAfgHdqbIdmFKDPwhoQ1WPL0GJoWCoXlGpiSIYzPM+jWCwC4DgOjuOUXblXLkJaDGkMw8C27bL/+77P4OCgus22bWzbVoJGHm+u65Z5hSpDspXH23DiaILyZcS57y9rbYim9mgP0cTmGuA/A/fU2pDRjBRAUUFzomoy2YjRdV3a29s5duwYsViMOXPmKHEUj8eHPE5frU885Pm3UCgQj8fxfZ9CoUAikaBYLCrP0IYNG0gmk8yaNYvp06cPW3l2qseQrlSrylPAT4DNtTZEUxusv/3bv621DZra8O+AXyBCZZoqVMsZkomvUMrdkCENWQlkWRbpdJqPPvqIZ555hieeeIJ0Os0VV1zBpEmTcF13SD5IFL04jT+GEyzRJHvTNJVn0fd9HMfBsixWrVrFT37yE9avX08qlWLu3LnYtq0Sr6tVp0VfV4bWqr1m9DYNVyHyiwaATTW2RVMD7JPfRTPOmIbwCv3HWhsylpAiJpoILfOI5ILkOA75fJ7Nmzfz9ttv89Zbb/Hxxx/T1tbG0aNHueGGG5g1axaO4+B5Hr7vY1mW+qmZmARBoER0LBYjHo+TyWRwHIfu7m6effZZXnvtNWKxGD09PRw8eJBrr72Wa6+9lunTp5cJocoNKCvXl6+nqxyHZQGwGOE9/wnQWVNrNOcV7SGaWNwC/Bz4tzW2Y9RTGVKIVvnk83klYjzPI51Ok81m6ejo4IMPPmDJkiUsXbqUjz76iHQ6jeM49Pb2MnPmTObOncukSZPKru6rzTrTC9X4olqYVeaVBUFAJpNhYGAA27aJxWIYhkFnZycrV67k2Wefpbe3l2KxSEtLC++//z579uwhm82q8JrMP5LeykKhUOaxrBRA+vg6KTcCnwIOAwdra4rmfKEF0cThRwgxdG2tDRlrRPvBFAoFMpkMlmWpPI+uri42btzIG2+8wdNPP80777xDe3s7lmWppFdZSj1//nxmz54NlK7cpSjSIYyJg/TgSFEUj8dJJpPE43EKhQK2bbNmzRruu+8+mpubyWQyxGIxbNtmcHCQzs5ONmzYwM6dO6mvr2fevHnqeJN5SJ7nEYvFSCQSVXthaU7KXOAOREPH9TW2RXMe0CGz8c9M4McIQTRhqVZqHBUhlRVglRVkhUKBVCqF7/skEgl
|
|
|
|
|
{"created":"20220518033541514","creator":"M0","title":"$:/favorites/favlist","list":"m00","modified":"20230304222712699","modifier":"M0"},
|
|
|
|
|
{"title":"$:/Import","text":"The following tiddlers were imported:\n\n# [[m00--bio]]\n# [[m00--contact]]\n# [[m00--cv]]\n# [[m00--cv/pphlab/logo-button]]\n# [[m00--cv/copincha/logo-button]]\n# [[m00]]","status":"complete","modified":"20230306015252018","modifier":"m00"},
|
|
|
|
|
{"created":"20220418161223414","text":"sxassa","parent":"$:/Import","stream-type":"default","stream-list":"","modified":"20220418161224817","title":"$:/Import/20220418161223410"},
|
|
|
|
|
{"created":"20220418161224934","parent":"$:/Import","stream-type":"default","modified":"20220418161226175","title":"$:/Import/20220418161224932","text":"asas"},
|
|
|
|
|
{"created":"20220418164647909","text":"AaA","parent":"$:/Import","stream-type":"default","stream-list":"","modified":"20220418164649306","title":"$:/Import/20220418164647907"},
|
|
|
|
|
{"created":"20220418164649707","parent":"$:/Import","stream-type":"default","modified":"20220418164651530","title":"$:/Import/20220418164649705","text":"aAaAa"},
|
|
|
|
|
{"created":"20220418164651998","parent":"$:/Import","stream-type":"default","modified":"20220418164651998","title":"$:/Import/20220418164651994"},
|
|
|
|
|
{"title":"$:/isEncrypted","text":"no"},
|
|
|
|
|
{"created":"20220820160608004","creator":"M0","title":"$:/keepstate/trashbin/sort","text":"sortan[title]","modified":"20220820160608004","modifier":"M0"},
|
|
|
|
|
{"created":"20220418161318659","creator":"M0","title":"$:/language","text":"$:/languages/en-GB","modified":"20230304173619269","modifier":"M0"},
|
|
|
|
|
{"title":"$:/language/DefaultNewTiddlerTitle","text":"Nuevo Tiddler"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-button-foreground","text":"Primario del botón de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-controls-foreground","text":"Primario de controles de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover","text":"Primario de controles de la barra lateral al pasar por encima"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-foreground","text":"Primario de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-foreground-shadow","text":"Sombra de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-muted-foreground","text":"Primario de controles silenciados de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover","text":"Primario de controles silenciados de la barra lateral al pasar por encima"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-background","text":"Fondo de la pestaña de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-background-selected","text":"Fondo de la pestaña de la barra lateral para las pestañas seleccionadas"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-border","text":"Borde de la pestaña de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-border-selected","text":"Borde de la pestaña de la barra lateral para las pestañas seleccionadas"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-divider","text":"Divisor de pestañas de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-foreground","text":"Primario de la pestaña de la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected","text":"Divisor de pestañas de la barra lateral para las pestañas seleccionadas"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground","text":"Primario enlace tiddler en la barra lateral"},
|
|
|
|
|
{"title":"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover","text":"Primario enlace tiddler en la barra lateral al pasar por encima"},
|
|
|
|
|
{"title":"$:/language/SideBar/Recent/Caption","text":"Recent"},
|
|
|
|
|
{"title":"$:/languages/es-ES","name":"es-ES","plugin-type":"language","description":"Castellano. (Spain)","author":"Pau DeLuca,Joe Bordes","core-version":">=5.1.23","version":"5.2.3","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/language/Buttons/AdvancedSearch/Caption\":{\"title\":\"$:/language/Buttons/AdvancedSearch/Caption\",\"text\":\"Búsqueda avanzada\"},\"$:/language/Buttons/AdvancedSearch/Hint\":{\"title\":\"$:/language/Buttons/AdvancedSearch/Hint\",\"text\":\"Búsqueda avanzada\"},\"$:/language/Buttons/Bold/Caption\":{\"title\":\"$:/language/Buttons/Bold/Caption\",\"text\":\"Negrita\"},\"$:/language/Buttons/Bold/Hint\":{\"title\":\"$:/language/Buttons/Bold/Hint\",\"text\":\"Aplicar formato de negrita a la selección\"},\"$:/language/Buttons/Cancel/Caption\":{\"title\":\"$:/language/Buttons/Cancel/Caption\",\"text\":\"Cancelar\"},\"$:/language/Buttons/Cancel/Hint\":{\"title\":\"$:/language/Buttons/Cancel/Hint\",\"text\":\"Descarta los cambios\"},\"$:/language/Buttons/Clear/Caption\":{\"title\":\"$:/language/Buttons/Clear/Caption\",\"text\":\"Limpiar\"},\"$:/language/Buttons/Clear/Hint\":{\"title\":\"$:/language/Buttons/Clear/Hint\",\"text\":\"Limpiar imagen a color solido\"},\"$:/language/Buttons/Clone/Caption\":{\"title\":\"$:/language/Buttons/Clone/Caption\",\"text\":\"Clonar\"},\"$:/language/Buttons/Clone/Hint\":{\"title\":\"$:/language/Buttons/Clone/Hint\",\"text\":\"Hace una copia exacta de este tiddler\"},\"$:/language/Buttons/Close/Caption\":{\"title\":\"$:/language/Buttons/Close/Caption\",\"text\":\"Cerrar\"},\"$:/language/Buttons/Close/Hint\":{\"title\":\"$:/language/Buttons/Close/Hint\",\"text\":\"Cierra este tiddler\"},\"$:/language/Buttons/CloseAll/Caption\":{\"title\":\"$:/language/Buttons/CloseAll/Caption\",\"text\":\"Cerrar todo\"},\"$:/language/Buttons/CloseAll/Hint\":{\"title\":\"$:/language/Buttons/CloseAll/Hint\",\"text\":\"Cierra todos los tiddlers\"},\"$:/language/Buttons/CloseOthers/Caption\":{\"title\":\"$:/language/Buttons/CloseOthers/Caption\",\"text\":\"Cerrar los demás\"},\"$:/language/Buttons/CloseOthers/Hint\":{\"title\":\"$:/language/Buttons/CloseOthers/Hint\",\"text\":\"Cierra todos tiddlers abiertos excepto este\"},\"$:/language/Buttons/ControlPanel/Caption\":{\"title\":\"$:/language/Buttons/ControlPanel/Caption\",\"text\":\"Panel de Control\"},\"$:/language/Buttons/ControlPanel/Hint\":{\"title\":\"$:/language/Buttons/ControlPanel/Hint\",\"text\":\"Abre el Panel de Control\"},\"$:/language/Buttons/CopyToClipboard/Caption\":{\"title\":\"$:/language/Buttons/CopyToClipboard/Caption\",\"text\":\"copiar a portapapeles\"},\"$:/language/Buttons/CopyToClipboard/Hint\":{\"title\":\"$:/language/Buttons/CopyToClipboard/Hint\",\"text\":\"Copia este texto al portapapeles\"},\"$:/language/Buttons/Delete/Caption\":{\"title\":\"$:/language/Buttons/Delete/Caption\",\"text\":\"Borrar\"},\"$:/language/Buttons/Delete/Hint\":{\"title\":\"$:/language/Buttons/Delete/Hint\",\"text\":\"Borra este tiddler\"},\"$:/language/Buttons/Edit/Caption\":{\"title\":\"$:/language/Buttons/Edit/Caption\",\"text\":\"Editar\"},\"$:/language/Buttons/Edit/Hint\":{\"title\":\"$:/language/Buttons/Edit/Hint\",\"text\":\"Permite editar este tiddler\"},\"$:/language/Buttons/EditorHeight/Caption\":{\"title\":\"$:/language/Buttons/EditorHeight/Caption\",\"text\":\"Altura del editor\"},\"$:/language/Buttons/EditorHeight/Caption/Auto\":{\"title\":\"$:/language/Buttons/EditorHeight/Caption/Auto\",\"text\":\"Ajustar al contenido\"},\"$:/language/Buttons/EditorHeight/Caption/Fixed\":{\"title\":\"$:/language/Buttons/EditorHeight/Caption/Fixed\",\"text\":\"Altura fija\"},\"$:/language/Buttons/EditorHeight/Hint\":{\"title\":\"$:/language/Buttons/EditorHeight/Hint\",\"text\":\"Determina la altura del cuadro de edición\"},\"$:/language/Buttons/Encryption/Caption\":{\"title\":\"$:/language/Buttons/Encryption/Caption\",\"text\":\"Cifrado\"},\"$:/language/Buttons/Encryption/ClearPassword/Caption\":{\"title\":\"$:/language/Buttons/Encryption/ClearPassword/Caption\",\"text\":\"Borrar contraseña\"},\"$:/language/Buttons
|
|
|
|
|
{"created":"20220820015018131","creator":"M0","title":"$:/layout","text":"$:/core/ui/PageTemplate","modified":"20220820043754613","modifier":"M0"},
|
|
|
|
|
{"created":"20220517033857412","creator":"M0","title":"$:/NewNote","text":"","modified":"20220517034649035","modifier":"M0"},
|
|
|
|
|
{"created":"20220819224832143","creator":"M0","title":"$:/palette","text":"$:/palettes/Twilight","modified":"20220820061536109","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235450494","creator":"M0","title":"$:/palettes/Twilight","tags":"$:/tags/Palette","author":"Thomas Elmiger","type":"application/x-tiddler-dictionary","name":"Twilight","description":"Delightful, soft darkness.","color-scheme":"dark","text":"alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: #000000\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: \u003C\u003Ccolour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: \u003C\u003Ccolour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: \u003C\u003Ccolour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: \u003C\u003Ccolour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: #000000\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #000000\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: \u003C\u003Ccolour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: \u003C\u003Ccolour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: \u003C\u003Ccolour tag-foreground>>\nnotification-border: \u003C\u003Ccolour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: #ffffff\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: \u003C\u003Ccolour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: #ffffff\ntab-border-selected: #ffffff\ntab-divider: #ffffff\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: #ffffff\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: #000000\ntiddler-border: #ffffff\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28,
|
|
|
|
|
{"text":"The plugin library for the latest and greatest plugins from [ext[tobibeer/plugins|http://tobibeer.github.io/tw5-plugins]]; officially released versions of plugins by [ext[tobibeer|https://github.com/tobibeer]].","bag":"default","revision":"0","url":"http://tobibeer.github.io/tw5-plugins/library/index.html","title":"$:/pluginlibrary/tobibeer/official","tags":"$:/tags/PluginLibrary","modifier":"Tobias Beer","modified":"20160120132137178","caption":"Official Plugin Library by Tobias Beer"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/config/codemirror/autocomplete\": {\n \"title\": \"$:/config/codemirror/autocomplete\",\n \"text\": \"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\",\n \"type\": \"json\",\n \"created\": \"20210328004023360\",\n \"extend\": \"extraKeys\",\n \"modified\": \"20210328004023360\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n(function (mod) {\\n\\tif (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n\\t\\tmod(require(\\\"../../lib/codemirror\\\"));\\n\\telse if (typeof define == \\\"function\\\" && define.amd) // AMD\\n\\t\\tdefine([\\\"../../lib/codemirror\\\"], mod);\\n\\telse // Plain browser env\\n\\t\\tmod(CodeMirror);\\n})(function (CodeMirror) {\\n\\t\\\"use strict\\\";\\n\\n\\tCodeMirror.registerHelper('hint', 'anyword', function (editor) {\\n\\t\\tvar cur = editor.getCursor();\\n\\t\\tvar curLine = editor.getLine(cur.line);\\n\\t\\tvar start = cur.ch;\\n\\t\\tvar end = start;\\n\\t\\tvar max_length = 30\\n\\n\\t\\tvar escapeChars = ['.', ']', '}', '>']\\n\\t\\tvar stopChars = ['[', '{', '|', '\\\"']\\n\\n\\t\\twhile (start) {\\n\\t\\t\\tvar ch = curLine.charAt(start - 1)\\n\\t\\t\\tif (end - start > max_length || escapeChars.includes(ch)) {\\n\\t\\t\\t\\treturn null\\n\\t\\t\\t}\\n\\t\\t\\tif (!(stopChars.includes(ch))) {\\n\\t\\t\\t\\tstart--;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tvar curWord = start !== end && curLine.slice(start, end);\\n\\t\\tif (curLine.charAt(start) == '$') {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlist: $tw.wiki.filterTiddlers(`[all[tiddlers]search:title:literal[${curWord}]!prefix[$:/state]]`),\\n\\t\\t\\t\\tfrom: CodeMirror.Pos(cur.line, start),\\n\\t\\t\\t\\tto: CodeMirror.Pos(cur.line, end)\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlist: $tw.wiki.filterTiddlers(`[all[tiddlers]!is[system]!is[shadow]search:title:literal[${curWord}]!prefix[$:/state]]`),\\n\\t\\t\\t\\tfrom: CodeMirror.Pos(cur.line, start),\\n\\t\\t\\t\\tto: CodeMirror.Pos(cur.line, end)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t})\\n});\",\n \"created\": \"20210328004232522\",\n \"modified\": \"20210328010801763\",\n \"module-type\": \"codemirror\",\n \"type\": \"application/javascript\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\",\n \"text\": \".CodeMirror-hints {\\n position: absolute;\\n z-index: 10;\\n overflow: hidden;\\n list-style: none;\\n\\n margin: 0;\\n padding: 2px;\\n\\n -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n border-radius: 3px;\\n border: 1px solid silver;\\n\\n background: white;\\n font-size: 90%;\\n font-family: monospace;\\n\\n max-height: 20em;\\n overflow-y: auto;\\n}\\n\\n.CodeMirror-hint {\\n margin: 0;\\n padding: 0 4px;\\n border-radius: 2px;\\n white-space: pre;\\n color: black;\\n cursor: pointer;\\n}\\n\\nli.CodeMirror-hint-active {\\n background: #08f;\\n color: white;\\n}\\n\",\n \"created\": \"20210328012141944\",\n \"modified\": \"20210328012141944\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/css\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n! function (t) {\\n \\\"object\\\" == type
|
|
|
|
|
{"created":"20220513060030443","tags":"","title":"$:/plugins/cdaven/markdown-export","modified":"20220607072114828","name":"Markdown Export","plugin-type":"plugin","description":"Markdown export of tiddlers","version":"0.3.0","list":"readme license","author":"cdaven","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/cdaven/markdown-export/exportNote\":{\"title\":\"$:/plugins/cdaven/markdown-export/exportNote\",\"created\":\"20220602113244086\",\"description\":\"A note that will be added as a comment to exported Markdown files\",\"modified\":\"20220602113609303\",\"tags\":\"\",\"text\":\"Exported from TiddlyWiki at \u003C\u003Cnow>>\"},\"$:/plugins/cdaven/markdown-export/license\":{\"title\":\"$:/plugins/cdaven/markdown-export/license\",\"created\":\"20220513163358248\",\"modified\":\"20220513163418690\",\"tags\":\"\",\"text\":\"Copyright 2022 Christian Davén\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\"},\"$:/plugins/cdaven/markdown-export/markdown-export.js\":{\"title\":\"$:/plugins/cdaven/markdown-export/markdown-export.js\",\"text\":\"\\\"use strict\\\";\\r\\nObject.defineProperty(exports, \\\"__esModule\\\", { value: true });\\r\\nexports.exportedForTesting = exports.run = exports.params = exports.name = void 0;\\r\\nconst render_js_1 = require(\\\"./render.js\\\");\\r\\nexports.name = \\\"markdown-export\\\";\\r\\nexports.params = [\\r\\n {\\r\\n name: \\\"filter\\\",\\r\\n default: \\\"\\\"\\r\\n },\\r\\n {\\r\\n name: \\\"note\\\",\\r\\n default: \\\"\\\"\\r\\n },\\r\\n {\\r\\n name: \\\"version\\\",\\r\\n default: \\\"\\\"\\r\\n },\\r\\n];\\r\\nfunction insertNote(markdownTiddler, note) {\\r\\n return markdownTiddler.replace(/(---\\\\n+)(#)/, `$1\u003C!-- ${note.replace(/\\\\$/g, \\\"$$$$\\\")} -->\\\\n\\\\n$2`);\\r\\n}\\r\\nfunction run(filter = \\\"\\\", note = \\\"\\\", version = \\\"\\\") {\\r\\n console.log(`Running Markdown Export ${version} with filter ${filter}`);\\r\\n if (!filter) {\\r\\n console.warn(\\\"No filter specified, exiting\\\");\\r\\n return \\\"\\\";\\r\\n }\\r\\n const twRenderer = new render_js_1.TiddlyWikiRenderer($tw);\\r\\n const renderer = new render_js_1.MarkdownRenderer(twRenderer);\\r\\n note = twRenderer.wikifyText(note);\\r\\n let markdownTiddlers = [];\\r\\n for (const title of $tw.wiki.filterTiddlers(filter)) {\\r\\n console.log(`Rendering [[${title}]] to Markdown`);\\r\\n let markdownTiddler = null;\\r\\n try {\\r\\n markdownTiddler = renderer.renderTiddler(title);\\r\\n }\\r\\n catch (err) {\\r\\n console.error(err);\\r\\n }\\r\\n if (markdownTiddler) {\\r\\n if (note) {\\r\\n markdownTiddler = insertNote(markdownTiddler, note);\\r\\n }\\r\\n markdownTiddlers.push(markdownTiddler.trim());\\r\\n }\\r\\n }\\r\\n const pageBreak = \\\"\\\\n\\\\n\\\\\\\\newpage\\\\n\\\\n\\\";\\r\\n return markdownTiddlers.join(pageBreak);\\r\\n}\\r\\ne
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/danielo515/2click2edit/ClickListener.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nThis widgets adds an double click event listener to its parent\\n\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar ClickListener = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nClickListener.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nClickListener.prototype.render = function(parent,nextSibling) {\\n\\tthis.parentDomNode = parent;\\n\\tthis.execute();\\n\\tvar self = this;\\n /*Since the event listener have been added to the parent, the \\\"this\\\" property is pointing to the\\n wrong object, we should call our edit function with our widget object set as the this property.*/\\n parent.addEventListener(\\\"dblclick\\\",function(event){self.editTiddler.call(self,event)});\\n};\\n\\nClickListener.prototype.editTiddler = function(event) {\\n this.dispatchEvent({type: \\\"tm-edit-tiddler\\\", param: this.getVariable(\\\"currentTiddler\\\")}); \\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nClickListener.prototype.execute = function() {\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nClickListener.prototype.refresh = function(changedTiddlers) {\\n\\treturn false;\\n};\\n\\nexports.click = ClickListener;\\n\\n})();\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ClickListener.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/danielo515/2click2edit/readme\": {\n \"title\": \"$:/plugins/danielo515/2click2edit/readme\",\n \"text\": \"This plugin adds the ability to edit tiddlers by double clicking on its body.\\nJust try to edit any tiddler shown here by double clicking on it.\\n\\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \\nfor it officially.\\n\"\n },\n \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\": {\n \"tags\": \"$:/tags/ViewTemplate\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$click>\"\n }\n }\n}","version":"0.1","type":"application/json","title":"$:/plugins/danielo515/2click2edit","source":"https://github.com/danielo515/TW5-2click2edit","revision":"0","plugin-type":"plugin","list":"readme","description":"double click to edit tiddlers","dependents":"","core-version":">=5.1.0","bag":"default","author":"Danielo Rodriguez"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/respawn/respawn.js\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/respawn.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/respawn/respawn.js\\ntype: application/javascript\\nmodule-type: startup\\n\\n@preserve\\n\\n\\\\*/\\n\\n(function(){\\n \\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n \\n var configTRef = \\\"$:/plugins/felixhayashi/respawn/config\\\";\\n \\n var changeListener = function(changedTiddlers) {\\n \\n if(!changedTiddlers[\\\"$:/StoryList\\\"]) return;\\n \\n var tObj = $tw.wiki.getTiddler(\\\"$:/StoryList\\\");\\n if(tObj && !tObj.fields[\\\"list\\\"].length) {\\n \\n var confTObj = $tw.wiki.getTiddler(configTRef);\\n var config = confTObj ? confTObj.fields : {};\\n \\n window.setTimeout(function() {\\n $tw.rootWidget.dispatchEvent({\\n type: \\\"tm-home\\\"\\n });\\n }, parseInt(config.delay) || 500);\\n }\\n \\n };\\n \\n exports.name = \\\"respawn\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"story\\\"];\\n exports.synchronous = true;\\n \\n exports.startup = function() {\\n \\n $tw.wiki.addEventListener(\\\"change\\\", changeListener);\\n \\n };\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/felixhayashi/respawn/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/Configuration\",\n \"text\": \"\u003C!-- The config output is not written to this tiddler! -->\\n\\nPlease see the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information on the options.\\n\\nYou may have to save and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Delay (seconds):\u003C/th>\\n \u003Ctd>\\n \u003C$edit-text\\n tiddler=\\\"$:/plugins/felixhayashi/respawn/config\\\"\\n field=\\\"delay\\\"\\n tag=\\\"input\\\"\\n default=\\\"500\\\" />\\n \u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/respawn/License\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-Respawn/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/respawn/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information.\"\n }\n }\n}","version":"0.0.3","type":"application/json","title":"$:/plugins/felixhayashi/respawn","source":"https://github.com/felixhayashi/TW5-respawn","released":"","plugin-type":"plugin","list":"Configuration License Readme","description":"Respawn – Open default tiddlers when river is empty","dependents":"","core-version":">=5.1.5","author":"Felix Küppers"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/topstoryview/config.js\": {\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\\ntype: application/javascript\\nmodule-type: library\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.config={classNames:{storyRiver:\\\"tc-story-river\\\",backDrop:\\\"story-backdrop\\\",tiddlerFrame:\\\"tc-tiddler-frame\\\",tiddlerTitle:\\\"tc-title\\\"},references:{userConfig:\\\"$:/config/topStoryView\\\",focussedTiddlerStore:\\\"$:/temp/focussedTiddler\\\",refreshTrigger:\\\"$:/temp/focussedTiddler/refresh\\\"},checkbackTime:$tw.utils.getAnimationDuration()}})();\",\n \"title\": \"$:/plugins/felixhayashi/topstoryview/config.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/felixhayashi/topstoryview/layout\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/layout\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"tags\": [\n \"$:/tags/Stylesheet\"\n ],\n \"text\": \"html .tc-story-river:after {\\n content: \\\"\\\";\\n display: block; }\\n\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Configuration\",\n \"text\": \"Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Scroll offset:\u003C/th>\\n \u003Ctd>\u003C$edit-text tiddler=\\\"$:/config/topStoryView\\\" field=\\\"scroll-offset\\\" tag=\\\"input\\\" default=\\\"150px\\\" />\u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/topstoryview/License\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information.\"\n },\n \"$:/plugins/felixhayashi/topstoryview/top.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\\ntype: application/javascript\\nmodule-type: storyview\\n\\nViews the story as a linear sequence\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";var t=require(\\\"$:/plugins/felixhayashi/topstoryview/config.js\\\").config;var e=\\\"cubic-bezier(0.645, 0.045, 0.355, 1)\\\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\\\"th-opening-default-tiddlers-list\\\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\\\"scroll-offset\\\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return
|
|
|
|
|
{"name":"Relink","title":"$:/plugins/flibbles/relink","description":"Flexibility when relinking renamed tiddlers","author":"Flibbles","version":"2.1.2","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\\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 newTiddler = new $tw.Tiddler(tiddler,changes,this.getModificationFields())\\n\\t\\t\\tnewTiddler = $tw.hooks.invokeHook(\\\"th-relinking-tiddler\\\",newTiddler,tiddler);\\n\\t\\t\\tthis.addTiddler(newTiddler);\\n\\t\\t\\t// If the title changed, we need to perform a nested rename\\n\\t\\t\\tif (newTiddler.fields.title !== title) {\\n\\t\\t\\t\\tthis.deleteTiddler(title);\\n\\t\\t\\t\\tthis.relinkTiddler(title, newTiddler.fields.title,options);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif (failures.length > 0) {\\n\\t\\tvar options = $tw.utils.extend(\\n\\t\\t\\t{ variables: {to: toTitle, from: fromTitle},\\n\\t\\t\\t wiki: this},\\n\\t\\t\\toptions );\\n\\t\\tlanguage.reportFailures(failures, options);\\n\\t}\\n};\\n\\n})();\\n\",\"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.lastRelinkFrom = undefined;\\n};\\n\\nIndexer.prototype.update = function(updateDescriptor) {\\n\\tif (!this.index) {\\n\\t\\treturn;\\n\\t}\\n\\tvar title;\\n\\tif (!this.changedTiddlers) {\\n\\t\\tthis.changed
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/flibbles/relink-titles/configuration\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/configuration\",\n \"caption\": \"{{$:/plugins/flibbles/relink-titles/language/Caption}}\",\n \"tags\": \"$:/tags/flibbles/relink/Configuration\",\n \"text\": \"\\\\define lingo-base() $:/plugins/flibbles/relink-titles/language/\\n\\\\define prefix() $:/config/flibbles/relink-titles/relink/\\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> ''{{!!caption}}''\u003C/$checkbox>\u003C/td>\u003Ctd>\\n\\n\u003C$transclude field='description' />\\n\\n\u003C/td>\u003C/tr>\u003C/$list>\\n\u003C/tbody>\u003C/table>\\n\"\n },\n \"$:/plugins/flibbles/relink-titles/language/Caption\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/language/Caption\",\n \"text\": \"Titles\"\n },\n \"$:/plugins/flibbles/relink-titles/language/Directory/Caption\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/language/Directory/Caption\",\n \"text\": \"Rename subdirectories\"\n },\n \"$:/plugins/flibbles/relink-titles/language/Directory/Description\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/language/Directory/Description\",\n \"text\": \"For wikis set up hierarchically using `/`, like a filesystem. This option will update all tiddlers nested inside the target tiddler. i.e. `fromTiddler/path/file` becomes `toTiddler/path/file`.\"\n },\n \"$:/plugins/flibbles/relink-titles/language/Help\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/language/Help\",\n \"text\": \"See the \u003Ca href={{{ [{$:/plugins/flibbles/relink-titles!!demo}addsuffix[#Plugins/Titles]] }}}>//Relink-titles// documentation page\u003C/a> for details.\"\n },\n \"$:/plugins/flibbles/relink-titles/readme\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/readme\",\n \"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}}>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\"\n },\n \"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\": {\n \"title\": \"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\",\n \"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');\\nutils.getContext('whitelist').hotDirectories.push(configPrefix);\\n\\nvar titleRules = Object.create(null);\\n$tw.modules.forEachModuleOfType('relinktitlesrule', function(title, module) {\\n\\ttitleRules[title] = module;\\n});\\n\\nexports.name = 'title';\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar cache = getCache(options),\\n\\t\\trules = cache.rules;\\n\\tfor (var i = 0; i \u003C rules.length; i++) {\\n\\t\\
|
|
|
|
|
{"version":"0.2.2","type":"application/json","title":"$:/plugins/Gk0Wk/echarts","plugin-type":"plugin","name":"ECharts","list":"readme LICENSE","description":"ECharts for TiddlyWiki5","author":"Gk0Wk","source":"https://github.com/tiddly-gittly/tw-echarts/tree/master/plugins/Gk0Wk/echarts","dependents":"$:/plugins/Gk0Wk/focused-tiddler","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/echarts/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/echarts/LICENSE\",\"type\":\"text/plain\",\"text\":\"\\nMIT License\\n\\nCopyright (c) 2023 Gk0Wk(nmg_wk@yeah.net)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\"},\"$:/plugins/Gk0Wk/echarts/addons/GitHubHeatMap.ts\":{\"title\":\"$:/plugins/Gk0Wk/echarts/addons/GitHubHeatMap.ts\",\"type\":\"application/javascript\",\"Modern.TiddlyDev#IncludeSource\":\"true\",\"text\":\"import type { SourceIterator } from 'tiddlywiki';\\nimport { IScriptAddon } from '../../scriptAddon';\\nimport * as ECharts from '$:/plugins/Gk0Wk/echarts/echarts.min.js';\\n\\nconst getFilterByDate = (date: string) =>\\n `[sameday:created[${date}]] [sameday:modified[${date}]]`;\\nconst yearDates: Map\u003Cnumber, [string, string][]> = new Map();\\nconst dayTime = 3600 * 24 * 1000;\\nconst getData = (year: number, tiddlerSourceIterator: SourceIterator) => {\\n if (!yearDates.has(year)) {\\n const startDate = (ECharts as any).number\\n .parseDate(`${year}-01-01`)\\n .getTime();\\n const endDate = (ECharts as any).number\\n .parseDate(`${year + 1}-01-01`)\\n .getTime();\\n const dates: [string, string][] = [];\\n for (let time = startDate; time \u003C endDate; time += dayTime) {\\n const timeFmt: string = (ECharts as any).format.formatTime(\\n 'yyyy-MM-dd',\\n time,\\n );\\n const timeTW = timeFmt.replace(/-/g, '');\\n dates.push([timeFmt, timeTW]);\\n }\\n yearDates.set(year, dates);\\n }\\n let total = 0;\\n return [\\n yearDates.get(year)!.map(([timeFmt, timeTW]) => {\\n const count = $tw.wiki.filterTiddlers(\\n getFilterByDate(timeTW),\\n undefined,\\n tiddlerSourceIterator,\\n ).length;\\n total += count;\\n return [timeFmt, count];\\n }),\\n total,\\n ] as [[string, number][], number];\\n};\\n\\nconst getPlatteColor = (name: string) =>\\n $tw.wiki.renderText(\\n 'text/plain',\\n 'text/vnd.tiddlywiki',\\n `\u003C$transclude tiddler={{$:/palette}} index=\\\"${name}\\\">\u003C$transclude tiddler=\\\"$:/palettes/Vanilla\\\" index=\\\"${name}\\\">\u003C$transclude tiddler=\\\"$:/config/DefaultColourMappings/${name}\\\"/>\u003C/$transclude>\u003C/$transclude>`,\\n {},\\n );\\n\\nconst checkIfChinese = () =>\\n $tw.wiki.getTiddlerText('$:/language')?.includes('zh') === true;\\n\\nconst checkIfDarkMode = () =>\\n $tw.wiki.getTiddler($tw.wiki.getTiddlerText('$:/palette')!)?.fields?.[\\n 'color-scheme'\\n ] === 'dark';\\n\\nconst GitHubHeatMapAddon: IScriptAddon\u003Cany> = {\\n shouldUpdate: (_, changedTiddlers) => $tw.utils.count(changedTiddlers) > 0,\\n onUpdate: (myChart, _state, a
|
|
|
|
|
{"version":"11.3.1","type":"application/json","title":"$:/plugins/Gk0Wk/highlight-generator","plugin-type":"plugin","name":"Highlight.js Generator","description":"Generate custom highlight.js tiddler","author":"Gk0Wk","list":"panel LICENSE","source":"https://github.com/Gk0Wk/TiddlySeq/tree/master/plugins/Gk0Wk/highlightjs-generator","tags":"ExcludeFromEmpty","dependents":"","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/highlight-generator/panel\":{\"tags\":\"ExcludeFromEmpty\",\"title\":\"$:/plugins/Gk0Wk/highlight-generator/panel\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search[zh]]\\\">\\n\\n在这里你可以下载定制版的`$:/plugins/tiddlywiki/highlight/highlight.js`条目。\\n\\n选择下面你希望包含的语言高亮,然后点击【生成 highlight.js】按钮,会自动生成并下载 `.tid` 文件,再将该文件导入你的 wiki 并保存、刷新 wiki 即可。\\n\\n\u003Ccenter>\\n\u003C$button style=\\\"display:flex;color:white;font-weight:700;font-size:15px;background:#0A84FF;border-radius:3px;width:200px;justify-content:space-around;align-items:center;height:50px;padding:0 10px; cursor: pointer;\\\" tag=\\\"div\\\">\\n\u003C$action-sendmessage $message=\\\"tm-download-file\\\" $param=\\\"$:/plugins/Gk0Wk/highlight-generator/template\\\" filename=\\\"$__plugins_tiddlywiki_highlight_highlight.js.tid\\\"/>\\n生成 highlight.js {{$:/core/images/save-button}}\\n\u003C/$button>\\n\u003C/center>\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search[zh]]\\\">\\n\\nHere you can download a customized version of the `$:/plugins/tiddlywiki/highlight/highlight.js` tiddler.\\n\\nSelect the language highlight you wish to include below, then click the [Generate highlight.js] button, it will automatically generate and download the `.tid` file, then import the file into your wiki then save and refresh the wiki.\\n\\n\u003Ccenter>\\n\u003C$button style=\\\"display:flex;color:white;font-weight:700;font-size:15px;background:#0A84FF;border-radius:3px;width:250px;justify-content:space-around;align-items:center;height:50px;padding:0 10px; cursor: pointer;\\\" tag=\\\"div\\\">\\n\u003C$action-sendmessage $message=\\\"tm-download-file\\\" $param=\\\"$:/plugins/Gk0Wk/highlight-generator/template\\\" filename=\\\"$__plugins_tiddlywiki_highlight_highlight.js.tid\\\"/>\\nGenerate highlight.js {{$:/core/images/save-button}}\\n\u003C/$button>\\n\u003C/center>\\n\\n\u003C/$list>\\n\u003C/$list>\\n\\n\u003Cdiv style=\\\"display: grid; grid-template-columns: repeat(auto-fill, 150px); grid-row-gap: 10px; row-gap: 10px;\\\">\\n\u003C$list filter=\\\"[all[shadows]prefix[$:/plugins/Gk0Wk/highlight-generator/languages/]]\\\" variable=\\\"languageTiddler\\\">\\n\u003C$list filter=\\\"[\u003ClanguageTiddler>removeprefix[$:/plugins/Gk0Wk/highlight-generator/languages/]removesuffix[.min.js]]\\\" variable=\\\"language\\\">\\n\u003C$checkbox tiddler=\u003C\u003ClanguageTiddler>> field=\\\"selected\\\" default=\\\"no\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\">\u003C$link to=\u003C\u003ClanguageTiddler>>> \u003C$text text=\u003C\u003Clanguage>>/>\u003C/$link>\u003C/$checkbox>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/div>\\n\"},\"$:/plugins/Gk0Wk/highlight-generator/template\":{\"tags\":\"ExcludeFromEmpty\",\"title\":\"$:/plugins/Gk0Wk/highlight-generator/template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$fields tiddler=\\\"$:/plugins/tiddlywiki/highlight/highlight.js\\\" exclude=\\\"text bag revision created creator modified modifier tmap.id\\\" template=\\\"$name$: $value$\\n\\\">\u003C/$fields>`\\n`\u003C$text text={{{ [[$:/plugins/Gk0Wk/highlight-generator/main.js]get[text]] }}}/>\u003C$list filter=\\\"[all[shadows]prefix[$:/plugins/Gk0Wk/highlight-generator/languages/]]\\\" variable=\\\"languageTiddler\\\">\u003C$list filter=\\\"[\u003ClanguageTiddler>get[selected]match[yes]]\\\">`\\n`\u003C$text text={{{ [\u003ClanguageTiddler>get[text]] }}}/>\u003C/$list>\
|
|
|
|
|
{"version":"3.6.0","type":"application/json","title":"$:/plugins/Gk0Wk/jQuery","plugin-type":"plugin","name":"jQuery","list":"readme","description":"jQuery for TiddlyWiki5","author":"Gk0Wk","source":"https://github.com/Gk0Wk/TiddlySeq/tree/master/plugins/Gk0Wk/jQuery","dependents":"","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/jQuery/hook-jquery.js\":{\"title\":\"$:/plugins/Gk0Wk/jQuery/hook-jquery.js\",\"text\":\"/*\\\\\\ntitle: $:/core/modules/startup/hook-jquery.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nHook jQuery object to wiki.\\n\\n\\\\*/\\n(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n\\n // Export name and synchronous status\\n exports.name = \\\"hook-jquery\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"load-modules\\\"];\\n exports.synchronous = true;\\n exports.startup = function () {\\n try {\\n window.jQuery =\\n window.$ = require(\\\"$:/plugins/Gk0Wk/jQuery/jquery.min.js\\\");\\n } catch (e) {\\n console.error(e);\\n }\\n };\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/plugins/Gk0Wk/jQuery/jquery.min.js\":{\"title\":\"$:/plugins/Gk0Wk/jQuery/jquery.min.js\",\"text\":\"/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */\\n!function(e,t){\\\"use strict\\\";\\\"object\\\"==typeof module&&\\\"object\\\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\\\"jQuery requires a window with a document\\\");return t(e)}:t(e)}(\\\"undefined\\\"!=typeof window?window:this,function(C,e){\\\"use strict\\\";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\\\"function\\\"==typeof e&&\\\"number\\\"!=typeof e.nodeType&&\\\"function\\\"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\\\"script\\\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\\\"\\\":\\\"object\\\"==typeof e||\\\"function\\\"==typeof e?n[o.call(e)]||\\\"object\\\":typeof e}var f=\\\"3.6.0\\\",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&\\\"length\\\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\\\"array\\\"===n||0===t||\\\"number\\\"==typeof t&&0\u003Ct&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e\u003C0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e\u003C0?t:0);return this.pushStack(0\u003C=n&&n\u003Ct?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\\\"boolean\\\"==typeof a&&(l=a,a=arguments[s]||{},s++),\\\"object\\\"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s\u003Cu;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],\\\"__proto__\\\"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:\\\"jQuery\\\"+(f+Math.random()).re
|
|
|
|
|
{"version":"4.17.21","type":"application/json","title":"$:/plugins/Gk0Wk/lodash","plugin-type":"plugin","name":"lodash.js","list":"readme","description":"lodash.js for TiddlyWiki5","author":"Gk0Wk","source":"https://github.com/Gk0Wk/TiddlySeq/tree/master/plugins/Gk0Wk/lodash","dependents":"","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/lodash/hook-lodash.js\":{\"title\":\"$:/plugins/Gk0Wk/lodash/hook-lodash.js\",\"text\":\"/*\\\\\\ntitle: $:/core/modules/startup/hook-jquery.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nHook jQuery object to wiki.\\n\\n\\\\*/\\n(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n\\n // Export name and synchronous status\\n exports.name = \\\"hook-lodash\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"load-modules\\\"];\\n exports.synchronous = true;\\n exports.startup = function () {\\n try {\\n window._ = require(\\\"$:/plugins/Gk0Wk/lodash/lodash.min.js\\\")._;\\n } catch (e) {\\n console.error(e);\\n }\\n };\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/plugins/Gk0Wk/lodash/lodash.min.js\":{\"title\":\"$:/plugins/Gk0Wk/lodash/lodash.min.js\",\"text\":\"/**\\n * @license\\n * Lodash \u003Chttps://lodash.com/>\\n * Copyright OpenJS Foundation and other contributors \u003Chttps://openjsf.org/>\\n * Released under MIT license \u003Chttps://lodash.com/license>\\n * Based on Underscore.js 1.8.3 \u003Chttp://underscorejs.org/LICENSE>\\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n */\\n(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u\u003Ci;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r\u003Ce&&t(n[r],r,n)!==!1;);return n}function e(n,t){for(var r=null==n?0:n.length;r--&&t(n[r],r,n)!==!1;);return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r\u003Ce;)if(!t(n[r],r,n))return!1;\\nreturn!0}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r\u003Ce;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!!(null==n?0:n.length)&&y(n,t,0)>-1}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e\u003Cu;)if(r(t,n[e]))return!0;return!1}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r\u003Ce;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r\u003Ce;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u\u003Ci;)r=t(r,n[u],u,n);\\nreturn r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r\u003Ce;)if(t(n[r],r,n))return!0;return!1}function p(n){return n.split(\\\"\\\")}function _(n){return n.match($t)||[]}function v(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,!1}),e}function g(n,t,r,e){for(var u=n.length,i=r+(e?1:-1);e?i--:++i\u003Cu;)if(t(n[i],i,n))return i;return-1}function y(n,t,r){return t===t?Z(n,t,r):g(n,b,r)}function d(n,t,r,e){\\nfor(var u=r-1,i=n.length;++u\u003Ci;)if(e(n[u],t))return u;return-1}function b(n){return n!==n}function w(n,t){var r=null==n?0:n.length;return r?k(n,t)/r:Cn}function m(n){return function(t){return null==t?X:t[n]}}function x(n){return function(t){return null==n?X:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=!1,n):t(r,n,u,i)}),r}function A(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].value;return n}function k(n,t){for(var r,e=-1,u=n.length;++e\u003Cu;){var i=t(n[e]);i!==X&&(r=r===X?i:r+i);\\n}return r}function O(n,t){for(var r=-1,e=Array(n);++r\u003Cn;)e[r]=t(r);return e}function I(n,t){return c(t,function(t){return[t,n[t]]})}function R(n){return n?n.slice(0,H(n)+1).replace(Lt,\\\"\\\"):n}function z(n){return function(t){return n(t)}}function E(n,t){return c(t,function(t){return n[t]})}f
|
|
|
|
|
{"version":"0.0.7","type":"application/json","title":"$:/plugins/Gk0Wk/notionpage-covericon","plugin-type":"plugin","name":"Notion Page(Cover + Icon)","list":"readme LICENSE","description":"Add notion-like page cover and icon display and control panel","author":"Gk0Wk","source":"https://github.com/Gk0Wk/TiddlySeq/tree/master/plugins/Gk0Wk/notionpage-covericon","dependents":"","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/notionpage-covericon/default-icon\":{\"text\":\"📒\"},\"$:/plugins/Gk0Wk/notionpage-covericon/default-pagecover-url\":{\"text\":\"https://source.unsplash.com/random\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/narrow\":{\"text\":\"300px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/wide\":{\"text\":\"300px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/narrow\":{\"text\":\"-14px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/wide\":{\"text\":\"-28px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/narrow\":{\"text\":\"-14px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/wide\":{\"text\":\"-42px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-right/narrow\":{\"text\":\"-14px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-right/wide\":{\"text\":\"-42px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/style/icon-size\":{\"text\":\"65px\"},\"$:/plugins/Gk0Wk/notionpage-covericon/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/notionpage-covericon/LICENSE\",\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/Gk0Wk/notionpage-covericon/body\":{\"title\":\"$:/plugins/Gk0Wk/notionpage-covericon/body\",\"tags\":\"$:/tags/ViewTemplate\",\"list-before\":\"$:/core/ui/ViewTemplate/title\",\"text\":\"\u003C$set name=\\\"tiddler\\\" value=\u003C\u003CcurrentTiddler>>>\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>addprefix[$:/temp/Gk0Wk/notionpage-covericon/Selector/]]\\\" variable=\\\"stateTiddler1\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>addprefix[$:/temp/Gk0Wk/notionpage-covericon/ChangeCover/]]\\\" variable=\\\"stateTiddler2\\\">\\n\u003C$set name=\\\"icon\\\" value={{!!icon}}>\\n\u003C$set name=\\\"cover\\\" value={{!!page-cover}}>\\n\u003C$list filter=\\\"[\u003Cicon>match[]]\\\">\\n\u003C$list filter=\\\"[\u003Ccover>match[]]\\\">\\n \u003C!-- !icon && !cover -->\\n \u003Cdiv class=\\\"gk0wk-notionpagebg gk0wk-notionpagebg-n\\\">\\n \u003Cdiv class=\\\"gk0wk-notionbg-addbuttons\\\">\\n \u003C$button setTitle=\u003C\u003Ctiddler>> setField=\\\"icon\\\" setTo={{$:/plugins/Gk0Wk/notionpage-covericon/default-icon}} tooltip=\\\"Add Icon\\\">😁 Add Icon\u003C/$button>\\n \u003C$button setTitle=\u003C\u003Ctiddler>> setField=\\\"page-cover\\\" setTo={{$:/plugins/Gk0Wk/notionpage-covericon/default-pagecover-url}} tooltip=\\\"Add Cover\\\">{{$:/core/images/picture}} Add Cover\u003C/$button>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ccover>!match[]]\\\">\\n \
|
|
|
|
|
{"created":"20220820011028766","creator":"M0","text":"\u003C$set name=\"tiddler\" value=\u003C\u003CcurrentTiddler>>>\n\u003C$list filter=\"[\u003CcurrentTiddler>addprefix[$:/temp/Gk0Wk/notionpage-covericon/Selector/]]\" variable=\"stateTiddler1\">\n\u003C$list filter=\"[\u003CcurrentTiddler>addprefix[$:/temp/Gk0Wk/notionpage-covericon/ChangeCover/]]\" variable=\"stateTiddler2\">\n\u003C$set name=\"icon\" value={{!!icon}}>\n\u003C$set name=\"cover\" value={{!!page-cover}}>\n\u003C$list filter=\"[\u003Cicon>match[]]\">\n\u003C$list filter=\"[\u003Ccover>match[]]\">\n \u003C!-- !icon && !cover -->\n \u003Cdiv class=\"gk0wk-notionpagebg gk0wk-notionpagebg-n\">\n \u003Cdiv class=\"gk0wk-notionbg-addbuttons\">\n\u003C!-- \u003C$button setTitle=\u003C\u003Ctiddler>> setField=\"icon\" setTo={{$:/plugins/Gk0Wk/notionpage-covericon/default-icon}} tooltip=\"Add Icon\">😁 Add Icon\u003C/$button> -->\n\u003C!-- \u003C$button setTitle=\u003C\u003Ctiddler>> setField=\"page-cover\" setTo={{$:/plugins/Gk0Wk/notionpage-covericon/default-pagecover-url}} tooltip=\"Add Cover\">{{$:/core/images/picture}} Add Cover\u003C/$button> -->\n \u003C/div>\n \u003C/div>\n\u003C/$list>\n\u003C$list filter=\"[\u003Ccover>!match[]]\">\n \u003C!-- !icon && cover -->\n \u003Cdiv class=\"gk0wk-notionpagebg gk0wk-notionpagebg-c\">\n \u003Cdiv class=\"gk0wk-notionpagebg-image\">\u003C$image source=\u003C\u003Ccover>> width=\"100%\" height=\"auto\"/>\u003C/div>\n \u003C!--\u003C$button popup=\u003C\u003CstateTiddler2>> class=\"gk0wk-notionpageb-changecover\" tooltip=\"Change Cover\">Change Cover\u003C/$button>-->\n \u003C$reveal type=\"popup\" state=\u003C\u003CstateTiddler2>> position=\"belowleft\" tag=\"div\" class=\"tc-popup-keep\">\n \u003Cdiv class=\"gk0wk-notionpageb-changecover-box\">\n \u003Cdiv>\n \u003C$edit-text tiddler=\u003C\u003Ctiddler>> field=\"page-cover\" default=\"\" placeholder=\"Tiddler or URL\" focus=\"true\"/>\n \u003C/div>\n \u003C/div>\n \u003C/$reveal>\n \u003Cdiv class=\"gk0wk-notionbg-addbuttons\">\n \u003C!--\u003C$button setTitle=\u003C\u003Ctiddler>> setField=\"icon\" setTo={{$:/plugins/Gk0Wk/notionpage-covericon/default-icon}} tooltip=\"Add Icon\">😁 Add Icon\u003C/$button>-->\n \u003C/div> \n \u003C/div>\n\u003C/$list>\n\u003C/$list>\n\u003C$list filter=\"[\u003Cicon>!match[]]\">\n\u003C$list filter=\"[\u003Ccover>match[]]\">\n \u003C!-- icon && !cover -->\n \u003Cdiv class=\"gk0wk-notionpagebg gk0wk-notionpagebg-i\">\n\u003C!-- \u003C$button popup=\u003C\u003CstateTiddler1>> class=\"gk0wk-notionpagebg-icon1\">\u003C$list filter=\"[title\u003Cicon>is[tiddler]]\">\u003C$transclude tiddler=\u003C\u003Cicon>>/>\u003C/$list>\n \u003C$list filter=\"[title\u003Cicon>is[shadow]]\">\u003C$transclude tiddler=\u003C\u003Cicon>>/>\u003C/$list>\n \u003C$list filter=\"[title\u003Cicon>is[tiddler]]\">\u003C$transclude tiddler=\u003C\u003Cicon>>/>\u003C/$list>\n \u003C$list filter=\"[title\u003Cicon>!is[shadow]!is[tiddler]]\">\u003C$wikify name=\"rendered\" text=\u003C\u003Cicon>> output=html>\u003C\u003Crendered>>\u003C/$wikify>\u003C/$list>\u003C/$button> -->\n \u003C$reveal type=\"popup\" state=\u003C\u003CstateTiddler1>> position=\"below\" tag=\"div\" class=\"tc-popup-keep\">\n {{$:/plugins/Gk0Wk/notionpage-covericon/icon-selector}}\n \u003C/$reveal>\n \u003Cdiv class=\"gk0wk-notionbg-addbuttons\">\n \u003C$button setTitle=\u003C\u003Ctiddler>> setField=\"page-cover\" setTo={{$:/plugins/Gk0Wk/notionpage-covericon/default-pagecover-url}} tooltip=\"Add Cover\">{{$:/core/images/picture}} Add Cover\u003C/$button>\n \u003C/div> \n \u003C/div>\n\u003C/$list>\n\u003C$list filter=\"[\u003Ccover>!match[]]\">\n \u003C!-- icon && cover -->\n \u003Cdiv class=\"gk0wk-notionpagebg gk0wk-notionpagebg-ci\">\n \u003Cdiv class=\"gk0wk-notionpagebg-image\">\u003C$image source=\u003C\u003Ccover>> width=\"100%\" height=\"auto\"/>\u003C/div>\n\u003C!-- \u003C$button popup=\u003C\u003CstateTiddler1>> class=\"gk0wk-notionpagebg-icon2\">\u003
|
|
|
|
|
{"created":"20220820004854105","creator":"M0","text":"\n/* Container */\n.gk0wk-notionpagebg {\n width: 100%;\n position: relative;\n}\n\n.gk0wk-notionpagebg-c, .gk0wk-notionpagebg-ci {\n top: {{$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/wide}};\n}\n\n.gk0wk-notionpagebg .gk0wk-notionpagebg-image {\n width: calc(100% - {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/wide}} - {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-right/wide}});\n left: {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/wide}};\n height: {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/wide}};\n overflow: hidden;\n position: relative;\n}\n\n\n.gk0wk-notionpagebg-ci {\n height: calc({{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/wide}} + {{$:/plugins/Gk0Wk/notionpage-covericon/style/icon-size}} / 2 + {{$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/wide}} + 10px);\n pointer-events: none;\n}\n\n\n\n.gk0wk-notionpagebg-c {\n height: calc({{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/wide}} + {{$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/wide}} + 30px + 10px);\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .gk0wk-notionpagebg-c, .gk0wk-notionpagebg-ci {\n top: {{$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/narrow}};\n }\n .gk0wk-notionpagebg .gk0wk-notionpagebg-image {\n width: calc(100% - {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/narrow}} - {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-right/narrow}});\n left: {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/narrow}};\n height: {{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/narrow}};\n }\n .gk0wk-notionpagebg-ci {\n height: calc({{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/narrow}} + {{$:/plugins/Gk0Wk/notionpage-covericon/style/icon-size}} / 2 + {{$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/narrow}} + 10px);\n }\n .gk0wk-notionpagebg-c {\n height: calc({{$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/narrow}} + {{$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/narrow}} + 10px + 30px);\n }\n}\n\n\n.gk0wk-notionpagebg p {\n margin: 0;\n}\n\n\n\n\n/* Buttons */\n\n.gk0wk-notionpagebg button {\n background: transparent;\n border: none;\n}\n\n.gk0wk-notionpagebg-icon1,\n.gk0wk-notionpagebg-icon2,\n.gk0wk-notionpageb-changecover,\n.gk0wk-notionbg-addbuttons button {\n color: \u003C\u003Ccolour foreground>> !important;\n fill: \u003C\u003Ccolour foreground>> !important;\n user-select: none;\n cursor: pointer;\n transition: all {{$:/config/AnimationDuration}}ms;\n}\n\n.gk0wk-notionpagebg-icon1,\n.gk0wk-notionpagebg-icon2 {\n font-size: {{$:/plugins/Gk0Wk/notionpage-covericon/style/icon-size}};\n font-family: \"Apple Color Emoji\", \"Segoe UI Emoji\", NotoColorEmoji, \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", EmojiSymbols;\n padding: 4px !important;\n pointer-events: auto;\n}\n\n.gk0wk-notionpagebg-icon2 {\n position: relative;\n top: calc(-{{$:/plugins/Gk0Wk/notionpage-covericon/style/icon-size}} / 1.6);\n}\n\n.gk0wk-notionpagebg-icon1:hover,\n.gk0wk-notionpagebg-icon2:hover {\n background: \u003C\u003Ccolour background>> !important;\n}\n\n.gk0wk-notionbg-addbuttons {\n width: 100%;\n height: 30px;\n opacity: 0;\n display: flex;\n margin-top: 5px;\n transition: all {{$:/config/AnimationDuration}}ms;\n}\n\n.gk0wk-notionpagebg:hover .gk0wk-notionbg-addbuttons,\n.gk0wk-notionpagebg:hover .gk0wk-notionpageb-changecover {\n opacity: 1;\n}\n\n.gk0wk-notionbg-addbuttons button {\n padding: 3px 6px;\n margin-right: 12px;\n opacity: 0.8;\n}\n\n.gk0wk-notionpageb-changecover {\n position: absolute;\n top: 265px;\n right: 10px;\n padding: 4px 6px !important;\n filter: contrast(90%);\n opacity: 0;\n pointer-events: auto;\n transition: all {{$:/config/AnimationDuration}}ms;\n}\n\n.gk0wk-notionpageb-changecover:hover {\n background: \u003C\u003Ccolour background>>;\n}\n\n/* Page Cover */\n\n.gk0wk-notionpagebg .g
|
|
|
|
|
{"created":"20220820003618807","creator":"M0","text":"300px","title":"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-height/wide","modified":"20220820003747589","modifier":"M0"},
|
|
|
|
|
{"created":"20220820003040738","creator":"M0","text":"-60px","title":"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-left/wide","modified":"20220820003319646","modifier":"M0"},
|
|
|
|
|
{"created":"20220820002920039","creator":"M0","text":"-60px","title":"$:/plugins/Gk0Wk/notionpage-covericon/style/cover-right/wide","modified":"20220820003441742","modifier":"M0"},
|
|
|
|
|
{"created":"20220820003854475","creator":"M0","text":"-45px","title":"$:/plugins/Gk0Wk/notionpage-covericon/style/top-offset/wide","modified":"20220820005143309","modifier":"M0"},
|
|
|
|
|
{"version":"0.0.3","type":"application/json","title":"$:/plugins/Gk0Wk/page-toc","plugin-type":"plugin","name":"Page TOC","list":"readme LICENSE","description":"Use tiddler's H1~H6 headers to generate navigable TOC for tiddler","author":"Gk0Wk","source":"https://github.com/Gk0Wk/TiddlySeq/tree/master/plugins/Gk0Wk/page-toc","dependents":"","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/page-toc/CurrentTiddlerTOC\":{\"title\":\"$:/plugins/Gk0Wk/page-toc/CurrentTiddlerTOC\",\"text\":\"\u003C$list filter=\\\"[[$:/temp/focussedTiddler]is[tiddler]get[text]]\\\" variable=\\\"tiddler\\\">\\n\\nTOC of \u003C$text text=\u003C\u003Ctiddler>>/>:\\n\u003C$page-toc tiddler=\u003C\u003Ctiddler>> emptyMessage=\\\"Empty TOC\\\"/>\\n\\n\u003C/$list>\\n\"},\"$:/plugins/Gk0Wk/page-toc/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/page-toc/LICENSE\",\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/Gk0Wk/page-toc/PageTOCButton\":{\"title\":\"$:/plugins/Gk0Wk/page-toc/PageTOCButton\",\"list-after\":\"$:/core/ui/Buttons/info\",\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/list-bullet}} {{$:/plugins/Gk0Wk/page-toc/PageTOCButton!!hint}}\",\"description\":\"Show TOC of this tiddler\",\"hint\":\"Page TOC\",\"text\":\"\\\\whitespace trim\\n\u003C$set value={{{ [\u003CcurrentTiddler>addprefix[$:/temp/Gk0Wk/page-toc/PageTOCButton/]] }}} name=\\\"stateTiddler\\\">\\n\u003C$button popup=\u003C\u003CstateTiddler>> tooltip={{$:/plugins/Gk0Wk/page-toc/PageTOCButton!!description}} aria-label={{$:/plugins/Gk0Wk/page-toc/PageTOCButton!!hint}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/list-bullet}}\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=\\\"tc-btn-text\\\">{{$:/plugins/Gk0Wk/page-toc/PageTOCButton!!hint}}\u003C/span>\u003C/$list>\\n\u003C/$button>\\n\u003C$reveal type=\\\"popup\\\" state=\u003C\u003CstateTiddler>> position=\\\"belowleft\\\" tag=\\\"div\\\" class=\\\"tc-popup-keep\\\">\\n\u003C$page-toc tiddler=\u003C\u003CcurrentTiddler>> emptyMessage=\\\"Empty TOC\\\" class=\\\"gk0wk-tiddlertoc-viewbuttonpopup\\\" headerClassPrefix=\\\"gk0wk-tiddlertoc-viewbuttonpopup-\\\" />\\n\u003C/$reveal>\\n\u003C/$set>\\n\"},\"$:/plugins/Gk0Wk/page-toc/PageTOCWidget.js\":{\"title\":\"$:/plugins/Gk0Wk/page-toc/PageTOCWidget.js\",\"text\":\"(function () {\\n \\\"use strict\\\";\\n\\n function getTOCInfo(tiddler, includeHeaderMap) {\\n // Check empty\\n if (tiddler === \\\"\\\") return undefined;\\n var currentTiddler = $tw.wiki.getTiddler(tiddler);\\n if (!currentTiddler) return undefined;\\n var type = currentTiddler.fields.type;\\n if (\\n type &&\\n type !== \\\"\\\" &&\\n type !== \\\"text/vnd.tiddlywiki\\\" &&\\n type !== \\\"text/x-markdown\\\"\\n )\\n return undefined;\\n var headers = [];\\n var headersCount = {\\n h1: 0,\\n
|
|
|
|
|
{"created":"20220329160652137","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE\",\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/Gk0Wk/sidebar-resizer/hook.js\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/hook.js\",\"text\":\"(function () {\\n \\\"use strict\\\";\\n if (typeof window !== \\\"undefined\\\" && window.document) {\\n var sidebarResizerNode = null;\\n var canResize = false;\\n var body = document.querySelector(\\\"body\\\");\\n if (!body) return;\\n\\n function dragBegin(event) {\\n canResize = true;\\n if (window.PointerEvent) body.setPointerCapture(event.pointerId);\\n // When drag begins, prevent text selecting (for event.preventDefault cannot work in Mozilla)\\n body.style.useSelect = \\\"none\\\";\\n body.style.MozUserSelect = \\\"none\\\";\\n }\\n\\n function dragEnd(event) {\\n if (canResize) {\\n canResize = false;\\n if (window.PointerEvent) body.releasePointerCapture(event.pointerId);\\n body.style.useSelect = \\\"auto\\\";\\n body.style.MozUserSelect = \\\"auto\\\";\\n }\\n }\\n\\n $tw.hooks.addHook(\\\"th-page-refreshed\\\", function () {\\n if (\\n sidebarResizerNode &&\\n sidebarResizerNode.ownerDocument.contains(sidebarResizerNode)\\n )\\n return;\\n sidebarResizerNode = document.querySelector(\\\"#gk0wk-sidebar-resize-area\\\");\\n if (!sidebarResizerNode) return;\\n canResize = false;\\n\\n // Hide Sidebar\\n function hideSideBar(event) {\\n $tw.wiki.setText(\\\"$:/state/sidebar\\\", null, null, \\\"no\\\");\\n dragEnd(event);\\n }\\n\\n // Drag to resize\\n function drag(event) {\\n if (!canResize) return;\\n if (!event) event = window.event;\\n // Prevent event pass\\n event.preventDefault(event);\\n event.stopPropagation(event);\\n event.stopImmediatePropagation(event);\\n event.returnValue = false;\\n var widthPercent = 100 - (event.clientX / window.innerWidth) * 100;\\n if (widthPercent > 80) return false;\\n if (window.innerWidth - event.clientX \u003C 100) {\\n $tw.wiki.setText(\\n \\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\",\\n null,\\n null,\\n 30000 / window.innerWidth + \\\"vw\\\"\\n );\\n hideSideBar(event);\\n } else {\\n $tw.wiki.setText(\\n \\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\",\\n null,\\n null,\\n widthPercent + \\\"vw\\\"\\n );\\n }\\n return false;\\n }\\n\\n // Double click to hide sidebar\\n sidebarResizerNode.addEventListener(\\\"dblclick\\\", hideSideBar);\\n // Detect whter PointerEvent is supported\\n if (window.PointerEven
|
|
|
|
|
{"title":"$:/plugins/Gk0Wk/sidebar-resizer/hook.js","text":"(function () {\n \"use strict\";\n if (typeof window !== \"undefined\" && window.document) {\n var sidebarResizerNode = null;\n var canResize = false;\n var body = document.querySelector(\"body\");\n if (!body) return;\n\n function dragBegin(event) {\n canResize = true;\n if (window.PointerEvent) body.setPointerCapture(event.pointerId);\n // When drag begins, prevent text selecting (for event.preventDefault cannot work in Mozilla)\n body.style.useSelect = \"none\";\n body.style.MozUserSelect = \"none\";\n }\n\n function dragEnd(event) {\n if (canResize) {\n canResize = false;\n if (window.PointerEvent) body.releasePointerCapture(event.pointerId);\n body.style.useSelect = \"auto\";\n body.style.MozUserSelect = \"auto\";\n }\n }\n\n $tw.hooks.addHook(\"th-page-refreshed\", function () {\n if (\n sidebarResizerNode &&\n sidebarResizerNode.ownerDocument.contains(sidebarResizerNode)\n )\n return;\n sidebarResizerNode = document.querySelector(\"#gk0wk-sidebar-resize-area\");\n if (!sidebarResizerNode) return;\n canResize = false;\n\n // Hide Sidebar\n function hideSideBar(event) {\n $tw.wiki.setText(\"$:/state/sidebar\", null, null, \"no\");\n dragEnd(event);\n }\n\n // Drag to resize\n function drag(event) {\n if (!canResize) return;\n if (!event) event = window.event;\n // Prevent event pass\n event.preventDefault(event);\n event.stopPropagation(event);\n event.stopImmediatePropagation(event);\n event.returnValue = false;\n var widthPercent = 100 - (event.clientX / window.innerWidth) * 100;\n if (widthPercent > 80) return false;\n if (window.innerWidth - event.clientX \u003C 100) {\n $tw.wiki.setText(\n \"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\",\n null,\n null,\n 30000 / window.innerWidth + \"vw\"\n );\n hideSideBar(event);\n } else {\n $tw.wiki.setText(\n \"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\",\n null,\n null,\n widthPercent + \"vw\"\n );\n }\n return false;\n }\n\n // Double click to hide sidebar\n sidebarResizerNode.addEventListener(\"dblclick\", hideSideBar);\n // Detect whter PointerEvent is supported\n if (window.PointerEvent) {\n // PointerEvent = Mouse + Touch\n sidebarResizerNode.addEventListener(\"pointerdown\", dragBegin);\n body.addEventListener(\"pointerup\", dragEnd);\n body.addEventListener(\"blur\", dragEnd);\n body.addEventListener(\"pointermove\", drag, true);\n } else {\n // If not\n sidebarResizerNode.addEventListener(\"mousedown\", dragBegin);\n body.addEventListener(\"mouseup\", dragEnd);\n body.addEventListener(\"blur\", dragEnd);\n body.addEventListener(\"mousemove\", drag, true);\n sidebarResizerNode.addEventListener(\"touchstart\", dragBegin);\n body.addEventListener(\"touchcancel\", dragEnd);\n body.addEventListener(\"touchend\", dragEnd);\n body.addEventListener(\"touchmove\", drag, true);\n }\n });\n }\n})();\n","type":"application/javascript","module-type":"startup"},
|
|
|
|
|
{"title":"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE","text":"MIT License\n\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","type":"text/plain"},
|
|
|
|
|
{"title":"$:/plugins/Gk0Wk/sidebar-resizer/readme","text":"\\define lingo-base() $:/language/ThemeTweaks/\n\n\u003C$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\">\n\u003C$list filter=\"[\u003Clang>search[zh]]\">\n\n会在侧边栏的左侧边缘添加一个可拖动的边框,当鼠标移动到左侧边缘时会看到这个边框。拖动这个边框可以改变侧边栏的宽度,拖动到靠近窗口右侧边缘时就会自动收起侧边栏。\n\n原理是更改[[$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth]]的值。\n\n注意:首先请将 \u003C$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> 调整为`fluid-fixed`,本插件才可生效。\n\n\u003C$button set=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" setTo=\"fluid-fixed\">点击设置\u003C\u003Clingo Options/SidebarLayout>>\u003C/$button>\n\n\u003C/$list>\n\n\u003C$list filter=\"[\u003Clang>!search[zh]]\">\n\nA draggable border is added to the left edge of the sidebar, which will be visible when the mouse is moved to the left edge. Dragging this border will change the width of the sidebar, and it will automatically close the sidebar when dragged near the right edge of the window.\n\nThe principle is to change the value of [[$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth]].\n\nNote: First, please adjust \u003C$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> to `fluid-fixed` for this plugin to take effect.\n\n\u003C$button set=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" setTo=\"fluid-fixed\">Click to adjust\u003C\u003Clingo Options/SidebarLayout>>\u003C/$button>\n\n\u003C/$list>\n\u003C/$list>\n"},
|
|
|
|
|
{"title":"$:/plugins/Gk0Wk/sidebar-resizer/resizer","tags":"$:/tags/SideBarSegment","text":"\u003Cdiv id=\"gk0wk-sidebar-resize-area\">\u003C/div>\n"},
|
|
|
|
|
{"title":"$:/plugins/Gk0Wk/sidebar-resizer/style.css","text":"\u003C$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n.tc-sidebar-scrollable {\n\tdisplay: none;\n}\n\u003C/$reveal>\n\ndiv#gk0wk-sidebar-resize-area {\n\theight: 100vh;\n\twidth: 10px;\n\tposition: absolute;\n\ttop: 0;\n\tleft: -5px;\n\tcursor: ew-resize;\n\ttransition: all {{$:/config/AnimationDuration}}ms;\n}\n\ndiv#gk0wk-sidebar-resize-area:hover {\n\tbackground: \u003C\u003Ccolour primary>>;\n}\n","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki"},
|
|
|
|
|
{"text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tiddlywiki5.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus,\\n and the original author of this mode is PMario(https://github.com/pmario) */\\n(function(mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function(CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tiddlywiki5\\\", function(cmCfg, modeCfg) {\\n var styleSheet = {\\n 'rainbow': ['keyword', 'variable-2', 'variable-3']\\n };\\n\\n var macroKeywords = {\\n \\\"changecount\\\": true,\\n \\\"colour\\\": true,\\n \\\"colour-picker\\\": true,\\n \\\"contrastcolour\\\": true,\\n \\\"copy-to-clipboard\\\": true,\\n \\\"csvtiddlers\\\": true,\\n \\\"datauri\\\": true,\\n \\\"dumpvariables\\\": true,\\n \\\"image-picker\\\": true,\\n \\\"jsontiddler\\\": true,\\n \\\"jsontiddlers\\\": true,\\n \\\"lingo\\\": true,\\n \\\"list-links\\\": true,\\n \\\"list-links-draggable\\\": true,\\n \\\"list-tagged-draggable\\\": true,\\n \\\"list-thumbnails\\\": true,\\n \\\"makedatauri\\\": true,\\n \\\"now\\\": true,\\n \\\"qualify\\\": true,\\n \\\"resolvepath\\\": true,\\n \\\"box-shadow\\\": true,\\n \\\"filter\\\": true,\\n \\\"transition\\\": true,\\n \\\"background-linear-gradient\\\": true,\\n \\\"transform-origin\\\": true,\\n \\\"toc\\\": true,\\n \\\"toc-expandable\\\": true,\\n \\\"toc-selective-expandable\\\": true,\\n \\\"toc-tabbed-internal-nav\\\": true,\\n \\\"toc-tabbed-external-nav\\\": true,\\n \\\"tabs\\\": true,\\n \\\"tag\\\": true,\\n \\\"tag-picker\\\": true,\\n \\\"tag-pill\\\": true,\\n \\\"thumbnail\\\": true,\\n \\\"timeline\\\": true,\\n \\\"tree\\\": true,\\n \\\"unusedtitle\\\": true,\\n \\\"version\\\": true\\n };\\n\\n function getMode(name) {\\n if (CodeMirror.findModeByName) {\\n var found = CodeMirror.findModeByName(name);\\n if (found) name = found.mime || found.mimes[0];\\n }\\n var mode_ = CodeMirror.getMode(cmCfg, name);\\n return mode_.name == \\\"null\\\" ? null : mode_;\\n }\\n\\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\\n modeCfg.fencedCodeBlockHighlighting = true;\\n\\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\\n\\n var reHR = /^\\\\-\\\\-\\\\-+$/, // \u003Chr>\\n reBlockQuote = /^\u003C\u003C\u003C/,\\n rePreStart = /^```[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,\\n rePreEnd = /^```$/;\\n\\n function chain(stream, state, f) {\\n state.tokenize = f;\\n return f(stream, state);\\n }\\n\\n function onNewLine(state) {\\n state.line++;\\n state.listLevel = 0;\\n state.boldLine = false;\\n }\\n\\n function tokenBase(stream, state) {\\n var sol = stream.sol();\\n // 解析\\n var tokens = tokenBaseBald(sol, stream, state);\\n if (tokens == null) tokens = '';\\n // <20><>
|
|
|
|
|
{"text":"{\"tiddlers\":{\"$:/plugins/kookma/commander/buttons/pagecontrol\":{\"title\":\"$:/plugins/kookma/commander/buttons/pagecontrol\",\"caption\":\"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}\",\"created\":\"20190724145015836\",\"description\":\"Open tiddler commander\",\"list-after\":\"$:/core/ui/Buttons/advanced-search\",\"modified\":\"20210102140141074\",\"tags\":\"$:/tags/PageControls\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\whitespace trim\\n\\\\define commander-button(class)\\n\u003C$button to=\\\"$:/Commander\\\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/plugins/kookma/commander/images/commander.svg}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Commander/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\\n\\n\u003C$list filter=\\\"[list[$:/StoryList]] +[field:title[$:/Commander]]\\\" emptyMessage=\u003C\u003Ccommander-button>>>\\n\u003C\u003Ccommander-button \\\"tc-selected\\\">>\\n\u003C/$list>\\n\"},\"$:/Commander\":{\"title\":\"$:/Commander\",\"created\":\"20190212051316149\",\"icon\":\"$:/plugins/kookma/commander/images/file-alt\",\"modified\":\"20200324074719052\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\\n{{$:/plugins/kookma/commander/search/ui}}\\n\u003C!-- Create the search filter based on searchbox and selective operation (if active) -->\\n\u003C$vars searchTerms={{{ [\u003CsearchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\\\"^\\\\[\\\">\u003C!-- this part checks the combo search and selective ops-->\\n\u003C$set name=\\\"filtertext\\\" filter=\\\"[\u003CsearchTerms>regexp\u003Cpattern>]\\\" value=\\\"[subfilter\u003CsearchTerms>]\\\" emptyValue=\\\"[!is[system]search\u003CsearchTerms>]\\\">\\n\u003C$set name=\\\"searchfilter\\\" filter=\\\"[\u003CselectiveOpsTid>get[text]match[yes]]\\\" \\n\\tvalue=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]+[tag\u003CworkingTag>]\\\" emptyValue=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]\\\" >\\n\u003Csmall style=\\\"margin-left:17ch;\\\">\u003Ci>\u003C$count filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\\\" /> matches \u003C/i>\u003C/small>\\n\\n\u003C!-- Display search results and let selective operation -->\\n\u003C\u003Ccommander-slider title:\\\"$:/plugins/kookma/commander/search/selection\\\" default:\\\"open\\\">>\\n\\n\u003C!-- Display operation UIs-->\\n\u003C\u003Ctabs \\\"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\\\" default:\\\"$:/plugins/kookma/commander/tiddler/ui\\\">>\\n\\n\u003C/$set>\\n\u003C/$set>\\n\u003C$vars>\\n\\n---\\n\\n\u003C\u003Ccommander-slider title:\\\"$:/plugins/kookma/commander/log/ui\\\">>\\n\"},\"$:/plugins/kookma/commander/config/AutoFocus\":{\"title\":\"$:/plugins/kookma/commander/config/AutoFocus\",\"created\":\"20190212055413944\",\"modified\":\"20200324070652337\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"yes\"},\"$:/plugins/kookma/commander/config/commonfields\":{\"title\":\"$:/plugins/kookma/commander/config/commonfields\",\"created\":\"20200114192650891\",\"modified\":\"20200324070652345\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"created creator modified modifier revision bag\"},\"$:/plugins/kookma/commander/config/minlength\":{\"title\":\"$:/plugins/kookma/commander/config/minlength\",\"created\":\"20200110122842113\",\"modified\":\"20200324070652355\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"3\"},\"$:/plugins/kookma/commander/config/relink\":{\"title\":\"$:/plugins/kookma/commander/config/relink\",\"created\":\"20190911153159143\",\"modified\":\"20200324070652362\",\
|
|
|
|
|
{"created":"20190724145015836","creator":"M0","title":"$:/plugins/kookma/commander/buttons/pagecontrol","caption":"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}","description":"Open tiddler commander","modified":"20220820055008555","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define commander-button(class)\n\u003C$button to=\"$:/Commander\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/kookma/commander/images/commander.svg}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/Commander/Caption}}/>\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\\end\n\n\u003C$list filter=\"[list[$:/StoryList]] +[field:title[$:/Commander]]\" emptyMessage=\u003C\u003Ccommander-button>>>\n\u003C\u003Ccommander-button \"tc-selected\">>\n\u003C/$list>\n","modifier":"M0"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/kookma/favorites/frozen-list\": {\n \"title\": \"$:/plugins/kookma/favorites/frozen-list\",\n \"caption\": \"Favorites\",\n \"created\": \"20191228192318272\",\n \"list-after\": \"$:/core/ui/SideBar/Open\",\n \"modified\": \"20210423152034542\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\import $:/plugins/kookma/favorites/macros/definition\\n\\\\import $:/plugins/kookma/favorites/macros/slider\\n\\n\\\\define contents()\\n\u003Cdiv style=\\\"padding-left:20px;\\\">\\n\u003C$list filter=\\\"[list\u003CcurrentTiddler>]\\\">\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/favorites/templates/show-link\\\" field=text/>\\n\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\n\\n\u003C$list filter=\u003C\u003CrecentlyAdded>> >\\n\u003Cdiv>\u003C\u003Ccontents>>\\n\u003C/div>\\n\u003C/$list>\\n\\n\\n\u003C$list filter=\\\"[subfilter\u003Cfolders>]-[\u003CrecentlyAdded>]\\\" >\\n\u003Cdiv>\\n\u003C$macrocall $name=favslider\\ntitle=\u003C\u003CcurrentTiddler>>\\ncontent=\u003C\u003Ccontents>>\\n/>\u003C/div>\\n\u003C/$list>\"\n },\n \"$:/plugins/kookma/favorites/history\": {\n \"title\": \"$:/plugins/kookma/favorites/history\",\n \"created\": \"20210423151018020\",\n \"modified\": \"20210516041523208\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Full change log https://kookma.github.io/TW-Favorites/#ChangeLog\\n\\n* ''4.5.1 '' -- 2020.05.16 -- new svg icon for toolbar and correction for svg color\\n* ''4.5.0 '' -- 2020.04.23 -- updated to Tiddlywiki 5.1.23 and fixed few issues\\n* ''4.3.0 '' -- 2019.11.19 -- correct caption when caption filed has wikitext\\n* ''4.0.0 '' -- 2019.12.17 -- a rewrite of old favorite plugin\\n* ''3.0.12'' -- 2018.11.01 -- released by Mohammad Rahmani\\n* ''3.0.5 '' -- 2017.08.03 -- released by Andrew Harrison\"\n },\n \"$:/plugins/kookma/favorites/image\": {\n \"title\": \"$:/plugins/kookma/favorites/image\",\n \"created\": \"20210516031931837\",\n \"modified\": \"20210516033856603\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg class='tc-image-favorites-button tc-image-button' width='22pt' height='22pt' viewBox=\\\"0 0 548.963 548.963\\\">\\n \u003Cpath d=\\\"M398.327 30.737c-50.875 0-95.875 31.151-123.452 69.542-27.577-38.391-72.577-69.542-123.453-69.542-43.452 0-85.484 19.04-114.168 51.677-55.221 62.834-43.085 166.366-2.375 233.454 37.014 60.992 93.832 109.188 151.972 149.303 28.091 19.383 57.387 37.902 88.024 53.055 99.891-47.723 210.791-127.301 255.975-231.268 14.211-32.706 20.074-69.187 17.54-104.126-5.802-80.081-55.673-152.095-150.063-152.095zm76.397 231.826c-29.517 67.915-101.28 134.971-198.998 186.739-16.542-9.498-34.248-20.795-54.119-34.504-64.682-44.627-107.394-86.15-134.407-130.674-15.6-25.704-25.049-57.908-25.931-88.342-.612-21.188 2.699-51.047 21.958-72.963 16.996-19.333 42.491-30.881 68.202-30.881 31.046 0 58.452 22.754 73.752 44.045 11.5 16.004 30 43.856 49.707 43.856s38.208-27.852 49.707-43.856c15.294-21.291 42.699-44.045 73.752-44.045 26.77 0 47.24 8.36 62.577 25.557 15.013 16.824 24.4 41.598 26.438 69.756 1.841 25.569-2.644 52.313-12.638 75.312z\\\"/>\\n\u003C/svg>\"\n },\n \"$:/language/Buttons/Favorites/Caption/Add\": {\n \"title\": \"$:/language/Buttons/Favorites/Caption/Add\",\n \"created\": \"20191216200037937\",\n \"modified\": \"20210423153606311\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"favorites\"\n },\n \"$:/language/Buttons/Favorites/Caption/Remove\": {\n \"title\": \"$:/language/Buttons/Favorites/Caption/Remove\",\n \"created\": \"20191216200037793\",\n \"modified\": \"20210423153606322\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Capt
|
|
|
|
|
{"title":"$:/plugins/kookma/favorites/macros/sidebar","caption":"Favorites","created":"20191226064633412","list-before":"$:/core/ui/SideBar/Recent","modified":"20210423152034578","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import $:/plugins/kookma/favorites/macros/slider\n\\import $:/plugins/kookma/favorites/macros/definition\n\n\\define drop-actions()\n\u003C!-- case 1: tiddler is already in favlist and moved between folders by drag and drop -->\n\u003C$reveal type=match default=\u003C\u003CfavlistTid>> text={{{[\u003CactionTiddler>listed[]match\u003CfavlistTid>]}}} >\n\u003C$vars oldFolder={{{ [\u003CactionTiddler>listed[]]+[subfilter\u003Cfolders>]-[\u003Cfolder>]+[limit[1]] }}}>\n\u003C$action-listops $tiddler=\u003C\u003ColdFolder>> $field=\"list\" $subfilter=\"-[\u003CactionTiddler>]\" />\n\u003C/$vars>\n\u003C/$reveal>\n\u003C!-- case 2: tiddler is NOT already in favlist and dropped from outside favorites -->\n\u003C$reveal type=nomatch default=\u003C\u003CfavlistTid>> text={{{[\u003CactionTiddler>listed[]match\u003CfavlistTid>]}}} >\n\u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\"[\u003CactionTiddler>]\"/>\n\u003C/$reveal>\n\u003C!-- move it to the target folder -->\n\u003C$action-listops $tiddler=\u003C\u003Cfolder>> $subfilter=\"+[insertbefore:currentTiddler\u003CactionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n\u003Cdiv class=\"tc-droppable-placeholder\"> \u003C/div>\n\\end\n\n\\define droppable-item()\n\\whitespace trim\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\n\u003C\u003Cplaceholder>>\n\u003Cdiv>\n\u003C$transclude tiddler=\"$:/plugins/kookma/favorites/templates/delete-item\" field=text/> \n\u003C$transclude tiddler=\"$:/plugins/kookma/favorites/templates/show-link\" field=text/>\n\u003C/div>\n\u003C/$droppable>\n\\end\n\n\\define droppable-item-after-last-item()\n\\whitespace trim\n\u003C!--add extra space for drag and drop after last item-->\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\n\u003C\u003Cplaceholder>>\u003Cdiv style=\"margin-top:-6px;margin-bottom:-6px;\"> \u003C/div>\n\u003C/$droppable>\n\\end\n\n\n\\define display-folder-is-empty()\n\u003Cdiv style=\"padding-left:20px;\">\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>>\n\u003C\u003Cplaceholder>>\n//Folder is empty//\n\u003C/$droppable>\n\u003C/div>\n\\end\n\n\\define display-fav-folder(folder)\n\u003C$vars folder=\u003C\u003C__folder__>> >\n\u003C!--check if folder is empty-->\n\u003C$list filter=\"[list\u003Cfolder>limit[1]]\" emptyMessage=\u003C\u003Cdisplay-folder-is-empty>> variable=ignore>\n\u003Cdiv style=\"padding-left:20px;\">\n\u003C$list filter=\"[list\u003Cfolder>]\">\u003C!--display all tiddlers in folder list field one by one -->\n\u003C$list filter=\"[\u003CfavlistTid>contains\u003CcurrentTiddler>]\" variable=ignore>\u003C!--check if the tiddler is a favorite list-->\n\u003C$macrocall $name=droppable-item />\n\u003C/$list>\n\u003C/$list>\n\u003C\u003Cdroppable-item-after-last-item>>\n\u003C/div>\n\u003C/$list>\n\u003C/$vars>\n\\end\n\n\\define display-fav-recentlyAdded()\n\u003C$vars folder=\u003C\u003CrecentlyAdded>> >\n\u003Cb>\u003C$transclude tiddler=\u003C\u003Cfolder>> field=\"caption\" />\u003C/b>\n\u003C!--check if favlistTid is empty -->\n\u003C$list filter=\"[list\u003Cfolder>limit[1]]\" emptyMessage=\u003C\u003Cdisplay-folder-is-empty>> variable=ignore>\n\u003Cdiv style=\"padding-left:20px;\">\n\u003C$list filter=\"[list\u003Cfolder>]\">\u003C!--get all items in favlistTid-->\n\u003C$list filter=\"[\u003CfavlistTid>contains\u003CcurrentTiddler>]\" variable=ignore>\u003C!--check if the tiddler is a favorite list-->\n\u003C$macrocall $name=droppable-item />\n\u003C/$list>\n\u003C/$list>\n\u003C\u003Cdroppable-item-after-last-item>>\n\u003C/div>\n\u003C/$list>\n\u003C/$vars>\n\\end\n\n\n\\define favorites-tree()\n\u003C!--show recently added favorites -->\n\u003C\u003Cdisplay-fav-recentlyAdded>>\n\n\u003C!-- show all favorite folders -->\n\u003C$list filter=\"[subfilter\u003Cfolders>]-[\u003CrecentlyAdded>]\" variable=favfolder
|
|
|
|
|
{"created":"20200103090757281","creator":"a revised version of Andrew Harrison favorite plugin","title":"$:/plugins/kookma/favorites/recent","caption":"Recently added","list":"m00 [[Image and Icons]] [[Favorites More Examples]]","modified":"20230304222712700","modifier":"M0","tags":"$:/tags/Favorites/Folder","type":"text/vnd.tiddlywiki"},
|
|
|
|
|
{"created":"20191226064836102","creator":"M0","text":"\\define show-options()\n\u003C$button class=\"tc-btn-invisible\" to=\"$:/plugins/kookma/favorites/manager\">\n{{$:/core/images/options-button}} Manager\n\u003C/$button>\n\\end\n\n\u003C!-- create the sidebar tab -->\n\u003Cdiv class=\"kk-favorites\">\n --- \u003C\u003Cshow-options>> \u003Cbr>\n\u003C$transclude tiddler=\"$:/plugins/kookma/favorites/macros/sidebar\" field=text/>\n\u003C/div>","title":"$:/plugins/kookma/favorites/sidebar-tab","caption":"Favorites","list-after":"$:/core/ui/SideBar/Open","modified":"20220819233004272","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"title":"$:/plugins/kookma/favorites/ui/buttons/add-remove","caption":"{{$:/plugins/kookma/favorites/image}}{{$:/language/Buttons/Favorites/Caption/Add}}","created":"20181010141620348","description":"{{$:/language/Buttons/Favorites/Hint/Add}}","list-after":"$:/core/ui/Buttons/info","modified":"20210423152034695","tags":"$:/tags/ViewToolbar","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\import $:/plugins/kookma/favorites/macros/definition\n\n\\define add-this-tiddler() [[$(currentTiddler)$]]+[putfirst[]]\n\\define remove-this-tiddler() -[[$(currentTiddler)$]]\n\n\\define show-favorites-button(class)\n\u003C$list filter='[\u003Ctv-config-toolbar-icons>match[yes]]'>\n\u003Cspan class=\"$class$\">{{$:/plugins/kookma/favorites/image}}\u003C/span>\n\u003C/$list>\n\u003C$list filter='[\u003Ctv-config-toolbar-text>match[yes]]'>\n\u003Cspan class='tc-btn-text'>\u003C$text text={{$:/language/Buttons/Favorites/Caption/Add}}/>\u003C/span>\n\u003C/$list>\n\\end\n\n\n\\define add-to-favorites-button()\n \u003C$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Add}} aria-label={{$:/language/Buttons/Favorites/Caption/Add}} \n class=\u003C\u003Ctv-config-toolbar-class>>>\n \u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\u003C\u003Cadd-this-tiddler>>/>\n \u003C$action-listops $tiddler=\u003C\u003CrecentlyAdded>> $field='list' $subfilter=\u003C\u003Cadd-this-tiddler>>/>\n\t\t \u003C$macrocall $name=\"show-favorites-button\" class=\"notselected\"/>\n \u003C/$button>\n\\end \n\n\\define remove-from-favorites-button()\n \u003C$button \n tooltip={{$:/language/Buttons/Favorites/Hint/Remove}} aria-label={{$:/language/Buttons/Favorites/Caption/Remove}} \n class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C$action-listops $tiddler=\u003C\u003CfavlistTid>> $field='list' $subfilter=\u003C\u003Cremove-this-tiddler>>/>\n \u003C$action-listops $tiddler={{{[subfilter\u003Cfolders>contains\u003CcurrentTiddler>limit[1]]}}} $field='list' $subfilter=\u003C\u003Cremove-this-tiddler>>/>\n\t\t \u003C$macrocall $name=\"show-favorites-button\" class=\"selected\"/>\n \u003C/$button>\n\\end \n\n\u003C$list filter=\"[list\u003CfavlistTid>is[current]]\">\u003C!-- tiddler is in favorites list, remove it -->\n\u003C\u003Cremove-from-favorites-button>>\n\u003C/$list>\n\u003C$list filter=\"[all[current]!list\u003CfavlistTid>]\">\u003C!-- tiddler is not in favorites list, add it -->\n\u003C\u003Cadd-to-favorites-button>>\n\u003C/$list>"},
|
|
|
|
|
{"text":"{\"tiddlers\":{\"$:/plugins/kookma/section/config/ViewTemplateBodyFilters\":{\"title\":\"$:/plugins/kookma/section/config/ViewTemplateBodyFilters\",\"text\":\"[has:field[se-type]!field:hide-body[yes]then[$:/plugins/kookma/section/viewtemplates/sections]]\",\"type\":\"text/plain\",\"created\":\"20211221104558216\",\"list-before\":\"$:/config/ViewTemplateBodyFilters/system\",\"modified\":\"20211221133835940\",\"tags\":\"$:/tags/ViewTemplateBodyFilter\"},\"$:/plugins/kookma/section/history\":{\"title\":\"$:/plugins/kookma/section/history\",\"created\":\"20211001164139044\",\"modified\":\"20211023193533297\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Section/#ChangeLog\\n\\n* ''0.9.0'' -- 2021.10.14 -- a rewrite with polished UI and complete documentation\\n* ''0.2.4'' -- 2021.10.05 -- template instead of macros, section folding\\n* ''0.2.3'' -- 2021.10.02 -- new regex, better styling\\n* ''0.1.0'' -- 2021.09.30 -- prototype version\\n\\n\\n\"},\"$:/plugins/kookma/section/images/minus-solid\":{\"title\":\"$:/plugins/kookma/section/images/minus-solid\",\"caption\":\"minus\",\"created\":\"20211013150533896\",\"library\":\"Font Awesome\",\"modified\":\"20211023193734336\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-fa-minus tc-image-button\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/section/images/minus-square\":{\"title\":\"$:/plugins/kookma/section/images/minus-square\",\"caption\":\"minus-square\",\"created\":\"20211013150249498\",\"library\":\"Font Awesome\",\"modified\":\"20211023193734345\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-fa-minus-square tc-image-button\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/section/images/plus-solid\":{\"title\":\"$:/plugins/kookma/section/images/plus-solid\",\"caption\":\"plus\",\"created\":\"20211013150533887\",\"library\":\"Font Awesome\",\"modified\":\"20211023193734353\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-fa-plus tc-image-button\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/section/images/plus-square\":{\"title\":\"$:/plugins/kookma/section/images/plus-square\",\"caption\":\"plus-square\",\"created\":\"20211013150249488\",\"library\":\"Font Awesome\",\"modified\":\"20211023193734362\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-fa-plus-square tc-image-button\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/section/license\":{\"title\":\"$:/plugins/kookma/section/license\",\"created\":\"20211003151934971\",\"modified\":\"20211023193533309\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2021 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free
|
|
|
|
|
{"created":"20181119183704246","creator":"M0","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n\u003Cfigure class=\"image-basic image-align-$align$\" style=\"width:$width$;\">\n \u003C$image source=\u003C\u003C__img__>> tooltip=\u003C\u003C__tooltip__>> alt=\u003C\u003C__alt__>> /> \n \u003Cfigcaption>$caption$\u003C/figcaption>\n\u003C/figure> \n\\end","title":"$:/plugins/kookma/shiraz/macros/image-basic","modified":"20220819223307509","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20190322161929431","creator":"M0","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n\u003C$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n\u003Ch1 class=\"$labelClass$\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"open\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/right-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"closed\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/down-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n $label$\n\u003C/h1>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n\u003C/$reveal>\n\u003C/$set>\n\\end","title":"$:/plugins/kookma/shiraz/macros/slider","description":"Slider macro shows (hides) its content.","modified":"20211014100447802","tags":"$:/tags/Macro wiki","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20211014100332723","creator":"M0","text":"\\define slider2(label, src, labelClass2, srcClass, status:\"closed\")\n\u003C$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n\u003Ch2 class=\"$labelClass2$\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"open\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/right-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"closed\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/down-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n $label$\n\u003C/h2>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n\u003C/$reveal>\n\u003C/$set>\n\\end","title":"$:/plugins/kookma/shiraz/macros/slider2","description":"Slider macro shows (hides) its content.","modified":"20211014100459863","tags":"$:/tags/Macro wiki","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20211014092749847","creator":"M0","text":"\\define slider3(label, src, labelClass3, srcClass, status:\"closed\")\n\u003C$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n\u003Ch3 class=\"$labelClass3$\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"open\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/right-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"closed\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/down-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n $label$\n\u003C/h3>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n\u003C/$reveal>\n\u003C/$set>\n\\end","title":"$:/plugins/kookma/shiraz/macros/slider3","description":"Slider macro shows (hides) its content.","modified":"20211014100900188","tags":"$:/tags/Macro wiki","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20211014095921873","creator":"M0","text":"\\define slider4(label, src, labelClass4, srcClass, status:\"closed\")\n\u003C$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n\u003Ch4 class=\"$labelClass4$\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"open\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/right-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"closed\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/down-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n $label$\n\u003C/h4>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n\u003C/$reveal>\n\u003C/$set>\n\\end","title":"$:/plugins/kookma/shiraz/macros/slider4","description":"Slider macro shows (hides) its content.","modified":"20211014100107845","tags":"$:/tags/Macro wiki","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20211014095953865","creator":"M0","text":"\\define slider5(label, src, labelClass5, srcClass, status:\"closed\")\n\u003C$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n\u003Ch5 class=\"$labelClass5$\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"open\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/right-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"closed\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/down-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n $label$\n\u003C/h5>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n\u003C/$reveal>\n\u003C/$set>\n\\end","title":"$:/plugins/kookma/shiraz/macros/slider5","description":"Slider macro shows (hides) its content.","modified":"20211014100053933","tags":"$:/tags/Macro wiki","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20211014100014700","creator":"M0","text":"\\define slider6(label, src, labelClass6, srcClass, status:\"closed\")\n\u003C$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n\u003Ch6 class=\"$labelClass6$\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"open\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/right-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n \u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\">\n \u003C$button class=\"tc-btn-invisible tc-tiddlylink\" set=\u003C\u003CrevealState>> setTo=\"closed\">\n \u003Cspan class=\"kk-sh-slider\">\u003C$transclude tiddler=\"$:/core/images/down-arrow\" />\u003C/span>\n \u003C/$button>\n \u003C/$reveal>\n $label$\n\u003C/h6>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CrevealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n\u003C/$reveal>\n\u003C/$set>\n\\end","title":"$:/plugins/kookma/shiraz/macros/slider6","description":"Slider macro shows (hides) its content.","modified":"20211014100037813","tags":"$:/tags/Macro wiki","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20191209105546612","creator":"M0","text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n background: none;\n border: none;\n border-bottom: solid 1px #737373;\n font-weight: bold;\n color: #DB4C3F;\n}","title":"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab","modified":"20220418190545173","tags":"","type":"text/css","modifier":"M0"},
|
|
|
|
|
{"created":"20191029094209435","creator":"M0","text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n opacity: 0;\n transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n zoom: 1;\n filter: alpha(opacity=100);\n opacity: 1;\n}\n","title":"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility","modified":"20220418190549403","tags":"$:/tags/Stylesheet","type":"text/css","modifier":"M0"},
|
|
|
|
|
{"created":"20191029092047069","creator":"M0","text":"/* These css rules makes TW UI buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/*tiddler buttons in beautiful color*/\n.tc-tiddler-controls .tc-image-edit-button { fill:#F37B1D; }/*edit tiddler*/\n.tc-tiddler-controls .tc-image-info-button { fill: #0e90d2; } /*Info button*/\n","title":"$:/plugins/kookma/shiraz/styles/misc/ui-buttons","modified":"20220820055056852","tags":"","type":"text/css","modifier":"M0"},
|
|
|
|
|
{"created":"20140523214749659","creator":"M0","text":"/* create story river in two column layout */\n.tc-story-river {\n display: flex;\n flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n max-width: 49%; margin-right: 1%;\n /*max-width: 32%; margin-right: 1%; */\n}\n","title":"$:/plugins/kookma/shiraz/styles/multicols/storyriver","modified":"20220904200031011","tags":"","type":"text/css","modifier":"M0"},
|
|
|
|
|
{"created":"20201210171047824","creator":"M0","title":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","caption":"{{$:/plugins/kookma/shiraz/images/palette-switch}} {{$:/language/Buttons/Shiraz/Caption}}","dark-palette":"$:/palettes/CupertinoDark","description":"Toggle between light/dark color palette","light-palette":"$:/themes/nico/notebook/palettes/palette-beige","modified":"20220904200050582","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\u003C$vars \ndarkPalette ={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!dark-palette}}\nlightPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!light-palette}}\n> \n\u003C$button \n tooltip={{$:/language/Buttons/Shiraz/Hint}} \n aria-label={{$:/language/Buttons/Shiraz/Caption}} \n class=\u003C\u003Ctv-config-toolbar-class>>\n>\n \u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n {{$:/plugins/kookma/shiraz/images/palette-switch}}\n \u003C/$list>\n\n \u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n \u003Cspan class=\"tc-btn-text\">switch palettes\u003C/span>\n \u003C/$list>\n\n \u003C$reveal type=\"match\" state=\"$:/palette\" text=\u003C\u003CdarkPalette>> > \n \u003C$action-setfield $tiddler=\"$:/palette\" text=\u003C\u003ClightPalette>> />\n \u003C/$reveal>\n \u003C$reveal type=\"nomatch\" state=\"$:/palette\" text=\u003C\u003CdarkPalette>> >\n \u003C$action-setfield $tiddler=\"$:/palette\" text=\u003C\u003CdarkPalette>> >\n \u003C/$reveal>\n\u003C/$button>\n\u003C/$vars>","modifier":"M0"},
|
|
|
|
|
{"created":"20200325113952303","text":"{\"tiddlers\":{\"$:/plugins/kookma/trashbin/history\":{\"title\":\"$:/plugins/kookma/trashbin/history\",\"created\":\"20200325121105806\",\"modified\":\"20200410061128665\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Trashbin/#ChangeLog\\n\\n* ''1.2.2'' -- 2020.04.10 -- bug fix in remove draft tiddlers to trashbin\\n* ''1.2.1'' -- 2020.03.30 -- bug fix and doc improvement and UI fade correction\\n* ''1.1.2'' -- 2020.03.28 -- stable release with new features and bug fixes\\n* ''0.1.0'' -- 2019.02.12 -- mature public release\\n\"},\"$:/plugins/kookma/trashbin/images/recycle\":{\"title\":\"$:/plugins/kookma/trashbin/images/recycle\",\"created\":\"20190723043410550\",\"modified\":\"20200325115955820\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-recycle tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 512 512\\\">\u003Cpath d=\\\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-down\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-down\",\"caption\":\"sort-alpha-down\",\"created\":\"20200327153959154\",\"modified\":\"20200327185043770\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-down tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-up\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-up\",\"caption\":\"sort-alpha-up (Solid)\",\"created\":\"20200327155639132\",\"modified\":\"20200327162316327\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-up-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72
|
|
|
|
|
{"created":"20190613131234955","creator":"M0","text":"{{$:/plugins/kookma/trashbin/ui/sidebar}}","title":"$:/plugins/kookma/trashbin/sidebar-tab","caption":"Trashbin","modified":"20220820165152092","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20200327100826751","creator":"M0","title":"$:/plugins/kookma/trashbin/styles/show-trashed","modified":"20220820160611611","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"[data-tags~=\"$:/tags/trashbin\"] .tc-tiddler-body,\n[data-tags~=\"$:/tags/trashbin\"] .tc-tags-wrapper\n{\n display:none;\n}\n","modifier":"M0"},
|
|
|
|
|
{"title":"$:/plugins/kookma/trashbin/ui/sidebar","caption":"Trashbin","created":"20200330082034854","modified":"20200330123325985","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/trashbin/macros/sort\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\import $:/plugins/kookma/trashbin/macros/confirm-empty\n\\import $:/plugins/kookma/trashbin/macros/bulk-operation\n\\import $:/plugins/kookma/trashbin/macros/preview-option\n\n\\define show-link()\n\u003C$link to=\u003C\u003CcurrentTiddler>> >\u003C$text text={{{ [\u003CcurrentTiddler>removeprefix[$:/trashbin/]] }}} /> \u003C/$link> \u003Cspan style=\"float:right;padding-right:10px;font-size:smaller;\" title=\"Date Deleted\">\u003C$view field=\"modified\" format=\"date\" template=\"0MM/0DD/YYYY 0hh:0mm AM\"/>\u003C/span>\n\\end\n\n\\define recycle-button()\n{{||$:/plugins/kookma/trashbin/ui/toolbar-button}}\n\\end\n\n\\define delete-button()\n\u003C$button class=\"tc-btn-invisible\" tooltip=\"Delete permanently\">\n{{$:/plugins/kookma/trashbin/images/times.svg}}\n\u003C$list filter=\"[list[$:/StoryList]] +[field:title\u003CcurrentTiddler>>]\" variable=ignore>\n\u003C$action-sendmessage $message=\"tm-close-tiddler\" $param=\u003C\u003C\u003CcurrentTiddler>> />\n\u003C/$list>\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\n\u003C/$button>\n\\end\n\n\\define trashbin-siderbar-ui()\n\u003Cdiv class=\"kk-trahbin-ui\">\n\n\u003Cspan class=\"kk-trahbin-ui-controls kk-trashbin-ui-btn\">\n\u003C\u003Ctrashbin-empty-bin>> \u003C\u003Crestore-all>> \u003C\u003Csort-by>> \u003C\u003Cpreview-option>>\n\n\u003C/span> \n\u003Cspan style=\"font-size:smaller\">\n\u003C$list filter='[tag[$:/tags/trashbin]prefix[$:/trashbin/]limit[1]]' variable=null emptyMessage=\"Trash bin is empty\">\n\u003C$count filter='[tag[$:/tags/trashbin]]'/> items in Trashbin\n\u003C/$list>\n\u003C/span>\n\n\u003C!-- create the trash items list -->\n\u003C$list filter=\"[tag[$:/tags/trashbin]prefix[$:/trashbin/]$(sortType)$]\">\n\u003Cdiv class=\"kk-trashbin-row\">\n\t\u003Cdiv class=\"kk-trashbin-link\">\u003C\u003Cshow-link>>\u003C/div>\n\t\u003Cdiv class=\"kk-trashbin-recycle kk-trashbin-ui-btn\">\u003C\u003Crecycle-button>>\u003C/div>\n\t\u003Cdiv class=\"kk-trashbin-delete kk-trashbin-ui-btn\">\u003C\u003Cdelete-button>>\u003C/div>\n\u003C/div>\n\u003C/$list>\n\n\u003C/div>\n\\end\n\n\u003C$vars sortType={{{[\u003CtempSortTid>get[text]] ~[[]] }}}>\n\u003C\u003Ctrashbin-siderbar-ui>>\n\u003C/$vars>"},
|
|
|
|
|
{"created":"20190623140751496","creator":"Mohammad","text":"\\import $:/plugins/kookma/trashbin/macros/move-to-trashbin\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\whitespace trim\n\n\u003C!-- move to trashbin -->\n\u003C$list filter=\"[all[current]!tag[$:/tags/trashbin]!prefix[$:/trashbin/]]\">\n\u003C$button \n aria-label={{$:/language/Buttons/Trashbin/Caption/Move}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Move}} class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C$macrocall $name=\"move-to-trashbin\" tiddler=\u003C\u003CcurrentTiddler>> />\t\n \u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/trash-alt}}\n \u003C/$list>\n \u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n \u003Cspan class=\"tc-btn-text\">\n\t\t \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Move}}/>\n \u003C/span>\n \u003C/$list>\n\u003C/$button>\n\u003C/$list>\n\n\u003C!-- recycle from trashbin -->\n\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n\u003C$button\n aria-label={{$:/language/Buttons/Trashbin/Caption/Recycle}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Recycle}} class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C$macrocall $name=\"restore\" tiddler=\u003C\u003CcurrentTiddler>> />\n \u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/recycle}}\n \u003C/$list>\n \u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n \u003Cspan class=\"tc-btn-text\"> \n \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Recycle}}/>\n \u003C/span>\n \u003C/$list>\n\u003C/$button>\n\u003C/$list>","title":"$:/plugins/kookma/trashbin/ui/toolbar-button","caption":"{{$:/plugins/kookma/trashbin/images/trash-alt}} {{$:/language/Buttons/Trashbin/Caption/Move}}","description":"\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\" emptyMessage={{$:/language/Buttons/Trashbin/Hint/Move}}>{{$:/language/Buttons/Trashbin/Hint/Recycle}}\u003C/$list>","list-after":"$:/core/ui/Buttons/delete","modified":"20220820163528680","modifier":"M0","tags":"$:/tags/ViewToolbar $:/tags/EditToolbar","type":"text/vnd.tiddlywiki"},
|
|
|
|
|
{"created":"20200327081227209","creator":"M0","title":"$:/plugins/kookma/trashbin/viewtemplate/trash-item","modified":"20220820160611612","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n\u003Cdiv class=\"tc-tiddler-frame kk-trashbin-viewtrashitem\">\n{{||$:/plugins/kookma/trashbin/templates/title}}\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\n{{||$:/plugins/kookma/trashbin/templates/tags}}\n{{||$:/plugins/kookma/trashbin/templates/body}}\n\u003C/div>\n\u003Cdiv class=\"kk-trashbin-viewtrashitem\" style=\"margin-left:40px;\">\n\u003Ch2>Tiddler fields\u003C/h2>\n\u003C$list filter=\"[\u003CcurrentTiddler>indexes[]] -title -tags -text -created -modified\" variable=idx>\n\u003Clabel style=\"display:inline-block;width:15ch;font-weight:bold;\">\u003C\u003Cidx>>:\u003C/label> \u003C$transclude index=\u003C\u003Cidx>>/>\u003Cbr/>\n\u003C/$list>\n\u003C/div>\n\n\u003Cstyle>\n.kk-trashbin-viewtrashitem {\n margin-top:15px;\n }\n.kk-trashbin-viewtrashitem .tc-tags-wrapper {\n display:inline;\n}\n.kk-trashbin-viewtrashitem .tc-tiddler-body{\n display:block;\n}\n\u003C/style>","modifier":"M0"},
|
|
|
|
|
{"created":"20180906042308596","creator":"M0","text":"\u003Cpre>/* TW-version added to site title */\n.tc-site-title:before {\n content:\"TW \u003C\u003Cversion>>\";\n position:absolute;\n margin-top:-1.9em;\n color:silver;\n font-size:13px;\n}\n\u003C/pre>","title":"$:/plugins/kookma/utility/styles/tw-version","modified":"20220418174419263","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20181010190533135","creator":"M0","text":"\\define stateTid() $:/state/utility/view-fields\n\n\\define show-fields-button()\n\\whitespace trim\n\n\u003C$reveal type=\"nomatch\" state=\u003C\u003CstateTid>> text=\"show\" default=\"hide\">\n \u003C$button set=\u003C\u003CstateTid>> setTo=\"show\" \n\t tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t\t class=\u003C\u003Ctv-config-toolbar-class>> >\n \u003C\u003Cdisp-on-pagecontrols>>\n \u003C/$button>\n\u003C/$reveal>\n\n\u003C$reveal type=\"match\" state=\u003C\u003CstateTid>> text=\"show\" default=\"hide\">\n \u003C$button set=\u003C\u003CstateTid>> setTo=\"hide\" \n tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\">\n \u003C\u003Cdisp-on-pagecontrols>>\n \u003C/$button>\n\u003C/$reveal>\n\\end\n\n\\define disp-on-pagecontrols() \n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/kookma/utility/images/view-fields.svg}} \n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/Utility/Caption}}/>\u003C/span>\n\u003C/$list>\n\\end\n\n\n\u003C\u003Cshow-fields-button>>","title":"$:/plugins/kookma/utility/ui/Buttons/ViewFields","caption":"{{$:/plugins/kookma/utility/images/view-fields.svg}} {{$:/language/Buttons/Utility/Caption}}","description":"Show a toggle button for view fields","list-before":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","modified":"20220418174421557","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20181212041419278","creator":"M0","text":"\u003C$set name=\"revealFilters\" tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=text>\n\u003C$list filter=\"[all[current]tag[show-content]]\n [all[current]tag[$:/tags/EditTemplate]]\n [all[current]tag[$:/tags/ViewTemplate]] \n [all[current]tag[$:/tags/Macro]]\n [all[current]subfilter\u003CrevealFilters>] +[limit[1]]\">\n\u003C$codeblock code={{!!text}} language=\"xml\" />\n\u003C/$list>\n\u003C/$set>\n\n","title":"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content","description":"this view template displays the content of global macro tiddlers","modified":"20220418174441533","tags":"","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/nico/notebook-mobile/js/notebookSidebarNav.js\": {\n \"title\": \"$:/plugins/nico/notebook-mobile/js/notebookSidebarNav.js\",\n \"text\": \"/*\\\\\\ntitle: $:/themes/nico/notebook-mobile/js/notebookSidebarNav.js\\ntype: application/javascript\\nmodule-type: global\\n\\nCloses the notebook sidebar on mobile when navigating\\n\\n\\\\*/\\n(function(){\\n\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n\\n const isOnMobile = () => {\\n\\t\\tlet bottombar = document.querySelector('.nc-bottombar');\\n\\t\\treturn bottombar && bottombar.getClientRects().length > 0;\\n };\\n\\n const closeSidebar = () => {\\n\\t\\t$tw.wiki.setText(\\\"$:/state/notebook-sidebar\\\", \\\"text\\\", undefined, \\\"no\\\");\\n };\\n\\n const closeSidebarOnMobile = () => {\\n\\t\\tif (isOnMobile()) {\\n console.log(\\\"closing sidebar\\\");\\n\\t\\t\\tcloseSidebar();\\n\\t\\t};\\n };\\n\\n const setup = () => {\\n\\t\\t$tw.hooks.addHook(\\\"th-navigating\\\",function(event) {\\n\\t\\t\\tcloseSidebarOnMobile();\\n\\t\\t\\treturn event;\\n\\t\\t});\\n };\\n\\n setup();\\n\\n exports.closeNotebookSidebar = closeSidebar;\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"global\",\n \"created\": \"20200430151329085\",\n \"modified\": \"20201210200127495\",\n \"tags\": \"\"\n }\n }\n}","version":"1.0.0","type":"application/json","title":"$:/plugins/nico/notebook-mobile","source":"https://github.com/NicolasPetton/Notebook","revision":"0","plugin-type":"plugin","name":"Mobile support for the Notebook theme","modified":"20201219111632312","list":"","description":"JavaScript hooks for mobile devices support of the Notebook theme","dependents":"","created":"20201219111632312","core-version":">=5.1.22","bag":"default","author":"NicolasPetton"},
|
|
|
|
|
{"title":"$:/plugins/snowgoon88/edit-comptext","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/plugins/snowgoon88/edit-comptext/config\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/config\",\n \"type\": \"application/json\",\n \"text\": \"{\\n \\\"configuration\\\": {\\n \\\"caseSensitive\\\" : false,\\n \\\"maxMatch\\\" : 8,\\n \\\"minPatLength\\\" : 2,\\n \\\"triggerKeyCombination\\\" : \\\"^ \\\"\\n },\\n \\\"template\\\": [{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"filter\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n }\\n ]\\n}\\n\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/snowgoon88/edit-comptext/edit-comptext.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nTaken from original Edit-text widget\\nVersion 5.1.13 of TW5\\nAdd link-to-tiddler completion in framed.js and simple.js\\n\\nTODO : CHECK usefull, and particularly save_changes after every input ??\\nTODO : where should popupNode be created in the DOM ?\\nTODO : check that options are valid (numeric ?)\\nvar isNumeric = function(n) {\\n return !isNaN(parseFloat(n)) && isFinite(n);\\n};\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar editTextWidgetFactory = require(\\\"$:/core/modules/editor/factory.js\\\").editTextWidgetFactory,\\n\\tFramedCompEngine = require(\\\"$:/plugins/snowgoon88/edit-comptext/framed.js\\\").FramedCompEngine,\\n\\tSimpleCompEngine = require(\\\"$:/plugins/snowgoon88/edit-comptext/simple.js\\\").SimpleCompEngine;\\n\\nexports[\\\"edit-comptext\\\"] = editTextWidgetFactory(FramedCompEngine,SimpleCompEngine);\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/examples\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/examples\",\n \"text\": \"The configuration file [[$:/plugins/snowgoon88/edit-comptext/config]] allow you to use the completion plugin for various usages. Here are some examples...\\n\\n!! Link Completion\\nThe basic and default usage. Completion is triggered by `[[`, the search is among all non-system tiddlers. When selected, the `title` of the tiddler is inserted in the text, surrounded by `[[` and `]]`. This gives the following Completion Template.\\n\\n\\n```\\n{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"title\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n}\\t \\n```\\n\\n\\n!! Special macro completion\\nI have a 'pnjin' macro that is invoked by `\u003C\u003Cpnjin \\\"TiddlerPNJName\\\">>` where 'TiddlerPNJName is a tiddler that hold data about a PNJ. I use tiddlywiki to organise my Role Playing Games campaigns. So, I want `\u003Cp` to trigger the completion. The search is among all non-system tiddlers tagged `PNJ` and, once selected, the title of the tiddler must be inserted surrouned by `\u003C\u003Cpnjin \\\\\\\"` and `\\\\\\\">>`. So...\\n\\n```\\n{\\n\\t\\\"pattern\\\": \\\"\u003Cp\\\",\\n \\t\\\"title\\\": \\\"[tag[PNJ]!is[system]]\\\",\\n \\t\\\"start\\\": \\\"\u003C\u003Cpnjin \\\\\\\"\\\",\\n \\t\\\"end\\\": \\\"\\\\\\\">>\\\"\\n}\\n```\\n\\n!! Insert some templates or stamp or snippets into text.\\nI frequently use some text pattern and I want to insert them easily. So, I could create several tiddlers, tagged '$:stamp' and in their body are the piece of texte I want to insert. The titles of these tiddlers always start with `$:/config/stamp/` (i.e. $:/config/stamp/macro, $:/config/stamp/list1, $:/config/stamp/list2). I want to trigger the completion by using `\u003C\u003C`, then I only want to chose among the last part of the titles of tiddlers tagged `$:stam
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams/CHANGELOG\": {\n \"title\": \"$:/plugins/sq/streams/CHANGELOG\",\n \"text\": \"Release notes for the current release:\\n\\n{{$:/plugins/sq/streams/releasenotes}}\\n\\n[[Full changelog|https://saqimtiaz.github.io/streams/#CHANGELOG]] for Streams\\n\"\n },\n \"$:/plugins/sq/streams/Settings/config\": {\n \"title\": \"$:/plugins/sq/streams/Settings/config\",\n \"caption\": \"Configuration\",\n \"text\": \"\\\\define sortBySettingsGroupFilter()\\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\\n\\\\end\\n\\n\u003C$edit-text tiddler=\\\"$:/state/sq/streams/settings/search\\\" class=\\\"sq-search-input\\\" default=\\\"\\\" tag=\\\"input\\\" type=\\\"search\\\" placeholder=\\\"search...\\\"/>\\n\\n\u003Cdiv class=\\\"sq-list-group sq-list-group-box-shadow sq-list-stream-settings\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/sq/streams]has[settings-template]] +[search:title,caption,description{$:/state/sq/streams/settings/search}] +[sortsub\u003CsortBySettingsGroupFilter>]\\\">\\n\u003C$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\\\"list-condition\\\">\\n\u003Cdiv class=\\\"sq-list-group-item\\\">\\n\u003C$transclude tiddler={{!!settings-template}}/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/div>\"\n },\n \"$:/plugins/sq/streams/Settings/shortcuts\": {\n \"title\": \"$:/plugins/sq/streams/Settings/shortcuts\",\n \"caption\": \"Shortcuts\",\n \"text\": \"\\\\import $:/core/ui/ControlPanel/KeyboardShortcuts\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]removeprefix[$:/config/ShortcutInfo/]]\\\" variable=\\\"shortcutName\\\">\\n\u003C\u003Cshortcut-item>>\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\"\n },\n \"$:/plugins/sq/streams/Settings\": {\n \"title\": \"$:/plugins/sq/streams/Settings\",\n \"tags\": \"$:/tags/ControlPanel\",\n \"caption\": \"Streams settings\",\n \"text\": \"\u003C\u003Ctabs \\\"$:/plugins/sq/streams/Settings/config $:/plugins/sq/streams/Settings/shortcuts\\\" \\\"$:/plugins/sq/streams/Settings/config\\\" \\\"$:/state/streams/settings/tabs\\\">>\\n\"\n },\n \"$:/plugins/sq/streams/action-macros\": {\n \"title\": \"$:/plugins/sq/streams/action-macros\",\n \"text\": \"\\\\whitespace trim\\n\\n\\\\define swiped-right-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[contextmenu]]\\\" variable=\\\"_NULL\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value={{$:/config/sq/streams/swipe-contextmenu-position}}/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define swiped-left-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cunindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define oncontext-menu-actions()\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value=\\\"left\\\"/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\\\\end\\
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams-as-editor/single-tiddler-streams.js\\ntype: application/javascript\\nmodule-type: widget\\n\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar UUID = (function() {\\n var self = {};\\n var lut = []; for (var i=0; i\u003C256; i++) { lut[i] = (i\u003C16?'0':'')+(i).toString(16); }\\n self.generate = function() {\\n\\tvar d0 = Math.random()*0xffffffff|0;\\n\\tvar d1 = Math.random()*0xffffffff|0;\\n\\tvar d2 = Math.random()*0xffffffff|0;\\n\\tvar d3 = Math.random()*0xffffffff|0;\\n\\treturn lut[d0&0xff]+lut[d0>>8&0xff]+lut[d0>>16&0xff]+lut[d0>>24&0xff]+'-'+\\n\\t lut[d1&0xff]+lut[d1>>8&0xff]+'-'+lut[d1>>16&0x0f|0x40]+lut[d1>>24&0xff]+'-'+\\n\\t lut[d2&0x3f|0x80]+lut[d2>>8&0xff]+'-'+lut[d2>>16&0xff]+lut[d2>>24&0xff]+\\n\\t lut[d3&0xff]+lut[d3>>8&0xff]+lut[d3>>16&0xff]+lut[d3>>24&0xff];\\n }\\n return self;\\n})();\\n\\nvar SingleTiddlerStreamsWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nSingleTiddlerStreamsWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nSingleTiddlerStreamsWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.parentDomNode = parent;\\n\\t//this.renderChildren(parent,nextSibling);\\n\\n\\t\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.invokeAction = function(triggeringWidget,event) {\\n\\tvar sourceTiddler = this.wiki.getTiddler(this.tiddlerTitle);\\n\\tif(!sourceTiddler) {\\n\\t\\treturn;\\n\\t}\\n\\tvar sourceText = \\\"\\\\n\\\\\\\\rules only list \\\\n\\\\n\\\" + this.wiki.getTiddlerText(this.tiddlerTitle);\\n\\tvar wikifyParser = this.wiki.parseText(\\\"text/vnd.tiddlywiki\\\",sourceText, {\\n\\t\\tparseAsInline : false\\n\\t});\\n\\tconsole.log(wikifyParser);\\n\\t\\n\\tvar tree = wikifyParser.tree;\\n\\tif(tree.length == 0 || tree[0].tag !== \\\"ul\\\" || tree.length !== 1) {\\n\\t\\treturn;\\n\\t}\\n\\tvar list = tree[0];\\n\\t\\n\\tthis.nodes = [];\\n\\tvar parentTiddlerFields = {\\n\\t\\ttitle: this.tiddlerTitle\\n\\t}\\n\\tthis.nodes.push(parentTiddlerFields);\\n\\tthis.processList(list,parentTiddlerFields);\\n\\tconsole.log(1);\\n\\t\\n\\tthis.createNodeTiddlers();\\n\\treturn true;\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.createNodeTiddlers = function() {\\n\\tfor(var i=0; i\u003Cthis.nodes.length; i++) {\\n\\t\\tvar tiddler = this.wiki.getTiddler(this.nodes[i].title);\\n\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,this.nodes[i]);\\n\\t\\tthis.wiki.addTiddler(newTiddler);\\n\\t}\\n};\\n\\n// process UL tag\\nSingleTiddlerStreamsWidget.prototype.processList = function(list,parentTiddler) {\\t\\t\\n\\tvar childNodes = [];\\n\\t\\t\\n\\tfor(var i=0; i\u003Clist.children.length; i++) {\\n\\n\\t\\tvar tiddler = {\\n\\t\\t\\t\\\"title\\\": \\\"$:/streams/temp/\\\" + this.tiddlerTitle + \\\"/\\\" + UUID.generate(),\\n\\t\\t\\t\\\"parent\\\": parentTiddler.title,\\n\\t\\t\\t\\\"text\\\": list.children[i].children[0].text,\\n\\t\\t\\t\\\"stream-type\\\" : \\\"default\\\"\\n\\t\\t};\\t\\t\\n\\t\\t\\n\\t\\tvar subList = list.children[i].children[1];\\n\\t\\tif(subList && subList.tag === \\\"ul\\\") {\\n\\t\\t\\tthis.processList(subList,tiddler);\\n\\t\\t}\\n\\t\\t\\n\\t\\tchildNodes.push(tiddler.title);\\n\\t\\tthis.nodes.push(tiddler);\\n\\t\\t// add tiddler to wiki\\n\\t}\\n\\tparentTiddler[\\\"stream-list\\\"] = $tw.utils.stringifyList(childNodes);\\n\\t//save child nodes to stream-list in parent\\n}\\n\\n\\nSingleTiddlerStreamsWidget.prototype.execute = function() {\\n\\tthis.tiddlerTitle = this.getAttribute(\\\"$tiddler\\\",this.getVariable(\\\"currentTiddler\\\"));\\n//\\tthis.makeChil
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/config/SearchResults/Default\": {\n \"title\": \"$:/config/SearchResults/Default\",\n \"created\": \"20200820180447855\",\n \"modified\": \"20200820180500121\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"$:/plugins/sq/streams-search/StreamSearchResults\"\n },\n \"$:/plugins/sq/streams-search/stream-root-filter.js\": {\n \"title\": \"$:/plugins/sq/streams-search/stream-root-filter.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams-search/stream-root-filter.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"stream-root\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tif(tiddler && tiddler.fields[\\\"parent\\\"] && tiddler.fields[\\\"stream-type\\\"]) {\\t\\t\\t\\n\\n\\t\\t\\tvar parentTiddler = tiddler;\\n\\t\\t\\t\\n\\t\\t\\twhile(parentTiddler && parentTiddler.fields.parent) {\\n\\t\\t\\t\\tparentTiddler = options.wiki.getTiddler(parentTiddler.fields.parent);\\n\\t\\t\\t}\\n\\t\\t\\tif(parentTiddler && parentTiddler.fields && tiddler.fields.title.startsWith(parentTiddler.fields[\\\"title\\\"])) {\\n\\t\\t\\t\\t$tw.utils.pushTop(results,parentTiddler.fields.title);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t}\\n\\t\\t\\t\\n\\t\\t} else {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams-search/StreamSearchResults\": {\n \"title\": \"$:/plugins/sq/streams-search/StreamSearchResults\",\n \"caption\": \"Streams\",\n \"created\": \"20200818210522653\",\n \"modified\": \"20200818212724254\",\n \"tags\": \"$:/tags/SearchResults\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n//\u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n//\u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n\\\\end\\n\u003C\u003CsearchResultList>>\"\n }\n }\n}","version":"0.0.02","type":"application/json","title":"$:/plugins/sq/streams-search","source":"","revision":"0","plugin-type":"plugin","list":"","description":"Streams addon: Search","dependents":"","core-version":">=5.1.22","bag":"default","author":"Saq Imtiaz"},
|
|
|
|
|
{"created":"20190412065559089","text":"{\n \"tiddlers\": {\n \"$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\\ntype: application/javascript\\nmodule-type: wikirule\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"checkbox\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\n\\t// Match on [ ], [x], and [X], to the end of the line\\n\\tthis.matchRegExp = /^\\\\[([ xX])\\\\] .*$/mg;\\n};\\n\\n/*\\nRetrieve the configuration state of the clear all button\\n*/\\n\\nexports.shouldShowClearAll = function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var showClearAll = configWidgetFields[\\\"show-clearall\\\"] || \\\"true\\\";\\n return (showClearAll === \\\"true\\\");\\n}\\n\\n/*\\nCreate list items\\n*/\\n\\nexports.parse = function() {\\n var listItems = [];\\n var listStartPos = this.parser.pos;\\n var match = this.match;\\n\\n // Start the list with a \\\"New List Item\\\" placeholder\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem-icon\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n }\\n },\\n {\\n type: \\\"element\\\",\\n tag: \\\"input\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem\\\"},\\n id: {type: \\\"string\\\", value: \\\"checklist-new\\\"},\\n placeholder: {type: \\\"string\\\", value: \\\"New list item (WikiText)\\\"}\\n // impossible? add an aria-label \\\"Write a new todo item\\\"\\n // attribute aria-label seems to be missing in $:/core/modules/widgets/edit.js \\n }\\n },\\n // label for the input field\\n {\\n type: \\\"element\\\",\\n tag: \\\"label\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"Write a new item for the list.\\\"}\\n ]\\n },\\n // (pseudo) button to add the new item to the list\\n {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"tc-btn-invisible tc-btn-mini checklist-add\\\"},\\n title: {type: \\\"string\\\", value: \\\"add to list\\\"}\\n },\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"add list item\\\"}\\n ]\\n }\\n ]\\n }\\n // end of button\\n ]\\n });\\n\\n // Create items in a loop\\n do {\\n var startPos = this.parser.pos;\\n this.parser.pos = this.matchRegExp.lastIndex;\\n var parseResults = this.parser.wiki.parseText(\\n \\\"text/vnd.tiddlywi
|
|
|
|
|
{"text":"{\"tiddlers\":{\"$:/plugins/TheDiveO/FontAwesome/fonts/Font Awesome 5 Free Brands.css\":{\"title\":\"$:/plugins/TheDiveO/FontAwesome/fonts/Font Awesome 5 Free Brands.css\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\",\"text\":\"/* autoimported retrieved from 'fontawesome-free-5.7.2-web' */\\n@font-face {\\n font-family: 'Font Awesome 5 Brands';\\n font-style: normal;\\n font-weight: normal;\\n src: url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAUpUAA0AAAAB6FgBSXlYAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABoAAAAciXFxHUdERUYAAAFMAAAAHgAAAB4AKgGnT1MvMgAAAWwAAABPAAAAYEIQ5S9jbWFwAAABvAAAAvoAAAVqGPoamGdhc3AAAAS4AAAACAAAAAj//wADZ2x5ZgAABMAAATDyAAG+JJvJcKtoZWFkAAE1tAAAADMAAAA2E+wBm2hoZWEAATXoAAAAIAAAACQENQPjaG10eAABNggAAAKhAAAGhBXlA31sb2NhAAE4rAAAA0QAAANEwhouPG1heHAAATvwAAAAHwAAACACCgNPbmFtZQABPBAAAAITAAAFf4B1dSJwb3N0AAE+JAAADC4AABOCjBkLu3icY2BgYGQAghsJmjlgumPxVSh9GwBHLweFAAAAAQAAAAwAAAAWAAAAAgABAAMBoAACAAQAAAACAAAAAHicY2BhfMY4gYGVgYHRhzGNgYHBHUp/ZZBkaGFgYGJgZWaAAUYBBgQISHNNYWj40Pj9MeOB/wcY9BjPMIQ0ANWAFVoxLgVSCgyMAJdrD1oAeJzt021olmUUB/D72R5d93095zybhhkYFDrwBcVN8nWtkKTABBWxFBU/KPk6FBWnpm7LYasknaY9is5YjrnS+bJSUYeQPOiYOV+mIPNlNhPBl/ucc1/3lUtaV4/Dwk99qi/94Rz4w/Xh8IPLcZx05+n0ciJ2O9FZtkVSPRp913EiaEuGg36J/7lf7u/wm/1W6k5DKY+m0lwqoMW0lNZQMa2jDbSFvqIdtItq6AjVUyNdpXv0kDSns8vIPTiXh3E+v8czeD4X8CJewyX8KW/hBFfxfq7jo5zka3yDb8k0WSarpUhK5RP5QrbJdqmQb+SQnJRTclrOSKM0SYvclDa5L49E5LH8HnQJIHgt6B3kBOOCicH7wZSgObgTPNYv6nK9S1fqan1If6/rdVI36vOatNHtYTzsFr4Zjg53hrVhQ9gYtpioyTHTTaFZZUpNmdlgNpmEOWgOmxMmaS6ZK6bV/NzR4Th+ccoj4V/s9BhlPT6k+bSIltAKKrIeZSmP7dZjN9XRCWqgJrpLD8jnNH6BgTM5x3qM5LHWYyYvtB4fcRGv4828lffwXj5gPU5zM19PecyRQlkrH1uPz2STJGSnfC1VUmc9fpSkNFiPi9ajVX6Rh9ZDW4+0ICPIsh7Zf/NoC+5q7x96nO30GJzyWNnpsdFsM7XW43inx80/PeIl8RXxpfGC+PD4QHyC1/AKHsN9+B1+izVYhXuwEiswgVvxS9yM5ViGpbgSl+McnI2z8AOchBNwPA7FXByMfbA7dsMszMQuGMV0+A3a4RE8gPtwD25AE/wE52AivANj4G0YDW9BPrwBeTASRsBwGAavwxDIhRwYBANhAPSHftAXsqEPvAqvQC94GXrCS7EnsV9jQUxihbF5sbmxKapFXVDn1Fl1StWrH1StqlHVar0qUUVqgZqn8lWed9u74B31jnjVXrE32RvgZXmZXoYX9SJuh9vu3nHb3OvuZfeMm3Tr3ZNP/9H/+SuRrs4zlEiaXWnPP/iXD/oP8gdBruN0AAAAAAAB//8AAnicnLwJlCVHeSaaERkZkfu+3H3Lu9V2q+puWVtXdVdVq1tSd6u7ultLL9pFa0FCaGEXboSEQCAhGXnBCCOMB8FgG7EO6BmQxozNeAzmPeYx9hgb2R7b2M9nHn5mDD72VL8/8t5qdTfMeee8W3XzRkZmRsbyx/9//xIhYEE49wp6CT0nWMKyIKBuGDg+jau15sDpD3vSMKGMf5txjUbNFg38EoLfwA8j2iqhHo1rrbDXXUWDPnrKLxT87ef4Ec16pucFsh96hXKbHR0osinbZikybVoL6jMK6ySL106g584/cKNf+Ijpy9iIdBLMVaXdlqsGLkUyytQlEfvZAiotHZuRBKjk+To34ASqO4UGvSQe9FfRMhrwmhZRHPSCeNyIajdELxX84yvKXmIb9aDcnt216z/svBXdy2vwmc0pzVBWxNnJ7uZnRhcK8CqBXNA/vlAQBj/dR15vEAfD7rDfrFEf+qGDoQYshszeAC53S7iI0HOG5xnbZ/nxDNpwKlFUCdFualczUZWh3Rt2pNsSRs/t3ITguH32u9/9x6gcReXtf3owUytavln87p3Zkupb+u1QN+WCul0tnBRuEe4Q7hXeKDwkPPozasmHiPcNH7oQkgMT1Tqo1WzNtfo9yEqGSUcc9JNmMgzLaNiNVnEUsjDwTQzHAgr8Jm32hqwf1wK/123SVnMYtYZNRqOwNWzBb9iEHwp5rRrPvJAe/qq766a9e0+vdnWEqWOaItOYbCtOBcuun9VsRaWRIvtTPtGyVJUdPee72lGGRKIT+BhYJFhUEPQQFhnmH0JFjEVMEMYIifhiSto+61yTbJ4+vZlc42AVVWS4RVU8iYnILloWw5JZCkPHz2JFgg9mKs4EbhCWTAkrgTmB1N1IQpIoYiohSGFE+cs0BDlIUtI3M8hFCI/p8YdYQE8Jc3CS9thoViS1ZvrTwbtQGDWhc/nkSYkiGk8s9J9Q+/IHLrv2cs28fCkeqKpimplmGGZnrdbrd+NdU51yvazXSqUQtYkyuOOa4SyamSgjUSpNZbGBKguF7PySqOtTq1XmNgJiVP7/zQ9Tu29J2ZAsPj9ac0tL39VMU0NPqhZ6bPs+1fqtDT4/duHOVHfjt/gFuMznhwzv+g76IfqSwAQTZshtwt3Cg0CBjwhC4sd00O8N6RDoiLaSLhybXrcElEQhNVgBgmytEiBFTj7UQs0a62CgHM5kxIgyEzVbHTSLalEJlVEJd9eQD71LIRP6UBwVCw+PfqOLzpsfl6hEq6LEx68NYymhfZsPbJy+UlacMFP3TB3+1Jqhl/eUJLehWHpkurVsYIhqUFGpB9TsM1MkxM+EjCFFPnD9E9NY5CMvKvAFgiI1TIAqCVFE/pF6BCgGERkjyGYUA+s6u/vezaPvzGKZojW/AsWZYbvgZaxyQzRkRVGIZomNcrZaaIdAeXpIiO5oBkIWcZms2wQhfQ5RGWffefT2920/P36/CrMACBBX4d0ifB1RIhgr6bh/Ix2LK2BkfM6ah2sImHR3eMHUT1ZRAv2dUiGnVQRkkKxi4FsovaVEAuh7GqWd3EU/fPpMM85Qm1a85PJr9xy4phAyPiWQ6O7qdZaCeuCFBOuUWqqXg/kAf1mYUvuuefpbqPWtp7V2dlm3r9uza+va1eKiKlIciUSMalN7Fqer/WLeVet5VbGVWo4ojBFo8Rk/28m//dCZpy+g460dOh635yJelvSHP7tBnCdBe3AZmRKwtEvEwT+F1KIVt7FUvWbPlWmraNqo7sxSEIcuNEpj2bwlpwxGMiRoNVy/7mKxUY+gde3LJncduWa1sKCJDMEYilF1avfCdKVfyLlanFdKhBQsn+oKMJEg8St66BjoAhkjXsDHp4TkZ/BuPoAtmLK8bem4AANJeAf4YWPAJQ2fzr3BhRz3gakBvn5RLOScglPPZex8oTWxvIykIv9cwi1/ezgtyzWr4BSdXMPK5Za3lrfS+4oCFnRBwA+gs0JeaAlCg88/6M
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/browser-sniff","name":"Browser Sniff","description":"Browser feature detection","list":"readme usage","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/browser-sniff/sniff.js\":{\"title\":\"$:/plugins/tiddlywiki/browser-sniff/sniff.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/browser-sniff/sniff.js\\ntype: application/javascript\\nmodule-type: info\\n\\nInitialise $:/info/browser tiddlers\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.getInfoTiddlerFields = function() {\\n\\tvar mapBoolean = function(value) {return value ? \\\"yes\\\" : \\\"no\\\";},\\n\\t\\tinfoTiddlerFields = [];\\n\\t// Basics\\n\\tif($tw.browser) {\\n\\t\\t// Mappings from tiddler titles (prefixed with \\\"$:/info/browser/\\\") to bowser.browser property name\\n\\t\\tvar bowser = require(\\\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\\\"),\\n\\t\\t\\tmappings = [\\n\\t\\t\\t\\t[\\\"name\\\",\\\"name\\\",\\\"unknown\\\"],\\n\\t\\t\\t\\t[\\\"version\\\",\\\"version\\\"],\\n\\t\\t\\t\\t[\\\"is/webkit\\\",\\\"webkit\\\"],\\n\\t\\t\\t\\t[\\\"is/gecko\\\",\\\"gecko\\\"],\\n\\t\\t\\t\\t[\\\"is/chrome\\\",\\\"chrome\\\"],\\n\\t\\t\\t\\t[\\\"is/firefox\\\",\\\"firefox\\\"],\\n\\t\\t\\t\\t[\\\"is/ios\\\",\\\"ios\\\"],\\n\\t\\t\\t\\t[\\\"is/iphone\\\",\\\"iphone\\\"],\\n\\t\\t\\t\\t[\\\"is/ipad\\\",\\\"ipad\\\"],\\n\\t\\t\\t\\t[\\\"is/ipod\\\",\\\"ios\\\"],\\n\\t\\t\\t\\t[\\\"is/opera\\\",\\\"opera\\\"],\\n\\t\\t\\t\\t[\\\"is/phantomjs\\\",\\\"phantomjs\\\"],\\n\\t\\t\\t\\t[\\\"is/safari\\\",\\\"safari\\\"],\\n\\t\\t\\t\\t[\\\"is/seamonkey\\\",\\\"seamonkey\\\"],\\n\\t\\t\\t\\t[\\\"is/blackberry\\\",\\\"blackberry\\\"],\\n\\t\\t\\t\\t[\\\"is/webos\\\",\\\"webos\\\"],\\n\\t\\t\\t\\t[\\\"is/silk\\\",\\\"silk\\\"],\\n\\t\\t\\t\\t[\\\"is/bada\\\",\\\"bada\\\"],\\n\\t\\t\\t\\t[\\\"is/tizen\\\",\\\"tizen\\\"],\\n\\t\\t\\t\\t[\\\"is/sailfish\\\",\\\"sailfish\\\"],\\n\\t\\t\\t\\t[\\\"is/android\\\",\\\"android\\\"],\\n\\t\\t\\t\\t[\\\"is/windowsphone\\\",\\\"windowsphone\\\"],\\n\\t\\t\\t\\t[\\\"is/firefoxos\\\",\\\"firefoxos\\\"],\\n\\t\\t\\t\\t[\\\"is/mobile\\\",\\\"mobile\\\"]\\n\\t\\t\\t];\\n\\t\\t$tw.browser = $tw.utils.extend($tw.browser, {\\n\\t\\t\\tis: bowser.browser,\\n\\t\\t});\\n\\t\\t$tw.utils.each(mappings,function(mapping) {\\n\\t\\t\\tvar value = bowser.browser[mapping[1]];\\n\\t\\t\\tif(value === undefined) {\\n\\t\\t\\t\\tvalue = mapping[2];\\n\\t\\t\\t}\\n\\t\\t\\tif(value === undefined) {\\n\\t\\t\\t\\tvalue = false;\\n\\t\\t\\t}\\n\\t\\t\\tif(typeof value === \\\"boolean\\\") {\\n\\t\\t\\t\\tvalue = mapBoolean(value);\\n\\t\\t\\t}\\n\\t\\t\\tinfoTiddlerFields.push({title: \\\"$:/info/browser/\\\" + mapping[0], text: value});\\n\\t\\t});\\n\\t\\t// Set $:/info/browser/name to the platform with some changes from Bowser\\n\\t\\tvar platform = bowser.browser.name;\\n\\t\\tif(\\\"iPad iPhone iPod\\\".split(\\\" \\\").indexOf(platform) !== -1) {\\n\\t\\t\\tplatform = \\\"iOS\\\";\\n\\t\\t}\\n\\t\\tinfoTiddlerFields.push({title: \\\"$:/info/browser/name\\\", text: platform});\\n\\t\\t// Non-bowser settings for TiddlyFox and TiddlyDesktop\\n\\t\\tvar hasTiddlyFox = !!document.getElementById(\\\"tiddlyfox-message-box\\\"), // Fails because message box is added after page load\\n\\t\\t\\tisTiddlyDesktop = false; // Can't detect it until we update TiddlyDesktop to have a distinct useragent string\\n\\t\\t//infoTiddlerFields.push({title: \\\"$:/info/browser/has/tiddlyfox\\\", text: mapBoolean(hasTiddlyFox)});\\n\\t\\t//infoTiddlerFields.push({title: \\\"$:/info/browser/is/tiddlydesktop\\\", text: mapBoolean(isTiddlyDesktop)});\\n\\t\\tif(isTiddlyDesktop) {\\n\\t\\t\\tinfoTiddlerFields.push({title: \\\"$:/info/browser/name\\\", text: \\\"TiddlyDesktop\\\"});\\n\\t\\t}\\n\\t}\\n\\treturn infoTiddlerFields;\\n};\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"info\"},\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\":{\"text
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror","name":"CodeMirror","description":"CodeMirror editor","list":"readme usage keyboard license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/EditorTypeMappings/application/javascript\":{\"title\":\"$:/config/EditorTypeMappings/application/javascript\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/json\":{\"title\":\"$:/config/EditorTypeMappings/application/json\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\":{\"title\":\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/css\":{\"title\":\"$:/config/EditorTypeMappings/text/css\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/html\":{\"title\":\"$:/config/EditorTypeMappings/text/html\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/plain\":{\"title\":\"$:/config/EditorTypeMappings/text/plain\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/x-markdown\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/x-tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/codemirror/cursorBlinkRate\":{\"title\":\"$:/config/codemirror/cursorBlinkRate\",\"type\":\"integer\",\"text\":\"530\"},\"$:/config/codemirror/extraKeysTW\":{\"title\":\"$:/config/codemirror/extraKeysTW\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Esc\\\": \\\"singleSelection\\\",\\n\\t\\\"Esc\\\": \\\"\\\",\\n\\t\\\"Ctrl-S\\\": \\\"\\\",\\n\\t\\\"Ctrl-U\\\": \\\"\\\",\\n\\t\\\"Ctrl-T\\\": \\\"\\\",\\n\\t\\\"Alt-T\\\": \\\"transposeChars\\\",\\n\\t\\\"Alt-U\\\": \\\"undoSelection\\\",\\n\\t\\\"Shift-Alt-U\\\": \\\"redoSelection\\\",\\n\\t\\\"Cmd-U\\\": \\\"\\\",\\n\\t\\\"Tab\\\": \\\"indentAuto()\\\",\\n\\t\\\"Enter\\\": \\\"newLineAndIndent()\\\"\\n}\\n\"},\"$:/config/codemirror/indentUnit\":{\"title\":\"$:/config/codemirror/indentUnit\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/indentWithTabs\":{\"title\":\"$:/config/codemirror/indentWithTabs\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/inputStyle\":{\"title\":\"$:/config/codemirror/inputStyle\",\"type\":\"string\",\"text\":\"textarea\"},\"$:/config/codemirror/keyMap\":{\"title\":\"$:/config/codemirror/keyMap\",\"type\":\"string\",\"text\":\"default\"},\"$:/config/codemirror/lineNumbers\":{\"title\":\"$:/config/codemirror/lineNumbers\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/lineWrapping\":{\"title\":\"$:/config/codemirror/lineWrapping\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/showCursorWhenSelecting\":{\"title\":\"$:/config/codemirror/showCursorWhenSelecting\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/smartIndent\":{\"title\":\"$:/config/codemirror/smartIndent\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/styleActiveLine\":{\"title\":\"$:/config/codemirror/styleActiveLine\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/tabSize\":{\"title\":\"$:/config/codemirror/tabSize\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/theme\":{\"title\":\"$:/config/codemirror/theme\",\"type\":\"string\",\"text\":\"tiddlywiki\"},\"$:/language/codemirror/homeUrl\":{\"title\":\"$:/language/codemirror/homeUrl\",\"text\":\"http://codemirror.net\"},\"$:/language/codemirror/addOnUrl\":{\"title\":\"$:/language/codemirror/addOnUrl\",\"text\":\"http://codemirror.net/doc/manual.html#addons\"},\"$:/language/codemirror/configUrl\":{\"title\":\"$:/language/codemirror/configUrl\",\"text\":\"http://codemirror.net/doc/manual.html#config\"},\"$:/language/codemirror/controlPanel/hint\":{\"title\":\"$:/language/codemirror/controlPanel/hint\",\"text\":\"These settings let you customis
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-autocomplete","name":"CodeMirror Autocomplete","description":"Autocompletion for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-css","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autocomplete\":{\"title\":\"$:/config/codemirror/autocomplete\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(y){\\\"use strict\\\";var b=/[\\\\w$]+/;y.registerHelper(\\\"hint\\\",\\\"anyword\\\",function(e,r){for(var t=r&&r.word||b,o=r&&r.range||500,i=e.getCursor(),n=e.getLine(i.line),f=i.ch,s=f;s&&t.test(n.charAt(s-1));)--s;for(var a=s!=f&&n.slice(s,f),c=r&&r.list||[],l={},d=new RegExp(t.source,\\\"g\\\"),u=-1;u\u003C=1;u+=2)for(var p=i.line,g=Math.min(Math.max(p+u*o,e.firstLine()),e.lastLine())+u;p!=g;p+=u)for(var h,m=e.getLine(p);h=d.exec(m);)p==i.line&&h[0]===a||a&&0!=h[0].lastIndexOf(a,0)||Object.prototype.hasOwnProperty.call(l,h[0])||(l[h[0]]=!0,c.push(h[0]));return{list:c,from:y.Pos(i.line,s),to:y.Pos(i.line,f)}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\"),require(\\\"../../mode/css/css\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../../mode/css/css\\\"],e):e(CodeMirror)}(function(f){\\\"use strict\\\";var p={active:1,after:1,before:1,checked:1,default:1,disabled:1,empty:1,enabled:1,\\\"first-child\\\":1,\\\"first-letter\\\":1,\\\"first-line\\\":1,\\\"first-of-type\\\":1,focus:1,hover:1,\\\"in-range\\\":1,indeterminate:1,invalid:1,lang:1,\\\"last-child\\\":1,\\\"last-of-type\\\":1,link:1,not:1,\\\"nth-child\\\":1,\\\"nth-last-child\\\":1,\\\"nth-last-of-type\\\":1,\\\"nth-of-type\\\":1,\\\"only-of-type\\\":1,\\\"only-child\\\":1,optional:1,\\\"out-of-range\\\":1,placeholder:1,\\\"read-only\\\":1,\\\"read-write\\\":1,required:1,root:1,selection:1,target:1,valid:1,visited:1};f.registerHelper(\\\"hint\\\",\\\"css\\\",function(e){var t=e.getCursor(),r=e.getTokenAt(t),o=f.innerMode(e.getMode(),r.state);if(\\\"css\\\"==o.mode.name){if(\\\"keyword\\\"==r.type&&0==\\\"!important\\\".indexOf(r.string))return{list:[\\\"!important\\\"],from:f.Pos(t.line,r.start),to:f.Pos(t.line,r.end)};var i=r.start,s=t.ch,n=r.string.slice(0,s-i);/[^\\\\w$_-]/.test(n)&&(n=\\\"\\\",i=s=t.ch);var a=f.resolveMode(\\\"text/css\\\"),d=[],l=o.state.state;return\\\"pseudo\\\"==l||\\\"variable-3\\\"==r.type?c(p):\\\"block\\\"==l||\\\"maybeprop\\\"==l?c(a.propertyKeywords):\\\"prop\\\"==l||\\\"parens\\\"==l||\\\"at\\\"==l||\\\"params\\\"==l?(c(a.valueKeywords),c(a.colorKeywords)):\\\"media\\\"!=l&&\\\"media_parens\\\"!=l||(c(a.mediaTypes),c(a.mediaFeatures)),d.length?{list:d,from:f.Pos(t.line,i),to:f.Pos(t.line,s)}:void 0}function c(e){for(var t in e)n&&0!=t.lastIndexOf(n,0)||d.push(t)}})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/hint/css-hint.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/hint/html-hint.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-closebrackets","name":"CodeMirror Close Brackets","description":"Close brackets for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseBrackets\":{\"title\":\"$:/config/codemirror/autoCloseBrackets\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/matchBrackets\":{\"title\":\"$:/config/codemirror/matchBrackets\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(C){var r={pairs:\\\"()[]{}''\\\\\\\"\\\\\\\"\\\",closeBefore:\\\")]}'\\\\\\\":;>\\\",triples:\\\"\\\",explode:\\\"[]{}\\\"},x=C.Pos;function P(e,t){return\\\"pairs\\\"==t&&\\\"string\\\"==typeof e?e:\\\"object\\\"==typeof e&&null!=e[t]?e[t]:r[t]}C.defineOption(\\\"autoCloseBrackets\\\",!1,function(e,t,r){r&&r!=C.Init&&(e.removeKeyMap(i),e.state.closeBrackets=null),t&&(n(P(t,\\\"pairs\\\")),e.state.closeBrackets=t,e.addKeyMap(i))});var i={Backspace:function(e){var t=k(e);if(!t||e.getOption(\\\"disableInput\\\"))return C.Pass;for(var r=P(t,\\\"pairs\\\"),n=e.listSelections(),i=0;i\u003Cn.length;i++){if(!n[i].empty())return C.Pass;var a=s(e,n[i].head);if(!a||r.indexOf(a)%2!=0)return C.Pass}for(i=n.length-1;0\u003C=i;i--){var o=n[i].head;e.replaceRange(\\\"\\\",x(o.line,o.ch-1),x(o.line,o.ch+1),\\\"+delete\\\")}},Enter:function(n){var e=k(n),t=e&&P(e,\\\"explode\\\");if(!t||n.getOption(\\\"disableInput\\\"))return C.Pass;for(var i=n.listSelections(),r=0;r\u003Ci.length;r++){if(!i[r].empty())return C.Pass;var a=s(n,i[r].head);if(!a||t.indexOf(a)%2!=0)return C.Pass}n.operation(function(){var e=n.lineSeparator()||\\\"\\\\n\\\";n.replaceSelection(e+e,null),n.execCommand(\\\"goCharLeft\\\"),i=n.listSelections();for(var t=0;t\u003Ci.length;t++){var r=i[t].head.line;n.indentLine(r,null,!0),n.indentLine(r+1,null,!0)}})}};function n(e){for(var t=0;t\u003Ce.length;t++){var r=e.charAt(t),n=\\\"'\\\"+r+\\\"'\\\";i[n]||(i[n]=function(t){return function(e){return function(i,e){var t=k(i);if(!t||i.getOption(\\\"disableInput\\\"))return C.Pass;var r=P(t,\\\"pairs\\\"),n=r.indexOf(e);if(-1==n)return C.Pass;for(var a,o=P(t,\\\"closeBefore\\\"),s=P(t,\\\"triples\\\"),l=r.charAt(n+1)==e,c=i.listSelections(),f=n%2==0,h=0;h\u003Cc.length;h++){var u,d=c[h],p=d.head,g=i.getRange(p,x(p.line,p.ch+1));if(f&&!d.empty())u=\\\"surround\\\";else if(!l&&f||g!=e)if(l&&1\u003Cp.ch&&0\u003C=s.indexOf(e)&&i.getRange(x(p.line,p.ch-2),p)==e+e){if(2\u003Cp.ch&&/\\\\bstring/.test(i.getTokenTypeAt(x(p.line,p.ch-2))))return C.Pass;u=\\\"addFour\\\"}else if(l){var v=0==p.ch?\\\" \\\":i.getRange(x(p.line,p.ch-1),p);if(C.isWordChar(g)||v==e||C.isWordChar(v))return C.Pass;u=\\\"both\\\"}else{if(!f||!(0===g.length||/\\\\s/.test(g)||-1\u003Co.indexOf(g)))return C.Pass;u=\\\"both\\\"}else u=l&&function(e,t){var r=e.getTokenAt(x(t.line,t.ch+1));return/\\\\bstring/.test(r.type)&&r.start==t.ch&&(0==t.ch||!/\\\\bstring/.test(e.getTokenTypeAt(t)))}(i,p)?\\\"both\\\":0\u003C=s.indexOf(e)&&i.getRange(p,x(p.line,p.ch+3))==e+e+e?\\\"skipThree\\\":\\\"skip\\\";if(a){if(a!=u)return C.Pass}else a=u}var m=n%2?r.charAt(n-1):e,b=n%2?e:r.charAt(n+1);i.operation(function(){if(\\\"skip\\\"==a)i.execCommand(\\\"goCharRight\\\");else if(\\\"skipThree\\\"==a)for(var e=0;e\u003C3;e++)i.execCommand(\\\"goCharRight\\\");else if(\\\"surround\\\"==a){for(var t=i.getSelections(),e=0;e\u003Ct.length;e++)t[e]=m+t[e]+b;i.replaceSelections(t,\\\"around\\\"),t=i.listSelections().slice();for(e=0;e\u003Ct.length;e++)t[e]=(r=t[e],n=0\u003CC.cmpPos(r.anchor,r.head),{anchor:new x(r.anchor.line,r.anchor.ch+(n?-1:1)),hea
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-closetag","name":"CodeMirror Close Tag","description":"Close tags automatically for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseTags\":{\"title\":\"$:/config/codemirror/autoCloseTags\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/language/codemirror/autoCloseTags/hint\":{\"title\":\"$:/language/codemirror/autoCloseTags/hint\",\"text\":\"Auto-close tags\"},\"$:/language/codemirror/autoCloseTags/info\":{\"title\":\"$:/language/codemirror/autoCloseTags/info\",\"text\":\"Whether or not to automatically close tags\"},\"$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(e){\\\"use strict\\\";var l=e.Pos;function c(e,n){return e.line-n.line||e.ch-n.ch}var n=\\\"A-Z_a-z\\\\\\\\u00C0-\\\\\\\\u00D6\\\\\\\\u00D8-\\\\\\\\u00F6\\\\\\\\u00F8-\\\\\\\\u02FF\\\\\\\\u0370-\\\\\\\\u037D\\\\\\\\u037F-\\\\\\\\u1FFF\\\\\\\\u200C-\\\\\\\\u200D\\\\\\\\u2070-\\\\\\\\u218F\\\\\\\\u2C00-\\\\\\\\u2FEF\\\\\\\\u3001-\\\\\\\\uD7FF\\\\\\\\uF900-\\\\\\\\uFDCF\\\\\\\\uFDF0-\\\\\\\\uFFFD\\\",i=new RegExp(\\\"\u003C(/?)([\\\"+n+\\\"][A-Z_a-z\\\\\\\\u00C0-\\\\\\\\u00D6\\\\\\\\u00D8-\\\\\\\\u00F6\\\\\\\\u00F8-\\\\\\\\u02FF\\\\\\\\u0370-\\\\\\\\u037D\\\\\\\\u037F-\\\\\\\\u1FFF\\\\\\\\u200C-\\\\\\\\u200D\\\\\\\\u2070-\\\\\\\\u218F\\\\\\\\u2C00-\\\\\\\\u2FEF\\\\\\\\u3001-\\\\\\\\uD7FF\\\\\\\\uF900-\\\\\\\\uFDCF\\\\\\\\uFDF0-\\\\\\\\uFFFD-:.0-9\\\\\\\\u00B7\\\\\\\\u0300-\\\\\\\\u036F\\\\\\\\u203F-\\\\\\\\u2040]*)\\\",\\\"g\\\");function a(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?Math.max(i.from,e.firstLine()):e.firstLine(),this.max=i?Math.min(i.to-1,e.lastLine()):e.lastLine()}function s(e,n){var t=e.cm.getTokenTypeAt(l(e.line,n));return t&&/\\\\btag\\\\b/.test(t)}function r(e){return!(e.line>=e.max)&&(e.ch=0,e.text=e.cm.getLine(++e.line),1)}function h(e){return!(e.line\u003C=e.min)&&(e.text=e.cm.getLine(--e.line),e.ch=e.text.length,1)}function F(e){for(;;){var n=e.text.indexOf(\\\">\\\",e.ch);if(-1==n){if(r(e))continue;return}if(s(e,n+1)){var t=e.text.lastIndexOf(\\\"/\\\",n),i=-1\u003Ct&&!/\\\\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?\\\"selfClose\\\":\\\"regular\\\"}e.ch=n+1}}function x(e){for(;;){var n=e.ch?e.text.lastIndexOf(\\\"\u003C\\\",e.ch-1):-1;if(-1==n){if(h(e))continue;return}if(s(e,n+1)){i.lastIndex=n,e.ch=n;var t=i.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function g(e){for(;;){i.lastIndex=e.ch;var n=i.exec(e.text);if(!n){if(r(e))continue;return}if(s(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}function v(e,n){for(var t=[];;){var i,r=g(e),u=e.line,f=e.ch-(r?r[0].length:0);if(!r||!(i=F(e)))return;if(\\\"selfClose\\\"!=i)if(r[1]){for(var o=t.length-1;0\u003C=o;--o)if(t[o]==r[2]){t.length=o;break}if(o\u003C0&&(!n||n==r[2]))return{tag:r[2],from:l(u,f),to:l(e.line,e.ch)}}else t.push(r[2])}}function d(e,n){for(var t=[];;){var i=function(e){for(;;){var n=e.ch?e.text.lastIndexOf(\\\">\\\",e.ch-1):-1;if(-1==n){if(h(e))continue;return}if(s(e,n+1)){var t=e.text.lastIndexOf(\\\"/\\\",n),i=-1\u003Ct&&!/\\\\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?\\\"selfClose\\\":\\\"regular\\\"}e.ch=n}}(e);if(!i)return;if(\\\"selfClose\\\"!=i){var r=e.line,u=e.ch,f=x(e);if(!f)return;if(f[1])t.push(f[2]);else{for(var o=t.length-1;0\u003C=o;--o)if(t[o]==f[2]){t.length=o;break}if(o\u003C0&&(!n||n==f[2]))return{tag:f[2],from:l(e.line,e.ch),to:l(r,u)}}}else x(e)}}e.registerHelper(\\\"fold\\\",\\\"xml\\\",function(e,n){for(var t=new a(e,n.line,0);;){var i=g(t);if(!i||t.line!=n.line)return;var r=F(t);if(!r)return;if(!i[1]&&\\\"s
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-fullscreen","name":"CodeMirror Fullscreen","description":"Fullscreen editing for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/fullscreen\":{\"title\":\"$:/config/codemirror/fullscreen\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"F11\\\": \\\"togglefullscreen\\\"\\n}\"},\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(i){\\\"use strict\\\";i.defineOption(\\\"fullScreen\\\",!1,function(e,t,o){var r,l;o==i.Init&&(o=!1),!o!=!t&&(t?(l=(r=e).getWrapperElement(),r.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:l.style.width,height:l.style.height},l.style.width=\\\"\\\",l.style.height=\\\"auto\\\",l.className+=\\\" CodeMirror-fullscreen\\\",document.documentElement.style.overflow=\\\"hidden\\\",r.refresh()):function(e){var t=e.getWrapperElement();t.className=t.className.replace(/\\\\s*CodeMirror-fullscreen\\\\b/,\\\"\\\"),document.documentElement.style.overflow=\\\"\\\";var o=e.state.fullScreenRestore;t.style.width=o.width,t.style.height=o.height,window.scrollTo(o.scrollLeft,o.scrollTop),e.refresh()}(e))})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css\":{\"text\":\".CodeMirror-fullscreen {\\n position: fixed;\\n top: 0; left: 0; right: 0; bottom: 0;\\n height: auto;\\n z-index: 9;\\n}\\n\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror-fullscreen/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-fullscreen/readme\",\"text\":\"This plugin adds a ''Fullscreen editing Mode'' to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\nPressing ''F11'' with the focus within the editor-textarea will make the editor go fullscreen, pressing ''F11'' again leaves fullscreen-mode\\n\\n\"}}}"},
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-keymap-sublime-text","name":"CodeMirror Keymap Sublime Text","description":"Keymap compatible with Sublime Text for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-search-replace $:/plugins/tiddlywiki/codemirror-closebrackets","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/extraKeysTW\":{\"title\":\"$:/config/codemirror/extraKeysTW\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-M\\\": \\\"\\\",\\n\\t\\\"Alt-M\\\": \\\"goToBracket\\\",\\n\\t\\\"Ctrl-Enter\\\": \\\"\\\",\\n\\t\\\"Shift-Enter\\\": \\\"insertLineAfter\\\",\\n\\t\\\"Esc\\\": \\\"\\\",\\n\\t\\\"Ctrl-Esc\\\": \\\"singleSelectionTop\\\",\\n\\t\\\"Ctrl-L\\\": \\\"\\\",\\n\\t\\\"Shift-Ctrl-L\\\": \\\"\\\",\\n\\t\\\"Alt-L\\\": \\\"selectLine\\\",\\n\\t\\\"Shift-Alt-L\\\": \\\"splitSelectionByLine\\\",\\n\\t\\\"Ctrl-T\\\": \\\"\\\",\\n\\t\\\"Alt-T\\\": \\\"transposeChars\\\",\\n\\t\\\"Ctrl-K Ctrl-U\\\": \\\"\\\",\\n\\t\\\"Ctrl-K Ctrl-L\\\": \\\"\\\",\\n\\t\\\"Ctrl-K Ctrl-W\\\": \\\"\\\",\\n\\t\\\"Ctrl-K Alt-U\\\": \\\"upcaseAtCursor\\\",\\n\\t\\\"Ctrl-K Alt-L\\\": \\\"downcaseAtCursor\\\",\\n\\t\\\"Ctrl-K Alt-D\\\": \\\"deleteToSublimeMark\\\"\\n}\\n\"},\"$:/plugins/tiddlywiki/codemirror/keymaps/sublime\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/keymaps/sublime\",\"module-type\":\"codemirror-keymap\",\"text\":\"sublime\\n\"},\"$:/plugins/tiddlywiki/codemirror/keymap/sublime.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../lib/codemirror\\\"),require(\\\"../addon/search/searchcursor\\\"),require(\\\"../addon/edit/matchbrackets\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../lib/codemirror\\\",\\\"../addon/search/searchcursor\\\",\\\"../addon/edit/matchbrackets\\\"],e):e(CodeMirror)}(function(u){\\\"use strict\\\";var r=u.commands,d=u.Pos;function t(t,n){t.extendSelectionsBy(function(e){return t.display.shift||t.doc.extend||e.empty()?function(e,t,n){if(n\u003C0&&0==t.ch)return e.clipPos(d(t.line-1));var r=e.getLine(t.line);if(0\u003Cn&&t.ch>=r.length)return e.clipPos(d(t.line+1,0));for(var o,i=\\\"start\\\",l=t.ch,a=l,s=n\u003C0?0:r.length;a!=s;a+=n,0){var c=r.charAt(n\u003C0?a-1:a),f=\\\"_\\\"!=c&&u.isWordChar(c)?\\\"w\\\":\\\"o\\\";if(\\\"w\\\"==f&&c.toUpperCase()==c&&(f=\\\"W\\\"),\\\"start\\\"==i)\\\"o\\\"!=f?(i=\\\"in\\\",o=f):l=a+n;else if(\\\"in\\\"==i&&o!=f){if(\\\"w\\\"==o&&\\\"W\\\"==f&&n\u003C0&&a--,\\\"W\\\"==o&&\\\"w\\\"==f&&0\u003Cn){if(a==l+1){o=\\\"w\\\";continue}a--}break}}return d(t.line,a)}(t.doc,e.head,n):n\u003C0?e.from():e.to()})}function n(l,a){if(l.isReadOnly())return u.Pass;l.operation(function(){for(var e=l.listSelections().length,t=[],n=-1,r=0;r\u003Ce;r++){var o,i=l.listSelections()[r].head;i.line\u003C=n||(o=d(i.line+(a?0:1),0),l.replaceRange(\\\"\\\\n\\\",o,null,\\\"+insertLine\\\"),l.indentLine(o.line,null,!0),t.push({head:o,anchor:o}),n=i.line+1)}l.setSelections(t)}),l.execCommand(\\\"indentAuto\\\")}function c(e,t){for(var n=t.ch,r=n,o=e.getLine(t.line);n&&u.isWordChar(o.charAt(n-1));)--n;for(;r\u003Co.length&&u.isWordChar(o.charAt(r));)++r;return{from:d(t.line,n),to:d(t.line,r),word:o.slice(n,r)}}function o(e,t){for(var n=e.listSelections(),r=[],o=0;o\u003Cn.length;o++){var i=n[o],l=e.findPosV(i.anchor,t,\\\"line\\\",i.anchor.goalColumn),a=e.findPosV(i.head,t,\\\"line\\\",i.head.goalColumn);l.goalColumn=null!=i.anchor.goalColumn?i.anchor.goalColumn:e.cursorCoords(i.anchor,\\\"div\\\").left,a.goalColumn=null!=i.head.goalColumn?i.head.goalColumn:e.cursorCoords(i.head,\\\"div\\\").left;var s={anchor:l,head:a};r.push(i),r.push(s)}e.setSelections(r)}r.goSubwordLeft=function(e){t(e,-1)},r.goSubwordRight=function(e){t(e,1)},r.scrollLineUp=function(e){var t,n=e.getScrollInfo();e.somethingSelected()||(t=e.lineAtHeight(n.top+
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-mode-css","name":"CodeMirror Mode CSS","description":"CSS highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/css/css.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(T){\\\"use strict\\\";function e(e){for(var t={},r=0;r\u003Ce.length;++r)t[e[r].toLowerCase()]=!0;return t}T.defineMode(\\\"css\\\",function(e,t){var r=t.inline;t.propertyKeywords||(t=T.resolveMode(\\\"text/css\\\"));var a,i,n=e.indentUnit,l=t.tokenHooks,o=t.documentTypes||{},s=t.mediaTypes||{},d=t.mediaFeatures||{},c=t.mediaValueKeywords||{},p=t.propertyKeywords||{},u=t.nonStandardPropertyKeywords||{},m=t.fontProperties||{},b=t.counterDescriptors||{},g=t.colorKeywords||{},h=t.valueKeywords||{},f=t.allowNested,k=t.lineComment,y=!0===t.supportsAtComponent,w=!1!==e.highlightNonStandardPropertyKeywords;function v(e,t){return a=t,e}function x(i){return function(e,t){for(var r,o=!1;null!=(r=e.next());){if(r==i&&!o){\\\")\\\"==i&&e.backUp(1);break}o=!o&&\\\"\\\\\\\\\\\"==r}return r!=i&&(o||\\\")\\\"==i)||(t.tokenize=null),a=\\\"string\\\"}}function z(e,t){return e.next(),e.match(/\\\\s*[\\\\\\\"\\\\')]/,!1)?t.tokenize=null:t.tokenize=x(\\\")\\\"),a=\\\"(\\\",null}function j(e,t,r){this.type=e,this.indent=t,this.prev=r}function P(e,t,r,o){return e.context=new j(r,t.indentation()+(!1===o?0:n),e.context),r}function K(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function q(e,t,r){return _[r.context.type](e,t,r)}function C(e,t,r,o){for(var i=o||1;0\u003Ci;i--)r.context=r.context.prev;return q(e,t,r)}function B(e){var t=e.current().toLowerCase();i=h.hasOwnProperty(t)?\\\"atom\\\":g.hasOwnProperty(t)?\\\"keyword\\\":\\\"variable\\\"}var _={top:function(e,t,r){if(\\\"{\\\"==e)return P(r,t,\\\"block\\\");if(\\\"}\\\"==e&&r.context.prev)return K(r);if(y&&/@component/i.test(e))return P(r,t,\\\"atComponentBlock\\\");if(/^@(-moz-)?document$/i.test(e))return P(r,t,\\\"documentTypes\\\");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return P(r,t,\\\"atBlock\\\");if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,\\\"restricted_atBlock_before\\\";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return\\\"keyframes\\\";if(e&&\\\"@\\\"==e.charAt(0))return P(r,t,\\\"at\\\");if(\\\"hash\\\"==e)i=\\\"builtin\\\";else if(\\\"word\\\"==e)i=\\\"tag\\\";else{if(\\\"variable-definition\\\"==e)return\\\"maybeprop\\\";if(\\\"interpolation\\\"==e)return P(r,t,\\\"interpolation\\\");if(\\\":\\\"==e)return\\\"pseudo\\\";if(f&&\\\"(\\\"==e)return P(r,t,\\\"parens\\\")}return r.context.type},block:function(e,t,r){if(\\\"word\\\"!=e)return\\\"meta\\\"==e?\\\"block\\\":f||\\\"hash\\\"!=e&&\\\"qualifier\\\"!=e?_.top(e,t,r):(i=\\\"error\\\",\\\"block\\\");var o=t.current().toLowerCase();return p.hasOwnProperty(o)?(i=\\\"property\\\",\\\"maybeprop\\\"):u.hasOwnProperty(o)?(i=w?\\\"string-2\\\":\\\"property\\\",\\\"maybeprop\\\"):f?(i=t.match(/^\\\\s*:(?:\\\\s|$)/,!1)?\\\"property\\\":\\\"tag\\\",\\\"block\\\"):(i+=\\\" error\\\",\\\"maybeprop\\\")},maybeprop:function(e,t,r){return\\\":\\\"==e?P(r,t,\\\"prop\\\"):q(e,t,r)},prop:function(e,t,r){if(\\\";\\\"==e)return K(r);if(\\\"{\\\"==e&&f)return P(r,t,\\\"propBlock\\\");if(\\\"}\\\"==e||\\\"{\\\"==e)return C(e,t,r);if(\\\"(\\\"==e)return P(r,t,\\\"parens\\\");if(\\\"hash\\\"!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if(\\\"word\\\"==e)B(t);else if(\\\"interpolation\\\"==e)return P(r,t,\\\"interpolation\\\")}else i+=\\\" error\\\";return\\\"prop\\\"},propBlock:function(e,t,r){return\\\"}\\\"==e?K(r):\\\"word\\\"==e?(i=
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-mode-htmlmixed","name":"CodeMirror Mode HTML Mixed","description":"HTML mixed highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-xml $:/plugins/tiddlywiki/codemirror-mode-javascript $:/plugins/tiddlywiki/codemirror-mode-css","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/htmlmixed/htmlmixed.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\"),require(\\\"../xml/xml\\\"),require(\\\"../javascript/javascript\\\"),require(\\\"../css/css\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../xml/xml\\\",\\\"../javascript/javascript\\\",\\\"../css/css\\\"],t):t(CodeMirror)}(function(p){\\\"use strict\\\";var l={script:[[\\\"lang\\\",/(javascript|babel)/i,\\\"javascript\\\"],[\\\"type\\\",/^(?:text|application)\\\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,\\\"javascript\\\"],[\\\"type\\\",/./,\\\"text/plain\\\"],[null,null,\\\"javascript\\\"]],style:[[\\\"lang\\\",/^css$/i,\\\"css\\\"],[\\\"type\\\",/^(text\\\\/)?(x-)?(stylesheet|css)$/i,\\\"css\\\"],[\\\"type\\\",/./,\\\"text/plain\\\"],[null,null,\\\"css\\\"]]};var o={};function f(t,e){var a,n=t.match(o[a=e]||(o[a]=new RegExp(\\\"\\\\\\\\s+\\\"+a+\\\"\\\\\\\\s*=\\\\\\\\s*('|\\\\\\\")?([^'\\\\\\\"]+)('|\\\\\\\")?\\\\\\\\s*\\\")));return n?/^\\\\s*(.*?)\\\\s*$/.exec(n[2])[1]:\\\"\\\"}function h(t,e){return new RegExp((e?\\\"^\\\":\\\"\\\")+\\\"\u003C/s*\\\"+t+\\\"s*>\\\",\\\"i\\\")}function r(t,e){for(var a in t)for(var n=e[a]||(e[a]=[]),l=t[a],o=l.length-1;0\u003C=o;o--)n.unshift(l[o])}p.defineMode(\\\"htmlmixed\\\",function(u,t){var m=p.getMode(u,{name:\\\"xml\\\",htmlMode:!0,multilineTagIndentFactor:t.multilineTagIndentFactor,multilineTagIndentPastTag:t.multilineTagIndentPastTag,allowMissingTagName:t.allowMissingTagName}),d={},e=t&&t.tags,a=t&&t.scriptTypes;if(r(l,d),e&&r(e,d),a)for(var n=a.length-1;0\u003C=n;n--)d.script.unshift([\\\"type\\\",a[n].matches,a[n].mode]);function g(t,e){var a,n,l,o,i,c,r=m.token(t,e.htmlState),s=/\\\\btag\\\\b/.test(r);return s&&!/[\u003C>\\\\s\\\\/]/.test(t.current())&&(a=e.htmlState.tagName&&e.htmlState.tagName.toLowerCase())&&d.hasOwnProperty(a)?e.inTag=a+\\\" \\\":e.inTag&&s&&/>$/.test(t.current())?(n=/^([\\\\S]+) (.*)/.exec(e.inTag),e.inTag=null,l=\\\">\\\"==t.current()&&function(t,e){for(var a=0;a\u003Ct.length;a++){var n=t[a];if(!n[0]||n[1].test(f(e,n[0])))return n[2]}}(d[n[1]],n[2]),o=p.getMode(u,l),i=h(n[1],!0),c=h(n[1],!1),e.token=function(t,e){return t.match(i,!1)?(e.token=g,e.localState=e.localMode=null):(a=t,n=c,l=e.localMode.token(t,e.localState),o=a.current(),-1\u003C(r=o.search(n))?a.backUp(o.length-r):o.match(/\u003C\\\\/?$/)&&(a.backUp(o.length),a.match(n,!1)||a.match(o)),l);var a,n,l,o,r},e.localMode=o,e.localState=p.startState(o,m.indent(e.htmlState,\\\"\\\",\\\"\\\"))):e.inTag&&(e.inTag+=t.current(),t.eol()&&(e.inTag+=\\\" \\\")),r}return{startState:function(){return{token:g,inTag:null,localMode:null,localState:null,htmlState:p.startState(m)}},copyState:function(t){var e;return t.localState&&(e=p.copyState(t.localMode,t.localState)),{token:t.token,inTag:t.inTag,localMode:t.localMode,localState:e,htmlState:p.copyState(m,t.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(t,e,a){return!t.localMode||/^\\\\s*\u003C\\\\//.test(e)?m.indent(t.htmlState,e,a):t.localMode.indent?t.localMode.indent(t.localState,e,a):p.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||m}}}},\\\"xml\\\",\\\"javascript\\\",\\\"css\\\"),p.defineMIME(\\\"text/html\\\",\\\"htmlmixed\\\")});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/htmlmixed/htmlmixed.js\",\"module-type\":\"codemirro
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-mode-javascript","name":"CodeMirror Mode JavaScript","description":"JavaScript highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(tt){\\\"use strict\\\";tt.defineMode(\\\"javascript\\\",function(e,l){var t,r,n,a,i,o,d=e.indentUnit,p=l.statementIndent,c=l.jsonld,s=l.json||c,u=l.typescript,f=l.wordCharacters||/[\\\\w$\\\\xa1-\\\\uffff]/,m=(t=v(\\\"keyword a\\\"),r=v(\\\"keyword b\\\"),n=v(\\\"keyword c\\\"),a=v(\\\"keyword d\\\"),i=v(\\\"operator\\\"),{if:v(\\\"if\\\"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:v(\\\"new\\\"),delete:n,void:n,throw:n,debugger:v(\\\"debugger\\\"),var:v(\\\"var\\\"),const:v(\\\"var\\\"),let:v(\\\"var\\\"),function:v(\\\"function\\\"),catch:v(\\\"catch\\\"),for:v(\\\"for\\\"),switch:v(\\\"switch\\\"),case:v(\\\"case\\\"),default:v(\\\"default\\\"),in:i,typeof:i,instanceof:i,true:o={type:\\\"atom\\\",style:\\\"atom\\\"},false:o,null:o,undefined:o,NaN:o,Infinity:o,this:v(\\\"this\\\"),class:v(\\\"class\\\"),super:v(\\\"atom\\\"),yield:n,export:v(\\\"export\\\"),import:v(\\\"import\\\"),extends:n,await:n});function v(e){return{type:e,style:\\\"keyword\\\"}}var k,y,w=/[+\\\\-*&%=\u003C>!?|~^@]/,b=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\\\"/;function x(e,t,r){return k=e,y=r,t}function h(e,t){var a,r=e.next();if('\\\"'==r||\\\"'\\\"==r)return t.tokenize=(a=r,function(e,t){var r,n=!1;if(c&&\\\"@\\\"==e.peek()&&e.match(b))return t.tokenize=h,x(\\\"jsonld-keyword\\\",\\\"meta\\\");for(;null!=(r=e.next())&&(r!=a||n);)n=!n&&\\\"\\\\\\\\\\\"==r;return n||(t.tokenize=h),x(\\\"string\\\",\\\"string\\\")}),t.tokenize(e,t);if(\\\".\\\"==r&&e.match(/^\\\\d[\\\\d_]*(?:[eE][+\\\\-]?[\\\\d_]+)?/))return x(\\\"number\\\",\\\"number\\\");if(\\\".\\\"==r&&e.match(\\\"..\\\"))return x(\\\"spread\\\",\\\"meta\\\");if(/[\\\\[\\\\]{}\\\\(\\\\),;\\\\:\\\\.]/.test(r))return x(r);if(\\\"=\\\"==r&&e.eat(\\\">\\\"))return x(\\\"=>\\\",\\\"operator\\\");if(\\\"0\\\"==r&&e.match(/^(?:x[\\\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return x(\\\"number\\\",\\\"number\\\");if(/\\\\d/.test(r))return e.match(/^[\\\\d_]*(?:n|(?:\\\\.[\\\\d_]*)?(?:[eE][+\\\\-]?[\\\\d_]+)?)?/),x(\\\"number\\\",\\\"number\\\");if(\\\"/\\\"==r)return e.eat(\\\"*\\\")?(t.tokenize=g)(e,t):e.eat(\\\"/\\\")?(e.skipToEnd(),x(\\\"comment\\\",\\\"comment\\\")):et(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if(\\\"/\\\"==t&&!n)return;\\\"[\\\"==t?n=!0:n&&\\\"]\\\"==t&&(n=!1)}r=!r&&\\\"\\\\\\\\\\\"==t}}(e),e.match(/^\\\\b(([gimyus])(?![gimyus]*\\\\2))+\\\\b/),x(\\\"regexp\\\",\\\"string-2\\\")):(e.eat(\\\"=\\\"),x(\\\"operator\\\",\\\"operator\\\",e.current()));if(\\\"`\\\"==r)return(t.tokenize=j)(e,t);if(\\\"#\\\"==r&&\\\"!\\\"==e.peek())return e.skipToEnd(),x(\\\"meta\\\",\\\"meta\\\");if(\\\"#\\\"==r&&e.eatWhile(f))return x(\\\"variable\\\",\\\"property\\\");if(\\\"\u003C\\\"==r&&e.match(\\\"!--\\\")||\\\"-\\\"==r&&e.match(\\\"->\\\")&&!/\\\\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),x(\\\"comment\\\",\\\"comment\\\");if(w.test(r))return\\\">\\\"==r&&t.lexical&&\\\">\\\"==t.lexical.type||(e.eat(\\\"=\\\")?\\\"!\\\"!=r&&\\\"=\\\"!=r||e.eat(\\\"=\\\"):/[\u003C>*+\\\\-|&?]/.test(r)&&(e.eat(r),\\\">\\\"==r&&e.eat(r))),\\\"?\\\"==r&&e.eat(\\\".\\\")?x(\\\".\\\"):x(\\\"operator\\\",\\\"operator\\\",e.current());if(f.test(r)){e.eatWhile(f);var n=e.current();if(\\\".\\\"!=t.lastType){if(m.propertyIsEnumerable(n)){var i=m[n];return x(i.type
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-mode-markdown","name":"CodeMirror Mode Markdown","description":"Markdown highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-xml","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\"),require(\\\"../xml/xml\\\"),require(\\\"../tw-meta\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../xml/xml\\\",\\\"../tw-meta\\\"],t):t(CodeMirror)}(function(j){\\\"use strict\\\";j.defineMode(\\\"markdown\\\",function(c,x){var A=j.getMode(c,\\\"text/html\\\"),u=\\\"null\\\"==A.name;void 0===x.highlightFormatting&&(x.highlightFormatting=!1),void 0===x.maxBlockquoteDepth&&(x.maxBlockquoteDepth=0),void 0===x.taskLists&&(x.taskLists=!1),void 0===x.strikethrough&&(x.strikethrough=!1),void 0===x.emoji&&(x.emoji=!1),void 0===x.fencedCodeBlockHighlighting&&(x.fencedCodeBlockHighlighting=!0),void 0===x.fencedCodeBlockDefaultMode&&(x.fencedCodeBlockDefaultMode=\\\"text/plain\\\"),void 0===x.xml&&(x.xml=!0),void 0===x.tokenTypeOverrides&&(x.tokenTypeOverrides={});var C={header:\\\"header\\\",code:\\\"comment\\\",quote:\\\"quote\\\",list1:\\\"variable-2\\\",list2:\\\"variable-3\\\",list3:\\\"keyword\\\",hr:\\\"hr\\\",image:\\\"image\\\",imageAltText:\\\"image-alt-text\\\",imageMarker:\\\"image-marker\\\",formatting:\\\"formatting\\\",linkInline:\\\"link\\\",linkEmail:\\\"link\\\",linkText:\\\"link\\\",linkHref:\\\"string\\\",em:\\\"em\\\",strong:\\\"strong\\\",strikethrough:\\\"strikethrough\\\",emoji:\\\"builtin\\\"};for(var t in C)C.hasOwnProperty(t)&&x.tokenTypeOverrides[t]&&(C[t]=x.tokenTypeOverrides[t]);var f=/^([*\\\\-_])(?:\\\\s*\\\\1){2,}\\\\s*$/,k=/^(?:[*\\\\-+]|^[0-9]+([.)]))\\\\s+/,S=/^\\\\[(x| )\\\\](?=\\\\s)/i,F=x.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,D=/^ {0,3}(?:\\\\={1,}|-{2,})\\\\s*$/,i=/^[^#!\\\\[\\\\]*_\\\\\\\\\u003C>` \\\"'(~:]+/,p=/^(~~~+|```+)[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,E=/^\\\\s*\\\\[[^\\\\]]+?\\\\]:.*$/,v=/[!\\\"#$%&'()*+,\\\\-.\\\\/:;\u003C=>?@\\\\[\\\\\\\\\\\\]^_`{|}~\\\\xA1\\\\xA7\\\\xAB\\\\xB6\\\\xB7\\\\xBB\\\\xBF\\\\u037E\\\\u0387\\\\u055A-\\\\u055F\\\\u0589\\\\u058A\\\\u05BE\\\\u05C0\\\\u05C3\\\\u05C6\\\\u05F3\\\\u05F4\\\\u0609\\\\u060A\\\\u060C\\\\u060D\\\\u061B\\\\u061E\\\\u061F\\\\u066A-\\\\u066D\\\\u06D4\\\\u0700-\\\\u070D\\\\u07F7-\\\\u07F9\\\\u0830-\\\\u083E\\\\u085E\\\\u0964\\\\u0965\\\\u0970\\\\u0AF0\\\\u0DF4\\\\u0E4F\\\\u0E5A\\\\u0E5B\\\\u0F04-\\\\u0F12\\\\u0F14\\\\u0F3A-\\\\u0F3D\\\\u0F85\\\\u0FD0-\\\\u0FD4\\\\u0FD9\\\\u0FDA\\\\u104A-\\\\u104F\\\\u10FB\\\\u1360-\\\\u1368\\\\u1400\\\\u166D\\\\u166E\\\\u169B\\\\u169C\\\\u16EB-\\\\u16ED\\\\u1735\\\\u1736\\\\u17D4-\\\\u17D6\\\\u17D8-\\\\u17DA\\\\u1800-\\\\u180A\\\\u1944\\\\u1945\\\\u1A1E\\\\u1A1F\\\\u1AA0-\\\\u1AA6\\\\u1AA8-\\\\u1AAD\\\\u1B5A-\\\\u1B60\\\\u1BFC-\\\\u1BFF\\\\u1C3B-\\\\u1C3F\\\\u1C7E\\\\u1C7F\\\\u1CC0-\\\\u1CC7\\\\u1CD3\\\\u2010-\\\\u2027\\\\u2030-\\\\u2043\\\\u2045-\\\\u2051\\\\u2053-\\\\u205E\\\\u207D\\\\u207E\\\\u208D\\\\u208E\\\\u2308-\\\\u230B\\\\u2329\\\\u232A\\\\u2768-\\\\u2775\\\\u27C5\\\\u27C6\\\\u27E6-\\\\u27EF\\\\u2983-\\\\u2998\\\\u29D8-\\\\u29DB\\\\u29FC\\\\u29FD\\\\u2CF9-\\\\u2CFC\\\\u2CFE\\\\u2CFF\\\\u2D70\\\\u2E00-\\\\u2E2E\\\\u2E30-\\\\u2E42\\\\u3001-\\\\u3003\\\\u3008-\\\\u3011\\\\u3014-\\\\u301F\\\\u3030\\\\u303D\\\\u30A0\\\\u30FB\\\\uA4FE\\\\uA4FF\\\\uA60D-\\\\uA60F\\\\uA673\\\\uA67E\\\\uA6F2-\\\\uA6F7\\\\uA874-\\\\uA877\\\\uA8CE\\\\uA8CF\\\\uA8F8-\\\\uA8FA\\\\uA8FC\\\\uA92E\\\\uA92F\\\\uA95F\\\\uA9C1-\\\\uA9CD\\\\uA9DE\\\\uA9DF\\\\uAA5C-\\\\uAA5F\\\\uAADE\\\\uAADF\\\\uAAF0\\\\uAAF1\\\\uABEB\\\\uFD3E\\\\uFD3F\\\\uFE10-\\\\uFE19\\\\uFE30-\\\\uFE52\\\\uFE54-\\\\uFE61\\\\u
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-mode-xml","name":"CodeMirror Mode XML","description":"XML highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(N){\\\"use strict\\\";var y={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},z={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};N.defineMode(\\\"xml\\\",function(t,e){var i,a,l=t.indentUnit,u={},n=e.htmlMode?y:z;for(var r in n)u[r]=n[r];for(var r in e)u[r]=e[r];function c(e,n){function t(t){return(n.tokenize=t)(e,n)}var r=e.next();if(\\\"\u003C\\\"==r)return e.eat(\\\"!\\\")?e.eat(\\\"[\\\")?e.match(\\\"CDATA[\\\")?t(s(\\\"atom\\\",\\\"]]>\\\")):null:e.match(\\\"--\\\")?t(s(\\\"comment\\\",\\\"--\\\\x3e\\\")):e.match(\\\"DOCTYPE\\\",!0,!0)?(e.eatWhile(/[\\\\w\\\\._\\\\-]/),t(function r(o){return function(t,e){for(var n;null!=(n=t.next());){if(\\\"\u003C\\\"==n)return e.tokenize=r(o+1),e.tokenize(t,e);if(\\\">\\\"==n){if(1!=o)return e.tokenize=r(o-1),e.tokenize(t,e);e.tokenize=c;break}}return\\\"meta\\\"}}(1))):null:e.eat(\\\"?\\\")?(e.eatWhile(/[\\\\w\\\\._\\\\-]/),n.tokenize=s(\\\"meta\\\",\\\"?>\\\"),\\\"meta\\\"):(i=e.eat(\\\"/\\\")?\\\"closeTag\\\":\\\"openTag\\\",n.tokenize=d,\\\"tag bracket\\\");if(\\\"&\\\"!=r)return e.eatWhile(/[^&\u003C]/),null;var o=e.eat(\\\"#\\\")?e.eat(\\\"x\\\")?e.eatWhile(/[a-fA-F\\\\d]/)&&e.eat(\\\";\\\"):e.eatWhile(/[\\\\d]/)&&e.eat(\\\";\\\"):e.eatWhile(/[\\\\w\\\\.\\\\-:]/)&&e.eat(\\\";\\\");return o?\\\"atom\\\":\\\"error\\\"}function d(t,e){var n=t.next();if(\\\">\\\"==n||\\\"/\\\"==n&&t.eat(\\\">\\\"))return e.tokenize=c,i=\\\">\\\"==n?\\\"endTag\\\":\\\"selfcloseTag\\\",\\\"tag bracket\\\";if(\\\"=\\\"==n)return i=\\\"equals\\\",null;if(\\\"\u003C\\\"!=n)return/[\\\\'\\\\\\\"]/.test(n)?(e.tokenize=(r=n,a.isInAttribute=!0,a),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\']*[^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\'\\\\/]/),\\\"word\\\");e.tokenize=c,e.state=g,e.tagName=e.tagStart=null;var r,o=e.tokenize(t,e);return o?o+\\\" tag error\\\":\\\"tag error\\\";function a(t,e){for(;!t.eol();)if(t.next()==r){e.tokenize=d;break}return\\\"string\\\"}}function s(n,r){return function(t,e){for(;!t.eol();){if(t.match(r)){e.tokenize=c;break}t.next()}return n}}function f(t,e,n){this.prev=t.context,this.tagName=e||\\\"\\\",this.indent=t.indented,this.startOfLine=n,(u.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function o(t){t.context&&(t.context=t.context.prev)}function m(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!u.contextGrabbers.hasOwnProperty(n)||!u.contextGrabbers[n].hasOwnProperty(e))return;o(t)}}function g(t,e,n){return
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror-search-replace","name":"CodeMirror Search and Replace","description":"Search and replace for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/addon/search/search.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\"),require(\\\"./searchcursor\\\"),require(\\\"../dialog/dialog\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"./searchcursor\\\",\\\"../dialog/dialog\\\"],e):e(CodeMirror)}(function(d){\\\"use strict\\\";function o(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function m(e){return e.state.search||(e.state.search=new o)}function a(e){return\\\"string\\\"==typeof e&&e==e.toLowerCase()}function y(e,o,n){return e.getSearchCursor(o,n,{caseFold:a(o),multiline:!0})}function h(e,o,n,r,t){e.openDialog?e.openDialog(o,t,{value:r,selectValueOnOpen:!0,bottom:e.options.search.bottom}):t(prompt(n,r))}function r(e){return e.replace(/\\\\\\\\([nrt\\\\\\\\])/g,function(e,o){return\\\"n\\\"==o?\\\"\\\\n\\\":\\\"r\\\"==o?\\\"\\\\r\\\":\\\"t\\\"==o?\\\"\\\\t\\\":\\\"\\\\\\\\\\\"==o?\\\"\\\\\\\\\\\":e})}function s(e){var o=e.match(/^\\\\/(.*)\\\\/([a-z]*)$/);if(o)try{e=new RegExp(o[1],-1==o[2].indexOf(\\\"i\\\")?\\\"\\\":\\\"i\\\")}catch(e){}else e=r(e);return(\\\"string\\\"==typeof e?\\\"\\\"==e:e.test(\\\"\\\"))&&(e=/x^/),e}function g(e,o,n){var r,t;o.queryText=n,o.query=s(n),e.removeOverlay(o.overlay,a(o.query)),o.overlay=(r=o.query,t=a(o.query),\\\"string\\\"==typeof r?r=new RegExp(r.replace(/[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]/g,\\\"\\\\\\\\$&\\\"),t?\\\"gi\\\":\\\"g\\\"):r.global||(r=new RegExp(r.source,r.ignoreCase?\\\"gi\\\":\\\"g\\\")),{token:function(e){r.lastIndex=e.pos;var o=r.exec(e.string);if(o&&o.index==e.pos)return e.pos+=o[0].length||1,\\\"searching\\\";o?e.pos=o.index:e.skipToEnd()}}),e.addOverlay(o.overlay),e.showMatchesOnScrollbar&&(o.annotate&&(o.annotate.clear(),o.annotate=null),o.annotate=e.showMatchesOnScrollbar(o.query,a(o.query)))}function n(a,o,e,n){var r=m(a);if(r.query)return x(a,o);var t,s,i,c,l,u,p,f=a.getSelection()||r.lastQuery;f instanceof RegExp&&\\\"x^\\\"==f.source&&(f=null),e&&a.openDialog?(t=null,s=function(e,o){d.e_stop(o),e&&(e!=r.queryText&&(g(a,r,e),r.posFrom=r.posTo=a.getCursor()),t&&(t.style.opacity=1),x(a,o.shiftKey,function(e,o){var n;o.line\u003C3&&document.querySelector&&(n=a.display.wrapper.querySelector(\\\".CodeMirror-dialog\\\"))&&n.getBoundingClientRect().bottom-4>a.cursorCoords(o,\\\"window\\\").top&&((t=n).style.opacity=.4)}))},c=b(i=a),l=f,u=s,p=function(e,o){var n=d.keyName(e),r=a.getOption(\\\"extraKeys\\\"),t=r&&r[n]||d.keyMap[a.getOption(\\\"keyMap\\\")][n];\\\"findNext\\\"==t||\\\"findPrev\\\"==t||\\\"findPersistentNext\\\"==t||\\\"findPersistentPrev\\\"==t?(d.e_stop(e),g(a,m(a),o),a.execCommand(t)):\\\"find\\\"!=t&&\\\"findPersistent\\\"!=t||(d.e_stop(e),s(o,e))},i.openDialog(c,u,{value:l,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){v(i)},onKeyDown:p,bottom:i.options.search.bottom}),n&&f&&(g(a,r,f),x(a,o))):h(a,b(a),\\\"Search for:\\\",f,function(e){e&&!r.query&&a.operation(function(){g(a,r,e),r.posFrom=r.posTo=a.getCursor(),x(a,o)})})}function x(n,r,t){n.operation(function(){var e=m(n),o=y(n,e.query,r?e.posFrom:e.posTo);(o.find(r)||(o=y(n,e.query,r?d.Pos(n.lastLine()):d.Pos(n.firstLine(),0))).find(r))&&(n.setSelection(o.from(),o.to()),n.scrollIntoView({from:o.from(),to:o.to()},20),e.posFrom=o.from(),e.posTo=o.to(),t&&t(o.from(),o.to()))})}function v(o){o.operation(function(){var e=m(o);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,o.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}func
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror/keyboard","text":"\n!!Default keyboard shortcuts\n\n!!!Basic shortcuts\n\n|Shortcut |Function |h\n|Left |goCharLeft |\n|Right |goCharRight |\n|Up |goLineUp |\n|Down |goLineDown |\n|End |goLineEnd |\n|Home |goLineStartSmart |\n|~PageUp |goPageUp |\n|~PageDown |goPageDown |\n|Delete |delCharAfter |\n|Backspace |delCharBefore |\n|Shift-Backspace |delCharBefore |\n|Tab |defaultTab |\n|Shift-Tab |indentAuto |\n|Enter |newlineAndIndent |\n|Insert |toggleOverwrite |\n|Ctrl-Esc |singleSelection |\n\n\n!!!Shortcuts on Windows and Linux\n\n|Shortcut |Function |h\n|Ctrl-A |selectAll |\n|Ctrl-D |deleteLine |\n|Ctrl-Z |undo |\n|Shift-Ctrl-Z |redo |\n|Ctrl-Y |redo |\n|Ctrl-Home |goDocStart |\n|Ctrl-End |goDocEnd |\n|Ctrl-Up |goLineUp |\n|Ctrl-Down |goLineDown |\n|Ctrl-Left |goGroupLeft |\n|Ctrl-Right |goGroupRight |\n|Alt-Left |goLineStart |\n|Alt-Right |goLineEnd |\n|Ctrl-Backspace |delGroupBefore |\n|Ctrl-Delete |delGroupAfter |\n|Ctrl-F |find |\n|Ctrl-G |findNext |\n|Shift-Ctrl-G |findPrev |\n|Shift-Ctrl-F |replace |\n|Shift-Ctrl-R |replaceAll |\n|Ctrl-[ |indentLess |\n|Ctrl-] |indentMore |\n|Alt-U |undoSelection |\n|Shift-Ctrl-U |redoSelection |\n|Shift-Alt-U |redoSelection |\n\n\n!!!Shortcuts on ~MacOs\n\n|Shortcut |Function |h\n|Cmd-A |selectAll |\n|Cmd-D |deleteLine |\n|Cmd-Z |undo |\n|Shift-Cmd-Z |redo |\n|Cmd-Y |redo |\n|Cmd-Home |goDocStart |\n|Cmd-Up |goDocStart |\n|Cmd-End |goDocEnd |\n|Cmd-Down |goDocEnd |\n|Alt-Left |goGroupLeft |\n|Alt-Right |goGroupRight |\n|Cmd-Left |goLineLeft |\n|Cmd-Right |goLineRight |\n|Alt-Backspace |delGroupBefore |\n|Ctrl-Alt-Backspace |delGroupAfter |\n|Alt-Delete |delGroupAfter |\n|Cmd-F |find |\n|Cmd-G |findNext |\n|Shift-Cmd-G |findPrev |\n|Cmd-Alt-F |replace |\n|Shift-Cmd-Alt-F |replaceAll |\n|Cmd-[ |indentLess |\n|Cmd-] |indentMore |\n|Cmd-Backspace |delWrappedLineLeft |\n|Cmd-Delete |delWrappedLineRight |\n|Alt-U |undoSelection |\n|Shift-Alt-U |redoSelection |\n|Ctrl-Up |goDocStart |\n|Ctrl-Down |goDocEnd |\n|Ctrl-F |goCharRight |\n|Ctrl-B |goCharLeft |\n|Ctrl-P |goLineUp |\n|Ctrl-N |goLineDown |\n|Alt-F |goWordRight |\n|Alt-B |goWordLeft |\n|Ctrl-A |goLineStart |\n|Ctrl-E |goLineEnd |\n|Ctrl-V |goPageDown |\n|Shift-Ctrl-V |goPageUp |\n|Ctrl-D |delCharAfter |\n|Ctrl-H |delCharBefore |\n|Alt-D |delWordAfter |\n|Alt-Backspace |delWordBefore |\n|Ctrl-K |killLine |\n|Alt-T |transposeChars |\n|Ctrl-O |openLine |\n\n\n"},
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/codemirror/usage","text":"! Configuration\n\nConfiguration for the ~CodeMirror text-editor can be done from within the CodeMirror Settings Tab in the [[ControlPanel|$:/ControlPanel]] (Settings - ~CodeMirror)\n\n\n!!Setting a different Theme\n\n~CodeMirror themes are available in the [ext[official GitHub repository|https://github.com/codemirror/CodeMirror/tree/master/theme]]\n\nMore themes can be found at https://github.com/FarhadG/code-mirror-themes/tree/master/themes and previewed [ext[here|http://farhadg.github.io/code-mirror-themes/]]\n\n\nTo add a theme to your wiki, follow these four steps:\n\n* choose one of the CSS files and copy its content to a new tiddler\n* remove all comments from the top and tag the tiddler with \u003C\u003Ctag-pill \"$:/tags/Stylesheet\">>\n* add a field \"module-type\" with the value \"codemirror-theme\". add a field \"name\" with the exact ''name'' of the theme as value\n* save the tiddler and go to the Settings tab in $:/ControlPanel - look for the \"theme\" dropdown to select your newly added theme\n\n\n!!Line Numbers\n\nTo show or hide the Line Numbers at the left, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Line Numbers\" checkbox\n\n\n!!Line Wrapping\n\nControls if long lines get visually wrapped to a new line if they're too long to fit the editor width or if the editor should scroll horizontally\n\nTo change the line-wrapping behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Line Wrapping\" checkbox\n\n\n!!Show Cursor when selecting\n\nDefines whether the Mouse cursor should be visually shown or hidden when making a text-selection\n\nTo change the show-cursor-when-selecting behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \"Show cursor when selecting\" checkbox\n\n\n!!~CodeMirror Font Family\n\nThe Font-Family used within the ~CodeMirror text-editor defaults to \"monospace\" which will choose your configured monospace system-font\n\nThat setting can be overridden entering one or more Font-Families in the \"Font Family\" input field at ~ControlPanel - Settings - ~CodeMirror\n\n* The entries must be separated by semicolons ','\n* Font-Family Names that contain spaces must be quoted like \"My Font\"\n* If a list of Font-Families is specified, the last Font-Family found on the user-system gets used, non-existing fonts get ignored\n* If none of the specified Font-Families is available, ~CodeMirror uses the default \"monospace\"\n\n\n!!\"Hidden\" Settings:\n\n!!!Cursor Blink Rate\n\nThe cursor blink-rate defines how fast (in milliseconds) the cursor blinks inside the textarea\n\nYou can change it by editing $:/config/codemirror/cursorBlinkRate\n\"0\" disables blinking\n\n!!!Tabsize\n\nThe Tabsize defines the width of a tab character. Default is 4.\n\nYou can change it by editing $:/config/codemirror/tabSize\n\n!!!Indent Unit\n\nNot enabled for vnd.tiddlywiki and x-tiddlywiki\n\nDefines how many spaces a text-block should be indented. Defaults to 2.\n\nYou can change it by editing $:/config/codemirror/indentUnit\n\n"},
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/dynannotate","name":"Dynannotate","description":"Dynamic content annotation","author":"JeremyRuston","core-version":">=5.0.0","list":"readme examples","dependents":"$:/plugins/tiddlywiki/dynaview","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/dynannotate/readme\":{\"title\":\"$:/plugins/tiddlywiki/dynannotate/readme\",\"text\":\"The ''Dynannotate'' plugin allows annotations on textual content to be created and displayed. It has several components:\\n\\n* The dynannotate widget draws clickable textual annotations, search highlights and search snippets as overlays over the top of the content that it contains\\n* The selection tracker keeps track of changes to the selected text in the main browser window. It triggers an action string when the selection changes, passing it the details of the selection. It can be used to display a popup menu\\n** The original legacy selection tracker is also provided for backwards compatibility. It is much more limited, and not recommended for new projects\\n\\n!! Dynannotate Widget\\n\\nThe attributes of the `\u003C$dynannotate>` widget describe annotations to be overlaid over the text contained within its child widgets. A single annotation can be directly applied using the attributes or multiple annotations can be applied by providing a filter identifying the \\\"annotation tiddlers\\\" that specify each annotation.\\n\\nThe content of the `\u003C$dynannotate>` widget should not contain HTML `\u003Cinput>` or `\u003Ctextarea>` text editing elements (and therefore should not contain TiddlyWiki's `\u003C$edit-text>` widget)\\n\\nThe `\u003C$dynannotate>` widget uses the selection tracker to support a popup that dynamically tracks selected text within it.\\n\\n!!! Attributes\\n\\n|!Attribute |!Description |\\n|target |Optional text to be annotated |\\n|targetPrefix |Optional prefix text to disambiguate the target |\\n|targetSuffix |Optional suffix text to disambiguate the target |\\n|filter |Filter identifying the annotation tiddlers applying to this content (see below) |\\n|actions |Action string to be executed when an annotation is clicked. The variable `annotationTiddler` contains the title of the tiddler corresponding to the annotation that was clicked, and the variable `modifierKey` contains \\\"ctrl\\\", \\\"shift\\\", \\\"ctrl-shift\\\", \\\"normal\\\" according to which modifier keys were pressed |\\n|popup |Popup state tiddler to be used to trigger a popup when an annotation is clicked |\\n|search |Search text to be highlighted within the widget |\\n|searchDisplay |\\\"overlay\\\" or \\\"snippet\\\" (see below) |\\n|searchMode |\\\"normal\\\" (default), \\\"regexp\\\" or \\\"whitespace\\\" (see below) |\\n|searchMinLength |Optional minimum length of search string |\\n|searchCaseSensitive |\\\"no\\\" (default) for a case insensitive search, or \\\"yes\\\" for a case sensitive search |\\n|searchClass |Optional CSS class to be added to search overlays |\\n|snippetContextLength |Optional length of search result contextual prefix/suffix |\\n\\nThe following attributes are only used with the legacy selection tracker:\\n\\n|!Attribute |!Description |\\n|selection |Tiddler to which the currently selected text should be dynamically saved |\\n|selectionPrefix |Tiddler to which up to 50 characters preceding the currently selected text should be dynamically saved |\\n|selectionSuffix |Tiddler to which up to 50 characters succeeding the currently selected text should be dynamically saved |\\n|selectionPopup |Popup state tiddler to be used to trigger a popup when text is selected |\\n\\nThe values supported by the `searchDisplay` attribute are:\\n\\n* `overlay` - display search results as overlays over the contained text\\n* `snippet` - display search results as a sequence of highlighted snippets, and the original text is hidden. Selecting this option therefore disables the annotation functionality\\n\\nThe search modes supported by the `searchMode` attribute are:\\n\\n* `normal` - a literal string
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/dynaview","name":"Dynaview","description":"Dynamic scrolling and zooming effects","list":"readme docs examples config","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/dynaview/above-story\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/above-story\",\"tags\":\"$:/tags/AboveStory-disabled\",\"text\":\"\u003C!-- Remove the \\\"-disabled\\\" part of the tag to cause the currently selected example to appear at the top of the story river. Intended to make it easier to make clean screencaps -->\\n\u003Cdiv style=\\\"height:100em;\\\">\\n\u003C$transclude tiddler={{$:/state/tab--1915807570}} mode=\\\"block\\\"/>\\n\u003C/div>\\n\"},\"$:/config/DynaView/ViewportDimensions\":{\"title\":\"$:/config/DynaView/ViewportDimensions\",\"text\":\"no\"},\"$:/config/DynaView/UpdateAddressBar\":{\"title\":\"$:/config/DynaView/UpdateAddressBar\",\"text\":\"no\"},\"$:/plugins/tiddlywiki/dynaview/config\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/config\",\"text\":\"\u003C$checkbox tiddler=\\\"$:/config/DynaView/ViewportDimensions\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"> Enable dynamic saving of the viewport [[width|$:/state/DynaView/ViewportDimensions/Width]] and [[height|$:/state/DynaView/ViewportDimensions/Height]]\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/DynaView/UpdateAddressBar\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"> Update address bar while scrolling\u003C/$checkbox>\\n\\n\"},\"$:/plugins/tiddlywiki/dynaview/docs\":{\"title\":\"$:/plugins/tiddlywiki/dynaview/docs\",\"text\":\"! Documentation\\n\\nThe components of this plugin include:\\n\\n* A background task that:\\n** performs specified actions when elements are scrolled into view\\n** updates certain base classes on the `document.body` according to the current zoom level\\n** if enabled in the DynaView config panel - dynamically stores the viewport dimensions in $:/state/viewport/width and $:/state/viewport/height\\n* Pre-configured CSS classes to simplify using those base classes\\n* Usage examples\\n\\n! Scroll Features\\n\\n!! Scroll position preservation during refresh\\n\\nSome recent browsers have a feature called \\\"scroll anchoring\\\" whereby they suppress the apparent scrolling that occurs when elements are inserted or removed above the current viewport. (See https://github.com/WICG/ScrollAnchoring for more details).\\n\\n~DynaView can optionally polyfill this behaviour for older browsers by setting the configuration tiddler $:/config/DynaView/PreserveScrollPosition to `yes`.\\n\\n!! Startup scroll position restoration\\n\\nOptionally, ~DynaView can store the current scroll position in local storage and restore it upon startup. Set the configuration tiddler $:/config/DynaView/RestoreScrollPositionAtStartup to `yes`.\\n\\nNote that it is not recommended to use this setting at the same time as the \\\"UpdateAddressBar\\\" option.\\n\\n!! Visibility tracking\\n\\nThe background task detects when elements with the class `tc-dynaview-track-tiddler-when-visible` scroll in and out of view. It tracks four different states:\\n\\n* ''Blank/missing'' -- The element has not yet been scrolled into view\\n* ''0'' -- The element has been scrolled into view, but subsequently scrolled out of view\\n* ''1'' -- The element is near the viewport\\n* ''2'' -- The element is partially or wholly within the viewport\\n\\nThe processing applied to each element is as follows:\\n\\n* If the element is partially or wholly within the viewport then set the state to \\\"2\\\"\\n* If the element is near the viewport then set the state to \\\"1\\\"\\n* If the element is fully outside the viewport then only set the state to \\\"0\\\" if it is currently unset (ie blank/missing)\\n\\nAttributes on the tracked element specify the following parameters:\\n\\n* ''data-dynaview-track-tiddler'' -- specifies the tiddler in which the element tracking state will be stored\\n\\n!! Update address bar whe
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/highlight","name":"Highlight","description":"Highlight.js syntax highlighting","author":"Joao Bolila","list":"readme usage license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/HighlightPlugin/TypeMappings/application/javascript\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/application/javascript\",\"text\":\"javascript\"},\"$:/config/HighlightPlugin/TypeMappings/application/json\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/application/json\",\"text\":\"json\"},\"$:/config/HighlightPlugin/TypeMappings/text/css\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/css\",\"text\":\"css\"},\"$:/config/HighlightPlugin/TypeMappings/text/html\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/html\",\"text\":\"html\"},\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\",\"text\":\"xml\"},\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\":{\"title\":\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\",\"text\":\"markdown\"},\"$:/plugins/tiddlywiki/highlight/highlight.js\":{\"text\":\"var hljs = require(\\\"$:/plugins/tiddlywiki/highlight/highlight.js\\\");\\n/*!\\n Highlight.js v11.4.0 (git: 2d0e7c1094)\\n (c) 2006-2022 Ivan Sagalaev and other contributors\\n License: BSD-3-Clause\\n */\\nvar hljs=function(){\\\"use strict\\\";var e={exports:{}};function t(e){\\nreturn e instanceof Map?e.clear=e.delete=e.set=()=>{\\nthrow Error(\\\"map is read-only\\\")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{\\nthrow Error(\\\"set is read-only\\\")\\n}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]\\n;\\\"object\\\"!=typeof i||Object.isFrozen(i)||t(i)})),e}\\ne.exports=t,e.exports.default=t;var n=e.exports;class i{constructor(e){\\nvoid 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}\\nignoreMatch(){this.isMatchIgnored=!0}}function r(e){\\nreturn e.replace(/&/g,\\\"&\\\").replace(/\u003C/g,\\\"<\\\").replace(/>/g,\\\">\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\")\\n}function s(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]\\n;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const o=e=>!!e.kind\\n;class a{constructor(e,t){\\nthis.buffer=\\\"\\\",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){\\nthis.buffer+=r(e)}openNode(e){if(!o(e))return;let t=e.kind\\n;t=e.sublanguage?\\\"language-\\\"+t:((e,{prefix:t})=>{if(e.includes(\\\".\\\")){\\nconst n=e.split(\\\".\\\")\\n;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${\\\"_\\\".repeat(t+1)}`))].join(\\\" \\\")\\n}return`${t}${e}`})(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){\\no(e)&&(this.buffer+=\\\"\u003C/span>\\\")}value(){return this.buffer}span(e){\\nthis.buffer+=`\u003Cspan class=\\\"${e}\\\">`}}class c{constructor(){this.rootNode={\\nchildren:[]},this.stack=[this.rootNode]}get top(){\\nreturn this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){\\nthis.top.children.push(e)}openNode(e){const t={kind:e,children:[]}\\n;this.add(t),this.stack.push(t)}closeNode(){\\nif(this.stack.length>1)return this.stack.pop()}closeAllNodes(){\\nfor(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}\\nwalk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){\\nreturn\\\"string\\\"==typeof t?e.addText(t):t.children&&(e.openNode(t),\\nt.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){\\n\\\"string\\\"!=typeof e&&e.children&&(e.children.every((e=>\\\"string\\\"==typeof e))?e.children=[e.children.join(\\\"\\\")]:e.children.forEach((e=>{\\nc._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}\\naddKeyword(e,t){\\\"\\\"!==e&&(this.openNode(t),this.addText(e),this.closeNode())}\\naddText(e){\\\"\\\"!==e&&this.add(e)}addSublanguage(e,t){const n=e.root\\n;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){\\nreturn new a(this,this.options).value()}finalize(){return!0}}functi
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/internals","name":"Internals","description":"Tools for exploring the internals of TiddlyWiki","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\",\"tags\":\"$:/tags/EditPreview\",\"list-after\":\"$:/core/ui/EditTemplate/body/preview/output\",\"caption\":\"parse tree\",\"text\":\"\\\\define preview(mode)\\n\u003C$wikify name=\\\"preview-text\\\" text={{!!text}} type={{!!type}} mode=\\\"$mode$\\\" output=\\\"parsetree\\\">\\n\u003Cpre>\\n\u003Ccode>\\n\u003C$text text=\u003C\u003Cpreview-text>>/>\\n\u003C/code>\\n\u003C/pre>\\n\u003C/$wikify>\\n\\\\end\\n\\n{{||$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared}}\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/raw\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/raw\",\"tags\":\"$:/tags/EditPreview\",\"caption\":\"raw HTML\",\"list-after\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\",\"code-body\":\"yes\",\"text\":\"\u003Cpre>\u003Ccode>\u003C$view field=\\\"text\\\" format=\\\"htmlwikified\\\" />\u003C/code>\u003C/pre>\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared\",\"text\":\"\\\\define body()\\n\\nMode: \u003C$select tiddler=\\\"$(tv-mode-configuration)$\\\" default=\\\"block\\\">\\n\u003Coption value=\\\"inline\\\">Inline\u003C/option>\\n\u003Coption value=\\\"block\\\">Block\u003C/option>\\n\u003C/$select>\\n\\n\u003C$macrocall $name=\\\"preview\\\" mode={{$(tv-mode-configuration)$}}/>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-internal-tree-preview-wrapper\\\">\\n\\n\u003Cdiv class=\\\"tc-internal-tree-preview\\\">\\n\\n\u003C$vars tv-mode-configuration=\u003C\u003Cqualify \\\"$:/state/internals/preview/mode\\\">>>\\n\\n\u003C\u003Cbody>>\\n\\n\u003C/$vars>\\n\\n\u003C/div>\\n\\n\u003C/div>\\n\"},\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\":{\"title\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/widget-tree\",\"tags\":\"$:/tags/EditPreview\",\"caption\":\"widget tree\",\"list-after\":\"$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/parse-tree\",\"text\":\"\\\\define preview(mode)\\n\u003C$wikify name=\\\"preview-text\\\" text={{!!text}} type={{!!type}} mode=\\\"$mode$\\\" output=\\\"widgettree\\\">\\n\u003Cpre>\\n\u003Ccode>\\n\u003C$text text=\u003C\u003Cpreview-text>>/>\\n\u003C/code>\\n\u003C/pre>\\n\u003C/$wikify>\\n\\\\end\\n\\n{{||$:/plugins/tiddlywiki/internals/EditTemplate/body/preview/shared}}\\n\"},\"$:/plugins/tiddlywiki/internals/readme\":{\"title\":\"$:/plugins/tiddlywiki/internals/readme\",\"text\":\"This plugin adds features to help explore the internals of TiddlyWiki:\\n\\n* New preview panes showing:\\n** the parse tree\\n** the widget tree\\n** the raw HTML output\\n\\nThe first two include a dropdown for choosing block vs. inline parsing mode.\\n\"},\"$:/plugins/tiddlywiki/internals/styles\":{\"title\":\"$:/plugins/tiddlywiki/internals/styles\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\"}}}"},
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/markdown","name":"Markdown","description":"Markdown parser based on remarkable by Jon Schlinkert and remarkable-katex by Brad Howes","list":"readme usage remarkable-license remarkable-katex-license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/markdown/EditorToolbar/bold\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/bold\",\"list-after\":\"$:/core/ui/EditorToolbar/bold\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/bold\",\"caption\":\"{{$:/language/Buttons/Bold/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Bold/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((bold))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"wrap-selection\\\"\\n\\tprefix=\\\"**\\\"\\n\\tsuffix=\\\"**\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-1\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-1\",\"caption\":\"{{$:/language/Buttons/Heading1/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading1/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-1))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"1\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-2\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-2\",\"caption\":\"{{$:/language/Buttons/Heading2/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading2/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-2))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"2\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-3\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-3\",\"caption\":\"{{$:/language/Buttons/Heading3/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading3/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-3))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"3\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-4\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-4\",\"caption\":\"{{$:/language/Buttons/Heading4/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading4/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-4))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"prefix-lines\\\"\\n\\tcharacter=\\\"#\\\"\\n\\tcount=\\\"4\\\"\\n/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5\":{\"title\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5\",\"list-after\":\"$:/core/ui/EditorToolbar/heading-5\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-5\",\"caption\":\"{{$:/language/Buttons/Heading5/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading5/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-5))\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-opera
|
|
|
|
|
{"created":"20220820055008555","creator":"M0","title":"$:/plugins/tiddlywiki/markdown/new-markdown-button","tags":"$:/tags/PageControls","caption":"{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}","description":"{{$:/language/Buttons/NewMarkdown/Hint}}","text":"\\whitespace trim\n\u003C$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/x-markdown\"/>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/NewMarkdown/Caption}}/>\u003C/span>\n\u003C/$list>\n\u003C/$button>\n","modified":"20220820055008555","modifier":"M0"},
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/mobiledragdrop","name":"Mobile Drag Drop","description":"Mobile drag and drop shim","author":"Tim Ruffles","list":"readme license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js\":{\"text\":\"(function(doc) {\\n\\nfunction _exposeIosHtml5DragDropShim(config) {\\n log = noop; // noOp, remove this line to enable debugging\\n\\n var coordinateSystemForElementFromPoint;\\n\\n var DRAG_OVER_EMIT_FREQ = 50;\\n\\n function main() {\\n config = config || {};\\n if (!config.hasOwnProperty(\\\"simulateAnchorClick\\\")) config.simulateAnchorClick = true;\\n\\n coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\\\\d+)+ like Mac/) ? \\\"page\\\" : \\\"client\\\";\\n\\n var div = doc.createElement('div');\\n var dragDiv = 'draggable' in div;\\n var evts = 'ondragstart' in div && 'ondrop' in div;\\n\\n var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent);\\n log((needsPatch ? \\\"\\\" : \\\"not \\\") + \\\"patching html5 drag drop\\\");\\n\\n if(!needsPatch) {\\n return;\\n }\\n\\n if(!config.enableEnterLeave) {\\n DragDrop.prototype.synthesizeEnterLeave = noop;\\n }\\n\\n if(config.holdToDrag){\\n doc.addEventListener(\\\"touchstart\\\", touchstartDelay(config.holdToDrag), {passive:false});\\n }\\n else {\\n doc.addEventListener(\\\"touchstart\\\", touchstart, {passive:false});\\n }\\n }\\n\\n function DragDrop(event, el) {\\n\\n this.dragData = {};\\n this.dragDataTypes = [];\\n this.dragImage = null;\\n this.dragImageTransform = null;\\n this.dragImageWebKitTransform = null;\\n this.customDragImage = null;\\n this.customDragImageX = null;\\n this.customDragImageY = null;\\n this.el = el || event.target;\\n this.dragOverTimer = null;\\n this.lastMoveEvent = null;\\n\\n log(\\\"dragstart\\\");\\n\\n if (this.dispatchDragStart()) {\\n this.createDragImage();\\n this.listen();\\n }\\n }\\n\\n DragDrop.prototype = {\\n listen: function() {\\n var move = onEvt(doc, \\\"touchmove\\\", this.move, this);\\n var end = onEvt(doc, \\\"touchend\\\", ontouchend, this);\\n var cancel = onEvt(doc, \\\"touchcancel\\\", cleanup, this);\\n\\n function ontouchend(event) {\\n this.dragend(event, event.target);\\n cleanup.call(this);\\n }\\n function cleanup() {\\n log(\\\"cleanup\\\");\\n this.dragDataTypes = [];\\n if (this.dragImage !== null) {\\n this.dragImage.parentNode.removeChild(this.dragImage);\\n this.dragImage = null;\\n this.dragImageTransform = null;\\n this.dragImageWebKitTransform = null;\\n }\\n this.customDragImage = null;\\n this.customDragImageX = null;\\n this.customDragImageY = null;\\n this.el = this.dragData = null;\\n return [move, end, cancel].forEach(function(handler) {\\n return handler.off();\\n });\\n }\\n },\\n move: function(event) {\\n event.preventDefault();\\n var pageXs = [], pageYs = [];\\n [].forEach.call(event.changedTouches, function(touch) {\\n pageXs.push(touch.pageX);\\n pageYs.push(touch.pageY);\\n });\\n\\n var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2);\\n var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2);\\n this.translateDragImage(x, y);\\n\\n this.synthesizeEnterLeave(event);\\n this.synthesizeOver(event);\\n },\\n // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance\\n // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/\\n translateDragImage: function(x, y) {\\n var translate = \\\"translate(\\\" + x + \\\"px,\\\" + y + \\\"p
|
|
|
|
|
{"title":"$:/plugins/tiddlywiki/railroad","name":"Railroad","description":"Railroad diagram generator","author":"Astrid Elocson","list":"readme usage syntax example","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/railroad/components.js\":{\"title\":\"$:/plugins/tiddlywiki/railroad/components.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/railroad/components.js\\ntype: application/javascript\\nmodule-type: library\\n\\nComponents of a railroad diagram.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar railroad = require(\\\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\\\");\\n\\n/////////////////////////// Base component\\n\\nvar Component = function() {\\n\\tthis.type = \\\"Component\\\";\\n};\\n\\n// Set up a leaf component\\nComponent.prototype.initialiseLeaf = function(type,text) {\\n\\tthis.type = type;\\n\\tthis.text = text;\\n};\\n\\n// Set up a component with a single child\\nComponent.prototype.initialiseWithChild = function(type,content) {\\n\\tthis.type = type;\\n\\tthis.child = toSingleChild(content);\\n};\\n\\n// Set up a component with an array of children\\nComponent.prototype.initialiseWithChildren = function(type,content) {\\n\\tthis.type = type;\\n\\t// Force the content to be an array\\n\\tthis.children = $tw.utils.isArray(content) ? content : [content];\\n}\\n\\n// Return an array of the SVG strings of an array of children\\nComponent.prototype.getSvgOfChildren = function() {\\n\\treturn this.children.map(function(child) {\\n\\t\\treturn child.toSvg();\\n\\t});\\n}\\n\\nComponent.prototype.toSvg = function() {\\n\\treturn \\\"\\\";\\n}\\n\\nComponent.prototype.debug = function(output,indent) {\\n\\toutput.push(indent);\\n\\toutput.push(this.type);\\n\\t// Add the text of a leaf component\\n\\tif(this.text && this.text !== \\\"\\\") {\\n\\t\\toutput.push(\\\": \\\");\\n\\t\\toutput.push(this.text);\\n\\t}\\n\\t// Flag the normal route\\n\\tif(this.normal !== undefined) {\\n\\t\\tif(this.normal === true) {\\n\\t\\t\\toutput.push(\\\" (normal)\\\");\\n\\t\\t} else if(this.normal !== false) {\\n\\t\\t\\toutput.push(\\\" (normal: \\\");\\n\\t\\t\\toutput.push(this.normal);\\n\\t\\t\\toutput.push(\\\")\\\");\\n\\t\\t}\\n\\t}\\n\\toutput.push(\\\"\\\\n\\\");\\n\\tvar contentIndent = indent + \\\" \\\";\\n\\t// Add the one child\\n\\tif(this.child) {\\n\\t\\tthis.child.debug(output,contentIndent);\\n\\t}\\n\\t// Add the array of children\\n\\tif(this.children) {\\n\\t\\tthis.debugArray(this.children,output,contentIndent);\\n\\t}\\n \\t// Add the separator if there is one\\n\\tif(this.separator) {\\n\\t\\toutput.push(indent);\\n\\t\\toutput.push(\\\"(separator)\\\\n\\\");\\n\\t\\tthis.separator.debug(output,contentIndent);\\n\\t}\\n};\\n\\nComponent.prototype.debugArray = function(array,output,indent) {\\n\\tfor(var i=0; i\u003Carray.length; i++) {\\n\\t\\tvar item = array[i];\\n\\t\\t// Choice content is a special case: we number the branches\\n\\t\\tif(item.isChoiceBranch) {\\n\\t\\t\\toutput.push(indent);\\n\\t\\t\\toutput.push(\\\"(\\\");\\n\\t\\t\\toutput.push(i);\\n\\t\\t\\toutput.push(\\\")\\\\n\\\");\\n\\t\\t\\titem.debug(output,\\\" \\\"+indent);\\n\\t\\t} else {\\n\\t\\t\\titem.debug(output,indent);\\n\\t\\t}\\n\\t}\\n}\\n\\nvar toSingleChild = function(content) {\\n\\tif($tw.utils.isArray(content)) {\\n\\t\\t// Reduce an array of one child to just the child\\n\\t\\tif(content.length === 1) {\\n\\t\\t\\treturn content[0];\\n\\t\\t} else {\\n\\t\\t\\t// Never allow an empty sequence\\n\\t\\t \\tif(content.length === 0) {\\n \\t\\t\\t\\tcontent.push(new Dummy());\\n\\t\\t \\t}\\n\\t\\t\\t// Wrap multiple children into a single sequence component\\n\\t\\t\\treturn new Sequence(content);\\n\\t\\t}\\n\\t} else {\\n\\t\\t// Already single\\n\\t\\treturn content;\\n\\t}\\n}\\n\\n/////////////////////////// Leaf components\\n\\nvar Comment = function(text) {\\n\\tthis.initialiseLeaf(\\\"Comment\\\",text);\\n};\\n\\nComment.prototype
|
|
|
|
|
{"created":"20211015005125548","title":"$:/plugins/tobibeer/external","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/plugins/tobibeer/external/config\": {\n \"title\": \"$:/plugins/tobibeer/external/config\",\n \"text\": \"Configure external wikis under `$:/config/ExternalWiki/\u003Cwiki name>` specifying:\\n\\n; text\\r\\n: the url of the wiki (w/o final `#`)\\r\\n; top\\r\\n: a top margin ignored when rendering, e.g. wiki header\\r\\n; link\\r\\n: whether to display a link to the title\\r\\n; height\\r\\n: default iframe height for wiki\\n\\nThese defaults provide global fallbacks:\\n\\n\u003C\u003Clist-links \\\"height top link wiki +[addprefix[$:/plugins/tobibeer/external/defaults/]]\\\">>\"\n },\n \"$:/plugins/tobibeer/external/defaults/top\": {\n \"title\": \"$:/plugins/tobibeer/external/defaults/top\",\n \"text\": \"0px\"\n },\n \"$:/plugins/tobibeer/external/defaults/height\": {\n \"title\": \"$:/plugins/tobibeer/external/defaults/height\",\n \"text\": \"480px\"\n },\n \"$:/plugins/tobibeer/external/defaults/link\": {\n \"title\": \"$:/plugins/tobibeer/external/defaults/link\",\n \"text\": \"yes\"\n },\n \"$:/plugins/tobibeer/external/lingo/open\": {\n \"title\": \"$:/plugins/tobibeer/external/lingo/open\",\n \"text\": \"view at ''\u003C\u003CWIKI>>''\"\n },\n \"$:/plugins/tobibeer/external/depends\": {\n \"title\": \"$:/plugins/tobibeer/external/depends\",\n \"text\": \"This plugin depends on:\\n\\n* [[tobibeer/setvars|http://tobibeer.github.io/tw5-plugins/#setvars]]\\r\\n* [[tobibeer/split|http://tobibeer.github.io/tw5-plugins/#split]]\\n\\n\u003Cbr>\\n\\n; documentation / examples / demos...\\r\\n: http://tobibeer.github.io/tw5-plugins#external\"\n },\n \"$:/plugins/tobibeer/external/macro\": {\n \"title\": \"$:/plugins/tobibeer/external/macro\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define external-tiddler(wiki,title,height,top,link)\\n\u003C$setvars\\n _wiki = \\\"[all[current]split:first[: ]]\\\"\\n _wiki_default={{$:/plugins/tobibeer/external/defaults/wiki}}\\nWIKI=\\\"\\n (\\\\$wiki$\\\\ ? \\\\$wiki$\\\\) ||\\n ([wiki] ? [wiki]) ||\\n wiki_default\\\">\\n\u003C$setvars CONFIG=\\\"[config]\\\"\\n _config=\\\"[\u003CWIKI>addprefix[$:/config/ExternalWiki/]]\\\">\\n\u003C$list filter=\\\"[\u003CCONFIG>]\\\" variable=\\\"none\\\">\\n\u003C$setvars\\n _title=\\\"\\\"\\\"[all[current]split[: ]]\\\"\\\"\\\"\\n _height={{!!height}}\\n _height_wiki=\\\"[\u003CCONFIG>get[height]]\\\"\\n _height_default={{$:/plugins/tobibeer/external/defaults/height}}\\n _top=\\\"[\u003CCONFIG>get[top]]\\\"\\n _top_default={{$:/plugins/tobibeer/external/defaults/top}}\\n _server=\\\"[\u003CCONFIG>get[text]]\\\"\\n _link=\\\"[\u003CCONFIG>get[link]]\\\"\\n _link_default={{$:/plugins/tobibeer/external/defaults/link}}\\nLINK=\\\"\\n (\\\\$link$\\\\ ? \\\\$link$\\\\) ||\\n ([link] ? [link]) ||\\n link_default\\\"\\nTITLE=\\\"\\\"\\\"\\n (\\\\$title$\\\\ ? \\\\$title$\\\\) ||\\n [title[2,n][][: ]]\\\"\\\"\\\"\\nURL=\\\"\\\"\\\"[server]\\\\#\\\\TITLE\\\"\\\"\\\"\\nTOP=\\\"\\n (\\\\$top$\\\\ ? \\\\$top$\\\\ ) ||\\n ([top] ? [top] ) ||\\n top_default\\\"\\nHEIGHT=\\\"\\n (\\\\$height$\\\\ ? \\\\$height$\\\\) ||\\n (height ? height) ||\\n ([height_wiki] ? [height_wiki]) ||\\n height_default\\\"\\nHEIGHT_INNER=\\\"\\n \\\\calc(\\\\ HEIGHT \\\\ + \\\\ TOP \\\\)\\\\\\\"\\nSTYLE=\\\"\\n \\\\height:\\\\HEIGHT\\\\;\\\\\\\"\\nSTYLEFRAME=\\\"\\n \\\\height:\\\\HEIGHT_INNER\\\\;top:-\\\\TOP\\\\;\\\\\\\">\\n\u003C$list filter=\\\"[\u003CLINK>prefix[yes]]\\\">\\n\u003Ca href=\u003C\u003CURL>> target=\\\"_blank\\\">{{$:/plugins/tobibeer/external/lingo/open}}\u003C/a>\\n\u003C/$list>\\n\u003Cdiv class=\\\"tc-external-tiddler\\\" style=\u003C\u003CSTYLE>>>\\n\u003Ciframe src=\u003C\u003CURL>> style=\u003C\u003CSTYLEFRAME>> scrolling=\\\"no\\\"/>\\
|
|
|
|
|
{"created":"20220517033559022","creator":"M0","title":"$:/plugins/tobibeer/preview/popups","tags":"$:/tags/PageTemplate","text":"\\define state(num)\n$:/temp/tobibeer/preview-$num$\n\\end\n\n\\define classes(num)\ntc-popup appear appear-block appear-reveal tc-preview-tiddler tc-preview-tiddler-$num$ $(default-classes)$\n\\end\n\n\\define level(num)\n\u003C$reveal tag=\"div\" type=\"popup\" state=\u003C\u003Cstate $num$>> class=\u003C\u003Cclasses $num$>>>\n\u003C$tiddler tiddler={{$:/temp/tobibeer/preview-$num$-tiddler}}>\n\u003C$transclude tiddler={{$:/plugins/tobibeer/preview/defaults/template}} mode=\"block\"/>\n\u003C/$tiddler>\n\u003C/$reveal>\n\\end\n\n\u003C$vars default-classes={{$:/plugins/tobibeer/preview/defaults/class}}>\n\u003C$list filter=\"1 2 3 4 5 6 7 8 9\">\n\u003C$macrocall $name=\"level\" num={{!!title}}/>\n\u003C/$list>\n\u003C/$vars>","modified":"20220820014217054","modifier":"M0"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/tobibeer/split/filter.js\": {\n \"text\": \"/*\\\\\\r\\ntitle: $:/plugins/tobibeer/split/filter.js\\r\\ntype: application/javascript\\r\\nmodule-type: filteroperator\\r\\n\\r\\nFilter operator that splits each item at a specified separator.\\r\\n\\r\\n@preserve\\r\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.split=function(s,t,e){var i,a,f=e.wiki,r=t.suffix||\\\"\\\",n=[],l=[],u=[],o=[],p={negate:t.prefix===\\\"!\\\",split:t.operand,prefix:\\\"\\\",suffix:\\\"\\\",num:1,$num:1},c=[[/^\\\\s+/,function(){}],[/^(num|pos|\\\\$num|\\\\$pos)=(n|-n|\\\\d+|-\\\\d+)(?:\\\\s|$)/i,function(s){p[s[1]]=s[2];if(s[1].charAt(0)===\\\"$\\\"){p.mode=\\\"$pos\\\"}if(s[1]===\\\"$num\\\"&&!p.$pos){p.$pos=1}if(s[1]===\\\"num\\\"&&!p.pos){p.pos=1}}],[/^(\\\\+|at|!at|first|!first|last|!last|list|keep|strict|\\\\$strict|trim|unique)(?:\\\\s|$)/i,function(s){var t=s[1];p[t]=1;switch(t){case\\\"+\\\":p.suffix=p.split;break;case\\\"!at\\\":p.nat=1;case\\\"at\\\":i=p.split.match(/(\\\\d+),(\\\\d+)/);if(i){p.at=parseInt(i[1]);p.to=parseInt(i[2])}else{p.at=parseInt(p.split)}if(isNaN(p.at)){throw\\\"suffix 'at' must be numeric: \\\"+p.at}else{p.at=p.at-1}break;case\\\"list\\\":p.list=\\\"list\\\";break;case\\\"first\\\":p.pos=1;break;case\\\"!first\\\":p.pos=2;p.num=\\\"n\\\";break;case\\\"last\\\":p.pos=\\\"n\\\";break;case\\\"!last\\\":p.pos=\\\"-2\\\";p.num=\\\"-n\\\";break}}],[/^(before|after|beforelast|afterlast)(?:\\\\s|$)/i,function(s){var t=s[1];p.before=(t.toLowerCase().indexOf(\\\"before\\\")===0?1:2)+(t.toLowerCase().indexOf(\\\"last\\\")===t.length-4?2:0)}],[/^list\\\\=\\\\s*([^\\\\s]+)(?:\\\\s|$)/i,function(s){p.list=s[1]}],[/^(\\\\!)?(\\\\$|\\\\$all|\\\\$first|\\\\$last)(?:\\\\s|$)/i,function(s){var t=s[2];p.mode=t;p.neg=s[1]?1:0;if(t===\\\"$first\\\"){if(p.neg){p.$pos=2;p.$num=\\\"n\\\"}else{p.$pos=1}}else if(t===\\\"$last\\\"){if(p.neg){p.$pos=\\\"-2\\\";p.$num=\\\"-n\\\"}else{p.$pos=\\\"n\\\"}}}],[/^(?:\\\\+\\\\\\\\([^\\\\\\\\]+)\\\\\\\\|\\\\\\\\([^\\\\\\\\]+)\\\\\\\\\\\\+)/,function(s){if(s[1]){p.prefix=s[1]}else{p.suffix=s[2]}}]];try{while(r){a=r;$tw.utils.each(c,function(s){var t=s[0].exec(r);if(t){s[1].call(this,t);r=r.substr(t[0].length);return false}});if(r===a){throw\\\"invalid suffix(es) '\\\"+r+\\\"'\\\"}}if(p.list&&p.split){o=$tw.utils.parseStringArray(p.split)}else{s(function(s,t){var e,a,r=[];l.push(t);if(p.before){i=1+(p.before\u003C3?t.indexOf(p.split):t.lastIndexOf(p.split));if(i>0){r=[p.before%2===1?t.substr(0,i-1):t.substr(i+p.split.length-1)]}if(p.keep&&i===0){r[0]=t}}else if(p.at){if(p.to){r=p.nat?[t.substr(0,p.at)+t.substr(p.at+p.to)]:[t.substr(p.at,p.to)];if(p.keep&&r[0]===\\\"\\\"){r[0]=t}}else{r=[t.substr(0,p.at)];a=t.substr(p.at);if(a){r.push(a)}}}else if(p.list){r=f.getTiddlerList(t,p.list)}else{r=t.split(p.split)}e=r.length>1||p.list||r.length>0&&(p.before||p.to);if(p.pos){r=$tw.utils.getArrayItems(r,p.pos,p.num,p.strict)}if(r.length&&(e||p.keep)){n.push(t);$tw.utils.each(r,function(s){if(p.trim){s=s.trim()}if(s){if(!p.unique||p.unique&&o.indexOf(s)\u003C0){o.push(p.prefix+s+p.suffix)}}})}else{u.push(t)}})}if(t.suffix){switch(p.mode){case\\\"$\\\":o=n;break;case\\\"$all\\\":if(o.length){if(p.negate){u=[]}else{o=l}}else if(p.negate){u=l}break;case\\\"$first\\\":case\\\"$last\\\":case\\\"$pos\\\":o=$tw.utils.getArrayItems(o,p.$pos,p.$num,p.$strict);break}}}catch($){return[\\\"split syntax error:\\\"+$]}return p.negate?u:o}})();\",\n \"title\": \"$:/plugins/tobibeer/split/filter.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/tobibeer/split/readme\": {\n \"title\": \"$:/plugins/tobibeer/split/readme\",\n \"text\": \"Provides the filter `split[by]`, splitting input titles `by` a string defined in the operand, allowing you to slice and dice output elements as needed.\\n\\n; suffixes\\r\\n: `$` — return input titles that yield split items\\r\\n: `$all` — return all input titles if any yield split items\\r\\n: `+` — ap
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/TWaddle/SideEditor/icon\": {\n \"created\": \"20160421222805854\",\n \"creator\": \"Mat von TWaddle\",\n \"text\": \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAABISURBVDhP1ZAxDgAgCMR4Oj9H1EnDXRjOwSZl0oZg7h7MxJgrgJAFkjlqu4EKXYC5373eACENQDsBZuuITM0GiI8CzPvDadgAbYISbVw2M04AAAAASUVORK5CYII=\",\n \"type\": \"image/png\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/icon\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200716000102665\"\n },\n \"$:/plugins/TWaddle/SideEditor/Revealer\": {\n \"created\": \"20150601115921432\",\n \"creator\": \"Mat von TWaddle\",\n \"text\": \"\u003C$macrocall $name=\\\"sideeditor\\\" tid={{$:/state/SideEditor}}/>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Revealer\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200716000129021\"\n },\n \"$:/plugins/TWaddle/SideEditor/Button\": {\n \"text\": \"\\\\whitespace trim\\n\\n\\\\define buttoncontent()\\n\u003C$action-setfield\\n $tiddler=\\\"$:/state/SideEditor\\\"\\n text={{!!title}}\\n display=\\\"block\\\" />\\n\u003C$action-deletetiddler\\n $tiddler=\\\"$:/temp/SideEditor/macrotext\\\"/>\\n\u003C$action-deletetiddler\\n $tiddler=\u003C\u003Cunusedtitle>>/>\\n\u003C$list filter=\\\"[all[current]!has[title]]\\\">\\n \u003C$action-setfield\\n $tiddler=\\\"$:/state/SideEditor\\\"\\n newtid=yes />\\n\u003C/$list>\\n\u003C$list filter=\\\"[all[current]has[title]]\\\">\\n \u003C$action-sendmessage\\n $message=\\\"tm-close-tiddler\\\"\\n $param=\u003C\u003Cunusedtitle>>/>\\n \u003C$action-deletefield\\n $tiddler=\\\"$:/state/SideEditor\\\" newtid />\\n\u003C/$list>\\n\\\\end\\n\\n\u003C$list filter=\\\"[all[current]!tag[$:/tags/Macro]]\\\">\\n \u003C$button class=\u003C\u003Ctv-config-toolbar-class>> >\\n {{$:/core/images/right-arrow}}\\n \u003C\u003Cbuttoncontent>>\\n \u003C/$button>\\n\u003C/$list>\\n\u003C$list filter=\\\"[all[current]tag[$:/tags/Macro]]\\\">\\n \u003C$button class=\u003C\u003Ctv-config-toolbar-class>>\\n actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler='$:/temp/SideEditor/macrotext' text={{!!text}} />\\\"\\\"\\\" >\\n {{$:/core/images/right-arrow}}\\n \u003C\u003Cbuttoncontent>>\\n \u003C/$button>\\n\u003C/$list>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/Button\",\n \"tags\": \"$:/tags/ViewToolbar\",\n \"modifier\": \"Mat von TWaddle\",\n \"modified\": \"20200728135353447\",\n \"description\": \"A live editor floating next to the story river...\",\n \"creator\": \"Mat von TWaddle\",\n \"created\": \"20200708141207266\",\n \"caption\": \"{{$:/core/images/right-arrow}} SideEditor\"\n },\n \"$:/plugins/TWaddle/SideEditor/minimize-icon\": {\n \"text\": \"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-full-screen-button tc-image-button\\\" viewBox=\\\"0 0 128 128\\\">\u003Cpath d=\\\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32zM64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314z\\\"/>\u003C/svg>\",\n \"title\": \"$:/plugins/TWaddle/SideEditor/minimize-icon\",\n \"tags\": \"$:/tags/Image\",\n \"modified\": \"2020
|
|
|
|
|
{"created":"20160514163926446","creator":"Mat von TWaddle","text":"","top":"0","title":"$:/plugins/TWaddle/SideEditor/Metrics","tags":"","modifier":"M0","modified":"20220904212518096","left":"64"},
|
|
|
|
|
{"title":"$:/plugins/wikilabs/link-to-tabs","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/core/macros/tabs\": {\n \"title\": \"$:/core/macros/tabs\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define tabs(tabsList,default,state:\\\"$:/state/tab\\\",class,template,buttonTemplate,retain,actions,explicitState)\\n\u003C$set name=\\\"qualifiedState\\\" value=\u003C\u003Cqualify \\\"$state$\\\">>>\\n\u003C$set name=\\\"tabsState\\\" filter=\\\"[\u003C__explicitState__>minlength[1]] ~[\u003CqualifiedState>]\\\">\\n\u003Cdiv class=\\\"tc-tab-set $class$\\\">\\n\u003Cdiv class=\\\"tc-tab-buttons $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\" storyview=\\\"pop\\\">\u003C$set name=\\\"save-currentTiddler\\\" value=\u003C\u003CcurrentTiddler>>>\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\u003C$button set=\u003C\u003CtabsState>> setTo=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" selectedClass=\\\"tc-tab-selected\\\" tooltip={{!!tooltip}}>\\n\u003C$tiddler tiddler=\u003C\u003Csave-currentTiddler>>>\\n\u003C$set name=\\\"tv-wikilinks\\\" value=\\\"no\\\">\\n\u003C$transclude tiddler=\\\"$buttonTemplate$\\\" mode=\\\"inline\\\">\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\\\"caption\\\">\\n\u003C$macrocall $name=\\\"currentTab\\\" $type=\\\"text/plain\\\" $output=\\\"text/plain\\\"/>\\n\u003C/$transclude>\\n\u003C/$transclude>\\n\u003C/$set>\u003C/$tiddler>$actions$\u003C/$button>\u003Cspan class=\\\"wltc-link-to-tab\\\">\u003C$link overrideClass=\\\"\\\" to=\u003C\u003CcurrentTiddler>> >{{$:/core/images/link}}\u003C/$link>\u003C/span>\u003C/$tiddler>\u003C/$set>\u003C/$list>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-tab-divider $class$\\\"/>\\n\u003Cdiv class=\\\"tc-tab-content $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\">\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CtabsState>> text=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" retain=\\\"\\\"\\\"$retain$\\\"\\\"\\\">\\n\\n\u003C$transclude tiddler=\\\"$template$\\\" mode=\\\"block\\\">\\n\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> mode=\\\"block\\\"/>\\n\\n\u003C/$transclude>\\n\\n\u003C/$reveal>\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/$set>\\n\\\\end\\n\"\n },\n \"$:/core/ui/ControlPanel/Settings/link-to-tabs\": {\n \"title\": \"$:/core/ui/ControlPanel/Settings/link-to-tabs\",\n \"caption\": \"Link-to-Tabs plugin\",\n \"created\": \"20190712133607244\",\n \"modified\": \"20190714104631250\",\n \"tags\": \"$:/tags/ControlPanel/Settings\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"show-all-links\\\" checked=\\\"inline-block\\\" unchecked=\\\"none\\\" default=\\\"none\\\"> Show internal tab link for ''all tabs''\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"show-single-link\\\" checked=\\\"inline-block\\\" unchecked=\\\"none\\\" default=\\\"inline-block\\\"> Show internal tab link for ''selected tabs''\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"initial-opacity\\\" checked=\\\"0\\\" unchecked=\\\"0.7\\\" default=\\\"0.7\\\"> Tab links are initially hidden and need mouse hover to become visible.\u003C/$checkbox> The transition time in seconds is: \u003C$edit-text tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"transition\\\" default=\\\"0.3\\\"/>\\n\\n\u003C$button message=\\\"tm-delete-tiddler\\\" param=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\">\\nReset to Default!\\n\u003C/$button>\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/config\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/config\",\n \"created\": \"20190712133008077\",\n \"initial-opacity\": \"0.7\",\n \"modified\": \"20190714104541701\"
|
|
|
|
|
{"text":"www.youtube.com: richlink/youtube\nsoundcloud.com: richlink/soundcloud\nen.wikipedia.org: richlink/wikipedia\ntiddlywiki.com: richlink/docs\ntwitter.com: richlink/tweet\ngithub.com: richlink/github\njsfiddle.net: richlink/jsfiddle\ndisq.us: richlink/disqus\npdf: richlink/iframe\ntxt: richlink/txt\njpg: richlink/img\nJPG: richlink/img\npng: richlink/img\nmp3: richlink/audio\nogg: richlink/audio\nwav: richlink/audio\nflac: richlink/audio\nmp4: richlink/video\nogv: richlink/video\nwebm: richlink/video","type":"application/x-tiddler-dictionary","title":"$:/richlink/.dictionary","tags":"","modifier":"Mat von TWaddle","modified":"20170515062245651","creator":"Mat von TWaddle","created":"20170510152735336"},
|
|
|
|
|
{"text":"\\define rich-youtube(link)\n\u003Ciframe class=rich-iframe src=\"$link$\" frameborder=\"0\" width=100% allowfullscreen/>\n\\end\n\n\u003C$set name=link\n filter=\"[\u003Clink>search[watch]split:after[=]addprefix[https://www.youtube.com/embed/]]\" \n emptyValue=\u003C\u003Clink>> >\n\u003C$macrocall $name=rich-youtube link=\u003C\u003Clink>> />\n\u003C/$set>\n\n\u003Cstyle>.rich-iframe {height:calc(0.56 * {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}}); }\n\u003C/style>","title":"$:/richlink/youtube","modifier":"Mat von TWaddle","modified":"20170512160001092","creator":"Mat von TWaddle","created":"20170512022223951"},
|
|
|
|
|
{"created":"20220418191139087","creator":"M0","title":"$:/section-editor/state/Copincha","type":"application/json","text":"{\n \"1\": \"view\"\n}","modified":"20220418191239973","modifier":"M0"},
|
|
|
|
|
{"created":"20220418101408961","creator":"M0","text":"Cuaderno Personal","title":"$:/SiteSubtitle","modified":"20220820221501785","modifier":"M0"},
|
|
|
|
|
{"created":"20220418100019445","creator":"M0","text":"m00","title":"$:/SiteTitle","modified":"20230304224300725","modifier":"M0"},
|
|
|
|
|
{"created":"20220820014121930","creator":"M0","title":"$:/state/AddNote","text":"Organizando una Feria/","modified":"20220820014121930","modifier":"M0"},
|
|
|
|
|
{"created":"20220819213336865","creator":"M0","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Standard","modified":"20230305005238048","modifier":"m00"},
|
|
|
|
|
{"created":"20220819233723925","creator":"M0","title":"$:/state/advancedsearch/standard/currentTab","text":"$:/core/ui/DefaultSearchResultList","modified":"20220903175111293","modifier":"M0"},
|
|
|
|
|
{"created":"20220905051707203","creator":"M0","title":"$:/state/encrypt","text":"$:/plugins/danielo515/encryptTiddler","modified":"20230305001917327","modifier":"m00"},
|
|
|
|
|
{"created":"20230304173101190","creator":"M0","text":"yes","title":"$:/state/Excise/--1372893260/tagnew","modified":"20230304173101190","modifier":"M0"},
|
|
|
|
|
{"created":"20220904200155755","creator":"M0","text":"unchecked","title":"$:/state/import/select-all","modified":"20220904200155755","modifier":"M0"},
|
|
|
|
|
{"created":"20220819163630603","creator":"M0","title":"$:/state/notebook-sidebar","text":"yes","modified":"20230304230607882","modifier":"m00"},
|
|
|
|
|
{"created":"20220819194916484","creator":"M0","title":"$:/state/notebook-sidebar-section","text":"$:/core/ui/SideBar/Recent","modified":"20230304223913014","modifier":"M0"},
|
|
|
|
|
{"created":"20220820062916492","creator":"M0","title":"$:/state/palettemanager/$:/palettes/Twilight/diff-insert-foreground","text":"show","modified":"20220820062916492","modifier":"M0"},
|
|
|
|
|
{"created":"20220819235627140","creator":"M0","title":"$:/state/palettemanager/$:/palettes/Twilight/diff-invisible-foreground","text":"show","modified":"20220819235627140","modifier":"M0"},
|
|
|
|
|
{"created":"20230305005443006","creator":"m00","title":"$:/state/plugin-info--506288826-$:/plugins/kookma/commander---1769462396","text":"contents","modified":"20230305005443006","modifier":"m00"},
|
|
|
|
|
{"created":"20220903062106005","creator":"M0","title":"$:/state/plugin-info--700587726-$:/plugins/tiddlywiki/mobiledragdrop","text":"no","modified":"20220903062123205","modifier":"M0"},
|
|
|
|
|
{"created":"20220820015729722","creator":"M0","title":"$:/state/plugin-info--8325626-$:/plugins/felixhayashi/respawn--1609290673","text":"contents","modified":"20220820015729722","modifier":"M0"},
|
|
|
|
|
{"created":"20230304195017401","creator":"M0","title":"$:/state/plugin-info-1605320774-$:/themes/nico/notebook--1711715474","text":"contents","modified":"20230304195017401","modifier":"M0"},
|
|
|
|
|
{"created":"20220904053520857","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft 2 of 'proyectos' by M0/Copincha","text":"open","modified":"20220904053940536","modifier":"M0"},
|
|
|
|
|
{"created":"20220904053348378","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft 2 of 'proyectos/copincha' by M0/Caracteristicas","text":"closed","modified":"20220904054044193","modifier":"M0"},
|
|
|
|
|
{"created":"20220904054813825","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft 4 of 'proyectos/copincha' by M0/Caracteristicas","text":"open","modified":"20220904054813825","modifier":"M0"},
|
|
|
|
|
{"created":"20220904054453625","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft 4 of 'proyectos/copincha' by M0/Resumen","text":"open","modified":"20220904054545089","modifier":"M0"},
|
|
|
|
|
{"created":"20220904055906762","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft 4 of 'proyectos/copincha' by M0/Wiki","text":"open","modified":"20220904055906762","modifier":"M0"},
|
|
|
|
|
{"created":"20220904060453850","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft 5 of 'proyectos/copincha' by M0/Conucos","text":"open","modified":"20220904060504424","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052048024","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft of 'Nuevo Tiddler 6' by M0/Copincha","text":"open","modified":"20220904052115031","modifier":"M0"},
|
|
|
|
|
{"created":"20220904051703008","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft of 'Nuevo Tiddler 6' by M0/Simple text","text":"open","modified":"20220904052034591","modifier":"M0"},
|
|
|
|
|
{"created":"20220904162207119","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft of 'proyectos' by M0/Copincha","text":"open","modified":"20220904162207119","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052955392","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft of 'proyectos/copincha' by M0/Caracteristicas","text":"closed","modified":"20220904053113568","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052458720","creator":"M0","title":"$:/state/shiraz/slider-macro/Draft of 'proyectos/copincha' by M0/Copincha","text":"open","modified":"20220904052515032","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052119424","creator":"M0","title":"$:/state/shiraz/slider-macro/Nuevo Tiddler 6/Copincha","text":"open","modified":"20220904145131564","modifier":"M0"},
|
|
|
|
|
{"created":"20220904192838922","creator":"M0","title":"$:/state/shiraz/slider-macro/proyecto/copincha/Resumen","text":"closed","modified":"20220904192839835","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052604151","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/Caracteristicas","text":"closed","modified":"20220904052607064","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052240680","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/Copincha","text":"open","modified":"20220904161333998","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052538183","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/copincha/Caracteristicas","text":"open","modified":"20220904184102673","modifier":"M0"},
|
|
|
|
|
{"created":"20220904054204944","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/copincha/Caracteristicas1","text":"closed","modified":"20220904054215800","modifier":"M0"},
|
|
|
|
|
{"created":"20220904054209153","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/copincha/Caracteristicas2","text":"closed","modified":"20220904054211912","modifier":"M0"},
|
|
|
|
|
{"created":"20220904060607281","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/copincha/Conucos","text":"open","modified":"20220904182153385","modifier":"M0"},
|
|
|
|
|
{"created":"20220904054501537","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/copincha/Resumen","text":"open","modified":"20220904181924968","modifier":"M0"},
|
|
|
|
|
{"created":"20220904055923577","creator":"M0","title":"$:/state/shiraz/slider-macro/proyectos/copincha/Wiki","text":"closed","modified":"20220904182201313","modifier":"M0"},
|
|
|
|
|
{"created":"20220904052735521","creator":"M0","title":"$:/state/shiraz/slider-macro/slider ejemplo texto1/Texto Nivel 1","text":"open","modified":"20220904052735521","modifier":"M0"},
|
|
|
|
|
{"created":"20220904053515137","creator":"M0","title":"$:/state/shiraz/slider-macro/slider ejemplo texto4/Texto Nivel 4","text":"closed","modified":"20220904053515863","modifier":"M0"},
|
|
|
|
|
{"created":"20220819210649879","creator":"M0","title":"$:/state/showeditpreview","text":"yes","modified":"20220820163412899","modifier":"M0"},
|
|
|
|
|
{"created":"20220819224152709","creator":"M0","title":"$:/state/ShowPaletteEditor","text":"yes","modified":"20220819224152709","modifier":"M0"},
|
|
|
|
|
{"created":"20220820224514335","creator":"M0","title":"$:/state/sq/streams/current-edit-tiddler--199661880","text":"registro/modificaciones-en-tw/personalizacion","modified":"20220820224514335","modifier":"M0"},
|
|
|
|
|
{"created":"20220904031710660","creator":"M0","title":"$:/state/sq/streams/current-edit-tiddler--2110055736","text":"16 de septiembre de 2022/20220820165428838","modified":"20220904031710660","modifier":"M0"},
|
|
|
|
|
{"created":"20220820035103103","creator":"M0","title":"$:/state/sq/streams/current-edit-tiddler--932498594","text":"Bienvenidos/20220517042707056","modified":"20220820035658489","modifier":"M0"},
|
|
|
|
|
{"created":"20220830042625796","creator":"M0","title":"$:/state/sq/streams/current-edit-tiddler-1548655816","text":"Insertar objeto 3d/20220830042627756","modified":"20220830042627760","modifier":"M0"},
|
|
|
|
|
{"created":"20220904053915883","creator":"M0","title":"$:/state/sq/streams/current-edit-tiddler-332800094","text":"proyectos/20220904025956137","modified":"20220904053915883","modifier":"M0"},
|
|
|
|
|
{"created":"20220904002950340","creator":"M0","title":"$:/state/sq/streams/current-edit-tiddler-453720542","text":"candice/20220608104106988","modified":"20220904002950340","modifier":"M0"},
|
|
|
|
|
{"created":"20220819225537736","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220517042707056-265847841","text":"show","modified":"20220820034626474","modifier":"M0"},
|
|
|
|
|
{"created":"20220820035636833","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220517042745045-533040847","text":"hide","modified":"20220820035636833","modifier":"M0"},
|
|
|
|
|
{"created":"20220820035640641","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220517042808629--901895093","text":"hide","modified":"20220820035640641","modifier":"M0"},
|
|
|
|
|
{"created":"20220820035642755","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220517042813045-1946399665","text":"hide","modified":"20220820035642755","modifier":"M0"},
|
|
|
|
|
{"created":"20220820035641657","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220517043036664-1825383974","text":"hide","modified":"20220820035641657","modifier":"M0"},
|
|
|
|
|
{"created":"20220819234956455","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220518033318014-361744328","text":"show","modified":"20220820025254515","modifier":"M0"},
|
|
|
|
|
{"created":"20220820025422792","creator":"M0","title":"$:/state/sq/streams/visibility/Bienvenidos/20220820025358490-1702184717","text":"hide","modified":"20220820035647729","modifier":"M0"},
|
|
|
|
|
{"created":"20220904012521010","creator":"M0","title":"$:/state/sq/streams/visibility/copincha-263223728","text":"show","modified":"20220904012521794","modifier":"M0"},
|
|
|
|
|
{"created":"20220820041526731","creator":"M0","title":"$:/state/sq/streams/visibility/Enfermedades--910457774","text":"show","modified":"20220820041551726","modifier":"M0"},
|
|
|
|
|
{"created":"20220819225546126","creator":"M0","title":"$:/state/sq/streams/visibility/Enfermedades/20220518021147893--1840161913","text":"hide","modified":"20220819225546126","modifier":"M0"},
|
|
|
|
|
{"created":"20220820170446037","creator":"M0","title":"$:/state/sq/streams/visibility/Enfermedades/20220518021147893--890600416","text":"show","modified":"20220820170446837","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232419830","creator":"M0","title":"$:/state/sq/streams/visibility/glosario/conucos--1988602351","text":"show","modified":"20220903232421206","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192414544","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174228756--1178021069","text":"hide","modified":"20220903192414544","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185407873","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174228756--173708157","text":"hide","modified":"20220903185407873","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232504543","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174228756--367177533","text":"hide","modified":"20220903232504543","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185406368","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174317522-1265601831","text":"hide","modified":"20220903185406368","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192413256","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174317522-1988680207","text":"hide","modified":"20220903192413256","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232505943","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174317522-2074784359","text":"hide","modified":"20220903232505943","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192409337","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174338102-1760987822","text":"hide","modified":"20220903192409337","modifier":"M0"},
|
|
|
|
|
{"created":"20220903191133320","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174338102-301749992","text":"hide","modified":"20220903191133320","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185405216","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174338102-614386536","text":"hide","modified":"20220903185405216","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185247873","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174548627--1054464299","text":"show","modified":"20220903185258020","modifier":"M0"},
|
|
|
|
|
{"created":"20220904021721932","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174548627--1378355499","text":"show","modified":"20220904025900511","modifier":"M0"},
|
|
|
|
|
{"created":"20220903183010047","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174548627-380073109","text":"show","modified":"20220903185118752","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185409424","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174720887--623346815","text":"hide","modified":"20220903185409424","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192415825","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174720887-1858270837","text":"hide","modified":"20220903192415825","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232518943","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820174720887-1976267585","text":"hide","modified":"20220903232518943","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192418000","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820185718652--1605516120","text":"hide","modified":"20220903192418000","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232525486","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820185718652--201976914","text":"hide","modified":"20220903232525486","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185402993","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820185718652-798438062","text":"hide","modified":"20220903185402994","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192411064","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190000798--1321485005","text":"hide","modified":"20220903192411064","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232417102","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190000798--334289213","text":"hide","modified":"20220903232417102","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185404017","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190000798-1839317635","text":"hide","modified":"20220903185404017","modifier":"M0"},
|
|
|
|
|
{"created":"20220903191037033","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190156222--862823187","text":"hide","modified":"20220903191105301","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192421464","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190156222-1884949965","text":"hide","modified":"20220903232555571","modifier":"M0"},
|
|
|
|
|
{"created":"20220904030113071","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190156222-402052617","text":"show","modified":"20220904055551291","modifier":"M0"},
|
|
|
|
|
{"created":"20220903190931592","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190156222-718114345","text":"hide","modified":"20220903190931592","modifier":"M0"},
|
|
|
|
|
{"created":"20220903191116096","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820190156222-810354121","text":"hide","modified":"20220903191116096","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232517342","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820203751069--1147374116","text":"hide","modified":"20220903232517342","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185410744","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820203751069--1935116964","text":"hide","modified":"20220903185410744","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192416857","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820203751069--2126377414","text":"hide","modified":"20220903192416857","modifier":"M0"},
|
|
|
|
|
{"created":"20220820231801599","creator":"M0","title":"$:/state/sq/streams/visibility/Proyectos/20220820203905830--964944079","text":"show","modified":"20220828150126525","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192422873","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220820232310672--2066391243","text":"hide","modified":"20220903192501681","modifier":"M0"},
|
|
|
|
|
{"created":"20220903192411881","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903182940269--1608097014","text":"hide","modified":"20220903192411881","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185401555","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903182940269-2137705100","text":"hide","modified":"20220903185401555","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232439254","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903182940269-742536972","text":"hide","modified":"20220903232439254","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185047472","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903184105628--862300124","text":"show","modified":"20220903185048201","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185107600","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903184155050--1507077082","text":"hide","modified":"20220903185107600","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185106216","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903184939497--1123027177","text":"hide","modified":"20220903185106216","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185041641","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903184939497--969049537","text":"hide","modified":"20220903185041641","modifier":"M0"},
|
|
|
|
|
{"created":"20220903185813756","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903184939497-1961954551","text":"hide","modified":"20220903185813756","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232541046","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903190821935--2061246485","text":"show","modified":"20220903232919103","modifier":"M0"},
|
|
|
|
|
{"created":"20220904012716461","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191438328--2018090555","text":"show","modified":"20220904012857361","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232614991","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191438328--772763794","text":"show","modified":"20220903233358216","modifier":"M0"},
|
|
|
|
|
{"created":"20220904011855865","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191438328-1583527980","text":"hide","modified":"20220904011855865","modifier":"M0"},
|
|
|
|
|
{"created":"20220904011856913","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191546252--2108479452","text":"hide","modified":"20220904011856913","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232624487","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191546252--427604874","text":"hide","modified":"20220903232624487","modifier":"M0"},
|
|
|
|
|
{"created":"20220904012956618","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191546252-1505588499","text":"hide","modified":"20220904012956618","modifier":"M0"},
|
|
|
|
|
{"created":"20220904012828825","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191955069--1760755841","text":"hide","modified":"20220904012828825","modifier":"M0"},
|
|
|
|
|
{"created":"20220903232630383","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191955069--2114293772","text":"hide","modified":"20220903232630383","modifier":"M0"},
|
|
|
|
|
{"created":"20220904011859051","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220903191955069--439178394","text":"hide","modified":"20220904011859051","modifier":"M0"},
|
|
|
|
|
{"created":"20220904021952259","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904021815056-396636244","text":"hide","modified":"20220904025851120","modifier":"M0"},
|
|
|
|
|
{"created":"20220904025919946","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904025915931--1753093301","text":"show","modified":"20220904042432808","modifier":"M0"},
|
|
|
|
|
{"created":"20220904025941220","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904025915931--1947102901","text":"hide","modified":"20220904025959620","modifier":"M0"},
|
|
|
|
|
{"created":"20220904030202365","creator":"M0","title":"$:/state/sq/streams/visibility/proyectos/20220904030144511--2123920057","text":"show","modified":"20220904042430200","modifier":"M0"},
|
|
|
|
|
{"created":"20220820035335904","creator":"M0","title":"$:/state/streams/settings/tabs-2120062062","text":"$:/plugins/sq/streams/Settings/config","modified":"20220820035348343","modifier":"M0"},
|
|
|
|
|
{"created":"20220819213336865","creator":"M0","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Standard","modified":"20230305005238049","modifier":"m00"},
|
|
|
|
|
{"created":"20220819224142742","creator":"M0","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Theme","modified":"20230304194511444","modifier":"M0"},
|
|
|
|
|
{"created":"20220820014955746","creator":"M0","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20220820050856693","modifier":"M0"},
|
|
|
|
|
{"created":"20220820014620089","creator":"M0","title":"$:/state/tab--697582678","text":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","modified":"20220820055053668","modifier":"M0"},
|
|
|
|
|
{"created":"20220904200114964","creator":"M0","title":"$:/state/tab--86143343","text":"$:/core/ui/ControlPanel/Plugins/Installed/Plugins","modified":"20220904213828013","modifier":"M0"},
|
|
|
|
|
{"created":"20220820015307987","creator":"M0","title":"$:/state/tab--959111941","text":"$:/core/ui/ControlPanel/Cascades","modified":"20220820015307987","modifier":"M0"},
|
|
|
|
|
{"created":"20220819224137628","creator":"M0","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Plugins","modified":"20230305020323057","modifier":"m00"},
|
|
|
|
|
{"created":"20220819233723927","creator":"M0","title":"$:/state/tab/search-results/advancedsearch","text":"$:/core/ui/DefaultSearchResultList","modified":"20220903175111293","modifier":"M0"},
|
|
|
|
|
{"created":"20220820021900762","creator":"M0","title":"$:/state/tabs/controlpanel/toolbars-1345989671","text":"$:/core/ui/ControlPanel/Toolbars/PageControls","modified":"20220904214033997","modifier":"M0"},
|
|
|
|
|
{"created":"20220904163400070","creator":"M0","title":"$:/state/toc/proyectos-proyectos/copincha--973757775","text":"open","modified":"20220904163400070","modifier":"M0"},
|
|
|
|
|
{"created":"20220904163410414","creator":"M0","title":"$:/state/toc/proyectos-proyectos/copincha-879406318","text":"open","modified":"20220904163936438","modifier":"M0"},
|
|
|
|
|
{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"},
|
|
|
|
|
{"created":"20220418164921750","creator":"M","title":"$:/status/UserName","text":"m00","modified":"20230304224310411","modifier":"m0"},
|
|
|
|
|
{"title":"$:/StoryList","created":"20230306015131765","creator":"m00","text":"","list":"m00--bio--about m00--bio m00","modified":"20230306015751872","modifier":"m00"},
|
|
|
|
|
{"created":"20220820055008557","creator":"M0","title":"$:/tags/PageControls","list":"$:/core/ui/Buttons/home $:/core/ui/Buttons/close-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/permaview $:/core/ui/Buttons/new-tiddler $:/plugins/tiddlywiki/markdown/new-markdown-button $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/new-image $:/core/ui/Buttons/export-page $:/core/ui/Buttons/advanced-search $:/core/ui/Buttons/import $:/core/ui/Buttons/control-panel $:/plugins/kookma/commander/buttons/pagecontrol $:/core/ui/Buttons/manager $:/core/ui/Buttons/tag-manager $:/core/ui/Buttons/language $:/core/ui/Buttons/palette $:/core/ui/Buttons/theme $:/core/ui/Buttons/storyview $:/core/ui/Buttons/encryption $:/core/ui/Buttons/timestamp $:/core/ui/Buttons/full-screen $:/core/ui/Buttons/print $:/core/ui/Buttons/save-wiki $:/core/ui/Buttons/refresh $:/core/ui/Buttons/more-page-actions $:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette $:/themes/nico/notebook/ui/Buttons/SwitchPalette","modified":"20220820055014204","modifier":"M0"},
|
|
|
|
|
{"title":"$:/tags/SideBarSegment","list":"$:/core/ui/SideBarSegments/site-title $:/core/ui/SideBarSegments/site-subtitle $:/core/ui/SideBarSegments/page-controls $:/core/ui/SideBarSegments/search $:/core/ui/SideBarSegments/tabs"},
|
|
|
|
|
{"created":"20220517033658008","creator":"M0","title":"$:/Tekan/CurrentBoard","text":"Organizando una Feria","modified":"20220605175549340","modifier":"M0"},
|
|
|
|
|
{"created":"20170922171503833","text":"\u003C$button tooltip=\"View as a Tekan Board\" aria-label=\"Board\" class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/storyview-classic}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>prefix[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\u003C$text text={{$:/language/Buttons/Close/Caption}}/>\u003C/span>\n\u003C/$list>\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\">\n\u003C$action-setfield tags=\"TwelloMode\"/>\n\u003C/$list>\n\u003C$action-setfield $tiddler=\"$:/Tekan/Main\" tags=\"$:/tags/PageTemplate\"/>\n\u003C$action-listops $tiddler=\"$:/Tekan/Substyles\" $tags=\"$:/tags/Stylesheet\"/>\n\u003C$action-setfield $tiddler=\"$:/Tekan/CurrentBoard\" text=\u003C\u003CcurrentTiddler>>/>\n\n\u003C/$button>","title":"$:/Tekan/TiddlerToBoard","tags":"$:/tags/ViewToolbar","modified":"20170922172348220"},
|
|
|
|
|
{"created":"20220418161218473","creator":"M0","title":"$:/theme","text":"$:/themes/nico/notebook","modified":"20230305005334544","modifier":"m00"},
|
|
|
|
|
{"text":"{\n \"tiddlers\": {\n \"$:/themes/nico/notebook/LICENSE\": {\n \"title\": \"$:/themes/nico/notebook/LICENSE\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210118213330307\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\nMIT License Copyright (c) 2020 [[Nicolas Petton|https://nicolas.petton.fr]] nicolas@petton.fr\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is furnished\\nto do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice (including the next\\nparagraph) shall be included in all copies or substantial portions of the\\nSoftware.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\\nOR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\"\n },\n \"$:/themes/nico/notebook/themetweaks\": {\n \"title\": \"$:/themes/nico/notebook/themetweaks\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20210123211851680\",\n \"tags\": \"$:/tags/ControlPanel/Appearance\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\nYou can tweak certain aspects of the ''Notebook'' theme.\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=\\\"pre\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"pre-wrap\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">Reveal tiddler controls on mouseover\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n\\n! \u003C\u003Clingo Metrics>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddl
|
|
|
|
|
{"created":"20200419141443144","creator":"M0","text":"\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n\\define if-sidebar(text)\n \u003C$reveal state=\"$:/state/notebook-sidebar\" type=\"match\" text=\"yes\">\n $text$\n \u003C/$reveal>\n\\end\n\n\\define if-reveal-tiddler-controls-on-hover(text)\n \u003C$reveal state=\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\" type=\"match\" text=\"yes\">\n $text$\n \u003C/$reveal>\n\\end\n \n/* Top and bottom bars */\n\n/* Hide the top-right bar */\n.tc-topbar.tc-topbar-right {\n display: none;\n}\n\ndiv.tc-sidebar-header {\n padding: 0;\n min-height: 0;\n}\n\n.tc-story-river {\n padding: 6px 0 !important;\n width: 100% !important;\n max-width: {{$:/themes/nico/notebook/metrics/story-width}} !important;\n margin: 0 auto !important;\n margin-top: 34px !important;\n}\n\ndiv.tc-tiddler-frame {\n width: 100%;\n margin: 20px 0;\n background: \u003C\u003Ccolour tiddler-background>>;\n box-shadow: 0 5px 20px rgba(0,0,0, 0.12);\n border-radius: 0px;\n padding: 42px 60px 60px 60px;\n}\n\nh1.tc-site-title {\n margin-top: 14px;\n font-size: 1.5em !important;\n}\n\n.nc-bar {\n padding: 10px;\n height: {{$:/themes/nico/notebook/metrics/topbar-height}};\n background: \u003C\u003Ccolour page-background>>;\n display: flex;\n justify-content: space-between;\n}\n\n.nc-topbar-wrapper {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\n z-index: 501;\n}\n\n.nc-bar.nc-topbar {\n top: 0;\n background: \u003C\u003Ccolour page-background>>ee;\n max-width: calc({{$:/themes/nico/notebook/metrics/story-width}} + 40px);\n padding: 10px 20px;\n margin: 0 auto;\n}\n\n.nc-bar.nc-bottombar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\n z-index: 501;\n}\n\n.nc-bar .left svg {\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\n}\n\n.nc-bar input[type=\"search\"] {\n width: 200px;\n padding: .6em 1em;\n margin-top: -.2em;\n background: \u003C\u003Ccolour sidebar-button-foreground>>44;\n color: \u003C\u003Ccolour foreground>>cc;\n transition: all ease-in .2s;\n border: 1px solid transparent;\n outline: 0;\n}\n\n.nc-bar input[type=\"search\"]:focus {\n width: 300px;\n background: \u003C\u003Ccolour tiddler-background>>;\n color: \u003C\u003Ccolour foreground>>;\n border: 1px solid \u003C\u003Ccolour primary>>;\n box-shadow: 0 0 .2rem 0 \u003C\u003Ccolour primary>>;\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button {\n -webkit-appearance: auto;\n}\n\n.nc-bar .tc-block-dropdown.tc-search-drop-down {\n margin-left: 0;\n width: 400px;\n border: 0;\n box-shadow: 0 0 6px 0 rgba(0,0,0,.2);\n border-radius: 0px;\n padding: 20px 0;\n}\n\n.nc-bar p {\n margin: 0;\n}\n\n.nc-bar .tc-page-controls {\n margin-top: 0;\n}\n\n.nc-bar .tc-page-controls button {\n margin-right: .8em;\n}\n\n.nc-bar .tc-page-controls button .tc-btn-text {\n font-size: 14px;\n}\n\n.nc-bar .tc-block-dropdown {\n max-height: 70vh;\n overflow: auto;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-topbar {\n display: none;\n }\n\n .tc-story-river {\n padding: 0 !important;\n margin-top: 0 !important;\n margin-bottom: 60px !important;\n }\n\n div.tc-tiddler-frame {\n margin: 0;\n box-shadow: none;\n border-radius: 0;\n border-top: 0;\n }\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-bottombar {\n display: none;\n }\n}\n\n@media(max-width: 1100px) {\n .nc-bar input[type=\"search\"] {\n width: 200px;\n }\n}\n\n/* Sidebar */\n\n@keyframes sidebar-appear {\n 0% {\n left: -{{$:/themes/nico/notebook/metrics/sidebar-width}};\n }\n 100% {\n left: 0;\n }\n}\n\n\u003C\u003Cif-sidebar \"\"\"\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .nc-sidebar {\n animation: side
|
|
|
|
|
{"created":"20200429144554294","creator":"M0","title":"$:/themes/nico/notebook/metrics/sidebar-width","modified":"20220810124541357","tags":"","type":"text/vnd.tiddlywiki","text":"350px","modifier":"M0"},
|
|
|
|
|
{"title":"$:/themes/nico/notebook/metrics/story-width","created":"20210123210054185","modified":"20210123211911688","tags":"","type":"text/vnd.tiddlywiki","text":"800px\n"},
|
|
|
|
|
{"title":"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover","text":"no"},
|
|
|
|
|
{"title":"$:/themes/nico/notebook/options/stickytitles","text":"no"},
|
|
|
|
|
{"created":"20210101213404232","title":"$:/themes/nico/notebook/settings/codefontfamily","modified":"20220418154506861","tags":"","type":"text/vnd.tiddlywiki","text":"\"consolas\""},
|
|
|
|
|
{"created":"20220418133651712","title":"$:/themes/nico/notebook/settings/editorfontfamily","text":"\"consolas\"","modified":"20220418154508502"},
|
|
|
|
|
{"created":"20210101213404232","title":"$:/themes/nico/notebook/settings/fontfamily","modified":"20220418154743744","tags":"","type":"text/vnd.tiddlywiki","text":"\"consolas\""},
|
|
|
|
|
{"title":"$:/themes/nico/notebook/shortcuts/toggle-sidebar","created":"20210115130000707","key":"((toggle-sidebar))","modified":"20210115130021883","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"\u003C$list\n filter=\"[[$:/state/notebook-sidebar]is[missing]] [{$:/state/notebook-sidebar}removeprefix[yes]]\"\n emptyMessage=\"\"\"\u003C$action-setfield $tiddler=\"$:/state/notebook-sidebar\" text=\"yes\"/>\"\"\"\n>\n \u003C$action-setfield $tiddler=\"$:/state/notebook-sidebar\" text=\"no\"/>\n\u003C/$list>\n"},
|
|
|
|
|
{"created":"20200429113453340","creator":"M0","title":"$:/themes/nico/notebook/ui/Bottombar","modified":"20220820014217055","tags":"$:/tags/PageTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$reveal state=\"$:/state/notebook-bottombar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n \u003Cdiv class=\"nc-bar nc-bottombar\">\n \u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\" variable=\"listItem\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003Cconfig-title>> text=\"hide\" tag=\"div\">\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"block\"/>\n \u003C/$reveal>\n \u003C/$list>\n \u003Cdiv class=\"left\">\n {{$:/themes/nico/notebook/ui/Buttons/menu}}\n \u003C/div>\n \u003Cdiv class=\"right\">\n {{$:/core/ui/SideBarSegments/page-controls}}\n \u003C/div>\n \u003C/div>\n\u003C/$reveal>\n\n","modifier":"M0"},
|
|
|
|
|
{"created":"20200428201218885","creator":"M0","text":"\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n\u003C$reveal state=\"$:/state/notebook-sidebar\" type=\"match\" text=\"yes\" default=\"no\" retain=\"yes\" animate=\"no\">\n \u003C$scrollable fallthrough=\"no\">\n \u003Cdiv class=\"nc-sidebar\">\n\t{{sidebar/home}}\n\t\t\u003Ccenter>\u003Ch1>{{$:/SiteTitle}}\u003C/h1>\n\t{{$:/SiteSubtitle}}\n\t\t\u003C/center>\n\t\t\u003Cbr>\n\t{{sidebar/main-buttons}}\n \u003C$list filter=\"[all[shadows+tiddlers]tag[$:/themes/nico/notebook/tags/Sidebar]!has[draft.of]]\" variable=\"listItem\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003Cconfig-title>> text=\"hide\" tag=\"div\">\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"inline\"/>\n \u003C/$reveal>\n \u003C/$list>\n \u003C/div>\n \u003C/$scrollable>\n\u003C/$reveal>\n\n","title":"$:/themes/nico/notebook/ui/Sidebar","modified":"20220820072610150","tags":"$:/tags/PageTemplate","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20200429160014174","creator":"M0","text":"\u003Cdiv class=\"segment\">\n \u003C!--\u003Cdiv class=\"content\">\n \u003Ch1 class=\"tc-site-title\">\n {{$:/SiteTitle}}\n \u003C/h1>\n \u003Cdiv class=\"tc-site-subtitle\">\n {{$:/SiteSubtitle}}\n \u003C/div>\n \u003C/div>\n --> \u003C/div>\n","title":"$:/themes/nico/notebook/ui/Sidebar/Headings","modified":"20220820073258827","tags":"$:/themes/nico/notebook/tags/Sidebar","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"created":"20200429161226897","creator":"M0","text":"\\define sidebarHeading()\n\u003C$vars tv-wikilinks=\"no\">\n \u003C$transclude field=\"caption\">\n \u003C$view field=\"title\"/>\n \u003C/$transclude>\n\u003C/$vars>\n\\end\n\n\u003C$reveal state=\"$:/state/notebook-sidebar-section\" type=\"match\" text=\u003C\u003CcurrentTiddler>> default=\"no\" animate=\"no\">\n \u003Cdiv class=\"segment section open\">\n \u003C$button set=\"$:/state/notebook-sidebar-section\" setTo=\"\" class=\"tc-btn-invisible label\">\n \u003C\u003CsidebarHeading>>\n \u003Cspan class=\"caret\">{{$:/themes/nico/notebook/images/caret-down}}\u003C/span>\n \u003C/$button>\n \u003Cdiv class=\"content\">\n \u003C$transclude $tiddler=\u003C\u003CcurrentTiddler>> mode=\"block\"/>\n \u003C/div>\n \u003C/div>\n\u003C/$reveal>\n\u003C$reveal state=\"$:/state/notebook-sidebar-section\" type=\"nomatch\" text=\u003C\u003CcurrentTiddler>> default=\"yes\" animate=\"no\">\n \u003Cdiv class=\"segment section\">\n \u003C$button set=\"$:/state/notebook-sidebar-section\" setTo=\u003C\u003CcurrentTiddler>> class=\"tc-btn-invisible label\">\n \u003C\u003CsidebarHeading>>\n \u003Cspan class=\"caret\">{{$:/themes/nico/notebook/images/caret-right}}\u003C/span>\n \u003C/$button>\n \u003C/div>\n\u003C/$reveal>\n","title":"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate","modified":"20220819234910727","type":"text/vnd.tiddlywiki","modifier":"M0"},
|
|
|
|
|
{"title":"$:/themes/nico/notebook/ui/Topbar","created":"20200428203101797","modified":"20210124213834458","tags":"$:/tags/PageTemplate","type":"text/vnd.tiddlywiki","text":"\u003C$reveal state=\"$:/state/notebook-topbar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n \u003Cdiv class=\"nc-topbar-wrapper\">\n \u003Cdiv class=\"nc-bar nc-topbar tc-adjust-top-of-scroll\">\n \u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\" variable=\"listItem\">\n \u003C$reveal type=\"nomatch\" state=\u003C\u003Cconfig-title>> text=\"hide\" tag=\"div\">\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\"block\"/>\n \u003C/$reveal>\n \u003C/$list>\n \u003Cdiv class=\"left\">\n\t{{$:/themes/nico/notebook/ui/Buttons/menu}}\n {{$:/themes/nico/notebook/ui/Search}}\n \u003C/div>\n \u003Cdiv class=\"right\">\n {{$:/core/ui/SideBarSegments/page-controls}}\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/$reveal>\n\n"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/snowwhite","name":"Snow White","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Emphasises individual tiddlers","dependents":"$:/themes/tiddlywiki/vanilla","plugin-priority":"0","version":"5.2.3","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/snowwhite/base\":{\"title\":\"$:/themes/tiddlywiki/snowwhite/base\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"\\\\define sidebarbreakpoint-minus-one()\\n\u003C$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\\n\\\\end\\n\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n.tc-sidebar-header {\\n\\ttext-shadow: 0 1px 0 \u003C\u003Ccolour sidebar-foreground-shadow>>;\\n}\\n\\n.tc-tiddler-info {\\n\\t\u003C\u003Cbox-shadow \\\"inset 1px 2px 3px rgba(0,0,0,0.1)\\\">>\\n}\\n\\n@media screen {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow \\\"1px 1px 5px rgba(0, 0, 0, 0.3)\\\">>\\n\\t}\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow none>>\\n\\t}\\n}\\n\\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\\n\\t\u003C\u003Ctransition \\\"fill 150ms ease-in-out\\\">>\\n}\\n\\n.tc-tiddler-controls button.tc-selected,\\n.tc-page-controls button.tc-selected {\\n\\t\u003C\u003Cfilter \\\"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\\\">>\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow \\\"inset 0 1px 8px rgba(0, 0, 0, 0.15)\\\">>\\n}\\n\\n.tc-edit-tags {\\n\\t\u003C\u003Cbox-shadow \\\"inset 0 1px 8px rgba(0, 0, 0, 0.15)\\\">>\\n}\\n\\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow \\\"none\\\">>\\n\\tborder: none;\\n\\toutline: none;\\n}\\n\\ntextarea.tc-edit-texteditor {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\t\u003C\u003Cbox-shadow \\\"2px 2px 5px rgba(0, 0, 0, 0.5)\\\">>\\n}\\n\\n.tc-drop-down {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow \\\"2px 2px 10px rgba(0, 0, 0, 0.5)\\\">>\\n}\\n\\n.tc-block-dropdown {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow \\\"2px 2px 10px rgba(0, 0, 0, 0.5)\\\">>\\n}\\n\\n.tc-modal {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow \\\"0 3px 7px rgba(0,0,0,0.3)\\\">>\\n}\\n\\n.tc-modal-footer {\\n\\tborder-radius: 0 0 6px 6px;\\n\\t\u003C\u003Cbox-shadow \\\"inset 0 1px 0 #fff\\\">>;\\n}\\n\\n\\n.tc-alert {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow \\\"0 3px 7px rgba(0,0,0,0.6)\\\">>\\n}\\n\\n.tc-notification {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow \\\"0 3px 7px rgba(0,0,0,0.3)\\\">>\\n\\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\\n}\\n\\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\\n\\tborder-top: none;\\n\\theight: 1px;\\n\\t\u003C\u003Cbackground-linear-gradient \\\"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\\\">>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\t\u003C\u003Cbackground-linear-gradient \\\"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\\\">>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\t\u003C\u003Cbackground-linear-gradient \\\"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\\\">>\\n}\\n\\n.tc-message-box img {\\n\\t\u003C\u003Cbox-shadow \\\"1px 1px 3px rgba(0,0,0,0.5)\\\">>\\n}\\n\\n.tc-plugin-info {\\n\\t\u003C\u003Cbox-shadow \\\"1px 1px 3px rgba(0,0,0,0.5)\\\">>\\n}\\n\"}}}"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla","name":"Vanilla","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Basic theme","plugin-priority":"0","version":"5.2.3","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/vanilla/themetweaks\":{\"title\":\"$:/themes/tiddlywiki/vanilla/themetweaks\",\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\"text\":\"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\n\\\\define replacement-text()\\n[img[$(imageTitle)$]]\\n\\\\end\\n\\n\\\\define backgroundimage-dropdown()\\n\u003Cdiv class=\\\"tc-drop-down-wrapper\\\">\\n\u003C$set name=\\\"state\\\" value=\u003C\u003Cqualify \\\"$:/state/popup/themetweaks/backgroundimage\\\">>>\\n\u003C$button popup=\u003C\u003Cstate>> class=\\\"tc-btn-invisible tc-btn-dropdown\\\">{{$:/core/images/down-arrow}}\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cstate>> type=\\\"popup\\\" position=\\\"belowleft\\\" text=\\\"\\\" default=\\\"\\\" class=\\\"tc-popup-keep\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\" style=\\\"text-align:center;\\\">\\n\u003C$macrocall $name=\\\"image-picker\\\" actions=\\\"\\\"\\\"\\n\\n\u003C$action-setfield\\n\\t$tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"\\n\\t$value=\u003C\u003CimageTitle>>\\n/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cstate>>/>\\n\\n\\\"\\\"\\\"/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/$set>\\n\u003C/div>\\n\\\\end\\n\\n\\\\define backgroundimageattachment-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\" default=\\\"scroll\\\">\\n\u003Coption value=\\\"scroll\\\">\u003C\u003Clingo Settings/BackgroundImageAttachment/Scroll>>\u003C/option>\\n\u003Coption value=\\\"fixed\\\">\u003C\u003Clingo Settings/BackgroundImageAttachment/Fixed>>\u003C/option>\\n\u003C/$select>\\n\\\\end\\n\\n\\\\define backgroundimagesize-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\" default=\\\"scroll\\\">\\n\u003Coption value=\\\"auto\\\">\u003C\u003Clingo Settings/BackgroundImageSize/Auto>>\u003C/option>\\n\u003Coption value=\\\"cover\\\">\u003C\u003Clingo Settings/BackgroundImageSize/Cover>>\u003C/option>\\n\u003Coption value=\\\"contain\\\">\u003C\u003Clingo Settings/BackgroundImageSize/Contain>>\u003C/option>\\n\u003C/$select>\\n\\\\end\\n\\n\u003C\u003Clingo ThemeTweaks/Hint>>\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003Coption value=\\\"fixed-fluid\\\">\u003C\u003Clingo Options/SidebarLayout/Fixed-Fluid>>\u003C/option>\u003Coption value=\\\"fluid-fixed\\\">\u003C\u003Clingo Options/SidebarLayout/Fluid-Fixed>>\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=\\\"pre\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"pre-wrap\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/co
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize","text":"15px"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight","text":"22px"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/metrics/fontsize","text":"14px"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/metrics/lineheight","text":"20px"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint","text":"960px"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth","text":"350px"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/options/codewrapping","text":"pre-wrap"},
|
|
|
|
|
{"title":"$:/themes/tiddlywiki/vanilla/options/sidebarlayout","text":"fixed-fluid"},
|
|
|
|
|
{"created":"20220820045238828","creator":"M0","text":"fondo-de-pagina","title":"$:/themes/tiddlywiki/vanilla/settings/backgroundimage","modified":"20220820050112717","modifier":"M0"},
|
|
|
|
|
{"created":"20220820045114959","creator":"M0","title":"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment","text":"scroll","modified":"20220820050123148","modifier":"M0"},
|
|
|
|
|
{"created":"20220820043854443","creator":"M0","title":"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize","text":"auto","modified":"20220820050129017","modifier":"M0"},
|
|
|
|
|
{"created":"20181205020546605","creator":"","title":"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily","modified":"20220418165835526","modifier":"M0","type":"text/vnd.tiddlywiki","text":"\"Consolas\"","revision":"0","bag":"default"},
|
|
|
|
|
{"created":"20220820015321218","creator":"M0","title":"$:/view","text":"top","modified":"20220820015425042","modifier":"M0"},
|
|
|
|
|
{"created":"20220828145325035","creator":"M0","text":"hora: 4 a 8pm","parent":"08/28/2022","stream-type":"default","stream-list":"","modified":"20220904032446987","modifier":"M0","title":"08/28/2022/20220828145325031","tmap.id":"d3912632-f2a7-4459-995f-3f7a435d3536"},
|
|
|
|
|
{"created":"20220828145338458","creator":"M0","parent":"08/28/2022","stream-type":"default","modified":"20220904032447215","modifier":"M0","title":"08/28/2022/20220828145338455","text":"maquina trituradora","tmap.id":"686decf2-005b-450c-ac1d-ece704b87db0"},
|
|
|
|
|
{"created":"20220828145348408","creator":"M0","parent":"08/28/2022","stream-type":"default","modified":"20220904032447415","modifier":"M0","title":"08/28/2022/20220828145348406","text":"plancha","tmap.id":"b9961c31-d2d9-401a-a17e-50bc2f0f11c3"},
|
|
|
|
|
{"created":"20220904211654533","creator":"M0","title":"aaa","tags":"","modified":"20220904211654533","modifier":"M0","text":"","tmap.id":"efdafd00-d97a-466f-82a3-aa15d5dd4258"},
|
|
|
|
|
{"created":"20200426121247659","creator":"M0","text":"\\define embed-YTVideo()\n\u003C\u003CembedYouTube \"$(extUrl)$\" \"$(APIKey)$\">>\n\\end\n\n\u003C$edit-text class='tc-edit-texteditor' tiddler='$:/ak/plugins/EmbedYouTube/state/EmbedYouTube' field='url' placeholder='YouTube video URL'/>\u003Cbr> \n\n\u003C$edit-text class='tc-edit-texteditor' tiddler='$:/ak/plugins/EmbedYouTube/state/EmbedYouTube' field='apikey' placeholder='Your YouTube api'/>\u003Cbr> \n\n\u003C$set name=\"APIKey\" value={{$:/ak/plugins/EmbedYouTube/state/EmbedYouTube!!apikey}} >\n\u003C$set name=\"extUrl\" value={{$:/ak/plugins/EmbedYouTube/state/EmbedYouTube!!url}} >\n\u003C$button actions=\u003C\u003Cembed-YTVideo>> >\n\u003C$action-setfield $tiddler='$:/ak/plugins/EmbedYouTube/state/EmbedYouTube' url='' />\nEmbed Video \n\u003C/$button>\n\u003C/$set>\n\n\n\n","bag":"default","revision":"6","type":"text/vnd.tiddlywiki","title":"Add YouTube Video","tags":"","modified":"20220819233449079","modifier":"M0","tmap.id":"4cf4b1cd-2f18-498a-8122-0ccafed3960f"},
|
|
|
|
|
{"text":"alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1","type":"application/x-tiddler-dictionary","title":"adithyab/palettes/SolarizedLight","tags":"$:/tags/Palette tiddlywiki","name":"SolarizedLight 2","modifier":"adithyb_tspot","modified":"20200810103104767","license":"MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE","description":"Precision Dark colors for machines and people","creator":"Adithya_","created":"20200810064450648","tmap.id":"99a922c8-9614-4cb6-833e-c9a456637e78"},
|
|
|
|
|
{"created":"20160609120738579","creator":"twMat","text":"\\define showcaption(tid, caption)\n\u003C$set name=\"caption\" value=\"\"\"content: '$caption$'\"\"\">\n\u003C$set name=\"uri\" value=\u003C\u003Cmakedatauri \"\"\"$tid$\"\"\" \"text/plain\">> >\n\u003C$list variable=\"urititle\" filter=\"\"\"[\u003Curi>removeprefix[data:text/plain,]]\"\"\">\n\u003Cstyle>\na[href='#\u003C\u003Curititle>>'] {\n visibility: hidden;\n position: relative;\n}\na[href=\"#\u003C\u003Curititle>>\"]:before {\n visibility: visible;\n \u003C\u003Ccaption>>;\n}\n\u003C/style>\n\u003C/$list>\n\u003C/$set>\n\u003C/$set>\n\\end\n\n\u003C$list filter=\"\"\"[all[current]has[caption]]\"\"\">\n\u003C$macrocall $name=\"showcaption\" tid={{!!title}} caption={{!!caption}} />\n\u003C/$list>","type":"text/vnd.tiddlywiki","title":"Alias ViewTemplate","tags":"$:/tags/ViewTemplate","modifier":"M0","modified":"20220904210544382","tmap.id":"eb777688-5726-48f0-be5e-097b6c122b1e"},
|
|
|
|
|
{"text":"Hola, Bienvenido al Cafe Sorpesa.Mi nombre es Maurice, soy cubano, disenador industrial y soy fundador de Copincha, un hackerspace en La habana.\n\nCafe sorpresa es un espacio donde contamos experiencias en practicas tecnologicas o materiales diversas. Para estimular otras. lo haciamos de forma fisica antes de la pandemia. y ahora exploramos hacerlo de forma virtual\n\nEn este Cafe Sorpresa que se titula Tiddlywiki, expeculaciones colombo - cubanas.\n\nvamos a hablar fundamentalmente sobre cuadernos de notas, infraestructuras de bolsillo, jardines digitales y muchas otras cosas seguramente.\n\n!! Temas\n\n*Copincha y la necesidad de documentar\n*!! El contexto en Cuba con el acceso a internet y la distribucion de contenidos\n*!! Por que tiddlywiki\n\n!! Copincha y la necesidad de documentar\n*que es copincha\n*conuco\n*con nuestros propios esfuerzos\n* propiciar la participacion ciudadana\n\n*la necesidad de documentar\n*que es copinchapedia\n* subgrupos\n\n!! El contexto cubano\n\n*el acceso a internet es limitado por los precios\n* han surgido arternativas de redes y distribucion de contenidos\n*SNET\n*Paquete semanal\n*Casas de copias\n\n* pensar la copinchapedia accesible de muchas maneras\n\n!! Por que tiddlywiki\n* encuentro con Grafoscopio\n* Infraestructuras de bolsillo:\n* simples \n* autocontenidas\n* funcionan en y fuera de linea\n* Se pueden abrir en casi todos los dispositivos\n\n* es un archivo html\n\ntiddlywiki\n*sistema de fichas (tiddlers)\n*porciones de informacion que vas agregando y pueden servir para ampliar:\n\n*contenido del wiki\n*la funcionalidad del wiki\n\n*tiddlers tienen un nombre unico\n\n*tiddlers se interconectan por:\n*enlaces de hipertexto\n*por transclusiones\n\nel contenido crece y se hace mas recombinable\n\n*mas granular\n*modelar mas \n\nCompartir tiddlers\nes un archivo html \ncuando compartes le estas dando al otro el contenido y la infraestructura.\n\n* manera comun de compartir\n* reunir informacion para crear espacios colectivos\n*construir memoria colectiva\n\n!!Jardines digitles\n*wikis en progreso\n*de asociación libre \n*colecionan ideas notas e ideas en evolución\n*no están en orden conológico estricto\n\n*Las notas están vinculadas a través de asociaciones contextuales–. \n\n*No están refinados o completos y crecen y evolucionan con el tiempo. \n\n\n\n!! Autorreferencialidad\n\nQue conducta espacial provocamos \n\npermisibilidad del cuerpo para entrar en accion\n\nHay que permitir a las personas hablar desde sus contextos. Esto tambien busca el cafe sorpresa.\nLas personas se tienen que sentir comodas. Ver la contribucion como es algo propio. Encontrar un sentido de pertenencia para luego entrar en accion\n\nLo autorreferencial\n\ncrea una empatia entre el artefacto y la persona... \n\nva con sentirse autoeficaz\n\nver el artefacto como una extension simbolica de tu cuerpo.\n\n\n\n\n\n\n\n\n\n\n!! Proyectos\n* Cuadernos personales\n* Archivo informal\n* Mapas colaborativos\n* Pa la Minga\n\nInformacion en tiddlywiki, significa informacion en fichas y conexiones faciles de compartir.\n\n\n!! En el Taller\nlo basico para \n*crear nuestro cuaderno personal\n* crear contenido\n* compartir entre pares\n* publicarlo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","title":"Cafe Sorpresa - 21 de mayo de 2021 1","tags":"","modified":"20210530065614030","created":"20210521175652160","tmap.id":"374d6044-29c1-4a69-84f0-cb67cb50013b"},
|
|
|
|
|
{"created":"20220820172845145","creator":"M0","text":"","title":"Calculo","modified":"20220820172845145","modifier":"M0","tmap.id":"b426d9a8-314a-4eff-83e2-ce29c67540ef"},
|
|
|
|
|
{"text":"!! mapa \ncartografia social de bolsillo\n\nirreductibilidad - intercambiabilidad\n\nla sociedad reidifica el pensamiento\n\nes reidificado por la cibernetica\n\nproblema de la cibernetica es la cerradura\n\nno hay \n\nel diseno es un saber en red\n\nescape que asume el mundo.... asume la posibilidad de volver\n\nno puede existir un nomadismo.\n\nno acumulativa\n\nproducir una relacion linre con el mundo\n\nnuevas formas de habitar\n\nhabito\n\n\nsociotecnicas colectivas\n\nhumanos que usan tecnologias\n\nprogramacion orientada a mensajes\n\n\n\nescape donde no hay forma de vida ","title":"Cibernetica","tags":"","modified":"20210923091207068","created":"20210923091106430","tmap.id":"1f5a0b8d-97c4-45c7-83f4-74287c102e9a"},
|
|
|
|
|
{"text":"\u003Ccenter>\n\n''> CONOCER > CONECTAR > CONSTRUIR > COLECTIVIZAR > COMPROMETER > COEXISTIR >''","title":"Ciclo Copincha","tags":"","modified":"20210704162013378","created":"20210704161559299","tmap.id":"f5153958-a78a-480d-912b-599f1c4fefb0"},
|
|
|
|
|
{"created":"20230305001340005","text":"const data = {\n name: 'copincha',\n children: [\n {\n name: 'precious-plastic-la-habana',\n children: [\n {\n name: 'Laboratorio',\n value: 3322\n }\n ]\n },\n ]\n {\n name: 'conucos-digitales',\n },\n {\n name: 'openbici-lab',\n children: [{ name: 'FlareVis', value: 4116 }]\n },\n ]\n};\noption = {\n tooltip: {\n trigger: 'item',\n triggerOn: 'mousemove'\n },\n series: [\n {\n type: 'tree',\n id: 0,\n name: 'tree1',\n data: [data],\n top: '10%',\n left: '8%',\n bottom: '22%',\n right: '20%',\n symbolSize: 7,\n edgeShape: 'polyline',\n edgeForkPosition: '63%',\n initialTreeDepth: 3,\n lineStyle: {\n width: 2\n },\n label: {\n backgroundColor: '#fff',\n position: 'left',\n verticalAlign: 'middle',\n align: 'right'\n },\n leaves: {\n label: {\n position: 'right',\n verticalAlign: 'middle',\n align: 'left'\n }\n },\n emphasis: {\n focus: 'descendant'\n },\n expandAndCollapse: true,\n animationDuration: 550,\n animationDurationUpdate: 750\n }\n ]\n};","tags":"","title":"code","modified":"20230305005126179"},
|
|
|
|
|
{"text":"! Comentar \n\n```\n\u003C!-- esto es un comentario -->\n```\n| \u003C!-- esto es un comentario --> |\n\n!Codigo\n`hola`\n\n!Frase\n\u003C\u003C\u003C.tc-big-quote\nA dramatic quote\n\u003C\u003C\u003C Somebody Important","title":"codigo HTML","tags":"","modifier":"M0","modified":"20210310003132205","creator":"M0","created":"20210309210559570","tmap.id":"4b2d3afb-f328-4c12-96d7-6d642ddbccfe"},
|
|
|
|
|
{"text":"Una vez instalado abre el archivo desde [[TiddlyDesktop|https://github.com/Jermolene/TiddlyDesktop]] \no Firefox con el [[plugin file-backups|https://pmario.github.io/file-backups/]] instalado\ny entra a [[Panel de Control|$:/ControlPanel]] y cambia los parámetros habituales: \ntítulo del sitio, subtítulo, usuario/autora del wiki, etc y guarda los cambios.","title":"Configuración","tags":"","modified":"20210115160923702","created":"20210115160900945","tmap.id":"b77a8643-f547-4b86-b800-73134e0b00d2"},
|
|
|
|
|
{"text":"\u003C\u003Ctoc-selective-expandable Contenidos sort[orden]>>","title":"Contenidos","tags":"","modifier":"M0","modified":"20210309234512635","creator":"M0","created":"20210309225050740","tmap.id":"c7797d4f-d978-4e11-b790-606420589bc2"},
|
|
|
|
|
{"text":"","title":"copincha - datos","telegram":"","telefono":"{{datos personales!!telefono}}","tags":"","modified":"20210629100035369","instagram":"","facebook":"https://www.facebok.com/copincha","email":"comunidad@copincha.org","direccion":"{{datos personales!!direccion}}","created":"20210629094726261","tmap.id":"b271a5db-7dc9-4426-abea-009a4582446d"},
|
|
|
|
|
{"text":" \n\n\n \u003Cdiv class=\"row ui-content\" style=\"\">\n \n \u003Cdiv class=\"ui-view-area\">\n \u003C/div>\u003C/div>\u003Ch1 class=\"part\" data-startline=\"6\" data-endline=\"6\" id=\"copinchapedia\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#copinchapedia\" title=\"copinchapedia\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>Copinchapedia\u003C/h1>\u003Cp class=\"part\" data-startline=\"9\" data-endline=\"9\">\u003Ca href=\"https://copinchapedia.copincha.org/es/home\" target=\"_blank\" rel=\"noopener\">Copinchapedia\u003C/a>\n es un sitio para documentar colaborativamente el conocimiento y las \nexperiencias colectivas de creación e innovación tecnológicas que \nsuceden en la comunidad Copincha. Todo el trabajo se publica bajo una \nlicencia de atribución de Creative Commons.\u003C/p>\u003Cp class=\"part\" data-startline=\"11\" data-endline=\"11\">Por\n favor, entienda este repositorio como un documento vivo, que está \ncambiando todo el tiempo. A menudo se agregan ligeros ajustes, una \nsección completamente nueva o se elimina algo que ya no es relevante. \nAsí que espere enlaces rotos y errores de escritura ocasionales en \nmaterial nuevo. Hacemos lo mejor posible para tratar de mantenerlo \nordenado.\u003C/p>\u003Cp class=\"part\" data-startline=\"13\" data-endline=\"13\">Al \nrecopilar estos materiales, hemos tomado prestado ocasionalmente muchos \nrecursos en línea (como: textos, imágenes o ideas inspiradoras). La \nsección de reconocimiento de cada página intenta reunir el crédito para \ntodas las fuentes. Por favor, si encuentra alguna omisión o igualmente \npara brindarnos sus preguntas y comentarios, use el chat.\u003C/p>\u003Ch2 class=\"part\" data-startline=\"15\" data-endline=\"15\" id=\"exploración-de-versión-fuera-de-línea\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#exploración-de-versión-fuera-de-línea\" title=\"exploración-de-versión-fuera-de-línea\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>Exploración de versión fuera de línea\u003C/h2>\u003Cp class=\"part\" data-startline=\"17\" data-endline=\"17\">Luego de la charla con motivo del DOTS, se pensó en una variante de la Copinchapedia\u003C/p>\u003Cp class=\"part\" data-startline=\"19\" data-endline=\"19\">Las tecnologías que vamos a empezar a explorar serán:\u003C/p>\u003Cul class=\"part\" data-startline=\"21\" data-endline=\"25\">\n\u003Cli class=\"\" data-startline=\"21\" data-endline=\"21\">\u003Ca href=\"https://docutopia.tupale.co/copinchapedia:tiddlywiki#\" target=\"_blank\" rel=\"noopener\">TiddlyWiki\u003C/a>.\u003C/li>\n\u003Cli class=\"\" data-startline=\"22\" data-endline=\"22\">\u003Ca href=\"https://docutopia.tupale.co/fossil\" target=\"_blank\" rel=\"noopener\">Fossil\u003C/a>.\u003C/li>\n\u003Cli class=\"\" data-startline=\"23\" data-endline=\"23\">\u003Ca href=\"https://docutopia.tupale.co/markdown\" target=\"_blank\" rel=\"noopener\">Markdown\u003C/a>\u003C/li>\n\u003Cli class=\"\" data-startline=\"24\" data-endline=\"25\">Y migraremos desde Wiki.js\u003C/li>\n\u003C/ul>\u003Ch2 class=\"part\" data-startline=\"26\" data-endline=\"26\" id=\"instalación-de-software\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#instalación-de-software\" title=\"instalación-de-software\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>Instalación de Software\u003C/h2>\u003Cp class=\"part\" data-startline=\"29\" data-endline=\"29\">Instalaremos el gestor de paquetes \u003Ca href=\"https://scoop.sh/\" target=\"_blank\" rel=\"noopener\">Scoop\u003C/a>.\u003C/p>\u003Col class=\"part\" data-startline=\"31\" data-endline=\"43\">\n\u003Cli class=\"\" data-startline=\"31\" data-endline=\"31\">\n\u003Cp>Abrimos PowerShell.\u003C/p>\n\u003C/li>\n\u003Cli class=\"\" data-startline=\"32\" data-endline=\"43\">\n\u003Cp>Escrimos lo siguiente\u003C/p>\n\u003Cpre>\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003C/div>\u003C/code>\u003C/pre>\u
|
|
|
|
|
{"text":" \n\n\n \u003Cdiv class=\"row ui-content\" style=\"\">\n \n \u003Cdiv class=\"ui-view-area\">\n \u003C/div>\u003C/div>\u003Ch1 class=\"part\" data-startline=\"6\" data-endline=\"6\" id=\"copinchapedia\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#copinchapedia\" title=\"copinchapedia\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>Copinchapedia\u003C/h1>\u003Cp class=\"part\" data-startline=\"9\" data-endline=\"9\">\u003Ca href=\"https://copinchapedia.copincha.org/es/home\" target=\"_blank\" rel=\"noopener\">Copinchapedia\u003C/a>\n es un sitio para documentar colaborativamente el conocimiento y las \nexperiencias colectivas de creación e innovación tecnológicas que \nsuceden en la comunidad Copincha. Todo el trabajo se publica bajo una \nlicencia de atribución de Creative Commons.\u003C/p>\u003Cp class=\"part\" data-startline=\"11\" data-endline=\"11\">Por\n favor, entienda este repositorio como un documento vivo, que está \ncambiando todo el tiempo. A menudo se agregan ligeros ajustes, una \nsección completamente nueva o se elimina algo que ya no es relevante. \nAsí que espere enlaces rotos y errores de escritura ocasionales en \nmaterial nuevo. Hacemos lo mejor posible para tratar de mantenerlo \nordenado.\u003C/p>\u003Cp class=\"part\" data-startline=\"13\" data-endline=\"13\">Al \nrecopilar estos materiales, hemos tomado prestado ocasionalmente muchos \nrecursos en línea (como: textos, imágenes o ideas inspiradoras). La \nsección de reconocimiento de cada página intenta reunir el crédito para \ntodas las fuentes. Por favor, si encuentra alguna omisión o igualmente \npara brindarnos sus preguntas y comentarios, use el chat.\u003C/p>\u003Ch2 class=\"part\" data-startline=\"15\" data-endline=\"15\" id=\"exploración-de-versión-fuera-de-línea\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#exploración-de-versión-fuera-de-línea\" title=\"exploración-de-versión-fuera-de-línea\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>Exploración de versión fuera de línea\u003C/h2>\u003Cp class=\"part\" data-startline=\"17\" data-endline=\"17\">Luego de la charla con motivo del DOTS, se pensó en una variante de la Copinchapedia\u003C/p>\u003Cp class=\"part\" data-startline=\"19\" data-endline=\"19\">Las tecnologías que vamos a empezar a explorar serán:\u003C/p>\u003Cul class=\"part\" data-startline=\"21\" data-endline=\"25\">\n\u003Cli class=\"\" data-startline=\"21\" data-endline=\"21\">\u003Ca href=\"https://docutopia.tupale.co/copinchapedia:tiddlywiki#\" target=\"_blank\" rel=\"noopener\">TiddlyWiki\u003C/a>.\u003C/li>\n\u003Cli class=\"\" data-startline=\"22\" data-endline=\"22\">\u003Ca href=\"https://docutopia.tupale.co/fossil\" target=\"_blank\" rel=\"noopener\">Fossil\u003C/a>.\u003C/li>\n\u003Cli class=\"\" data-startline=\"23\" data-endline=\"23\">\u003Ca href=\"https://docutopia.tupale.co/markdown\" target=\"_blank\" rel=\"noopener\">Markdown\u003C/a>\u003C/li>\n\u003Cli class=\"\" data-startline=\"24\" data-endline=\"25\">Y migraremos desde Wiki.js\u003C/li>\n\u003C/ul>\u003Ch2 class=\"part\" data-startline=\"26\" data-endline=\"26\" id=\"instalación-de-software\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#instalación-de-software\" title=\"instalación-de-software\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>Instalación de Software\u003C/h2>\u003Cp class=\"part\" data-startline=\"29\" data-endline=\"29\">Instalaremos el gestor de paquetes \u003Ca href=\"https://scoop.sh/\" target=\"_blank\" rel=\"noopener\">Scoop\u003C/a>.\u003C/p>\u003Col class=\"part\" data-startline=\"31\" data-endline=\"43\">\n\u003Cli class=\"\" data-startline=\"31\" data-endline=\"31\">\n\u003Cp>Abrimos PowerShell.\u003C/p>\n\u003C/li>\n\u003Cli class=\"\" data-startline=\"32\" data-endline=\"43\">\n\u003Cp>Escrimos lo siguiente\u003C/p>\n\u003Cpre>\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003C/div>\u003C/code>\u003C/pre>\u
|
|
|
|
|
{"text":" \n\n\n \u003Cdiv class=\"row ui-content\" style=\"\">\n \n \u003Cdiv class=\"ui-view-area\">\n \u003C/div>\u003C/div>\u003Ch1 class=\"part\" data-startline=\"6\" data-endline=\"6\" id=\"tiddlywiki\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#tiddlywiki\" title=\"tiddlywiki\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>TiddlyWiki\u003C/h1>\u003Cp class=\"part\" data-startline=\"8\" data-endline=\"8\">Estas instrucciones muestran cómo implementar la Copinchapedia usando TiddlyWiki.\u003C/p>\u003Cp class=\"part\" data-startline=\"10\" data-endline=\"12\">Supondremos que el \u003Ca href=\"https://mutabit.com/repos.fossil/copincha/\" target=\"_blank\" rel=\"noopener\">repositorio\u003C/a> está\nguardado en la carpeta de Descargas, pues usaremos un plugin de Firefox para TiddlyWiki\nque tiene esa precondición.\u003C/p>\u003Cp class=\"part\" data-startline=\"14\" data-endline=\"16\">Creamos una carpeta \u003Ccode>copinchapedia/\u003C/code> y dentro de ella el archivo \u003Ccode>index.html\u003C/code> será\nel TiddlyWiki, de modo que si movemos dicha carpeta a un servidor web, este lea\npor omisión el archivo \u003Ccode>index.html\u003C/code>.\u003C/p>\u003Cpre class=\"part\" data-startline=\"18\" data-endline=\"21\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003C/div>\u003C/code>\u003C/pre>\u003Cpre class=\"part\" data-startline=\"18\" data-endline=\"21\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003Cdiv class=\"code\">mkdir ~/Descargas/Copincha/copinchapedia\n\u003Cspan class=\"hljs-built_in\">cd\u003C/span> ~/Descargas/Copincha/copinchapedia/\n\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cp class=\"part\" data-startline=\"23\" data-endline=\"23\">Descargamos, desde la carpeta \u003Ccode>copinchapedia/\u003C/code> una variante de TiddlyWiki que viene mejorada para dispositivos móviles:\u003C/p>\u003Cpre class=\"part\" data-startline=\"25\" data-endline=\"28\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003C/div>\u003C/code>\u003C/pre>\u003Cpre class=\"part\" data-startline=\"25\" data-endline=\"28\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003Cdiv class=\"code\">wget https://mutabit.com/repos.fossil/tiddlywiki/uv/seeds/notebook/notebook-mod.html\nmv notebook-mod.html index.html\n\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"alert alert-info part\" data-startline=\"30\" data-endline=\"31\">\n\u003Cp>\u003Cstrong>Importante\u003C/strong>: Instalamos el plugin de Firefox \u003Ca href=\"https://pmario.github.io/file-backups/\" target=\"_blank\" rel=\"noopener\">File Backups for TiddlyWiki\u003C/a> para los pasos de acá en adelante.\u003C/p>\n\u003C/div>\u003Cp class=\"part\" data-startline=\"34\" data-endline=\"35\">Abrimos el archivo \u003Ccode>copinchapedia/index.html\u003C/code> anterior desde Firefox.\nVeremos algo como esto:\u003C/p>\u003Cp class=\"part\" data-startline=\"37\" data-endline=\"37\">\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_473b5907c8fb07b718eb3a5c5573c0e2.png\" alt=\"\" class=\"\">\u003C/p>\u003Cp class=\"part\" data-startline=\"39\" data-endline=\"40\">Y cliqueamos la ruedita dentada del menú superior para acceder a la configuración y\ncolocamos el título, el subtítulo y los Tiddlers por omisión:\u003C/p>\u003Cp class=\"part\" data-startline=\"42\" data-endline=\"42\">\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_9a09abeb76faa489cbe124760c3862fc.png\" alt=\"\" class=\"\">\u003C/p>\u003Cp class=\"part\" data-startline=\"44\" data-endline=\"45\">Creamos un Tiddler de bienvenida, que será mostrado por omisión. En nuestro caso, el de Copinchapedia.\nSe vería algo así:\u003C/p>\u003Cp class=\"part\" data-startline=\"47\" data-endline=\"47\">\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_ba0c587627b18a0a84a5640a8ff0e3d6.png\" alt=\"\" class=\"\">\u003C/p>\u003Cp class=\"part\" data-startline=\"49\" data-endline=\"51\">Subimos este archivo como archivo archivo no versionado al reposit
|
|
|
|
|
{"text":" \n\n\n \u003Cdiv class=\"row ui-content\" style=\"\">\n \n \u003Cdiv class=\"ui-view-area\">\n \u003C/div>\u003C/div>\u003Ch1 class=\"part\" data-startline=\"6\" data-endline=\"6\" id=\"tiddlywiki\">\u003Ca class=\"anchor hidden-xs\" href=\"https://docutopia.tupale.co/#tiddlywiki\" title=\"tiddlywiki\" smoothhashscroll=\"\">\u003Ci class=\"fa fa-link\">\u003C/i>\u003C/a>TiddlyWiki\u003C/h1>\u003Cp class=\"part\" data-startline=\"8\" data-endline=\"8\">Estas instrucciones muestran cómo implementar la Copinchapedia usando TiddlyWiki.\u003C/p>\u003Cp class=\"part\" data-startline=\"10\" data-endline=\"12\">Supondremos que el \u003Ca href=\"https://mutabit.com/repos.fossil/copincha/\" target=\"_blank\" rel=\"noopener\">repositorio\u003C/a> está\nguardado en la carpeta de Descargas, pues usaremos un plugin de Firefox para TiddlyWiki\nque tiene esa precondición.\u003C/p>\u003Cp class=\"part\" data-startline=\"14\" data-endline=\"16\">Creamos una carpeta \u003Ccode>copinchapedia/\u003C/code> y dentro de ella el archivo \u003Ccode>index.html\u003C/code> será\nel TiddlyWiki, de modo que si movemos dicha carpeta a un servidor web, este lea\npor omisión el archivo \u003Ccode>index.html\u003C/code>.\u003C/p>\u003Cpre class=\"part\" data-startline=\"18\" data-endline=\"21\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003C/div>\u003C/code>\u003C/pre>\u003Cpre class=\"part\" data-startline=\"18\" data-endline=\"21\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003Cdiv class=\"code\">mkdir ~/Descargas/Copincha/copinchapedia\n\u003Cspan class=\"hljs-built_in\">cd\u003C/span> ~/Descargas/Copincha/copinchapedia/\n\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cp class=\"part\" data-startline=\"23\" data-endline=\"23\">Descargamos, desde la carpeta \u003Ccode>copinchapedia/\u003C/code> una variante de TiddlyWiki que viene mejorada para dispositivos móviles:\u003C/p>\u003Cpre class=\"part\" data-startline=\"25\" data-endline=\"28\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003C/div>\u003C/code>\u003C/pre>\u003Cpre class=\"part\" data-startline=\"25\" data-endline=\"28\">\u003Ccode class=\"bash hljs\">\u003Cdiv class=\"wrapper\">\u003Cdiv class=\"code\">wget https://mutabit.com/repos.fossil/tiddlywiki/uv/seeds/notebook/notebook-mod.html\nmv notebook-mod.html index.html\n\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"alert alert-info part\" data-startline=\"30\" data-endline=\"31\">\n\u003Cp>\u003Cstrong>Importante\u003C/strong>: Instalamos el plugin de Firefox \u003Ca href=\"https://pmario.github.io/file-backups/\" target=\"_blank\" rel=\"noopener\">File Backups for TiddlyWiki\u003C/a> para los pasos de acá en adelante.\u003C/p>\n\u003C/div>\u003Cp class=\"part\" data-startline=\"34\" data-endline=\"35\">Abrimos el archivo \u003Ccode>copinchapedia/index.html\u003C/code> anterior desde Firefox.\nVeremos algo como esto:\u003C/p>\u003Cp class=\"part\" data-startline=\"37\" data-endline=\"37\">\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_473b5907c8fb07b718eb3a5c5573c0e2.png\" alt=\"\" class=\"\">\u003C/p>\u003Cp class=\"part\" data-startline=\"39\" data-endline=\"40\">Y cliqueamos la ruedita dentada del menú superior para acceder a la configuración y\ncolocamos el título, el subtítulo y los Tiddlers por omisión:\u003C/p>\u003Cp class=\"part\" data-startline=\"42\" data-endline=\"42\">\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_9a09abeb76faa489cbe124760c3862fc.png\" alt=\"\" class=\"\">\u003C/p>\u003Cp class=\"part\" data-startline=\"44\" data-endline=\"45\">Creamos un Tiddler de bienvenida, que será mostrado por omisión. En nuestro caso, el de Copinchapedia.\nSe vería algo así:\u003C/p>\u003Cp class=\"part\" data-startline=\"47\" data-endline=\"47\">\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_ba0c587627b18a0a84a5640a8ff0e3d6.png\" alt=\"\" class=\"\">\u003C/p>\u003Cp class=\"part\" data-startline=\"49\" data-endline=\"51\">Subimos este archivo como archivo archivo no versionado al reposit
|
|
|
|
|
{"text":"lsdiuhclsiud\nkyutfkufkutdfkut\nytfiyt","title":"cosa para importar","tags":"","modified":"20210310194904280","created":"20210310194757129","tmap.id":"b4d4cb66-90c0-46da-af9a-fd972e467835"},
|
|
|
|
|
{"text":"ir a: https://www.the-qrcode-generator.com/","title":"Crear Codigo QR","tags":"","modified":"20210506222400704","created":"20210506222248114","tmap.id":"7372c0dd-f7d3-4192-80d6-9824827a7d17"},
|
|
|
|
|
{"text":"https://is.gd/","title":"crear enlace corto","tags":"","modified":"20210506222412873","created":"20210506222403530","tmap.id":"52df1524-8641-4199-b12c-db3570d0ed84"},
|
|
|
|
|
{"created":"20220829140136569","creator":"M0","text":"[[offline|file:./../nombre.pdf]]\n\n[ext[Local|./../nombre.pdf]]\n","tags":"registro/amor/tw/tutoriales","title":"crear enlaces a un archivo local","modified":"20220904003904400","modifier":"M0","tmap.id":"5e67d53a-74c6-4bb5-ae20-d2f47a21ee71"},
|
|
|
|
|
{"text":"* Crear un wiki personal en TiddlyWiki\n* Anotar en este mismo lugar las claridades y preguntas extra que puedar surgir de la misma.\n* ¿Qué es TiddlyWiki?\n* TiddlyWiki es un wiki personal o “libreta web personal no lineal”, como se define el proyecto a sí mismo en su página web.\n* ¿Cómo se generan enlaces específicos para los tiddlers?\n* Usamos la opción permalink del menú contextual de cada Tiddler:\n\n{{upload_ea83e1cf14de83214c8c5423a8108997.png}}\n\n\u003Cp>Esta opción se puede dejar visible permanentemente en el menú desde\n\u003Ccode>Panel de Control > Aspecto > Barra de Herramientas\u003C/code> y cliqueamos\npermalink\u003C/p>\n\u003Cp>\u003Cimg src=\"https://docutopia.tupale.co/uploads/upload_93f2f9dfa728a5109c22748b1e2981f5.png\" alt=\"\" class=\"\">\u003C/p>\n\u003C/li>\n\u003Cli class=\"\" data-startline=\"27\" data-endline=\"28\">\n\u003Cp>Cómo copiar y pegar contenidos de Tiddlers/Wikis ajenos o externos:\u003C/p>\n\u003C/li>\n\u003C/ul>\u003C/div>\n \n \u003Cdiv class=\"row ui-content\" style=\"\">\u003Cdiv class=\"ui-view-area\">\n \u003C/div>\n\u003C/div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","title":"Crear un wiki personal en TiddlyWiki","modifier":"M0","modified":"20210309002507367","creator":"M0","created":"20210307111943008","tmap.id":"a33f5400-8523-45cf-baee-509ced30a9e8"},
|
|
|
|
|
{"created":"20230305015923914","creator":"m00","text":".borderless,\n.borderless table,\n.borderless td,\n.borderless tr,\n.borderless th,\n.borderless tbody\n { border:0 !important; }\n","tags":"$:/tags/Stylesheet","title":"css--borderless","modified":"20230305020140004","modifier":"m00","type":"text/css"},
|
|
|
|
|
{"created":"20230305015818605","creator":"m00","text":"@@.borderless\n|a|b|\n|c|d|\n@@\n","tags":"","title":"css--borderless--example","modified":"20230305020209499","modifier":"m00"},
|
|
|
|
|
{"text":"24 marzo - cumple dianelis","title":"cumpleanos","tags":"","modified":"20211027072623973","created":"20211027072600103","tmap.id":"363282c4-80e1-43cd-b7f8-265d4a88882c"},
|
|
|
|
|
{"text":"!! How can I add sections to the left sidebar?\n\nAny tiddler with the system tag \u003C\u003Ctag $:/themes/nico/notebook/tags/SidebarSection>> will be displayed as a section in the left sidebar.","type":"text/vnd.tiddlywiki","title":"Customizing","revision":"0","modified":"20201211111414096","created":"20201211111245754","bag":"default","tmap.id":"b01fb90f-38d1-4fb6-a227-0cf42b40cff2"},
|
|
|
|
|
{"text":"","title":"datos personales","telefono":"+53 54115734","tags":"","segundo-apellido":"Sanabria","residencia-pais":"Cuba","residencia-ciudad":"La Habana","primer-apellido":"Haedo","nombre-completo":"{{datos personales!!nombre}} {{datos personales!!primer-apellido}} {{datos personales!!segundo-apellido}}","nombre":"Maurice","nacimiento-mes-en":"June","nacimiento-mes":"junio","nacimiento-fecha-en":"{{datos personales!!nacimiento-mes-en}} {{datos personales!!nacimiento-dia}}, {{datos personales!!nacimiento-ano}}","nacimiento-fecha":"{{datos personales!!nacimiento-dia}} de {{datos personales!!nacimiento-mes}} de {{datos personales!!nacimiento-ano}}","nacimiento-dia":"1","nacimiento-ano":"1985","modified":"20210713201510448","email":"maurice@copincha.org","direccion":"Ánimas 964, apto. 101, entre Soledad y Oquendo, Centro Habana, {{datos personales!!residencia-ciudad}}, {{datos personales!!residencia-pais}}","created":"20210629084026409","tmap.id":"cde83f4c-bcf8-4921-8997-1e4afc035669"},
|
|
|
|
|
{"text":"","title":"desde","modifier":"M0","modified":"20210310012044252","creator":"M0","created":"20210310011837831","tmap.id":"3ddc677e-7e11-4ff0-8345-b93bbabf5143"},
|
|
|
|
|
{"text":"!! Ejemplo","title":"Donacion por EnZona","tags":"[[Tipos de Donaciones]]","modifier":"M0","modified":"20210309225728774","creator":"M0","created":"20210309004009209","tmap.id":"ad65fa51-1f4a-4199-9015-555fca466f5a"},
|
|
|
|
|
{"text":"!! Ejemplo 1. Copiado de tiddlywiki\n\nHay varias formas rápidas y fáciles de realizar una donación económica inmediata. Ya sea que pueda donar solo una pequeña cantidad de vez en cuando, o hacer una contribución mensual regular o incluso una generosa contribución global, la cantidad de su donación debe reflejar su propio sentido del valor real de los beneficios que que realmente ha recibido y espera recibir en el futuro.\n\n{{smallform fine floatright borderleft center {}}} Si ha recibido ayuda directa con un problema específico, ya sea publicado en línea, por correo electrónico privado, durante una sesión de chat de video en vivo de TiddlyWiki Classic Clinic, o si mis respuestas a otros te ha ayudado a arreglar o mejorar tu documento; o, si solo desea mostrar su agradecimiento por mis esfuerzos, considere hacer donaciones ocasionales a mi \"tarro de propinas\" de PayPal.\n\n{{smallform fine floatright borderleft center {}}} También puede hacer un compromiso mensual recurrente para ayudar a respaldar la asistencia continua a la comunidad en su conjunto, así como ayudar a financiar esfuerzos futuros, al mismo tiempo que brinda un compromiso a largo plazo más consistente y confiable flujo de ingresos a lo largo del tiempo. Nota: solo se necesita una cuenta de PayPal para suscribirse al procesamiento mensual automático de promesas. Si no tiene una cuenta de PayPal, aún puede usar una tarjeta de crédito / débito para hacer donaciones individuales manualmente en mi \"tarro de propinas\" de PayPal.\n\nSi desea evitar el servicio de PayPal por completo, puede enviar un cheque personal, un cheque de caja o un giro postal, o hacer una transferencia bancaria directa de banco a banco. Comuníquese conmigo por correo electrónico para solicitar mi dirección postal y / o los detalles de la ruta de pago (código BICS / SWIFT). \n\n\u003Ccenter>\n\n\u003Ctable class=\"borderless\">\u003Ctr valign=\"center\">\u003Ctd>\n\u003Cform action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\" target=\"_blank\" style=\"padding:0;margin:0;\">\n\u003Cinput type=\"hidden\" name=\"cmd\" value=\"_xclick\">\n\u003Cinput type=\"hidden\" name=\"business\" value=\"elsdesign@gmail.com\">\n\u003Cinput type=\"hidden\" name=\"item_name\" value=\"TiddlyTools Donation\">\n\u003Cinput type=\"hidden\" name=\"no_shipping\" value=\"0\">\n\u003Cinput type=\"hidden\" name=\"cn\" value=\"Your feedback is appreciated!\">\n\u003Cinput type=\"hidden\" name=\"tax\" value=\"0\">\n\u003Cinput type=\"hidden\" name=\"lc\" value=\"US\">\n\u003Cinput type=\"hidden\" name=\"bn\" value=\"PP-DonationsBF\">\n\u003Cinput type=\"hidden\" name=\"currency_code\" value=\"USD\">\n\u003Ctable class=\"borderless\">\u003Ctr valign=\"bottom\">\u003Ctd>\n\t\u003Ci>Make a donation to the \"tip jar\":\u003C/i>\u003Cbr>\n\t\u003Cinput type=\"text\" value=\"$25.00\" name=\"amount\" maxlength=\"16\" size=\"24\" id=\"amount\"/>\u003C!--\n\t-->\u003Cinput type=\"submit\" name=\"submit\" value=\" donate \">\u003Cbr>\n\t\u003Ci>(use a credit/debit card or PayPal account)\u003C/i>\n\u003C/td>\u003C/tr>\u003C/table>\n\u003C/form>\n\u003C/td>\u003C/tr>\u003C/table>\n\n\u003Ctable class=\"borderless\">\u003Ctr valign=\"center\">\u003Ctd>\n\u003Cform action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\" target=\"_blank\" style=\"padding:0;margin:0;\">\n\u003Cinput type=\"hidden\" name=\"cmd\" value=\"_s-xclick\">\n\u003Cinput type=\"hidden\" name=\"hosted_button_id\" value=\"E26HYJJQTW87E\">\n\u003Cinput type=\"hidden\" name=\"currency_code\" value=\"USD\">\n\u003Ctable class=\"borderless\">\u003Ctr valign=\"bottom\">\u003Ctd>\n\t\u003Ci>Make a recurring pledge:\u003C/i>\u003Cbr>\n\t\u003Cinput type=\"hidden\" name=\"on0\" value=\"Contribution Level\">\n\t\u003Cselect name=\"os0\">\n\t\t\u003Coption selected=\"selected\" value=\"gold\">select a pledge level...\u003C/option>\n\t\t\u003Coption value=\"bronze\">$10.00/month (bronze)\u003C/option>\n\t\t\u003Coption value=\"silver\">$20.00/month (silver)\u003C/option>\n\t\t\u003Coption value=\"gold\">$30.00
|
|
|
|
|
{"text":"!! Ejemplo","title":"Donacion por TransferMovil","tags":"[[Tipos de Donaciones]]","modifier":"M0","modified":"20210309225350998","creator":"M0","created":"20210309001832601","tmap.id":"9148fe98-6924-474e-ba13-db9ee3f7fa36"},
|
|
|
|
|
{"text":"Esta es una pagina para construir una forma de donacion para proyectos en Cuba.\nUsando PayPal y TrasferMovil. Para garantizar donaciones lo mismo dentro que fuera de la isla\n\n* donacion simple por PayPal\n* donacion regular por PayPal\n\n* donacion simple por TansferMovil\n* donacion regular por TransferMovil\n\n* donacion simple por EnZona\n* donacion regular por EnZona\n\n---\nTemas de interes\n\n* como dividir un tiddler en 2 campos\n\n* las donaciones deben ir a un registro en un archivo JSON.\n\n* dejar un mensaje\n* dejar nombre \n* registrar en un json\n\n---\n\n! Donacion por PayPal\n{{Donacion por PayPal}}\n\n! Donacion por TransferMovil\n{{Donacion por TransferMovil}}\n\n! Donacion por EnZona\n{{Donacion por EnZona}}\n\n\n\n","title":"Donaciones","tags":"[[Formato de texto]]","modifier":"M0","modified":"20210309224555558","creator":"M0","created":"20210308233354129","tmap.id":"8e44830f-d5ff-4e29-9679-ce8d2d4e8827"},
|
|
|
|
|
{"modified":"20220820183113226","modifier":"M0","title":"Draft of 'Julia' by M0","tmap.id":"916042eb-7607-40b6-9d7d-34ca69d28981","text":""},
|
|
|
|
|
{"modified":"20230306015252026","modifier":"m00","title":"Draft of 'm00--projects' by m00"},
|
|
|
|
|
{"modified":"20230304174200484","modifier":"M0","title":"Draft of 'm00--proyectos' by M0","tmap.id":"0f4c3adc-87b3-49c9-bb3a-7dceda4f1c7a","text":""},
|
|
|
|
|
{"modified":"20220820223543095","modifier":"M0","title":"Draft of 'personalizacion' by M0","tmap.id":"7b446c71-07ea-4c6f-9071-5f76d6d08c81","text":""},
|
|
|
|
|
{"created":"20230305001622682","text":"\u003C$echarts $text={{code}}/>","tags":"","title":"ejemplo","modified":"20230305003326343"},
|
|
|
|
|
{"created":"20211205070457562","text":"","title":"felixhayashi/vis","modified":"20211216094447780","tags":"$:/tags/PluginWiki","type":"text/vnd.tiddlywiki","icon":"[img height=50px [https://visjs.org/images/visjs_logo.png]]","page-cover":"https://almende.github.io/vis/images/wall.png","cpl.title":"$:/plugins/felixhayashi/vis","cpl.author":"Felix Küppers","cpl.name":"Visjs","cpl.description":"TiddlyWiki5 plugin for the vis.js library","cpl.uri":"http://tiddlymap.org/index.html","cpl.readme":"! TW5-Vis.js\n\nA tiddlywiki plugin for the vis.js library.\n\n---\n\n! Notes on Copyright\n\n!! TiddlyWiki\n\nCreated by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007 Copyright © UnaMesa Association 2007-2014\n\nPublished under the following [licenses](https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses):\n\n1. BSD 3-clause \"New\" or \"Revised\" License (including any right to adopt any future version of a license if permitted)\n2. Creative Commons Attribution 3.0 (including any right to adopt any future version of a license if permitted)\n\n!! The **vis.js** library\n\nCopyright (c) 2014 [Almende B.V.](https://github.com/almende/vis)\n\nPublished under the following licenses:\n\n1. Apache License Version 2.0, January 2004 http://www.apache.org/licenses/\n2. MIT License (MIT)\n","cpl.source":"https://github.com/felixhayashi/TW5-Vis.js","cpl.documentation":"","cpl.core-version":">=5.0.0","cpl.plugin-type":"plugin","revision":"0","bag":"default"},
|
|
|
|
|
{"created":"20220820045524439","creator":"M0","text":"","tags":"","title":"fondo-de-pagina","modified":"20220820050258180","modifier":"M0","type":"image/svg+xml","_canonical_uri":"./medios/imagenes/grilla.svg","tmap.id":"1b65023a-55d1-4dc9-92b9-546522bf92e0"},
|
|
|
|
|
{"text":"","title":"Formato de texto","tags":"Contenidos","orden":"2","modifier":"M0","modified":"20210309232533985","creator":"M0","created":"20210309224419340","tmap.id":"00cb963f-b96a-401f-a4db-ecbcda4a1d08"},
|
|
|
|
|
{"text":"! Instalamos fossil\n\n! Clonamos el repositorio dentro de la carpeta downloads\n\n```\n$ fossil clone https://mutabit.com/repos.fossil/copincha/copincha.fossil\n\n```\n!! Abrimos el repositorio\n\n```\n$ fossil open --force copincha.fossil\n```\n\n! Actualizamos la pagina\n\n\n```\nrepo/microwikis/palaminga.html\n```\n\n\nSustituimos la pagina en \n\n```\n$ fossil uv add repo/microwikis/palaminga.html\n```\n!!! !! Sincronizamos con el servidor remoto\n\n```\n$ fossil uv sync -v https://user@mutabit.com/repos.fossil/copincha/\n\n```","title":"fossil - Instalacion","tags":"","modified":"20210506231406638","created":"20210506223019414","tmap.id":"e1ab322f-2330-4307-8a25-9a485210be8e"},
|
|
|
|
|
{"text":"{{M0-bio}}\n\n{{M0-datos personales - ingles}}","title":"GIG - personal information","tags":"","modified":"20210713194925170","created":"20210629083400776","tmap.id":"cb1f9c9f-702c-40b2-8a3c-79ac884ef83d"},
|
|
|
|
|
{"text":"Ubicarse en la carpeta del repositorio\n\n```\ncd E:\\proyectos\\jardines-digitales\n```\n\nIdentificarse\n\n* declarar usuario\n\n```\ngit config --global user.name \"M0\"\n```\n* declarar correo\n\n```\ngit config --global user.email \"maurice@copincha.org\"\n```\n\n```\n* git add ...\n```\n\n```\n* git commit -m \"...\"\n```\n\nsubir archivos en la rama master\n\n* chequear que estamos en la rama master\n\n```\ngit checkout master\n```\n\n```\ngit push origin master\n```\n\n\n","title":"Git","tags":"","modified":"20211018053502535","created":"20211016024800908","tmap.id":"e332c6d2-0627-496f-a6b5-2905026265c9"},
|
|
|
|
|
{"created":"20211225175018014","creator":"Sttot","text":"","title":"Gk0Wk/echarts","modified":"20211231031143917","modifier":"Sttot","tags":"$:/tags/PluginWiki","type":"text/vnd.tiddlywiki","page-cover":"https://tc9011.com/assets/images/Echarts%E6%94%B9%E9%80%A0%E4%B9%8B%E5%8A%A8%E6%80%81%E6%98%BE%E7%A4%BA/banner.png","icon":"📊","cpl.title":"$:/plugins/Gk0Wk/echarts","cpl.author":"Gk0Wk","cpl.name":"ECharts","cpl.description":"ECharts for TiddlyWiki5","cpl.uri":"https://tiddly-gittly.github.io/tw-echarts/library/recipes/library/tiddlers/%2524%253A%252Fplugins%252FGk0Wk%252Fecharts.json","cpl.readme":"\u003C$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\">\n\u003C$list filter=\"[\u003Clang>search[zh]]\">\n\n将强大的可视化工具 [[ECharts|https://echarts.apache.org/zh/index.html]] 以优雅的方式与 TiddlyWiki 相结合。\n\n插件说明与使用教程较长,请参考 https://tiddly-gittly.github.io/tw-echarts/\n\n\u003C/$list>\n\n\u003C$list filter=\"[\u003Clang>!search[zh]]\">\n\nCombines the powerful visualization tool [[ECharts|https://echarts.apache.org/en/index.html]] with TiddlyWiki in an elegant way.\n\nThe plugin description and tutorial is long, please refer to https://tiddly-gittly.github.io/tw-echarts/\n\n\u003C/$list>\n\u003C/$list>\n\n[img[https://tc9011.com/assets/images/Echarts%E6%94%B9%E9%80%A0%E4%B9%8B%E5%8A%A8%E6%80%81%E6%98%BE%E7%A4%BA/banner.png]]","cpl.source":"https://github.com/tiddly-gittly/tw-echarts","cpl.documentation":"https://tiddly-gittly.github.io/tw-echarts/","cpl.core-version":">=5.2.0","cpl.plugin-type":"plugin","revision":"0","bag":"default"},
|
|
|
|
|
{"created":"20220903233126046","creator":"M0","text":"Conuco es el espacio de cultivo de laboratorios de participacon comunitaria, en los que se van colectivizando los recursos de manera sistematica para el desarrollo de proyectos, y eventos, en torno a alguna tematica de interes colectivo.\n","tags":"","title":"glosario/conuco","modified":"20220904155634255","modifier":"M0","tmap.id":"10bca6da-7a47-43ee-a70d-fa6c1fd51872"},
|
|
|
|
|
{"created":"20220904010621001","creator":"M0","text":"{{glosario/copincha/resumen}} \u003Cbr> \u003Cbr> En la jerga local cubana, \"pincha\" significa trabajo. Copincha así se traduce como trabajo colaborativo.","modified":"20220904165029641","modifier":"M0","title":"glosario/copincha","tags":"","tmap.id":"b8d7af5d-77ba-42a6-9878-b0303e1bfbc3"},
|
|
|
|
|
{"created":"20220904165021446","creator":"M0","text":"Copincha es un [[hackerspace]] ubicado en Centrohabana. Fomenta la participacion comunitaria a traves de la experimentacion colaborativa de [[codigo abierto|https://es.wikipedia.org/wiki/C%C3%B3digo_abierto]].","modified":"20220904182542874","modifier":"M0","title":"glosario/copincha/resumen","tags":"","tmap.id":"f8b3814f-fe16-47a1-b580-5083affb6b19"},
|
|
|
|
|
{"text":"https://mutabit.com/repos.fossil/indieweb/uv/docs/es/miniwiki/indieweb-brea.html","title":"grafoscopedia","tags":"","modified":"20210506222603523","created":"20210506222509661","tmap.id":"6316073f-bd9d-4462-b68d-615d1e04a148"},
|
|
|
|
|
{"text":"","title":"Guyana","tags":"","stream-type":"default","stream-list":"Guyana/20220321003516413","modified":"20220321003523794","created":"20220321003506497","tmap.id":"3d108e60-7b11-4304-82e6-f430eff86ada"},
|
|
|
|
|
{"text":"Las tres cosas que debes hacer mañana lunes son:","title":"Guyana/20220321003516413","stream-type":"default","stream-list":"Guyana/20220321003522536 Guyana/20220321003529588 Guyana/20220321003534930","parent":"Guyana","modified":"20220321003534932","created":"20220321003516418","tmap.id":"27c13e74-b1d3-42bf-a48b-4b94ce006081"},
|
|
|
|
|
{"text":"1) la vacuna (lo más importante!)","title":"Guyana/20220321003522536","stream-type":"default","stream-list":"","parent":"Guyana/20220321003516413","modified":"20220321003529595","created":"20220321003522540","tmap.id":"b0aab29b-8e6a-4f16-aa77-5bb3418fd0fd"},
|
|
|
|
|
{"text":"2) llamar la embajada de Bahamas para ver si necesitas visa por vuelo de conexión. Si te dicen si pregunta cuánto demora el proceso","title":"Guyana/20220321003529588","stream-type":"default","stream-list":"","parent":"Guyana/20220321003516413","modified":"20220321003534933","created":"20220321003529591","tmap.id":"208cf0c6-1ec9-4110-80c3-0818568fcf18"},
|
|
|
|
|
{"text":"3) sacar los antecedentes penales","title":"Guyana/20220321003534930","stream-type":"default","stream-list":"","parent":"Guyana/20220321003516413","modified":"20220321003534932","created":"20220321003534932","tmap.id":"81befddb-77fe-401a-b9e1-6a636e0bfe50"},
|
|
|
|
|
{"created":"20220903193224931","creator":"M0","text":"Los hackerspaces son lugares físicos gestionados por la comunidad, en los que la gente comparte su interés por trastear con la tecnología, se reúne y trabaja en sus proyectos, y aprende de los demás.\n\nhttps://hackerspaces.org/","title":"hackerspace","modified":"20220903230811573","modifier":"M0","tmap.id":"7bb75b9f-7458-40bf-b8ec-4fb513e9d2c8"},
|
|
|
|
|
{"text":"\u003Cstyle>\n.info { padding: 14px 42px 14px 42px; background-color: #FFFAF0; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; }\n\u003C/style>","title":"info style","tags":"","modified":"20210204193322088","created":"20210204193301279","tmap.id":"d895c7c4-9d13-43a9-b1a9-0df82cd05c14"},
|
|
|
|
|
{"created":"20220830013259579","creator":"M0","text":"\u003Ciframe width=\"100%\" height=\"400\" src={{!!src}} frameborder=\"0\" id=\"EmbeddedView-Iframe-128187\" allowfullscreen>\u003C/iframe>","tags":"registro/amor/tw/tutoriales","title":"insertar-objeto-3d","modified":"20220904003904400","modifier":"M0","type":"text/vnd.tiddlywiki","stream-list":"insertar-objeto-3d/20220830042530518 insertar-objeto-3d/20220830042627756","stream-type":"default","src":"./medios/128187.html","tmap.id":"dbc7f431-8b85-49de-8c08-c63e1f151e77"},
|
|
|
|
|
{"created":"20220830042530520","creator":"M0","text":"hacer que el background sea el del tiddler,. que quede alpha","parent":"insertar-objeto-3d","stream-type":"default","stream-list":"insertar-objeto-3d/20220830042559004","modified":"20220830042914736","modifier":"M0","title":"insertar-objeto-3d/20220830042530518","tmap.id":"5b237ea5-530c-4ddc-8ee8-89bed284a3dd"},
|
|
|
|
|
{"created":"20220830042559006","creator":"M0","parent":"insertar-objeto-3d/20220830042530518","stream-type":"default","modified":"20220830042914535","modifier":"M0","title":"insertar-objeto-3d/20220830042559004","text":"o negro,.","tmap.id":"da86c839-f748-46cf-9031-62e92207dca4"},
|
|
|
|
|
{"created":"20220830042627758","creator":"M0","parent":"insertar-objeto-3d","stream-type":"default","modified":"20220830042914737","modifier":"M0","title":"insertar-objeto-3d/20220830042627756","text":"crear un macro para simplificar la insercion de pieza,.","tmap.id":"6b6f58f7-ef6c-433c-9b47-1306c2ae58f2"},
|
|
|
|
|
{"text":"{{info style}}\n\n!! Desde el navegador web\n\n* Cliquea el botón el botón \u003C\u003Cicon {{$:/core/images/save-button}} \"\">> de la barra principal, que puede estar localizada en distintas ubicaciones (a la derecha o abajo o incluso oculta) dependiendo del dispositivo desde donde estés navegando este tema y el tamaño de la ventana.\n\n* Dependiendo de tu configuración del navegador, éste te indicará la ruta donde quieres descargarlo o lo enviará directamente a la carpeta de descargas.\n\n@@.info\nSi quieres usar la extensión de Firefox [[File Backups|https://mutabit.com/repos.fossil/indieweb/uv/docs/es/miniwiki/indieweb-brea.html#File%20Backups%20plugin]] para guardar futuros cambios en tu wiki, debes almacenar el wiki en la carpeta de \"Descargas\" (esta podría llamarse \"Downloads\" o de otra manera, dependiendo del idioma y otros aspectos de la configuración de nuestro sistema operativo). \n@@\n\n!! Desde la consola de comandos\n\nEntra a la carpeta donde quieras hacer la descarga (por ejemplo `Descargas`) y desde allí\nejecuta (debes tener instalado [[wget|https://es.wikipedia.org/wiki/GNU_Wget]] o \n[[curl|https://en.wikipedia.org/wiki/CURL]] para esto):\n\n```shell\nwget https://mutabit.com/repos.fossil/tiddlywiki/uv/seeds/notebook/notebook-mod.html\n```\nó:\n\n```shell\ncurl -o miwiki.html https://mutabit.com/repos.fossil/tiddlywiki/uv/seeds/notebook/notebook-mod.html\n```\n\nen la opción con curl `miwiki.html` puede ser cambiada por el nombre que deseemos.\n\n!! Desde [[Pharo|https://pharo.org]]\n\nAbre un [[Playground|https://github.com/pharo-open-documentation/pharo-wiki/blob/master/General/Playground.md]] y ejecuta:\n\n```objectivec\n'https://mutabit.com/repos.fossil/tiddlywiki/uv/seeds/notebook/notebook-mod.html' asUrl saveContentsToFile: (FileLocator home/'Descargas/miwiki.html')\n```\n\nObserva que la última parte es a dónde quieres descargar el wiki y que, consistente con los ejemplos anteriores, la hemos venido colocando en una ruta dentro de la carpeta \"Descargas\".","title":"Instalación","tags":"","modified":"20210212175829759","created":"20210115160755295","tmap.id":"a84e2339-d5e9-4fe7-9164-8cf2edc2e6b1"},
|
|
|
|
|
{"text":"!! Theme and plugin installation\n\nDrag the following tiddlers into your wiki to import them:\n\n{{$:/plugins/nico/notebook-mobile||$:/core/ui/Components/plugin-info}}\n{{$:/themes/nico/notebook||$:/core/ui/Components/plugin-info}}\n\n!! Setup\n\n* Set the theme to `Notebook`\n* Set the colour palette to either `Notebook grey`, `Notebook beige`, or `Notebook dark`. Alternatively, click the {{$:/themes/nico/notebook/ui/Buttons/SwitchPalette}} button.\n","type":"text/vnd.tiddlywiki","title":"Install","revision":"0","modified":"20201231135458282","created":"20201211110738465","bag":"default","tmap.id":"981dfaf9-089c-429b-808c-803b11f38e06"},
|
|
|
|
|
{"text":"","title":"joihoiug;ouh;iu","modifier":"M0","modified":"20210310012347921","creator":"M0","created":"20210310012344739","tmap.id":"548b4940-78a7-44fd-928d-137db1b65b87"},
|
|
|
|
|
{"created":"20220903161527768","creator":"M0","text":"!! Precious Plastic La Habana\n\nDescripcion:\n\nSoluciones a la contaminacion plastica. Red alternativa de reiclaje a pequena escala.","title":"Lab1","modified":"20220903163130502","modifier":"M0","tmap.id":"4be1e2f2-e9a0-4600-a543-777a7d02bdf2"},
|
|
|
|
|
{"created":"20220903163342129","creator":"M0","text":"Copincha es una comunidad para el diseno de codigo abierto.\n\nfunciona en la casa de maurice . \n\nY es una comunidad aboerta y colaborativa.\n\nTienen montado su prpio server ,.\n\nesto es muy interesante,.\n\n las herramientas que tiene el server sirven para editar textos en linea de forma publica y abierta. \n \n la han usado para el laboratorio. ","tags":"","title":"Lab2","modified":"20220903163532317","modifier":"M0","tmap.id":"4274a34d-8b25-4a74-9f7b-e176bc3decc7"},
|
|
|
|
|
{"created":"20220903163548681","creator":"M0","text":"Copincha es una comunidad para el diseno de codigo abierto.\n\nfunciona en la casa de maurice .\n\nY es una comunidad aboerta y colaborativa.","tags":"","title":"Lab3","modified":"20220903163616397","modifier":"M0","type":"","tmap.id":"6064e193-fb55-4683-a08d-7fe1add7295e"},
|
|
|
|
|
{"created":"20220903163710765","creator":"M0","text":"Copincha es una comunidad para el diseno de codigo abierto. funciona en la casa de maurice . Y es una comunidad aboerta y colaborativa. Tienen montado su prpio server ,. esto es muy interesante,. las herramientas que tiene el server sirven para","tags":"","title":"Lab4","modified":"20220903163717453","modifier":"M0","tmap.id":"25ff0901-2634-48b3-a0e7-16acceb97e20"},
|
|
|
|
|
{"text":"Mi nombre es {{datos personales!!nombre-completo}}, soy diseñador industrial,y vivo en {{datos personales!!residencia-ciudad}}, {{datos personales!!residencia-pais}}.\n\nPor los últimos 8 años trabajé en una empresa cubana dedicada a la reparación de montacargas, aportándoles valores de reparabilidad y versatilidad en su fabricación, y también a sus piezas de repuestos.\n\nEn mi trabajo, yo que hay desafio el afan capitalista de hacer de la reparacion algo obsoleto. Sostengo que es posible configurar un futuro sostenible reconfigurando lo que ya tenemos.\n\nPor este motivo, desde hace tres años convertí mi casa en Centro Habana, en un laboratorio popular, llamado \u003Ca href={{copincha - datos!!facebook}}>Copincha\u003C/a>, para extender estas prácticas desde la colaboración abierta, las prácticas trans-disciplinares y la participación ciudadana.\n\n{{M0-bio-proyectos}}\n\n","type":" ","title":"M0-bio","tags":"","modified":"20210713203903332","created":"20210629083322002","tmap.id":"e374a62a-8113-41b7-924b-726acde8bca8"},
|
|
|
|
|
{"text":"!! Copincha. \nEs un hackerspace, un esapcio autogestionado, para encontrarse y compartir conocimientos, y sobre practicas y proyectos tecnologicos. \n\nRealizamos encuatro llamados cafes\n\n!!! Cafe Sorpresa. \n\nResumen\n\nFotos\n\n!!! Cafe Reparador. R\n\nResumen\n\nFotos\n\n!!! Cafe Viaje en casa. \n\nResumen\n\nFotos\n\n!!! Copinchapedia. \n\nResumen\n\nFotos\n\n!!! Precious Plastic La Habana. \n\nResumen\n\nFotos\n\n!! Plastic Leal. \n\nLaboratorio para fomentar la participacion ciudadana en el reciclado d eplastico. \n\n\n\n\n\n\n\n\n\n\n\n\n\n","title":"M0-bio-proyectos","tags":"","modified":"20210713201505563","created":"20210713192449530","tmap.id":"4d4191be-59a1-4ef0-bc74-2ca7786eade1"},
|
|
|
|
|
{"text":"!! Nombre Completo\n{{datos personales!!nombre-completo}}\n\n!! Fecha de nacimiento\n{{datos personales!!nacimiento-fecha}}\n\n!!Ciudad de residencia\n\n{{datos personales!!residencia-ciudad}}\n\n!! Email\n{{datos personales!!email}}\n\n!! Teléfono\n{{datos personales!!telefono}}\n\n!! Dirección\n{{datos personales!!direccion}}","title":"M0-datos personales - español","tags":"","modified":"20210713192344041","created":"20210629091359656","tmap.id":"6fafa178-6f60-4d80-9fa4-4f6ebb4246f7"},
|
|
|
|
|
{"text":"!! Fullname\n{{datos personales!!nombre-completo}}\n\n!! Birthday\n{{datos personales!!nacimiento-fecha-en}}\n\n!!City or residence\n\n{{datos personales!!residencia-ciudad}}\n\n!! Email\n{{datos personales!!email}}\n\n!! Phone number\n{{datos personales!!telefono}}\n\n!! Adress\n{{datos personales!!direccion}}\n","title":"M0-datos personales - ingles","tags":"","modified":"20210713192332259","created":"20210629091418568","tmap.id":"47259581-648e-4d89-8a4e-5d3fa67d52ef"},
|
|
|
|
|
{"created":"20220517042707057","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Bio|m00--bio]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>\n","title":"m00","modified":"20230306015226737","modifier":"m00","stream-type":"default","stream-list":" ","page-cover":"./medios/imagenes/encabezado.jpg","tmap.id":"bc0d17d2-386c-40e8-b962-6eaffb4ba457"},
|
|
|
|
|
{"created":"20220820175145414","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[CV|m00--cv]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\n\u003C/center>\n\n{{m00--bio--about}}\n","title":"m00--bio","modified":"20230306015841948","modifier":"m00","stream-list":"m00--bio/20220820175531751 m00--bio/20220820175623327 m00--bio/20220820175732893 m00--bio/20220820180501194 m00--bio/20220820180511366","stream-type":"default","page-cover":"","caption":"","type":"text/vnd.tiddlywiki","tmap.id":"a85867ca-b42f-45b9-a963-d3ca2d90da74"},
|
|
|
|
|
{"created":"20230304173317514","creator":"M0","text":"Lorem ipsum dolor sit amet, cu sit recusabo omittantur, nulla putant luptatum per in, has soluta graeco corpora cu. Ad vim ubique mucius conceptam, vel eu doming audiam. Et vix probatus atomorum petentium. Iisque antiopam reprimique ad eum. Agam sonet menandri no mea.","modified":"20230304223923573","modifier":"M0","title":"m00--bio--about","tags":"m00--bio","tmap.id":"23566759-c0aa-493c-9fad-a53ea80fe89e"},
|
|
|
|
|
{"created":"20220820175219342","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930136","modifier":"M0","title":"m00--bio/20220820175219338","text":"presentacion en suiza","tmap.id":"9fcd1f1e-7902-4a40-ad30-373e9248915b"},
|
|
|
|
|
{"created":"20220820175224641","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223931939","modifier":"M0","title":"m00--bio/20220820175224639","text":"presentacion UK ","tmap.id":"59455544-7c03-4686-8b7c-23e4375dcff8"},
|
|
|
|
|
{"created":"20220820175241277","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223931939","modifier":"M0","title":"m00--bio/20220820175241275","text":"Presentacion en Habitat","tmap.id":"362ef0d9-03b6-4322-9e2c-85dc88233416"},
|
|
|
|
|
{"created":"20220820175247329","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930136","modifier":"M0","title":"m00--bio/20220820175247326","text":"Presentacion en escuela electronica informatica","tmap.id":"ea1c39e4-5d82-430b-b6ec-453772f8f4e4"},
|
|
|
|
|
{"created":"20220820175307880","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930137","modifier":"M0","title":"m00--bio/20220820175307878","text":"Presentacion en facultad de fisica","tmap.id":"f0588782-2f8f-4253-bc87-f41305a53eed"},
|
|
|
|
|
{"created":"20220820175341178","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930137","modifier":"M0","title":"m00--bio/20220820175341175","text":"Presentacion en ciudad inteligente","tmap.id":"e31bd2e4-d831-4709-b5ab-4254f77ba773"},
|
|
|
|
|
{"created":"20220820175404857","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930137","modifier":"M0","title":"m00--bio/20220820175404853","text":"Ars electronica","tmap.id":"500332c8-e33f-4ff4-8481-773a5683621b"},
|
|
|
|
|
{"created":"20220820175416140","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930137","modifier":"M0","title":"m00--bio/20220820175416136","text":"laboratorio de artes escenicas les","stream-list":"m00--bio/20220820175444164","tmap.id":"6ce205e3-7c8b-462b-9a77-961d3dde66ac"},
|
|
|
|
|
{"created":"20220820175427853","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930138","modifier":"M0","title":"m00--bio/20220820175427850","text":"fiesta del aguacate","tmap.id":"01ffcd0f-a930-45bf-a2fc-60309caaab66"},
|
|
|
|
|
{"created":"20220820175444167","creator":"M0","parent":"m00--bio/20220820175416136","stream-type":"default","modified":"20230304223927813","modifier":"M0","title":"m00--bio/20220820175444164","text":"atelier de la libreta 1","tmap.id":"cec51f44-d823-4944-998c-dbcb6214269c"},
|
|
|
|
|
{"created":"20220820175509795","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223930138","modifier":"M0","title":"m00--bio/20220820175509793","text":"entrevista el toque","tmap.id":"d0c31367-012e-4608-a921-f2b3bc72f3c5"},
|
|
|
|
|
{"created":"20220820175520597","creator":"M0","parent":"m00--bio/20220820175623327","stream-type":"default","modified":"20230304223941858","modifier":"M0","title":"m00--bio/20220820175520594","text":"entrevistas","stream-list":"m00--bio/20220828151553645 m00--bio/20220820175538026 m00--bio/20220820175549623 m00--bio/20220828151510578","tmap.id":"14a55766-7e94-4d2e-856e-4f6960f61543"},
|
|
|
|
|
{"created":"20220820175525401","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223936438","modifier":"M0","title":"m00--bio/20220820175525399","text":"entrevista lowtech lab","stream-list":"m00--bio/20220820175854232 m00--bio/20220820180314934","tmap.id":"dae55bdb-e336-4f6f-93d6-cd0cbeb42e9e"},
|
|
|
|
|
{"created":"20220820175531753","creator":"M0","parent":"m00--bio","stream-type":"default","modified":"20230304223936876","modifier":"M0","title":"m00--bio/20220820175531751","text":"Copincha","stream-list":"m00--bio/20220820175219338 m00--bio/20220820175247326 m00--bio/20220820175307878 m00--bio/20220820175341175 m00--bio/20220820175404853 m00--bio/20220820175416136 m00--bio/20220820180354708 m00--bio/20220820175427850 m00--bio/20220820175525399 m00--bio/20220820175509793 m00--bio/20220820180235987 m00--bio/20220820180138265","tmap.id":"ca2efab2-7596-42ec-bf71-0e098246e919"},
|
|
|
|
|
{"created":"20220820175538029","creator":"M0","parent":"m00--bio/20220820175520594","stream-type":"default","modified":"20230304223930140","modifier":"M0","title":"m00--bio/20220820175538026","text":"turquia TRT World","tmap.id":"915770f3-a379-4e27-a1d1-576d068e8dae"},
|
|
|
|
|
{"created":"20220820175549625","creator":"M0","parent":"m00--bio/20220820175520594","stream-type":"default","modified":"20230304223930575","modifier":"M0","title":"m00--bio/20220820175549623","text":"canal habana - ruta10","tmap.id":"79b76b66-c4c4-4110-b9bc-738975a3eb50"},
|
|
|
|
|
{"created":"20220820175558271","creator":"M0","parent":"m00--bio/20220820175825002","stream-type":"default","modified":"20230304223932846","modifier":"M0","title":"m00--bio/20220820175558267","text":"FANJ - que hacemos con el plastico en cuba","tmap.id":"adeaed5b-9879-490f-b474-5d3050fb0860"},
|
|
|
|
|
{"created":"20220820175623330","creator":"M0","parent":"m00--bio","stream-type":"default","modified":"20230304223932846","modifier":"M0","title":"m00--bio/20220820175623327","text":"Precious Plastic La Habana","stream-list":"m00--bio/20220820175224639 m00--bio/20220820175241275 m00--bio/20220820175520594 m00--bio/20220820175825002","tmap.id":"555bd0c7-a63e-4215-8189-beeb4e7ce2cc"},
|
|
|
|
|
{"created":"20220820175732896","creator":"M0","parent":"m00--bio","stream-type":"default","modified":"20230304223942791","modifier":"M0","title":"m00--bio/20220820175732893","text":"Trabajo","stream-list":"m00--bio/20220828151658670","tmap.id":"17e07b79-2b6e-496d-8bbe-6288a0429332"},
|
|
|
|
|
{"created":"20220820175825005","creator":"M0","text":"Eventos","parent":"m00--bio/20220820175623327","stream-type":"default","stream-list":"m00--bio/20220828151641656 m00--bio/20220820175558267","modified":"20230304223942349","modifier":"M0","title":"m00--bio/20220820175825002","tmap.id":"a3153dfb-27d2-4616-bc09-09c35cfb38a8"},
|
|
|
|
|
{"created":"20220820175854237","creator":"M0","text":"entorevista 1","parent":"m00--bio/20220820175525399","stream-type":"default","stream-list":"","modified":"20230304223932847","modifier":"M0","title":"m00--bio/20220820175854232","tmap.id":"2e91cd8d-2078-40e2-9473-5e52f1b4101a"},
|
|
|
|
|
{"created":"20220820180126808","creator":"M0","parent":"m00--bio/20220820180235987","stream-type":"default","modified":"20230304223935536","modifier":"M0","title":"m00--bio/20220820180126805","text":"o2 miami","tmap.id":"cd018d3a-8833-40d4-9c92-8647d67c09ff"},
|
|
|
|
|
{"created":"20220820180133721","creator":"M0","parent":"m00--bio/20220820180235987","stream-type":"default","modified":"20230304223935957","modifier":"M0","title":"m00--bio/20220820180133718","text":"cubacreativa","stream-list":"m00--bio/20220820180248486","tmap.id":"ba485ee2-d741-48a5-a356-03ea755507f3"},
|
|
|
|
|
{"created":"20220820180138268","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223935061","modifier":"M0","title":"m00--bio/20220820180138265","text":"taller suiza","stream-list":"m00--bio/20220820180149362","tmap.id":"3aafbfd3-b4ce-4e5f-9f38-6411b6df1fc1"},
|
|
|
|
|
{"created":"20220820180149365","creator":"M0","parent":"m00--bio/20220820180138265","stream-type":"default","modified":"20230304223934605","modifier":"M0","title":"m00--bio/20220820180149362","text":"arts","tmap.id":"06c50346-fe15-4ee3-896b-90ffd37f4675"},
|
|
|
|
|
{"created":"20220820180235990","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223935062","modifier":"M0","title":"m00--bio/20220820180235987","text":"Nestor","stream-list":"m00--bio/20220820180126805 m00--bio/20220820180133718","tmap.id":"dd7be601-061d-4b83-9e83-3c836f658693"},
|
|
|
|
|
{"created":"20220820180248490","creator":"M0","parent":"m00--bio/20220820180133718","stream-type":"default","modified":"20230304223935537","modifier":"M0","title":"m00--bio/20220820180248486","text":"trapiche","tmap.id":"b0cb6e97-4348-460c-b3e8-323640cbde80"},
|
|
|
|
|
{"created":"20220820180314938","creator":"M0","parent":"m00--bio/20220820175525399","stream-type":"default","modified":"20230304223935957","modifier":"M0","title":"m00--bio/20220820180314934","text":"entrevista 2","tmap.id":"670c7426-bd9e-4bfc-9e07-758be9524487"},
|
|
|
|
|
{"created":"20220820180354711","creator":"M0","parent":"m00--bio/20220820175531751","stream-type":"default","modified":"20230304223936439","modifier":"M0","title":"m00--bio/20220820180354708","text":"atelier de la libreta 2","tmap.id":"fc1e34c2-fbf3-444a-8c23-a4086e1d3745"},
|
|
|
|
|
{"created":"20220820180501196","creator":"M0","parent":"m00--bio","stream-type":"default","modified":"20230304223938762","modifier":"M0","title":"m00--bio/20220820180501194","text":"cupula bastarda","stream-list":"m00--bio/20220828150605574","tmap.id":"5b77feef-a3dc-451d-8ba4-b2da37ad5568"},
|
|
|
|
|
{"created":"20220820180511368","creator":"M0","parent":"m00--bio","stream-type":"default","modified":"20230304223938327","modifier":"M0","title":"m00--bio/20220820180511366","text":"ritualistic technology ","stream-list":"m00--bio/20220828150535165","tmap.id":"4f237c67-dbbe-4e02-8608-10a0152ef89b"},
|
|
|
|
|
{"created":"20220828150535168","creator":"M0","parent":"m00--bio/20220820180511366","stream-type":"default","modified":"20230304223939652","modifier":"M0","title":"m00--bio/20220828150535165","text":"Marilyn Wolkman","stream-list":"m00--bio/20220828151242814","tmap.id":"86015fed-0ece-4d73-976c-708fc6686752"},
|
|
|
|
|
{"created":"20220828150605576","creator":"M0","parent":"m00--bio/20220820180501194","stream-type":"default","modified":"20230304223939199","modifier":"M0","title":"m00--bio/20220828150605574","text":"maria rojas capapey ","stream-list":"m00--bio/20220828151220953","tmap.id":"4fdb6961-a42c-4002-99b2-8208485649f5"},
|
|
|
|
|
{"created":"20220828151220956","creator":"M0","text":"https://isauniversidaddelasartes.wordpress.com/2012/05/17/cupula-bastarda/","parent":"m00--bio/20220828150605574","stream-type":"default","stream-list":"","modified":"20230304223938764","modifier":"M0","title":"m00--bio/20220828151220953","tmap.id":"8c30b893-6626-48b4-a272-652006da9887"},
|
|
|
|
|
{"created":"20220828151242817","creator":"M0","text":"https://marilynvolkman.com/section/495094-RITUALISTIC-TECHNOLOGY-2019-Havana.html","parent":"m00--bio/20220828150535165","stream-type":"default","stream-list":"","modified":"20230304223939199","modifier":"M0","title":"m00--bio/20220828151242814","tmap.id":"04d9d041-9f10-4864-9ae3-74250aca01aa"},
|
|
|
|
|
{"created":"20220828151336658","creator":"M0","parent":"m00--bio/20220820175732893","stream-type":"default","modified":"20230304223939652","modifier":"M0","title":"m00--bio/20220828151336655","text":"montacargas diesel 2,5 t","tmap.id":"0290b77b-8e8e-484c-8a72-0450b0fe2cd5"},
|
|
|
|
|
{"created":"20220828151345130","creator":"M0","parent":"m00--bio/20220820175732893","stream-type":"default","modified":"20230304223940089","modifier":"M0","title":"m00--bio/20220828151345129","text":"montacargas diesel 5 t","tmap.id":"b61df9f3-db5e-4889-bf3d-ef91907d070e"},
|
|
|
|
|
{"created":"20220828151351166","creator":"M0","parent":"m00--bio/20220820175732893","stream-type":"default","modified":"20230304223940527","modifier":"M0","title":"m00--bio/20220828151351165","text":"montacargas electrico 2,5 t","tmap.id":"52d270de-a2dc-4e56-aa18-c3fa21970d3a"},
|
|
|
|
|
{"created":"20220828151510580","creator":"M0","parent":"m00--bio/20220820175520594","stream-type":"default","modified":"20230304223940972","modifier":"M0","title":"m00--bio/20220828151510578","text":"revista matutina","tmap.id":"d5419997-9404-4ec0-8910-1db41431f7c0"},
|
|
|
|
|
{"created":"20220828151553647","creator":"M0","text":"Revista alma mater","parent":"m00--bio/20220820175520594","stream-type":"default","stream-list":"","modified":"20230304223941426","modifier":"M0","title":"m00--bio/20220828151553645","tmap.id":"93ccbdb3-cf9e-42a9-827b-e83bd2548141"},
|
|
|
|
|
{"created":"20220828151641659","creator":"M0","text":"FANJ - semana del plastico","parent":"m00--bio/20220820175825002","stream-type":"default","stream-list":"","modified":"20230304223941858","modifier":"M0","title":"m00--bio/20220828151641656","tmap.id":"4b5885e9-ebec-4e7d-a226-7a2b75720011"},
|
|
|
|
|
{"created":"20220828151658673","creator":"M0","text":"Moncar - montacargas","parent":"m00--bio/20220820175732893","stream-type":"default","stream-list":"m00--bio/20220828151336655 m00--bio/20220828151345129 m00--bio/20220828151351165","modified":"20230304223942349","modifier":"M0","title":"m00--bio/20220828151658670","tmap.id":"53b29d1c-f785-424a-ac5b-c52970b5360f"},
|
|
|
|
|
{"created":"20220820181407536","creator":"M0","text":"\u003Ccenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[CV|m00--cv]]\n\n\u003Cbr>\n\u003C/center>\n\n''E-mail:'' \n\n[[maurice@copincha.org|mailto://maurice@copincha.org]]\n\n\u003Cbr>\n\n''Web:''\n\nhttps://copincha.org/m00\n\n\u003Cbr>\n\n''Instagram:''\n\n[[@maurihaedo|https://www.instagram.com/maurihaedo]]\n\n\u003Cbr>\n\n''Facebook:''\n\nhttps://www.facebook.com/maurihaedo\n\n\u003Cbr>\n\n''Tel/Whatsapp/Signal:'' \n\n+53 54115734\n\n\u003Cbr>\n\n''Twitter:'' \n\n@mauricehaedo\n\n\u003Cbr>\n\n''Git:''\n\nhttps://git.copincha.org/m00","title":"m00--contact","stream-list":"","modified":"20230306015338637","modifier":"m00","stream-type":"default","tmap.id":"14c220b3-ea0b-49c0-b144-362c3c506f00"},
|
|
|
|
|
{"created":"20220904214651438","creator":"M0","title":"m00--contact/20220820181412481","stream-list":"","modified":"20230304223848818","modifier":"M0","tmap.id":"fddbd775-d5b3-462a-bd03-84ad7bf87708","text":""},
|
|
|
|
|
{"created":"20220904214658885","creator":"M0","text":"","parent":"m00--contact","stream-type":"default","stream-list":"m00/contacto/20220820181647579","modified":"20230304223849322","modifier":"M0","title":"m00--contact/20220904214658883","tmap.id":"06149683-09e5-41b8-b481-511c904b176c"},
|
|
|
|
|
{"created":"20210309155723483","creator":"M0","text":"{{moo--bio--cv}}\n\n\u003C!--\n\ncenter>\n\n\u003Cbr>\n\n[[Home|m00]] | [[Bio|m00--bio]] | [[Contact|m00--contact]]\n\n\u003Cbr>\n\u003C/center>\n\n@@.borderless\n|^ {{m00--cv/copincha/logo-button}} |^ {{m00--cv/pphlab/logo-button}} |\n|^ \u003Ch3>Copincha\u003C/h3> |^ \u003Ch3>Precious Plastic Habana Lab\u003C/h3> |\n|^ {{glosario/copincha/resumen}} |^ {{glosario/copincha/resumen}} |\n@@\n\n-->","title":"m00--cv","tags":"m00","modifier":"m00","modified":"20230306015525786","stream-list":"m00--cv/20220820232310672","stream-type":"default","tmap.id":"c468526f-4467-408c-8b75-49f48aaf78b5"},
|
|
|
|
|
{"created":"20220904145745091","creator":"M0","title":"m00--cv/20220820174548627","stream-list":"","modified":"20230306015238864","modifier":"m00","tmap.id":"0605eeb8-fa0b-4f07-abe6-f5c39450bc2b","text":""},
|
|
|
|
|
{"created":"20220904061434853","creator":"M0","title":"m00--cv/20220820221722596","stream-list":"","modified":"20230306015239319","modifier":"m00","tmap.id":"949a198c-e512-4812-b032-e0d1eef6c201","text":""},
|
|
|
|
|
{"created":"20220820232310677","creator":"M0","text":"","parent":"m00--cv","stream-type":"default","stream-list":"proyectos/20220820221841837","modified":"20230306015239779","modifier":"m00","title":"m00--cv/20220820232310672","tmap.id":"4c5c8022-90a6-45f2-930a-922cd9866ce2"},
|
|
|
|
|
{"created":"20220903182940273","creator":"M0","text":"","parent":"m00--cv/20220903190821935","stream-type":"default","stream-list":"proyectos/20220820190850498 proyectos/20220820185827056","modified":"20230306015241575","modifier":"m00","title":"m00--cv/20220903182940269","tmap.id":"b7406ad8-d72f-4bfb-84f1-12b1d42850e8"},
|
|
|
|
|
{"created":"20220903185754860","creator":"M0","title":"m00--cv/20220903183618384","stream-list":"","modified":"20230306015240677","modifier":"m00","tmap.id":"e4d74519-801d-4eec-a89b-8edc5114fdc5","text":""},
|
|
|
|
|
{"created":"20220904145635485","creator":"M0","title":"m00--cv/20220903190821935","stream-list":"","modified":"20230306015241131","modifier":"m00","tmap.id":"e94e7e92-d530-4e1a-89d9-def94b36b687","text":""},
|
|
|
|
|
{"created":"20220903191656361","creator":"M0","parent":"proyectos/20220903191546252","stream-type":"default","modified":"20230306015241575","modifier":"m00","title":"m00--cv/20220903191656359","text":"Hacer las cosas por uno mismo. Maker, Hacker, Reparar, fabricacion digital.","tmap.id":"daf4694f-ac36-46fd-b863-bfffdaddf95f"},
|
|
|
|
|
{"created":"20220904021808491","creator":"M0","text":"!!! Conucos\n{{glosario/conuco}}\n\n!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D\n\n!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]\n\n!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU\n\n!!!!Precious Plastic La Habana\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://pph.copincha.org]]\n\n!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Nativa\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\n!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","parent":"proyectos/20220904021815056","stream-type":"default","stream-list":"proyectos/20220820174338102 proyectos/20220820190000798 m00--cv/20220903182940269 proyectos/20220820174228756 proyectos/20220820174317522 proyectos/20220820203751069 proyectos/20220820174720887 proyectos/20220820185718652","modified":"20230306015242048","modifier":"m00","title":"m00--cv/20220904021808488","tmap.id":"bb738879-2c0a-430d-9a5c-00334388cfb7"},
|
|
|
|
|
{"created":"20220903184359628","creator":"M0","text":"\u003C\u003Cslider3 label:\"Resumen\" src:\"\n{{proyectos/copincha/resumen}}\"\nstatus:\"close\">>\n\n\u003C\u003Cslider3 label:\"Caracteristicas\" src:\"\n {{proyectos/copincha/caracteristicas}}\" status:\"close\">>\n \n\u003C\u003Cslider3 label:\"Conucos\" src:\"\n {{proyectos/copincha/conuco}}\" status:\"close\">>\n\n\u003C\u003Cslider3 label:\"Wiki\" src:\"\n{{proyectos/copincha/wiki}}\"\nstatus:\"close\">>","stream-type":"default","stream-list":"","modified":"20230306015242552","modifier":"m00","title":"m00--cv/copincha","tags":"m00--cv","caption":"Copincha","tmap.id":"405b1906-32af-4de0-9a25-502076a5813f"},
|
|
|
|
|
{"created":"20220904015131893","creator":"M0","text":"Hacer por ti mismo, hacker, maker, reparar","tags":"","title":"m00--cv/copincha/caracteristica/diy","modified":"20230306015243026","modifier":"m00","tmap.id":"ad4bc2f5-bd3c-46f3-8ea7-a82384daf9af"},
|
|
|
|
|
{"created":"20220904020053824","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo-opensource}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Codigo Abierto\u003C/h3> |^ \u003Ch3>Redundante\u003C/h3> |\n|^ Accesible\u003Cbr>Transparente\u003Cbr>Extensibile\u003Cbr>Replicable\u003Cbr>Intersticial |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>Circular\u003C/h3> |^ \u003Ch3>Modular\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Recombinable\u003Cbr>Reusable\u003Cbr>Ahorrador |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>DIY\u003C/h3> |^ \u003Ch3>Sostenible\u003C/h3> |\n|^ {{m00--cv/copincha/caracteristica/diy}} |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n\n\n","modified":"20230306015250709","modifier":"m00","title":"m00--cv/copincha/caracteristicas","tags":"m00--cv/copincha","caption":"Caracteristicas","tmap.id":"8efed0fb-2565-4444-b3fd-94d294b514a0"},
|
|
|
|
|
{"created":"20220903184352357","creator":"M0","text":"{{glosario/conuco}}\n\n\u003Cbr>\n\n|table-borderless|k\n| {{m00--cv/copincha/logo}} | {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Fablab Copincha|m00--cv/copincha/conuco/fablab-copincha]]\u003C/h3> |^ \u003Ch3>[[Precious Plastic La Habana|proyectos/copincha/conuco/precious-plastic-la-habana]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged.|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[3D A Lo Cubano|m00--cv/copincha/conuco/3d-a-lo-cubano]]\u003C/h3> |^ \u003Ch3>[[Cubacreativa|m00--cv/copincha/conuco/cubacreativa]]\u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[Arts|m00--cv/copincha/conuco/arts]]\u003C/h3> |^ \u003Ch3>[[Punto de Acceso|m00--cv/copincha/conuco/punto-de-acceso]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} |\n|^ \u003Ch3>[[SeaCamp|m00--cv/copincha/conucos/seacamp]]\u003C/h3> |^ \u003Ch3>[[Uso Racional de Energia|m00--cv/copincha/conuco/uso-racional-de-energia]] \u003C/h3> |\n|^ ^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |^ Simply run the binary for your platform, ship it with Docker, or get it packaged. |\n| \u003Cbr>\u003Cbr>\u003Cbr> {{m00--cv/copincha/logo}} | \u003Cbr>\u003Cbr>\u003Cbr> |\n|^ \u003Ch3>[[Cartografia De Bolsillo|m00--cv/copincha/conuco/cartografia-de-bolsillo]]\u003C/h3> |^ \u003Ch3> \u003C/h3> |\n|^ Simply run the binary for your platform, ship it with Docker, or get it packaged. | |","title":"m00--cv/copincha/conuco","modified":"20230306015249865","modifier":"m00","tags":"m00--cv/copincha","caption":"Conucos","tmap.id":"4f20ba53-01ca-47f6-912e-a6ccc483ee79"},
|
|
|
|
|
{"created":"20220904151644798","creator":"M0","modified":"20230306015244355","modifier":"m00","title":"m00--cv/copincha/conuco/3d-a-lo-cubano","text":"!!!!3D a lo Cubano\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nImpresora 3D\n\nExtrusor de filamento\n\nFilamento\n\nImpresion 3D","tags":"","tmap.id":"49d98e58-a801-46a8-a5ac-8cce42cd95bf"},
|
|
|
|
|
{"created":"20220904152340333","creator":"M0","modified":"20230306015244834","modifier":"m00","title":"m00--cv/copincha/conuco/arts","text":"!!!!Arts\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://arts.copincha.org]]","tags":"","tmap.id":"2369bf4c-ac1b-4f55-9cb1-19ef338f9d59"},
|
|
|
|
|
{"created":"20220904154257190","creator":"M0","modified":"20230306015245277","modifier":"m00","title":"m00--cv/copincha/conuco/cartografia-de-bolsillo","text":"!!!Cartografia de bolsillo\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"26f84e46-5aa8-4506-b934-dd279dc3bcd8"},
|
|
|
|
|
{"created":"20220904151834157","creator":"M0","text":"!!!! Cubacreativa\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]\n\nTrapiche.CU","modified":"20230306015245717","modifier":"m00","title":"m00--cv/copincha/conuco/cubacreativa","tags":"","tmap.id":"3fa54a62-fcc5-447e-946b-a09645d12a0c"},
|
|
|
|
|
{"created":"20220904152129428","creator":"M0","modified":"20230306015246219","modifier":"m00","title":"m00--cv/copincha/conuco/fablab-copincha","text":"!!!!Fablab Copincha\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"1f6bfaec-c3ab-4183-b89f-50998281335f"},
|
|
|
|
|
{"created":"20220904185441847","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic-la-habana","modified":"20230306015246646","modifier":"m00","tmap.id":"c757d206-31de-405c-b8f0-8ab12b3a4609"},
|
|
|
|
|
{"created":"20220904185600963","creator":"M0","text":"","title":"m00--cv/copincha/conuco/precious-plastic/lab","modified":"20230306015247049","modifier":"m00","tmap.id":"6ec4252a-ff93-4cc3-8aed-272a2c0b3f70"},
|
|
|
|
|
{"created":"20220904151739909","creator":"M0","modified":"20230306015247481","modifier":"m00","title":"m00--cv/copincha/conuco/punto-de-acceso","text":"!!!! Punto de acceso\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://puntodeaceso.copincha.org]]","tags":"","tmap.id":"b786b8a8-83a7-4c35-8647-47830ef4aea2"},
|
|
|
|
|
{"created":"20220904152145100","creator":"M0","modified":"20230306015247920","modifier":"m00","title":"m00--cv/copincha/conuco/red-verde","text":"!!!!Red Verde\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","tags":"","tmap.id":"c4c2d99f-51c9-4dfa-b78c-a4d91707aba9"},
|
|
|
|
|
{"created":"20220904152317020","creator":"M0","text":"!!!!Uso racional de la energia\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://copincha.org]]","modified":"20230306015248402","modifier":"m00","title":"m00--cv/copincha/conuco/uso-racional-de-energia","tags":"","tmap.id":"82445dbf-0d72-4993-ac78-a10155fdf778"},
|
|
|
|
|
{"created":"20220904154351422","creator":"M0","text":"","title":"m00--cv/copincha/conucos/seacamp","modified":"20230306015248846","modifier":"m00","tmap.id":"525b8ffe-a221-4f46-a804-2083fb7afa35"},
|
|
|
|
|
{"created":"20220904011312573","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo","modified":"20230306015249308","modifier":"m00","tmap.id":"e39328bc-724b-47d6-b13d-bfdbdd3ceffb"},
|
|
|
|
|
{"created":"20220904165503276","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr> \u003C$button message=\"tm-open-external-window\" param=\"https://copincha.org\" class=\u003C\u003Ctv-config-toolbar-class>>> \u003Cimg src=\"./medios/imagenes/copincha-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/copincha/logo-button","modified":"20230306015249865","modifier":"m00","tmap.id":"7634655e-4540-4ceb-b227-cb7af3e8b2bf"},
|
|
|
|
|
{"created":"20220904183622572","creator":"M0","text":"\u003Cimg src=\"./medios/imagenes/copincha-caracteristica-opensource.png\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">","tags":"","title":"m00--cv/copincha/logo-opensource","modified":"20230306015250279","modifier":"m00","tmap.id":"21e22d5a-9eff-460d-a4eb-5e760ac7bfb0"},
|
|
|
|
|
{"created":"20220904054742786","creator":"M0","text":"|table-borderless|k\n| {{m00--cv/copincha/logo}} |\n| \u003Cbr> {{glosario/copincha}} |","modified":"20230306015250709","modifier":"m00","title":"m00--cv/copincha/resumen","tags":"m00--cv/copincha","caption":"Resumen","tmap.id":"680536ec-c05c-4d4a-9d54-8f59b402821f"},
|
|
|
|
|
{"created":"20220904060035529","creator":"M0","text":"* [ext[Local|./micelio/copincha/index.html]]\n\n* [[Remoto|https://copincha.org]]","modified":"20230306015251141","modifier":"m00","title":"m00--cv/copincha/wiki","tags":"m00--cv/copincha","caption":"Wiki","tmap.id":"bb858ccc-393d-45a2-9a80-a69f6397cf62"},
|
|
|
|
|
{"created":"20220904185648099","creator":"M0","text":"\u003Cimg src=\"\" style=\"width: 100px; border-radius: 50%;border:0px solid rgb(255,255,255);\">\n\n\u003Ccenter>\u003Cbr>\u003C$button message=\"Copincha\" message=\"tm-open-external-window\" param=\"https://pph.copincha.org/\" class=\u003C\u003Ctv-config-toolbar-class>>>\u003Cimg src=\"./medios/imagenes/proyecto-laboratorio-pph-logo.jpg\" style=\"width: 100px; border-radius: 50%;border:2px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"m00--cv/pphlab/logo-button","modified":"20230306015251559","modifier":"m00","tmap.id":"9f478e11-054b-497c-8363-7079b07d1c4a"},
|
|
|
|
|
{"text":"! Tareas","title":"m00/20210923120044899","stream-type":"default","stream-list":"m00/20210923120049350","parent":"m00","modified":"20230304222713759","created":"20210923120044902","modifier":"M0","tmap.id":"1051314c-aeb2-4072-8b76-55af3c4b2fb6"},
|
|
|
|
|
{"text":"actualizar wiki a 5.2","title":"m00/20210923120049350","stream-type":"default","parent":"m00/20210923120044899","modified":"20230304222713251","created":"20210923120049354","modifier":"M0","tmap.id":"e721f48e-5529-4f66-b733-d0d5ae7536e6"},
|
|
|
|
|
{"text":"","title":"m00/20210923120617965","stream-type":"default","stream-list":"m00/20210923120617965/20210923120629416","parent":"m00","modified":"20230304222714758","created":"20210923120617972","modifier":"M0","tmap.id":"7314cf29-8598-4e02-a018-e49e4e264abc"},
|
|
|
|
|
{"text":"","title":"m00/20210923120617965/20210923120629416","stream-type":"default","stream-list":"","parent":"m00/20210923120617965","modified":"20230304222714275","created":"20210923120629418","modifier":"M0","tmap.id":"2e969565-3863-42d3-ac5d-3501826cd226"},
|
|
|
|
|
{"text":"| 2 tbsp \t\t\t\t | Olive Oil\t|\n| 1ts \t\t\t\t\t\t | Lime Juice |\n| 1 1/2 tsp\t\t\t\t | Curry \t\t\t|\n| 1 tsp \t\t\t\t | Chili \t\t\t|\n| 1/2 tsp\t\t \t\t\t | Salt\t\t\t\t|\n| 1/2 tsp \t\t\t\t | Paprika\t\t|","title":"Magic Sauce","tags":"receta","modified":"20210923114703360","created":"20210923112603837","tmap.id":"5d01638a-a919-4ba6-b599-9554fc55b1d3"},
|
|
|
|
|
{"created":"20230304173125795","creator":"M0","text":"MAURICE HAEDO SANABRIA\n----------------------\n\nDesigner / Mender / Inventor / Maker / Hacker / Community Builder\n\n\nÁnimas 964-101, entre Soledad y Oquendo\nCentrohabana, La Habana, 10100\n\n+53 54115734\n\nmaurice@copincha.org\n\n\n\nPROFESSIONAL EXPERIENCES\n------------------------\n\n2020 – present: Head of Precious Plastic La Habana, Havana, Cuba\n\n2018 - present: Head of Copincha Hackerspace, Havana, Cuba\n\n2022: Lecturer at International Colloquium Ciudadanías Digitales, Pontífica Universidad Javeriana, Bogotá, Colombia\n\n2022: Participant in a joint workshop on open-source production of injection molds for plastic recycling, Synergy CrossCulture Programm, Institut für Auslandsbeziehungen, Dresden, Germany\n\n2022: Artist-in-residence at Laboratorio Precious Plastic Habana, New Media Arts Residency Program, Centro Cultural Habana Espacios Creativos, Oficina del Historiador de la ciudad de La Habana, Havana, Cuba\n\n2022: Product designer of an open-source solar-powered device for transmitting poetry via Wi-Fi for the exhibit \"Connectify/Free_Wi-Fi [poetry]\" at O, Miami Poetry Festival, Miami, USA\n\n2022: Product designer of an open-source model of a sugarcane juicing mill for the exhibit \"Cubacreativa [TRAPICHE]\" at Site de rencontre avec l’art Cuba - Québec, Musée d'art de Rouyn-Noranda (MA), Québec, Canada\n\n2021: Artist at the \"Disconnected Experiences” Cuba Garden at Ars Electronica Festival, Linz, Austria\n\n2021: Lecturer at the seminar \"#pinchandolaburbuja\" seminar in Punto de Acceso forum organized by Nestor Siré with funding from the German Embassy in Havana, Havana, Cuba\n\n2021: Lecturer at \"Packaging Across Networks\" international workshop, Lucerne School of Art and Design, Lucerne, Switzerland\n\n2021: Lecturer at \"Our City Our Space\" international forum, PlacemakingX - Chevening Alumni Program Fund, Havana, Cuba\n\n2015 – 2018: Research & Development Department, Top Mechanical Design Specialist, Industrial Designer, forklift design for local reparability, MONCAR, Havana, Cuba\n\n2014: Lecturer at the International Design Congress of Havana, FORMA 2014, Havana, Cuba\n\n\n\nEDUCATION\n---------\n\n2022: Diploma in \"Hypertextual memory, community learning and moldable digital tools\" from Mutabit, Bogotá, Colombia\n\n2000 - 2005: BA in Industrial Design from Instituto Superior de Diseno, Universidad de La Habana, Havana, Cuba\n\n\n\nPRIZES\n------\n\n2018: Design Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba\n\n2018: Quality Prize for a MCD-25 2,5 t diesel forklift, Cubaindustria Industrial Fair, Havana, Cuba","modified":"20230304223923578","modifier":"M0","title":"moo--bio--cv","tags":"m00--bio","type":"text/plain","tmap.id":"490f8978-01b0-4871-a261-1c7ba2cb404d"},
|
|
|
|
|
{"text":"","title":"Nestor","tags":"","stream-type":"default","stream-list":"Nestor/20220320162923878 Nestor/20220320163644785 Nestor/20220320163945008 Nestor/20220320165154859 Nestor/20220320164246847","modified":"20220320165321242","created":"20220320162853230","tmap.id":"92c759c0-f5f6-425c-9616-3fff589746ae"},
|
|
|
|
|
{"text":"TW","title":"Nestor/20220320162923878","stream-type":"default","stream-list":"Nestor/20220320163148202 Nestor/20220320162935684 Nestor/20220320163054007 Nestor/20220320163107484","parent":"Nestor","modified":"20220320163158889","created":"20220320162923880","tmap.id":"d0182662-6a89-4bbf-9d25-2e13f4c837ef"},
|
|
|
|
|
{"text":"encontrar la manera de organizar los tiddlers usando las direcciones o ruts de archivo","title":"Nestor/20220320162935684","stream-type":"default","parent":"Nestor/20220320162923878","modified":"20220320163152673","created":"20220320162935691","tmap.id":"3144fcbb-242c-4709-8112-12d7768ed610"},
|
|
|
|
|
{"text":"crear repo en gitea de copincha y en github","title":"Nestor/20220320163054007","stream-type":"default","stream-list":"","parent":"Nestor/20220320162923878","modified":"20220320163155762","created":"20220320163054018","tmap.id":"9edf3d6f-0202-4ee9-90f8-579a7c6d9d19"},
|
|
|
|
|
{"text":"ir automatizando el proceso","title":"Nestor/20220320163107484","stream-type":"default","parent":"Nestor/20220320162923878","modified":"20220320163158892","created":"20220320163107487","tmap.id":"799b744c-422b-46f1-9fcb-acfd1f38a85b"},
|
|
|
|
|
{"text":"Solucionar el problema de los metadatos","title":"Nestor/20220320163148202","stream-type":"default","stream-list":"","parent":"Nestor/20220320162923878","modified":"20220320163150231","created":"20220320163148210","tmap.id":"12dcd33c-8054-4d47-9889-954d61ffd88f"},
|
|
|
|
|
{"text":"20 de abril ","title":"Nestor/20220320163644785","stream-type":"default","stream-list":"Nestor/20220320163708240","parent":"Nestor","modified":"20220320163952402","created":"20220320163644796","tmap.id":"643ecac0-04b7-4f42-8cbe-9bf789a86fd5"},
|
|
|
|
|
{"text":"trabajr en tw","title":"Nestor/20220320163708240","stream-type":"default","parent":"Nestor/20220320163644785","modified":"20220320163736946","created":"20220320163708246","tmap.id":"10bcbb53-ab3b-4527-a762-1cde359f9e75"},
|
|
|
|
|
{"text":"Guarapera","title":"Nestor/20220320163945008","stream-type":"default","stream-list":"Nestor/20220320163953626 Nestor/20220320164256776","parent":"Nestor","modified":"20220320165202107","created":"20220320163945012","tmap.id":"269e476d-32e9-4715-a5b3-9635b1bb4d1f"},
|
|
|
|
|
{"text":"Automatizar el modelo para cortar plasma","title":"Nestor/20220320163953626","stream-type":"default","parent":"Nestor/20220320163945008","modified":"20220320164502228","created":"20220320163953633","tmap.id":"b7f97869-3ad5-4a72-abb5-9683c680fa99"},
|
|
|
|
|
{"text":"Impresoras 3D","title":"Nestor/20220320164246847","stream-type":"default","stream-list":"Nestor/20220320165320074 Nestor/20220320165326863 Nestor/20220320165433722 Nestor/20220320170459225 Nestor/20220320170901136 Nestor/20220320170907467","parent":"Nestor","modified":"20220320170907478","created":"20220320164246854","tmap.id":"81430c22-b83c-4941-bb85-6865794fb59b"},
|
|
|
|
|
{"text":"Terminar el manual","title":"Nestor/20220320164256776","stream-type":"default","parent":"Nestor/20220320163945008","modified":"20220320164513692","created":"20220320164256785","tmap.id":"c120976e-ebba-4c08-9e16-f34c5a9c47c6"},
|
|
|
|
|
{"text":"Conuco digital","title":"Nestor/20220320165154859","stream-type":"default","stream-list":"Nestor/20220320165219612 Nestor/20220320165227719 Nestor/20220320165230784 Nestor/20220320165233057 Nestor/20220320165237221","parent":"Nestor","modified":"20220320165257460","created":"20220320165154865","tmap.id":"d4eecea0-34e2-4989-9b9d-62c303e481d0"},
|
|
|
|
|
{"text":"cubacreativa","title":"Nestor/20220320165219612","stream-type":"default","parent":"Nestor/20220320165154859","modified":"20220320165227504","created":"20220320165219614","tmap.id":"c77c6cf3-7e93-443a-9f40-bef080405615"},
|
|
|
|
|
{"text":"cpinchapedia","title":"Nestor/20220320165227719","stream-type":"default","parent":"Nestor/20220320165154859","modified":"20220320165230597","created":"20220320165227726","tmap.id":"56a74be6-0375-40e3-8f72-719eca06426a"},
|
|
|
|
|
{"text":"oroza","title":"Nestor/20220320165230784","stream-type":"default","parent":"Nestor/20220320165154859","modified":"20220320165232818","created":"20220320165230791","tmap.id":"c3b6d659-3478-4ac8-abde-0a62249d393e"},
|
|
|
|
|
{"text":"precious plastic","title":"Nestor/20220320165233057","stream-type":"default","parent":"Nestor/20220320165154859","modified":"20220320165236945","created":"20220320165233066","tmap.id":"002ad0e1-b493-4c7a-9519-6306f122d086"},
|
|
|
|
|
{"text":"punto de acceso","title":"Nestor/20220320165237221","stream-type":"default","parent":"Nestor/20220320165154859","modified":"20220320165252498","created":"20220320165237224","tmap.id":"8609739f-527f-4f9e-8470-254f9d50650f"},
|
|
|
|
|
{"text":"reunion con radames","title":"Nestor/20220320165320074","stream-type":"default","stream-list":"","parent":"Nestor/20220320164246847","modified":"20220320165342413","created":"20220320165320077","tmap.id":"988fe673-ab3a-4ad5-af2b-bd7c87b2a032"},
|
|
|
|
|
{"text":"encontrar las piezas para armar 1 maquina (lo que se busca en cuba) (lo que se busca afuera)","title":"Nestor/20220320165326863","stream-type":"default","parent":"Nestor/20220320164246847","modified":"20220320165428654","created":"20220320165326873","tmap.id":"57d8c053-978b-41ce-bd39-85082f81c3a3"},
|
|
|
|
|
{"text":"organizar el proyecto en terminos de presupuesto","title":"Nestor/20220320165433722","stream-type":"default","parent":"Nestor/20220320164246847","modified":"20220320170458816","created":"20220320165433725","tmap.id":"db080fc0-6319-413b-84c5-90aac90920f3"},
|
|
|
|
|
{"text":"enfocar el proyecto minimo 3 maquinas","title":"Nestor/20220320170459225","stream-type":"default","parent":"Nestor/20220320164246847","modified":"20220320170632872","created":"20220320170459228","tmap.id":"c20ffc32-630d-40ed-837a-85b1ee968b8a"},
|
|
|
|
|
{"text":"ver embajadas","title":"Nestor/20220320170901136","stream-type":"default","parent":"Nestor/20220320164246847","modified":"20220320170906940","created":"20220320170901138","tmap.id":"555cbbff-0dca-4e70-b123-a5a3dd399128"},
|
|
|
|
|
{"text":"","title":"Nestor/20220320170907467","stream-type":"default","parent":"Nestor/20220320164246847","modified":"20220320170907475","created":"20220320170907475","tmap.id":"0fb34505-6b0c-4952-9f33-6d480f5a37d5"},
|
|
|
|
|
{"text":"logo\nproblema espacio esperimental\nsensorica ovn \nred social cripto\nconvertir hedgedog en tiddler\n\nescoba\narreglar tomas y linea de la cocina\n220\nsacar dinero\nbombillos 10\n\njuego de cuchillos\njuego de tijeras\ncerradura\nsensor anicubic\nmascara gas \npalo trapear\nadaptador usb\ncales usb movil todos tipos\ndriver pupuo\n\n\ntiddlywiki\nagregar contenido\n\nagregar funcionalidad\n\ndonde sientas que tengas mas sentido tener tu wiki personal\n\n4 resistencias\n4 control pid industrial\nver transformador,... ver motor rpm entrada\n","title":"notas recuperadas","tags":"","modified":"20210923101800556","created":"20210923085401851","tmap.id":"a25be1e7-23e8-4fd2-87d1-9b91fee5683d"},
|
|
|
|
|
{"text":"\u003C$link to=\"$:/themes/nico/notebook/LICENSE\">\u003C\u003Cshield label:License status:MIT>>\u003C/$link>\n\u003C$link to=\"$:/themes/nico/notebook\">\u003C\u003Cshield label:Release status:{{$:/themes/nico/notebook!!version}}a colour:purple>>\u003C/$link>\n\u003Ca href=\"https://tiddlywiki.com\">\u003C\u003Cshield label:~TiddlyWiki status:5.1.22+ colour:blue>>\u003C/a>\n\nNotebook Mod es una modificación al [[tema Notebook|Notebook theme]] para [[TiddlyWiki|https://tiddlywiki.com]],\nque preserva varias de sus características:\n\n* Es un tema limpio y despejado.\n* Es un tema //responsive// (adaptativo) que viene con soporte para móviles a través del plugin de ~JavaScript [[$:/plugins/nico/notebook-mobile]].\n* Barra lateral izquierda personalizada.\n* Viene con 3 paletas de color, una gris, otra beige y una oscura. Para cambiar entre ellas, cliquea el botón {{$:/themes/nico/notebook/ui/Buttons/SwitchPalette}} desde la barra superior.\n\ne introduce las habituales modificaciones alojadas en el repositorio:\n\n* Soporte de interfaz para Español e Inglés.\n* \u003Cdiv>Soporte para enlaces reversos (//backlinks//), vía [[TWCrossLinks|https://github.com/akhater/TWCrossLinks]], \nde modo que se pueda saber cuáles [[tiddlers|Tiddlers]] vinculan al actual.\n\u003C/div>\n* \u003Cdiv>Soporte para renombrado, vía [[Relink|https://github.com/flibbles/tw5-relink]], de modo que no hayan enlaces \ninternos rotos en caso de que los tiddlers cambien de nombre.\n\u003C/div>\n* Soporte para iconos de interfaz web escalados cuando están en el texto de un tiddler.\n* Soporte para Markdown (falta mejorar algunos detalles del editor, como números de línea y resaltado sintáctico).\n\n''Importante'': Por convención, esta modificación tiene la misma versión que el tema en el cual está basado y las revisiones son números de letra sucesivos hechos tomando esa versión como base.\n\nPara todos los cambios en:\n\n* la última versión {{$:/themes/nico/notebook!!version}} mira [[$:/themes/nico/notebook/changelog]].\n* la última revisión mira [[Revisiones]].\n\n!! Contribuciones\n\n* Notebook está hospedado en ~GitHub en https://github.com/NicolasPetton/notebook.\n* Notebook Mod está hospedado en Fossil en https://mutabit.com/repos.fossil/tiddlywiki/\n\n!! Licencia\n\nNotebook y Notebook Mod están publicados bajo licencia MIT. \nMira [[LICENSE|$:/themes/nico/notebook/LICENSE]].\n","type":"text/vnd.tiddlywiki","title":"Notebook Mod","tags":"","revision":"0","modified":"20210204192057065","created":"20210109162347458","bag":"default","tmap.id":"2e4e55eb-a120-423a-b672-4f348355afcb"},
|
|
|
|
|
{"text":"\u003C$link to=\"$:/themes/nico/notebook/LICENSE\">\u003C\u003Cshield label:License status:MIT>>\u003C/$link>\n\u003C$link to=\"$:/themes/nico/notebook\">\u003C\u003Cshield label:Release status:{{$:/themes/nico/notebook!!version}} colour:purple>>\u003C/$link>\n\u003Ca href=\"https://tiddlywiki.com\">\u003C\u003Cshield label:~TiddlyWiki status:5.1.22+ colour:blue>>\u003C/a>\n\nNotebook is a clean, uncluttered theme for [[TiddlyWiki|https://tiddlywiki.com]].\n\n* The theme is responsive and comes with mobile support through the ~JavaScript [[$:/plugins/nico/notebook-mobile]].\n* Custom left sidebar\n* Notebook comes with 3 colour palettes, a grey, a beige and a dark one. To switch between colour palettes, click the {{$:/themes/nico/notebook/ui/Buttons/SwitchPalette}} button from the top bar.\n\nFor all changes in the latest {{$:/themes/nico/notebook!!version}} release, see [[$:/themes/nico/notebook/changelog]].\n\n!! Contributing\n\nThe project is hosted on ~GitHub at https://github.com/NicolasPetton/notebook.\n\n!! License\n\nNotebook is released under MIT, see [[LICENSE|$:/themes/nico/notebook/LICENSE]].\n","type":"text/vnd.tiddlywiki","title":"Notebook theme","revision":"0","modified":"20210204190039228","created":"20201210210453740","bag":"default","tmap.id":"5d1cd0f4-53cd-4150-83d0-12d7057324d8"},
|
|
|
|
|
{"text":"\"\"\"\nThis is a line\nand this is a new line\nwhile this is yet another line\nand this is the final one\napart from this one\n\"\"\"","title":"Nuevo Tiddler","tags":"","modifier":"M0","modified":"20210310003858609","creator":"M0","created":"20210310003612681","tmap.id":"506def4f-4ed2-437f-bef2-02a1c7a6d51b"},
|
|
|
|
|
{"text":"[[Open file|file:///home/mauri/Downloads/M0/51CrByvZi6L._AC_SL1146_.jpg]]","title":"Nuevo Tiddler 1","tags":"","modifier":"M0","modified":"20210310004733390","creator":"M0","created":"20210310004407640","tmap.id":"0743a985-f994-4579-9fe6-e7dd4f07e9b6"},
|
|
|
|
|
{"text":"\u003Cspan class=\"bluebox\">\n\n''Activities:''\n\n#Hide the sidebar using the \u003C\u003Cicon {{$:/core/images/chevron-right}} \"\">> icon at the top of the sidebar.\n\n#Hold down the Shift button and click on these two links, [[Dave Gifford]]. It should appear in a separate column to the right.\n#Do the same (shift-click) for the tiddler [[Muffin 1]].\n\n\u003C/span>","title":"Nuevo Tiddler 2","tags":"","modifier":"M0","modified":"20210310012632522","creator":"M0","created":"20210310012626648","tmap.id":"76ba2424-9424-4cb7-b103-2e60b95a061d"},
|
|
|
|
|
{"text":"\u003Ccanvas id=\"myChart\" width=\"400\" height=\"400\">\u003C/canvas>\n\n\u003Cscript>\nvar ctx = document.getElementById('myChart').getContext('2d');\nvar myChart = new Chart(ctx, {\n type: 'bar',\n data: {\n labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],\n datasets: [{\n label: '# of Votes',\n data: [12, 19, 3, 5, 2, 3],\n backgroundColor: [\n 'rgba(255, 99, 132, 0.2)',\n 'rgba(54, 162, 235, 0.2)',\n 'rgba(255, 206, 86, 0.2)',\n 'rgba(75, 192, 192, 0.2)',\n 'rgba(153, 102, 255, 0.2)',\n 'rgba(255, 159, 64, 0.2)'\n ],\n borderColor: [\n 'rgba(255, 99, 132, 1)',\n 'rgba(54, 162, 235, 1)',\n 'rgba(255, 206, 86, 1)',\n 'rgba(75, 192, 192, 1)',\n 'rgba(153, 102, 255, 1)',\n 'rgba(255, 159, 64, 1)'\n ],\n borderWidth: 1\n }]\n },\n options: {\n scales: {\n y: {\n beginAtZero: true\n }\n }\n }\n});\n\u003C/script>\n","title":"Nuevo Tiddler 3","tags":"","modified":"20211015024125801","created":"20211015024043616","tmap.id":"420124f4-58ae-455b-a0a1-7feb275c2ce3"},
|
|
|
|
|
{"created":"20220904033251100","creator":"M0","text":"\u003C\u003Clist-links filter:\"[tag[Diario]reverse[]]\">>","tags":"","title":"Nuevo Tiddler 5","modified":"20220904033512527","modifier":"M0","tmap.id":"7e890559-0b34-48f5-8bde-d1d9633f7faa"},
|
|
|
|
|
{"created":"20220904051627350","creator":"M0","text":"\u003C\u003Cslider label:\"Copincha\" \nsrc:[[proyecto/copincha]]>>","tags":"","title":"Nuevo Tiddler 6","modified":"20220904052214601","modifier":"M0","tmap.id":"00e06f48-0257-4cca-b4f9-1cceee5a1df7"},
|
|
|
|
|
{"created":"20220605172938467","creator":"M0","text":"* ''Convocatoria de participantes''\n\n** Anuncio en las redes sociales\n***Formato cuadrado 1080 px x 1080 px 300 dpi \n**** [[informacion de referencia|https://www.adobe.com/es/express/discover/sizes/instagram]]\n***Informacion: Nombre del evento, descripcion, fecha,hora y lugar, imagen, organizadores\n* ''Convocatoria a publico''\n** Lanzar 2 semanas antes del evento\n**Anuncio en las redes sociales\n*''Recordatorio''\n**Lanzar 1 semana antes del evento\n* ''Evento''","tags":"","title":"Organizando una Feria","modified":"20220605175621512","modifier":"M0","list":"[[Organizando una Feria/]]","tmap.id":"de91723b-4768-49cb-ae49-b4c4499325a7"},
|
|
|
|
|
{"created":"20220605175621509","creator":"M0","tags":"[[Organizando una Feria]]","caption":"","modified":"20220605175621509","modifier":"M0","title":"Organizando una Feria/","tmap.id":"d6ac1602-977b-44d8-9dea-6aace0b7ef7b","text":""},
|
|
|
|
|
{"text":"!! ¿Cómo puedo adicionar secciones a la barra lateral izquierda?\n\nCualquier tiddler con la etiqueta de sistema \u003C\u003Ctag $:/themes/nico/notebook/tags/SidebarSection>> será mostrado como \nuna sección en la barra lateral","type":"text/vnd.tiddlywiki","title":"Personalización","tags":"","revision":"0","modified":"20210109183035128","created":"20210109181528267","bag":"default","tmap.id":"5a932634-2d0c-4856-bb18-c839f9e23d94"},
|
|
|
|
|
{"text":"Copincha\n\n!! Ciclo Copincha\n{{Ciclo Copincha}}\n\nActividades\n\n!!! Cafe Sorpresa\nPara compartir una experiencia y nutrirla juntos.\n\n!!! Cafe Reparación\nPara aprendr a reparar juntos y ser mejores ciudadanos del mundo roto.\n\n!!! Cafe Viaje en casa\nPara compartir experiencia e imaginarios de transicion\n\nPoster Mandos\n\nposter taller\n\nCultivo\n\nDocumentacion\n\nCopinchapedia\n\nAprovechar Paquete Semanal\n\nJargines Digitales\n\nTiddlywiki\n\nInfraestructuras de bolsillo\n\nSimplificar las infraestructuras\n\nFossil\n\nChatbot\n\nWikis federadas\n\n\n\n\n\n","title":"Presentacion Lucerne","tags":"","modified":"20210923090331685","created":"20210704160309263","tmap.id":"5d265b77-2060-48f7-b0bb-a3735b3fa055"},
|
|
|
|
|
{"created":"20220820203751071","creator":"M0","parent":"Proyectos/20220820203905830","stream-type":"default","modified":"20220820232435337","modifier":"M0","title":"Proyectos/20220820203751069","text":"!!!Red Verde","stream-list":"Proyectos/20220820203801417 Proyectos/20220820232400689","tmap.id":"ff760105-7909-45f6-8588-7582ce2872b4"},
|
|
|
|
|
{"created":"20220820203801420","creator":"M0","parent":"Proyectos/20220820203751069","stream-type":"default","modified":"20220820203807833","modifier":"M0","title":"Proyectos/20220820203801417","text":"Wiki","stream-list":"Proyectos/20220820203805015 Proyectos/20220820203807830","tmap.id":"79d7cb65-50ea-4a5c-b6c2-027328f065d2"},
|
|
|
|
|
{"created":"20220820203805017","creator":"M0","parent":"Proyectos/20220820203801417","stream-type":"default","modified":"20220820204107779","modifier":"M0","title":"Proyectos/20220820203805015","text":"[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]","tmap.id":"76e7b996-2b56-4e11-b9fe-8c03dcd0ee14"},
|
|
|
|
|
{"created":"20220820203807832","creator":"M0","parent":"Proyectos/20220820203801417","stream-type":"default","modified":"20220820204147210","modifier":"M0","title":"Proyectos/20220820203807830","text":"[[Remoto|https://copincha.org]]","tmap.id":"94f5c8c7-11db-4ccb-8af0-e0bf42ff50ef"},
|
|
|
|
|
{"created":"20220820203905833","creator":"M0","parent":"Proyectos","stream-type":"default","modified":"20220828150043202","modifier":"M0","title":"Proyectos/20220820203905830","text":"!!Micelio\nJardineria digital usando Tiddlywiki","stream-list":"Proyectos/20220820174224932 Proyectos/20220820221722596 Proyectos/20220820203751069","tmap.id":"de8044ea-d3bf-48eb-b21d-db23baec8527"},
|
|
|
|
|
{"created":"20220820221722600","creator":"M0","parent":"Proyectos/20220820203905830","stream-type":"default","modified":"20220820232329988","modifier":"M0","title":"Proyectos/20220820221722596","text":"!!!Grafoscopio","stream-list":"Proyectos/20220820232310672","tmap.id":"9196169a-7888-4a83-b3eb-c68d9d29932f"},
|
|
|
|
|
{"created":"20220820221802845","creator":"M0","parent":"Proyectos/20220820221841837","stream-type":"default","modified":"20220820221901716","modifier":"M0","title":"Proyectos/20220820221802840","text":"[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]","tmap.id":"36642b10-f060-4478-81a2-bfdd74dca7a3"},
|
|
|
|
|
{"created":"20220820221806503","creator":"M0","parent":"Proyectos/20220820221841837","stream-type":"default","modified":"20220820221906107","modifier":"M0","title":"Proyectos/20220820221806501","text":"[[Remoto|https://copincha.org]]","tmap.id":"9252d8c7-9724-4f25-819a-b63443073e61"},
|
|
|
|
|
{"created":"20220820221841841","creator":"M0","parent":"Proyectos/20220820221722596","stream-type":"default","modified":"20220820221906105","modifier":"M0","title":"Proyectos/20220820221841837","text":"Wiki","stream-list":"Proyectos/20220820221802840 Proyectos/20220820221806501","tmap.id":"76023c4f-fa87-45b2-87aa-e607b7919fd6"},
|
|
|
|
|
{"created":"20220820232310677","creator":"M0","text":"!!!Cartografias de bolsillo","parent":"Proyectos/20220820221722596","stream-type":"default","stream-list":"Proyectos/20220820221841837","modified":"20220820232312159","modifier":"M0","title":"Proyectos/20220820232310672","tmap.id":"022f55ae-bb03-43a7-9d1c-f8cd0c270342"},
|
|
|
|
|
{"created":"20220820232400693","creator":"M0","parent":"Proyectos/20220820203751069","stream-type":"default","modified":"20220820232435339","modifier":"M0","title":"Proyectos/20220820232400689","text":"!!!Nativa","stream-list":"Proyectos/20220820232418488 Proyectos/20220820232427552","tmap.id":"caa6a861-b5e7-4af9-b1f8-0e9fc6a97e3b"},
|
|
|
|
|
{"created":"20220820232418492","creator":"M0","parent":"Proyectos/20220820232400689","stream-type":"default","modified":"20220820232420969","modifier":"M0","title":"Proyectos/20220820232418488","text":"[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]","tmap.id":"89494f22-3484-46cd-94c2-18b8f31d2be0"},
|
|
|
|
|
{"created":"20220820232427555","creator":"M0","parent":"Proyectos/20220820232400689","stream-type":"default","modified":"20220820232428506","modifier":"M0","title":"Proyectos/20220820232427552","text":"[[Remoto|https://copincha.org]]","tmap.id":"186f9cba-aa0d-4c90-9690-5ee46021e73b"},
|
|
|
|
|
{"created":"20220904152111364","creator":"M0","modified":"20220904153416854","modifier":"M0","title":"proyectos/copincha/conuco/precious-plastic-la-habana","text":"!!!!Precious Plastic La Habana\n\nWiki\n\n[ext[Local|./proyectos/conucos-digitales/copincha/index.html]]\n\n[[Remoto|https://pph.copincha.org]]","tags":"","tmap.id":"cdecfa6b-99ee-47b9-80de-548d55bc4e83"},
|
|
|
|
|
{"text":"# Título\n\nEsta es una prueba de escritura para Markdown\n\n## Subtítulo\n\n```\nCódigo sin formato\n```\n\n```html\n\u003Ch1>Código con formato\u003C/h1>\n```","type":"text/x-markdown","title":"Prueba de Markdown","tags":"","modified":"20210204190602230","created":"20210109184511864","tmap.id":"de6091d3-280f-454c-9ca1-4b89444ff2d5"},
|
|
|
|
|
{"text":"Este es un [[tiddler|Tiddlers]] de pruebas.\n\nSi desde acá vinculamos algunos tiddlers, esto quiere decir que en la parte inferior de ellos, deberían haber unos\n//backlinks// (enlaces reversos) que se referieran a este tiddler, proveyéndonos así de enlaces internos de doble vía:\nun tiddler contiene hiperenlaces a otros, como en el HTML tradicional, y a su vez éste sabe de todos los que le vinculan\ncomo en la idea del hipertexto original. \nHaz click en estos enlaces para verificarlo.\n\n* [[Renombrar]]\n\nEntra al enlace [[Renombrar]] y renómbra el tiddler de acuerdo a las instrucciones indicadas en el mismo.\n\nLa siguiente es una muestra de un icono de la interfaz gráfica embebido y reescalado dentro de la documentación, con lo\ncual vemos esto \u003C\u003C_icon {{$:/core/images/new-button}} \"link\" \"tooltip text\">> en lugar de esto {{$:/core/images/new-button}}.","title":"Pruebas","tags":"","modifier":"Offray Luna","modified":"20210109181321595","creator":"Offray Luna","created":"20210103112645247","tmap.id":"6ee7cdc9-92e7-4319-8961-a1abc5cd9402"},
|
|
|
|
|
{"text":"* ''Prerrequisitos'':\n** [[Timimi: persistencia/almacenamiento]].\n** [[Crear tiddlers]].\n** [[Aprende WikiText básico]].\n* \u003Cdiv> ''Introducción:'': \u003Cbr> \nHasta ahora hemos venido usando TiddlyWiki en nuestro propio computador.\nAllí sirve de manera potente para gestionar y dejar huella de nuestros proyectos, aprendizajes y conocimientos.\nSi bien podría permanecer allí, mucha de la potencia del hipertexto, \nincluso el personal, tiene que ver con compartirlo.\nTiddlyHost nos ayudará a ello.\n\u003C/div> \n* ''Actividades:'':\n** Sigue las instrucciones de [[TiddlyHost]] y crea tu cuenta en esa plataforma.\n** \u003Cdiv> Sube //tu variante// de Wikilexias (este mismo wiki). Cuando decimos tu variante nos referimos al hecho de que en la medida\nen que has venido las actividades, tu copia se empieza a volver\nespecífica y particular de tu proceso de aprendizaje.\n\u003C/div> \n** Comparte el enlace a tu copia de wikilexias con otras aprendices.\n** Si tienes otros wikis que quieras compartir, súbelos a TiddlyHost y compartelos también.\n* \u003Cdiv>\u003C\u003CrespuestaTemplate \n\"\"\"\nColoca a continuación los enlaces a los wikis publicados en \nTiddlyHost que creaste en los pasos previos.\n\"\"\"\n>>\n\u003C/div>\n\n* \u003C\u003CapuntesTemplate>>\n\n{{Socializa hallazgos e inquietudes}}","title":"Publicar desde TiddlyHost","tags":"[[Publicar Wikis]] todo","respuesta":"","modifier":"Offray Luna-Cárdenas","modified":"20211023033733655","creator":"Offray Luna-Cárdenas","created":"20211011180408677","tmap.id":"9eee7a8b-5c43-42e7-8c2f-5d5c116a55b3"},
|
|
|
|
|
{"text":"Cambia el título de este tiddler arriba por otro.\nDeberías ver cómo cambia en todos los que apuntan a este\n(por ejemplo en el tiddler de [[pruebas|Pruebas]].\nNo más enlaces rotos en nuestro hipertexto! :-).","title":"Renombrar","tags":"","modifier":"Offray Luna","modified":"20210109181321586","creator":"Offray Luna","created":"20210103112740883","tmap.id":"776f92b5-cf0e-4544-98a5-4ee1063d3464"},
|
|
|
|
|
{"text":"!! Bitácora de cambios para las revisiones\n\nEstos son los cambios más relevantes introducidos en cada revisión, identificaa por su respectiva letra.\n\n!!! a\n\n* Cambio en el plugin de soporte para [[Markdown|https://tiddlywiki.com/plugins/tiddlywiki/markdown/]].\n* Mejora en instrucciones de instalación desde la interface gráfica.\n* Introducción de revisiones además de versiones.\n* Introducción de [[info style]] para la documentación.\n ","title":"Revisiones","modified":"20210204193912977","created":"20210204182240441","tmap.id":"ed1b4814-10b7-442c-bba7-b356df879fd2"},
|
|
|
|
|
{"created":"20220823150352361","creator":"M0","text":"","tags":"","title":"sidebar/documentos","modified":"20220823150447248","modifier":"M0","caption":"Documentos"},
|
|
|
|
|
{"created":"20220820065626776","creator":"M0","text":"\u003Ccenter>\u003Cbr> \u003C$button message=\"tm-home\" tooltip=\"Inicio\" class=\u003C\u003Ctv-config-toolbar-class>>>\u003Cimg src=\"./medios/imagenes/sidebar.jpg\" style=\"width: 50%; border-radius: 50%;border:2px solid rgb(255,255,255);\">\u003C/$button>\u003C/center>","tags":"","title":"sidebar/home","modified":"20220904011252425","modifier":"M0"},
|
|
|
|
|
{"created":"20220820065819171","creator":"M0","text":"\u003Ccenter> \u003Cdiv>{{$:/core/ui/SideBarSegments/page-controls}}\u003C/div>\u003Cbr>\u003Cbr>\u003Cbr>\u003C/center>","tags":"","title":"sidebar/main-buttons","modified":"20220820065916550","modifier":"M0"},
|
|
|
|
|
{"created":"20211015042612908","creator":"M0","text":"{{slider ejemplo texto1}}","tags":"","title":"slider ejemplo","modified":"20211015050149805","modifier":"M0","caption":"slider-ejemplo","tmap.id":"e7ba2f19-7753-4ce3-a753-cef3b49b0b28"},
|
|
|
|
|
{"created":"20211015045459344","creator":"M0","text":"\u003C\u003Cslider label:\"Texto Nivel 1\" src:\"{{slider ejemplo texto2}}\" status:\"close\">>","modified":"20211015045757303","modifier":"M0","title":"slider ejemplo texto1","tags":"","caption":"Texto Nivel 1","tmap.id":"4375536c-af1f-4c33-987d-f36710bbd348"},
|
|
|
|
|
{"created":"20211015043106106","creator":"M0","text":"\u003C\u003Cslider2 label:\"Texto Nivel 2\" src:\"{{slider ejemplo texto3}}\" status:\"close\">>","modified":"20211015045633415","modifier":"M0","title":"slider ejemplo texto2","tags":"","caption":"Texto Nivel 2","tmap.id":"c81ad389-5b7a-4243-bef9-b318e365b4de"},
|
|
|
|
|
{"created":"20211015043211624","creator":"M0","text":"\u003C\u003Cslider3 label:\"Texto Nivel 3\" src:\"{{slider ejemplo texto4}}\" status:\"close\">>","modified":"20211015045701028","modifier":"M0","title":"slider ejemplo texto3","tags":"","caption":"Texto Nivel 3","tmap.id":"8c118eed-50f0-4ab2-8524-998d34a729fd"},
|
|
|
|
|
{"created":"20211015043313549","creator":"M0","text":"\u003C\u003Cslider4 label:\"Texto Nivel 4\" src:\"{{slider ejemplo texto5}}\" status:\"close\">>","modified":"20211015045715885","modifier":"M0","title":"slider ejemplo texto4","tags":"","caption":"Texto Nivel 4","tmap.id":"2430b3d6-2c73-4906-942b-fe9eb9bf8305"},
|
|
|
|
|
{"created":"20211015043332677","creator":"M0","text":"\u003C\u003Cslider5 label:\"Texto Nivel 5\" src:\"{{slider ejemplo texto6}}\" status:\"close\">>","modified":"20211015045724588","modifier":"M0","title":"slider ejemplo texto5","tags":"","caption":"Texto Nivel 5","tmap.id":"f9d799b4-aac2-48f5-b0ce-c6cfac29c20a"},
|
|
|
|
|
{"created":"20211015043345801","creator":"M0","text":"\u003C\u003Cslider6 label:\"Texto Nivel 6\" src:\"\" status:\"close\">>","modified":"20211015044749985","modifier":"M0","title":"slider ejemplo texto6","tags":"","caption":"Texto Nivel 6","tmap.id":"058eca3a-c4aa-4ece-8bda-56883f8f1df1"},
|
|
|
|
|
{"created":"20220822092633419","creator":"M0","text":"lun, 22 ago, 06:13\n\t\npara CCP\n\nHello.\n\n I am having problems applying for a visa at the German Embassy in Cuba, to make a trip as soon as possible and share with the German side in Dresden, for the Synergy exchange program.\n\n I had been trying to register an appointment for the visa at the embassy for 2 weeks from their online platform, (as far as I know, it is the only way to access). The website says that there are no reservations available until November.\n\n Is it possible to process the visa in another way, with your help? What do you recommend?\n\nKind regards,\nMaurice","type":"text/x-markdown","title":"Solicitud de visa a ifa","tags":"ifa","modified":"20220823152014410","modifier":"M0","tmap.id":"024d8f98-87df-4890-999e-c85661955326"},
|
|
|
|
|
{"text":"","title":"Tablas","tags":"Contenidos","orden":"3","modifier":"M0","modified":"20210309232525279","creator":"M0","created":"20210309224356923","tmap.id":"d37fa091-1c76-4b87-8c4c-c0be75580596"},
|
|
|
|
|
{"text":".tc-titlebar h2 { font-size: 0.8em; display: inline; }","title":"Tamano de titulo","tags":"$:/tags/Stylesheet","modifier":"M0","modified":"20210309222543733","creator":"M0","created":"20210309222247495","tmap.id":"f0899a52-ce08-4013-aa19-e21976f4d81f"},
|
|
|
|
|
{"text":"Si estás usando TiddlyWiki, de seguro ya sabes esto, pero no está de más una introducción a este concepto\nubicuo y potente en TiddlyWiki, en caso de que no lo conozcas o un repaso en español, en caso de que sí, \npues la intensión es que este Tiddler en particular se convierta en un elemento que podemos colocar en\nvarios wikis personales.\n\nUn tiddler es la unidad minima de información en TiddlyWiki y una de sus aportaciones más ingeniosas,\npues en este wiki se tienen unidades de información más pequeñas que las habituales páginas.\nPodemos pensar en un Tiddler como una ficha de anotaciones (de esas que en papel/carton de 9 cm por 15 cm),\npero potenciada por el hipertexto.\nAllí escribimos la prosa, los datos y el código que alimentan nuestro wiki personal y debido a su caracter\nminimalista y diverso pueden recombinarse de distintas maneras: enlazándolos entre sí, transcluyendo trozos de un \ntiddler en otro, agregando funcionalidad específica a medida, arrastrando y soltando plugins entre distintos \nwikis, entre otras.\n\nReciben su nombre [[por la palabra británica asociada a pez pequeño|https://tiddlywiki.com/#Tiddlers]]:\n\n\n\u003C\u003C\u003C\nUn \"tiddler es una palabra británica informal que significa pez pequeño [...].\nOtros sistemas tienen conceptos análogos con nombres genéricos como \"items\", \"entradas\", \"entidades\", \"nodos\"\no \"registros\".\nTiddlyWiki asume la postura de que es mejor ser confúsamente distinto que confúsamente genéricio.\n\u003C\u003C\u003C\n","title":"Tiddlers","tags":"traducciones","modifier":"Offray Luna","modified":"20210109174905282","creator":"Offray Luna","created":"20210104172652015","tmap.id":"9d35ae40-96e9-4144-a551-e3481b48ed22"},
|
|
|
|
|
{"text":"","title":"Tipos de Donaciones","tags":"Contenidos","orden":"1","modifier":"M0","modified":"20210309232548224","creator":"M0","created":"20210309224407182","tmap.id":"72d84ea1-53ef-46da-9f42-b582bc1f59c9"},
|
|
|
|
|
{"created":"20220820160844008","creator":"M0","text":"{{$:/plugins/kookma/trashbin/ui/sidebar}}","tags":"","title":"Trashbin","modified":"20220820161010420","modifier":"M0","tmap.id":"a75d2ac7-40b2-4b3d-a1e8-ddae121f19c5"},
|
|
|
|
|
{"text":"TiddlyWiki\n\nVer Introducción.\nIdeas varias\n\n Integración Markdown TiddlyWiki: Traductor de Markdown a TiddlyWiki La dificultad está entre paréntesis.\n Se empezó la exploración inicial del traductor\n (baja) Hay implementar el código para un traductor simple.\n (alta) Crear el código del parser para un eventual traductor de TiddlyWiki a Markdown.\n\nCurrículo\n\nLa idea es crear distintos caminos de aprendizaje similares al que se ve abajo:\n\nLa intensión es crear Tiddlers que permitan vincular estos contenidos\n\n Lectura anotada.\n Escritura colaborativa: HedgeDoc y Markdown.\n TiddlyWiki\n Crear tiddlers.\n De Markdown a TiddlyWiki.\n Lenguaje de etiquetamiento nativo (WikiText).\n Transclusión: incluir sin copiar ni pegar.\n Filtros: Ejp.\n Compartir Tiddlers.\n Macros y platillas: contenidos semi-automatizados.\n Crear y listar recursos para crear tus wikis personales:\n Variantes de TiddlyWiki.\n Personalizar plantillas:\n Apariencia CSS\n Plugins y variantes.\n Plantillas concretas para usos específicos.\n Crear plugins.\n Publicar y versionar wikis (Fossil)\n Archivos versionados y no versionados.\n Formatos de exportación y serialización de datos: JSON y STON.\n Comentar Tiddlers.\n Automatización de publicación con Pharo.\n\n","type":"text/plain","title":"Untitled","tmap.id":"55bfc354-2d16-4a6b-81ad-3669b55cd07b"},
|
|
|
|
|
{"text":"upload_ea83e1cf14de83214c8c5423a8108997.png","type":"text/plain","title":"Untitled 1","tmap.id":"6e37da6a-0978-4866-a446-01cfcb8997a1"},
|
|
|
|
|
{"text":"https://docutopia.tupale.co/uploads/upload_ea83e1cf14de83214c8c5423a8108997.png","title":"Untitled 2","tmap.id":"b77e95d4-2c5b-46a0-82e5-219711a7a8fb"},
|
|
|
|
|
{"text":"\u003Cheader class=\"container-fluid\">\u003Cnav class=\"navbar navbar-expand-sm navbar-light\">\u003Cdiv class=\"navbar-brand svelte-1q88nx\">\u003Ca href=\"https://nominatim.openstreetmap.org/ui/search.html\" class=\"\">\u003Cimg alt=\"logo\" id=\"theme-logo\" src=\"https://nominatim.openstreetmap.org/ui/theme/logo.png\" class=\"svelte-1q88nx\"> \u003Ch1 class=\"svelte-1q88nx\">Nominatim\u003C/h1>\u003C/a>\u003C/div> \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarSupportedContent\">\u003Cul class=\"navbar-nav mr-auto\">\u003Cli class=\"nav-item active svelte-1q88nx\">\u003Ca href=\"https://nominatim.openstreetmap.org/ui/search.html\" class=\"nav-link \">Search\u003C/a>\u003C/li> \u003Cli class=\"nav-item svelte-1q88nx\">\u003Ca href=\"https://nominatim.openstreetmap.org/ui/reverse.html\" class=\"nav-link \">Reverse\u003C/a>\u003C/li> \u003Cli class=\"nav-item svelte-1q88nx\">\u003Ca href=\"https://nominatim.openstreetmap.org/ui/details.html\" class=\"nav-link \">Search By ID\u003C/a>\u003C/li>\u003C/ul>\u003C/div> \u003Cul class=\"navbar-nav\">\u003Cli class=\"nav-item svelte-1q88nx\">\u003Ca href=\"https://nominatim.openstreetmap.org/ui/about.html\" class=\"nav-link \">About & Help\u003C/a>\u003C/li>\u003C/ul>\u003C/nav>\u003C/header> \u003Csection class=\"search-section svelte-1q88nx\">\u003Cul class=\"nav nav-tabs svelte-1u2ltgo\">\u003Cli class=\"nav-item\">\u003Ca class=\"nav-link svelte-1u2ltgo active\" data-toggle=\"tab\" href=\"https://nominatim.openstreetmap.org/ui/search.html#simple\">Simple\u003C/a>\u003C/li> \u003Cli class=\"nav-item\">\u003Ca class=\"nav-link svelte-1u2ltgo\" data-toggle=\"tab\" href=\"https://nominatim.openstreetmap.org/ui/search.html#structured\">Structured\u003C/a>\u003C/li>\u003C/ul> \u003Cdiv class=\"tab-content py-2\">\u003Cdiv class=\"tab-pane active\" id=\"simple\" role=\"tabpanel\">\u003Cform class=\"form-inline\" role=\"search\" accept-charset=\"UTF-8\" action=\"\">\u003Cinput id=\"q\" name=\"q\" type=\"text\" class=\"form-control form-control-sm svelte-1u2ltgo\" placeholder=\"Search\"> \u003C/form>\u003C/div>\u003C/div>\u003C/section>\u003Csection class=\"search-section svelte-1q88nx\">\u003Cdiv class=\"tab-content py-2\">\u003Cdiv class=\"tab-pane active\" id=\"simple\" role=\"tabpanel\">\u003Cform class=\"form-inline\" role=\"search\" accept-charset=\"UTF-8\" action=\"\"> \u003C/form>\u003C/div> \u003C/div> \u003Cdetails id=\"searchAdvancedOptions\" class=\"svelte-1u2ltgo\">\u003Csummary>\u003Csmall>Advanced options\u003C/small>\u003C/summary> \u003C/details>\u003C/section> \u003Cdiv id=\"last-updated\" class=\"container-fluid py-2 px-4 mb-3 svelte-1i1228w\"> \u003Cdiv class=\"row\">\u003Cdiv class=\"col-sm-6\">\u003C/div> \u003Cdiv class=\"col-sm-6 text-right\">Data last updated:\n \u003Cabbr id=\"data-date\" title=\"2021-03-07T11:44:42+00:00 (UTC timezone)\">1 minute ago\u003C/abbr>\u003C/div>\u003C/div>\u003C/div> \u003Cdiv id=\"content\" class=\"svelte-1d53ob0\">\u003Cdiv class=\"sidebar svelte-1d53ob0\">\u003Cdiv id=\"welcome\">\u003Ch2>Welcome to Nominatim\u003C/h2>\n\n\u003Cp>\n This is the debugging interface for the search engine used on the\n \u003Ca href=\"https://www.openstreetmap.org\">OpenStreetMap\u003C/a> website.\n\u003C/p>\n\n\u003Ca href=\"https://nominatim.openstreetmap.org/ui/about.html\">More information\u003C/a>\n\u003C/div>\u003C/div> \u003Cdiv id=\"map-wrapper\" class=\"svelte-1d53ob0\"> \u003Cdiv id=\"map\" class=\"svelte-1vbvdrk leaflet-container leaflet-touch leaflet-fade-anim leaflet-grab leaflet-touch-drag\" style=\"position: relative;\" tabindex=\"0\">\u003Cdiv class=\"leaflet-pane leaflet-map-pane\" style=\"transform: translate3d(0px, 0px, 0px);\">\u003Cdiv class=\"leaflet-pane leaflet-tile-pane\">\u003Cdiv class=\"leaflet-layer \" style=\"z-index: 1; opacity: 1;\">\u003Cdiv class=\"leaflet-tile-container leaflet-zoom-animated\" style=\"z-index: 18; transform: translate3d(0px, 0px, 0px) scale(1);\">\u003C/div>\u003C/div>\u003C/div>\u003C/div>\u003C/div>\u003C/div>\u003C/div>\u003Cdiv class=\"leaflet-pan
|
|
|
|
|
{"text":"\u003Cbr>\n","type":"text/plain","title":"Untitled 4","tmap.id":"2a0966c3-fc93-4dae-ac21-4e2e223a1a93"},
|
|
|
|
|
{"title":"Untitled 5","text":"un [[hackerspace]] para ....","type":"text/plain","tmap.id":"cb8dddbb-cbe2-4687-9e55-73af42f2bb6a"},
|
|
|
|
|
{"title":"Untitled 6","text":"https://github.com/ecomfe/echarts-stat/raw/master/img/histogram.png"},
|
|
|
|
|
{"created":"20220823152101268","creator":"M0","text":"","tags":"ifa","title":"Visa","modified":"20220823152106202","modifier":"M0","tmap.id":"18a04031-b7bf-43ad-b95d-b987f00383c1"},
|
|
|
|
|
{"created":"20220829143204934","creator":"M0","text":"usar _canonical_uri\n\n[img [./medios/tutorial/2022-08-29_07-42.jpg]]","title":"visualizar pdf","modified":"20220904003904400","modifier":"M0","type":"text/vnd.tiddlywiki","tags":"registro/amor/tw/tutoriales","tmap.id":"9ddb8bed-81de-4955-a9a1-62abec910a58"}
|
|
|
|
|
]</script><div id="storeArea" style="display:none;"></div>
|
|
|
|
|
<!--~~ Library modules ~~-->
|
|
|
|
|
<div id="libraryModules" style="display:none;">
|
|
|
|
|
<script data-tiddler-library="yes" data-tiddler-title="$:/library/sjcl.js" data-tiddler-type="application/javascript" type="text/javascript">"use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return"CORRUPT: "+this.message};this.message=a},invalid:function(a){this.toString=function(){return"INVALID: "+this.message};this.message=a},bug:function(a){this.toString=function(){return"BUG: "+this.message};this.message=a},notReady:function(a){this.toString=function(){return"NOT READY: "+this.message};this.message=a}}};
|
|
|
|
|
sjcl.cipher.aes=function(a){this.s[0][0][0]||this.O();var b,c,d,e,f=this.s[0][4],g=this.s[1];b=a.length;var h=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid("invalid aes key size");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c&
|
|
|
|
|
255]]};
|
|
|
|
|
sjcl.cipher.aes.prototype={encrypt:function(a){return t(this,a,0)},decrypt:function(a){return t(this,a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,g,h=[],k=[],l,n,m,p;for(e=0;0x100>e;e++)k[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=l||1,g=k[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^m&255^99,c[f]=m,d[m]=f,n=h[e=h[l=h[f]]],p=0x1010101*n^0x10001*e^0x101*l^0x1010100*f,n=0x101*h[m]^0x1010100*m,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=p=p<<24^p>>>8;for(e=
|
|
|
|
|
0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}};
|
|
|
|
|
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=
|
|
|
|
|
0;4>m;m++)r[c?3&-m:m]=x[e>>>24]<<24^x[f>>16&255]<<16^x[g>>8&255]<<8^x[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return r}
|
|
|
|
|
sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return 32===d?a.concat(b):sjcl.bitArray.$(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0===
|
|
|
|
|
b?0:32*(b-1)+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0===
|
|
|
|
|
c},$:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};
|
|
|
|
|
sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};
|
|
|
|
|
sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a=a+"00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,4*d)}};
|
|
|
|
|
sjcl.codec.base32={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",X:"0123456789ABCDEFGHIJKLMNOPQRSTUV",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f="",g=0,h=sjcl.codec.base32.B,k=0,l=sjcl.bitArray.bitLength(a);c&&(h=sjcl.codec.base32.X);for(c=0;f.length*d<l;)f+=h.charAt((k^a[c]>>>g)>>>e),g<d?(k=a[c]<<d-g,g+=e,c++):(k<<=d,g-=d);for(;f.length&7&&!b;)f+="=";return f},toBits:function(a,b){a=a.replace(/\s|=/g,"").toUpperCase();var c=sjcl.codec.base32.BITS,
|
|
|
|
|
d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=[],g,h=0,k=sjcl.codec.base32.B,l=0,n,m="base32";b&&(k=sjcl.codec.base32.X,m="base32hex");for(g=0;g<a.length;g++){n=k.indexOf(a.charAt(g));if(0>n){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid("this isn't "+m+"!");}h>e?(h-=e,f.push(l^n>>>h),l=n<<c-h):(h+=d,l^=n<<c-h)}h&56&&f.push(sjcl.bitArray.partial(h&56,l,1));return f}};
|
|
|
|
|
sjcl.codec.base32hex={fromBits:function(a,b){return sjcl.codec.base32.fromBits(a,b,1)},toBits:function(a){return sjcl.codec.base32.toBits(a,1)}};
|
|
|
|
|
sjcl.codec.base64={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(a,b,c){var d="",e=0,f=sjcl.codec.base64.B,g=0,h=sjcl.bitArray.bitLength(a);c&&(f=f.substr(0,62)+"-_");for(c=0;6*d.length<h;)d+=f.charAt((g^a[c]>>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d,e=0,f=sjcl.codec.base64.B,g=0,h;b&&(f=f.substr(0,62)+"-_");for(d=0;d<a.length;d++){h=f.indexOf(a.charAt(d));
|
|
|
|
|
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));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.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(new sjcl.hash.sha256).update(a).finalize()};
|
|
|
|
|
sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.F=this.Y.slice(0);this.A=[];this.l=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.A=sjcl.bitArray.concat(this.A,a);b=this.l;a=this.l=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffff<a)throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits");if("undefined"!==typeof Uint32Array){var d=new Uint32Array(c),e=0;for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,d.subarray(16*e,
|
|
|
|
|
16*(e+1))),e+=1;c.splice(0,16*e)}else for(b=512+b-(512+b&0x1ff);b<=a;b+=512)u(this,c.splice(0,16));return this},finalize:function(){var a,b=this.A,c=this.F,b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.l/0x100000000));for(b.push(this.l|0);b.length;)u(this,b.splice(0,16));this.reset();return c},Y:[],b:[],O:function(){function a(a){return 0x100000000*(a-Math.floor(a))|0}for(var b=0,c=2,d,e;64>b;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e=
|
|
|
|
|
!1;break}e&&(8>b&&(this.Y[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}}};
|
|
|
|
|
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){var b=sjcl.mode.ccm.G.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){var f,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))throw new sjcl.exception.corrupt("ccm: tag doesn't match");
|
|
|
|
|
return k.data},na:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,k=h.i;d=[h.partial(8,(b.length?64:0)|d-2<<2|f-1)];d=h.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=h.bitLength(b)/8,65279>=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c])),g=h.concat(g,b),b=0;b<g.length;b+=4)d=a.encrypt(k(d,g.slice(b,b+4).concat([0,0,0])));return d},V:function(a,b,c,d,e,f){var g=sjcl.bitArray,h=g.i;e/=8;if(e%2||4>e||16<e)throw new sjcl.exception.invalid("ccm: invalid tag length");
|
|
|
|
|
if(0xffffffff<d.length||0xffffffff<b.length)throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data");c=sjcl.mode.ccm.na(a,d,c,e,g.bitLength(b)/8,f);for(d=0;d<b.length;d+=4)c=a.encrypt(h(c,b.slice(d,d+4).concat([0,0,0])));return g.clamp(c,8*e)},C:function(a,b,c,d,e,f){var g,h=sjcl.bitArray;g=h.i;var k=b.length,l=h.bitLength(b),n=k/50,m=n;c=h.concat([h.partial(8,f-1)],c).concat([0,0,0]).slice(0,4);d=h.bitSlice(g(d,a.encrypt(c)),0,e);if(!k)return{tag:d,data:[]};for(g=0;g<k;g+=4)g>n&&(sjcl.mode.ccm.fa(g/
|
|
|
|
|
k),n+=m),c[3]++,e=a.encrypt(c),b[g]^=e[0],b[g+1]^=e[1],b[g+2]^=e[2],b[g+3]^=e[3];return{tag:d,data:h.clamp(b,l)}}};
|
|
|
|
|
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);
|
|
|
|
|
return a.encrypt(f(d(f(h,d(h))),g))},S:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};
|
|
|
|
|
sjcl.mode.gcm={name:"gcm",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;d=d||[];a=sjcl.mode.gcm.C(!0,a,f,d,c,e||128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];e<=h?(b=g.bitSlice(f,h-e),f=g.bitSlice(f,0,h-e)):(b=f,f=[]);a=sjcl.mode.gcm.C(!1,a,f,d,c,e);if(!g.equal(a.tag,b))throw new sjcl.exception.corrupt("gcm: tag doesn't match");return a.data},ka:function(a,b){var c,d,e,f,g,h=sjcl.bitArray.i;e=[0,0,
|
|
|
|
|
0,0];f=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=h(e,f));g=0!==(f[3]&1);for(d=3;0<d;d--)f[d]=f[d]>>>1|(f[d-1]&1)<<31;f[0]>>>=1;g&&(f[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;d<e;d+=4)b[0]^=0xffffffff&c[d],b[1]^=0xffffffff&c[d+1],b[2]^=0xffffffff&c[d+2],b[3]^=0xffffffff&c[d+3],b=sjcl.mode.gcm.ka(b,a);return b},C:function(a,b,c,d,e,f){var g,h,k,l,n,m,p,r,q=sjcl.bitArray;m=c.length;p=q.bitLength(c);r=q.bitLength(d);h=q.bitLength(e);
|
|
|
|
|
g=b.encrypt([0,0,0,0]);96===h?(e=e.slice(0),e=q.concat(e,[1])):(e=sjcl.mode.gcm.j(g,[0,0,0,0],e),e=sjcl.mode.gcm.j(g,e,[0,0,Math.floor(h/0x100000000),h&0xffffffff]));h=sjcl.mode.gcm.j(g,[0,0,0,0],d);n=e.slice(0);d=h.slice(0);a||(d=sjcl.mode.gcm.j(g,h,c));for(l=0;l<m;l+=4)n[3]++,k=b.encrypt(n),c[l]^=k[0],c[l+1]^=k[1],c[l+2]^=k[2],c[l+3]^=k[3];c=q.clamp(c,p);a&&(d=sjcl.mode.gcm.j(g,h,c));a=[Math.floor(r/0x100000000),r&0xffffffff,Math.floor(p/0x100000000),p&0xffffffff];d=sjcl.mode.gcm.j(g,d,a);k=b.encrypt(e);
|
|
|
|
|
d[0]^=k[0];d[1]^=k[1];d[2]^=k[2];d[3]^=k[3];return{tag:q.bitSlice(d,0,f),data:c}}};sjcl.misc.hmac=function(a,b){this.W=b=b||sjcl.hash.sha256;var c=[[],[]],d,e=b.prototype.blockSize/32;this.w=[new b,new b];a.length>e&&(a=b.hash(a));for(d=0;d<e;d++)c[0][d]=a[d]^909522486,c[1][d]=a[d]^1549556828;this.w[0].update(c[0]);this.w[1].update(c[1]);this.R=new b(this.w[0])};
|
|
|
|
|
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));return l};
|
|
|
|
|
sjcl.prng=function(a){this.c=[new sjcl.hash.sha256];this.m=[0];this.P=0;this.H={};this.N=0;this.U={};this.Z=this.f=this.o=this.ha=0;this.b=[0,0,0,0,0,0,0,0];this.h=[0,0,0,0];this.L=void 0;this.M=a;this.D=!1;this.K={progress:{},seeded:{}};this.u=this.ga=0;this.I=1;this.J=2;this.ca=0x10000;this.T=[0,48,64,96,128,192,0x100,384,512,768,1024];this.da=3E4;this.ba=80};
|
|
|
|
|
sjcl.prng.prototype={randomWords:function(a,b){var c=[],d;d=this.isReady(b);var e;if(d===this.u)throw new sjcl.exception.notReady("generator isn't seeded");if(d&this.J){d=!(d&this.I);e=[];var f=0,g;this.Z=e[0]=(new Date).valueOf()+this.da;for(g=0;16>g;g++)e.push(0x100000000*Math.random()|0);for(g=0;g<this.c.length&&(e=e.concat(this.c[g].finalize()),f+=this.m[g],this.m[g]=0,d||!(this.P&1<<g));g++);this.P>=1<<this.c.length&&(this.c.push(new sjcl.hash.sha256),this.m.push(0));this.f-=f;f>this.o&&(this.o=
|
|
|
|
|
f);this.P++;this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.L=new sjcl.cipher.aes(this.b);for(d=0;4>d&&(this.h[d]=this.h[d]+1|0,!this.h[d]);d++);}for(d=0;d<a;d+=4)0===(d+1)%this.ca&&y(this),e=z(this),c.push(e[0],e[1],e[2],e[3]);y(this);return c.slice(0,a)},setDefaultParanoia:function(a,b){if(0===a&&"Setting paranoia=0 will ruin your security; use it only for testing"!==b)throw new sjcl.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing");this.M=a},addEntropy:function(a,
|
|
|
|
|
b,c){c=c||"user";var d,e,f=(new Date).valueOf(),g=this.H[c],h=this.isReady(),k=0;d=this.U[c];void 0===d&&(d=this.U[c]=this.ha++);void 0===g&&(g=this.H[c]=0);this.H[c]=(this.H[c]+1)%this.c.length;switch(typeof a){case "number":void 0===b&&(b=1);this.c[g].update([d,this.N++,1,b,f,1,a|0]);break;case "object":c=Object.prototype.toString.call(a);if("[object Uint32Array]"===c){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else for("[object Array]"!==c&&(k=1),c=0;c<a.length&&!k;c++)"number"!==typeof a[c]&&
|
|
|
|
|
(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()))},
|
|
|
|
|
isReady:function(a){a=this.T[void 0!==a?a:this.M];return this.o&&this.o>=a?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=a?this.J|this.u:this.u},getProgress:function(a){a=this.T[a?a:this.M];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.D){this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)};if(window.addEventListener)window.addEventListener("load",
|
|
|
|
|
this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new sjcl.exception.bug("can't attach event");
|
|
|
|
|
this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",
|
|
|
|
|
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],delete e[d]},la:function(){C(this,1)},oa:function(a){var b,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=
|
|
|
|
|
a.touches[0]||a.changedTouches[0];this.addEntropy([a.pageX||a.clientX,a.pageY||a.clientY],1,"touch");C(this,0)},ma:function(){C(this,2)},ea:function(a){a=a.accelerationIncludingGravity.x||a.accelerationIncludingGravity.y||a.accelerationIncludingGravity.z;if(window.orientation){var b=window.orientation;"number"===typeof b&&this.addEntropy(b,1,"accelerometer")}a&&this.addEntropy(a,2,"accelerometer");C(this,0)}};
|
|
|
|
|
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)}function C(a,b){"undefined"!==typeof window&&window.performance&&"function"===typeof window.performance.now?a.addEntropy(window.performance.now(),b,"loadtime"):a.addEntropy((new Date).valueOf(),b,"loadtime")}function y(a){a.b=z(a).concat(z(a));a.L=new sjcl.cipher.aes(a.b)}function z(a){for(var b=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);
|
|
|
|
|
a:try{var D,E,F,G;if(G="undefined"!==typeof module&&module.exports){var H;try{H=require("crypto")}catch(a){H=null}G=E=H}if(G&&E.randomBytes)D=E.randomBytes(128),D=new Uint32Array((new Uint8Array(D)).buffer),sjcl.random.addEntropy(D,1024,"crypto['randomBytes']");else if("undefined"!==typeof window&&"undefined"!==typeof Uint32Array){F=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(F);
|
|
|
|
|
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))}
|
|
|
|
|
sjcl.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.g({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.g(f,c);c=f.adata;"string"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));"string"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||"string"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length||
|
|
|
|
|
4<f.iv.length)throw new sjcl.exception.invalid("json encrypt: invalid parameters");"string"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,f),a=g.key.slice(0,f.ks/32),f.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.publicKey&&(g=a.kem(),f.kemtag=g.tag,a=g.key.slice(0,f.ks/32));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));"string"===typeof c&&(f.adata=c=sjcl.codec.utf8String.toBits(c));g=new sjcl.cipher[f.cipher](a);e.g(d,f);d.key=a;f.ct="ccm"===f.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&
|
|
|
|
|
b instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.encrypt(g,b,f.iv,c,f.ts):sjcl.mode[f.mode].encrypt(g,b,f.iv,c,f.ts);return f},encrypt:function(a,b,c,d){var e=sjcl.json,f=e.ja.apply(e,arguments);return e.encode(f)},ia:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json;b=e.g(e.g(e.g({},e.defaults),b),c,!0);var f,g;f=b.adata;"string"===typeof b.salt&&(b.salt=sjcl.codec.base64.toBits(b.salt));"string"===typeof b.iv&&(b.iv=sjcl.codec.base64.toBits(b.iv));if(!sjcl.mode[b.mode]||!sjcl.cipher[b.cipher]||"string"===
|
|
|
|
|
typeof a&&100>=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4<b.iv.length)throw new sjcl.exception.invalid("json decrypt: invalid parameters");"string"===typeof a?(g=sjcl.misc.cachedPbkdf2(a,b),a=g.key.slice(0,b.ks/32),b.salt=g.salt):sjcl.ecc&&a instanceof sjcl.ecc.elGamal.secretKey&&(a=a.unkem(sjcl.codec.base64.toBits(b.kemtag)).slice(0,b.ks/32));"string"===typeof f&&(f=sjcl.codec.utf8String.toBits(f));g=new sjcl.cipher[b.cipher](a);f="ccm"===
|
|
|
|
|
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)))throw new sjcl.exception.invalid("json decode: this isn't json!");
|
|
|
|
|
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,
|
|
|
|
|
b){var c={},d;for(d=0;d<b.length;d++)void 0!==a[b[d]]&&(c[b[d]]=a[b[d]]);return c}};sjcl.encrypt=sjcl.json.encrypt;sjcl.decrypt=sjcl.json.decrypt;sjcl.misc.pa={};sjcl.misc.cachedPbkdf2=function(a,b){var c=sjcl.misc.pa,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):sjcl.random.randomWords(2,0)};c=void 0===b.salt?d.firstSalt:b.salt;d[c]=d[c]||sjcl.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}};
|
|
|
|
|
"undefined"!==typeof module&&module.exports&&(module.exports=sjcl);"function"===typeof define&&define([],function(){return sjcl});
|
|
|
|
|
</script>
|
|
|
|
|
</div>
|
|
|
|
|
<!--~~ Boot kernel prologue ~~-->
|
|
|
|
|
<div id="bootKernelPrefix" style="display:none;">
|
|
|
|
|
<script data-tiddler-title="$:/boot/bootprefix.js" data-tiddler-type="application/javascript" type="text/javascript">/*\
|
|
|
|
|
title: $:/boot/bootprefix.js
|
|
|
|
|
type: application/javascript
|
|
|
|
|
|
|
|
|
|
This file sets up the globals that need to be available when JavaScript modules are executed in the browser. The overall sequence is:
|
|
|
|
|
|
|
|
|
|
# BootPrefix.js
|
|
|
|
|
# <module definitions>
|
|
|
|
|
# Boot.js
|
|
|
|
|
|
|
|
|
|
See Boot.js for further details of the boot process.
|
|
|
|
|
|
|
|
|
|
\*/
|
|
|
|
|
|
|
|
|
|
var _bootprefix = (function($tw) {
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
$tw = $tw || Object.create(null);
|
|
|
|
|
$tw.boot = $tw.boot || Object.create(null);
|
|
|
|
|
|
|
|
|
|
// Detect platforms
|
|
|
|
|
if(!("browser" in $tw)) {
|
|
|
|
|
$tw.browser = typeof(window) !== "undefined" ? {} : null;
|
|
|
|
|
}
|
|
|
|
|
if(!("node" in $tw)) {
|
|
|
|
|
$tw.node = typeof(process) === "object" ? {} : null;
|
|
|
|
|
}
|
|
|
|
|
if(!("nodeWebKit" in $tw)) {
|
|
|
|
|
$tw.nodeWebKit = $tw.node && global.window && global.window.nwDispatcher ? {} : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set default boot tasks
|
|
|
|
|
$tw.boot.tasks = {
|
|
|
|
|
trapErrors: !!($tw.browser && !$tw.node),
|
|
|
|
|
readBrowserTiddlers: !!($tw.browser && !$tw.node)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.define = function(moduleName,moduleType,definition) {
|
|
|
|
|
// Create the moduleInfo
|
|
|
|
|
var moduleInfo = {
|
|
|
|
|
moduleType: moduleType,
|
|
|
|
|
definition: definition,
|
|
|
|
|
exports: undefined
|
|
|
|
|
};
|
|
|
|
|
// If the definition is already an object we can use it as the exports
|
|
|
|
|
if(typeof moduleInfo.definition === "object") {
|
|
|
|
|
moduleInfo.exports = definition;
|
|
|
|
|
}
|
|
|
|
|
// Store the module in the titles hashmap
|
|
|
|
|
if(Object.prototype.hasOwnProperty.call($tw.modules.titles,moduleName)) {
|
|
|
|
|
console.log("Warning: Redefined module - " + moduleName);
|
|
|
|
|
}
|
|
|
|
|
$tw.modules.titles[moduleName] = moduleInfo;
|
|
|
|
|
// Store the module in the types hashmap
|
|
|
|
|
if(!Object.prototype.hasOwnProperty.call($tw.modules.types,moduleType)) {
|
|
|
|
|
$tw.modules.types[moduleType] = {};
|
|
|
|
|
}
|
|
|
|
|
if(Object.prototype.hasOwnProperty.call($tw.modules.types[moduleType],moduleName)) {
|
|
|
|
|
console.log("Warning: Redefined module - " + moduleName);
|
|
|
|
|
}
|
|
|
|
|
$tw.modules.types[moduleType][moduleName] = moduleInfo;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
External JavaScript can populate this array before calling boot.js in order to preload tiddlers
|
|
|
|
|
*/
|
|
|
|
|
$tw.preloadTiddlers = $tw.preloadTiddlers || [];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Convenience function for pushing a tiddler onto the preloading array
|
|
|
|
|
*/
|
|
|
|
|
$tw.preloadTiddler = function(fields) {
|
|
|
|
|
$tw.preloadTiddlers.push(fields);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Convenience function for pushing an array of tiddlers onto the preloading array
|
|
|
|
|
*/
|
|
|
|
|
$tw.preloadTiddlerArray = function(fieldsArray) {
|
|
|
|
|
$tw.preloadTiddlers.push.apply($tw.preloadTiddlers,fieldsArray);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return $tw;
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if(typeof(exports) === "undefined") {
|
|
|
|
|
// Set up $tw global for the browser
|
|
|
|
|
window.$tw = _bootprefix(window.$tw);
|
|
|
|
|
} else {
|
|
|
|
|
// Export functionality as a module
|
|
|
|
|
exports.bootprefix = _bootprefix;
|
|
|
|
|
}
|
|
|
|
|
//# sourceURL=$:/boot/bootprefix.js
|
|
|
|
|
</script>
|
|
|
|
|
</div>
|
|
|
|
|
<!--~~ Boot kernel ~~-->
|
|
|
|
|
<div id="bootKernel" style="display:none;">
|
|
|
|
|
<script data-tiddler-title="$:/boot/boot.js" data-tiddler-type="application/javascript" type="text/javascript">/*\
|
|
|
|
|
title: $:/boot/boot.js
|
|
|
|
|
type: application/javascript
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
var fs, path, vm;
|
|
|
|
|
if($tw.node) {
|
|
|
|
|
fs = require("fs");
|
|
|
|
|
path = require("path");
|
|
|
|
|
vm = require("vm");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Utility functions
|
|
|
|
|
|
|
|
|
|
$tw.boot.log = function(str) {
|
|
|
|
|
$tw.boot.logMessages = $tw.boot.logMessages || [];
|
|
|
|
|
$tw.boot.logMessages.push(str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Check if an object has a property
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.hop = function(object,property) {
|
|
|
|
|
return object ? Object.prototype.hasOwnProperty.call(object,property) : false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Determine if a value is an array
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.isArray = function(value) {
|
|
|
|
|
return Object.prototype.toString.call(value) == "[object Array]";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Check if an array is equal by value and by reference.
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.isArrayEqual = function(array1,array2) {
|
|
|
|
|
if(array1 === array2) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
array1 = array1 || [];
|
|
|
|
|
array2 = array2 || [];
|
|
|
|
|
if(array1.length !== array2.length) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return array1.every(function(value,index) {
|
|
|
|
|
return value === array2[index];
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Add an entry to a sorted array if it doesn't already exist, while maintaining the sort order
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.insertSortedArray = function(array,value) {
|
|
|
|
|
var low = 0, high = array.length - 1, mid, cmp;
|
|
|
|
|
while(low <= high) {
|
|
|
|
|
mid = (low + high) >> 1;
|
|
|
|
|
cmp = value.localeCompare(array[mid]);
|
|
|
|
|
if(cmp > 0) {
|
|
|
|
|
low = mid + 1;
|
|
|
|
|
} else if(cmp < 0) {
|
|
|
|
|
high = mid - 1;
|
|
|
|
|
} else {
|
|
|
|
|
return array;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
array.splice(low,0,value);
|
|
|
|
|
return array;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Push entries onto an array, removing them first if they already exist in the array
|
|
|
|
|
array: array to modify (assumed to be free of duplicates)
|
|
|
|
|
value: a single value to push or an array of values to push
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.pushTop = function(array,value) {
|
|
|
|
|
var t,p;
|
|
|
|
|
if($tw.utils.isArray(value)) {
|
|
|
|
|
// Remove any array entries that are duplicated in the new values
|
|
|
|
|
if(value.length !== 0) {
|
|
|
|
|
if(array.length !== 0) {
|
|
|
|
|
if(value.length < array.length) {
|
|
|
|
|
for(t=0; t<value.length; t++) {
|
|
|
|
|
p = array.indexOf(value[t]);
|
|
|
|
|
if(p !== -1) {
|
|
|
|
|
array.splice(p,1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
for(t=array.length-1; t>=0; t--) {
|
|
|
|
|
p = value.indexOf(array[t]);
|
|
|
|
|
if(p !== -1) {
|
|
|
|
|
array.splice(t,1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Push the values on top of the main array
|
|
|
|
|
array.push.apply(array,value);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
p = array.indexOf(value);
|
|
|
|
|
if(p !== -1) {
|
|
|
|
|
array.splice(p,1);
|
|
|
|
|
}
|
|
|
|
|
array.push(value);
|
|
|
|
|
}
|
|
|
|
|
return array;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Determine if a value is a date
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.isDate = function(value) {
|
|
|
|
|
return Object.prototype.toString.call(value) === "[object Date]";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Iterate through all the own properties of an object or array. Callback is invoked with (element,title,object)
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.each = function(object,callback) {
|
|
|
|
|
var next,f,length;
|
|
|
|
|
if(object) {
|
|
|
|
|
if(Object.prototype.toString.call(object) == "[object Array]") {
|
|
|
|
|
for (f=0, length=object.length; f<length; f++) {
|
|
|
|
|
next = callback(object[f],f,object);
|
|
|
|
|
if(next === false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
var keys = Object.keys(object);
|
|
|
|
|
for (f=0, length=keys.length; f<length; f++) {
|
|
|
|
|
var key = keys[f];
|
|
|
|
|
next = callback(object[key],key,object);
|
|
|
|
|
if(next === false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Helper for making DOM elements
|
|
|
|
|
tag: tag name
|
|
|
|
|
options: see below
|
|
|
|
|
Options include:
|
|
|
|
|
namespace: defaults to http://www.w3.org/1999/xhtml
|
|
|
|
|
attributes: hashmap of attribute values
|
|
|
|
|
style: hashmap of styles
|
|
|
|
|
text: text to add as a child node
|
|
|
|
|
children: array of further child nodes
|
|
|
|
|
innerHTML: optional HTML for element
|
|
|
|
|
class: class name(s)
|
|
|
|
|
document: defaults to current document
|
|
|
|
|
eventListeners: array of event listeners (this option won't work until $tw.utils.addEventListeners() has been loaded)
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.domMaker = function(tag,options) {
|
|
|
|
|
var doc = options.document || document;
|
|
|
|
|
var element = doc.createElementNS(options.namespace || "http://www.w3.org/1999/xhtml",tag);
|
|
|
|
|
if(options["class"]) {
|
|
|
|
|
element.className = options["class"];
|
|
|
|
|
}
|
|
|
|
|
if(options.text) {
|
|
|
|
|
element.appendChild(doc.createTextNode(options.text));
|
|
|
|
|
}
|
|
|
|
|
$tw.utils.each(options.children,function(child) {
|
|
|
|
|
element.appendChild(child);
|
|
|
|
|
});
|
|
|
|
|
if(options.innerHTML) {
|
|
|
|
|
element.innerHTML = options.innerHTML;
|
|
|
|
|
}
|
|
|
|
|
$tw.utils.each(options.attributes,function(attribute,name) {
|
|
|
|
|
element.setAttribute(name,attribute);
|
|
|
|
|
});
|
|
|
|
|
$tw.utils.each(options.style,function(value,name) {
|
|
|
|
|
element.style[name] = value;
|
|
|
|
|
});
|
|
|
|
|
if(options.eventListeners) {
|
|
|
|
|
$tw.utils.addEventListeners(element,options.eventListeners);
|
|
|
|
|
}
|
|
|
|
|
return element;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Display an error and exit
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.error = function(err) {
|
|
|
|
|
// Prepare the error message
|
|
|
|
|
var errHeading = ( $tw.language == undefined ? "Internal JavaScript Error" : $tw.language.getString("InternalJavaScriptError/Title") ),
|
|
|
|
|
promptMsg = ( $tw.language == undefined ? "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser" : $tw.language.getString("InternalJavaScriptError/Hint") );
|
|
|
|
|
// Log the error to the console
|
|
|
|
|
console.error($tw.node ? "\x1b[1;31m" + err + "\x1b[0m" : err);
|
|
|
|
|
if($tw.browser && !$tw.node) {
|
|
|
|
|
// Display an error message to the user
|
|
|
|
|
var dm = $tw.utils.domMaker,
|
|
|
|
|
heading = dm("h1",{text: errHeading}),
|
|
|
|
|
prompt = dm("div",{text: promptMsg, "class": "tc-error-prompt"}),
|
|
|
|
|
message = dm("div",{text: err, "class":"tc-error-message"}),
|
|
|
|
|
button = dm("div",{children: [dm("button",{text: ( $tw.language == undefined ? "close" : $tw.language.getString("Buttons/Close/Caption") )})], "class": "tc-error-prompt"}),
|
|
|
|
|
form = dm("form",{children: [heading,prompt,message,button], "class": "tc-error-form"});
|
|
|
|
|
document.body.insertBefore(form,document.body.firstChild);
|
|
|
|
|
form.addEventListener("submit",function(event) {
|
|
|
|
|
document.body.removeChild(form);
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
return false;
|
|
|
|
|
},true);
|
|
|
|
|
return null;
|
|
|
|
|
} else if(!$tw.browser) {
|
|
|
|
|
// Exit if we're under node.js
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Use our custom error handler if we're in the browser
|
|
|
|
|
*/
|
|
|
|
|
if($tw.boot.tasks.trapErrors) {
|
|
|
|
|
window.onerror = function(errorMsg,url,lineNumber) {
|
|
|
|
|
$tw.utils.error(errorMsg);
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Extend an object with the properties from a list of source objects
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.extend = function(object /*, sourceObjectList */) {
|
|
|
|
|
$tw.utils.each(Array.prototype.slice.call(arguments,1),function(source) {
|
|
|
|
|
if(source) {
|
|
|
|
|
for (var p in source) {
|
|
|
|
|
object[p] = source[p];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return object;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.deepDefaults = function(object /*, sourceObjectList */) {
|
|
|
|
|
$tw.utils.each(Array.prototype.slice.call(arguments,1),function(source) {
|
|
|
|
|
if(source) {
|
|
|
|
|
for (var p in source) {
|
|
|
|
|
if(object[p] === null || object[p] === undefined) {
|
|
|
|
|
object[p] = source[p];
|
|
|
|
|
}
|
|
|
|
|
if(typeof object[p] === "object" && typeof source[p] === "object") {
|
|
|
|
|
$tw.utils.deepDefaults(object[p],source[p]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return object;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Convert a URIComponent encoded string to a string safely
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.decodeURIComponentSafe = function(s) {
|
|
|
|
|
var v = s;
|
|
|
|
|
try {
|
|
|
|
|
v = decodeURIComponent(s);
|
|
|
|
|
} catch(e) {}
|
|
|
|
|
return v;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Convert a URI encoded string to a string safely
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.decodeURISafe = function(s) {
|
|
|
|
|
var v = s;
|
|
|
|
|
try {
|
|
|
|
|
v = decodeURI(s);
|
|
|
|
|
} catch(e) {}
|
|
|
|
|
return v;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Convert "&" to &, " " to nbsp, "<" to <, ">" to > and """ to "
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.htmlDecode = function(s) {
|
|
|
|
|
return s.toString().replace(/</mg,"<").replace(/ /mg,"\xA0").replace(/>/mg,">").replace(/"/mg,"\"").replace(/&/mg,"&");
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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)
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.getLocationHash = function() {
|
|
|
|
|
var href = window.location.href;
|
|
|
|
|
var idx = href.indexOf('#');
|
|
|
|
|
if(idx === -1) {
|
|
|
|
|
return "#";
|
|
|
|
|
} else if(idx < href.length-1 && href[idx+1] === '#') {
|
|
|
|
|
// Special case: ignore location hash if it itself starts with a #
|
|
|
|
|
return "#";
|
|
|
|
|
} else {
|
|
|
|
|
return href.substring(idx);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Pad a string to a given length with "0"s. Length defaults to 2
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.pad = function(value,length) {
|
|
|
|
|
length = length || 2;
|
|
|
|
|
var s = value.toString();
|
|
|
|
|
if(s.length < length) {
|
|
|
|
|
s = "000000000000000000000000000".substr(0,length - s.length) + s;
|
|
|
|
|
}
|
|
|
|
|
return s;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Convert a date into UTC YYYYMMDDHHMMSSmmm format
|
|
|
|
|
$tw.utils.stringifyDate = function(value) {
|
|
|
|
|
return value.getUTCFullYear() +
|
|
|
|
|
$tw.utils.pad(value.getUTCMonth() + 1) +
|
|
|
|
|
$tw.utils.pad(value.getUTCDate()) +
|
|
|
|
|
$tw.utils.pad(value.getUTCHours()) +
|
|
|
|
|
$tw.utils.pad(value.getUTCMinutes()) +
|
|
|
|
|
$tw.utils.pad(value.getUTCSeconds()) +
|
|
|
|
|
$tw.utils.pad(value.getUTCMilliseconds(),3);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Parse a date from a UTC YYYYMMDDHHMMSSmmm format string
|
|
|
|
|
$tw.utils.parseDate = function(value) {
|
|
|
|
|
if(typeof value === "string") {
|
|
|
|
|
var negative = 1;
|
|
|
|
|
if(value.charAt(0) === "-") {
|
|
|
|
|
negative = -1;
|
|
|
|
|
value = value.substr(1);
|
|
|
|
|
}
|
|
|
|
|
var year = parseInt(value.substr(0,4),10) * negative,
|
|
|
|
|
d = new Date(Date.UTC(year,
|
|
|
|
|
parseInt(value.substr(4,2),10)-1,
|
|
|
|
|
parseInt(value.substr(6,2),10),
|
|
|
|
|
parseInt(value.substr(8,2)||"00",10),
|
|
|
|
|
parseInt(value.substr(10,2)||"00",10),
|
|
|
|
|
parseInt(value.substr(12,2)||"00",10),
|
|
|
|
|
parseInt(value.substr(14,3)||"000",10)));
|
|
|
|
|
d.setUTCFullYear(year); // See https://stackoverflow.com/a/5870822
|
|
|
|
|
return d;
|
|
|
|
|
} else if($tw.utils.isDate(value)) {
|
|
|
|
|
return value;
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Stringify an array of tiddler titles into a list string
|
|
|
|
|
$tw.utils.stringifyList = function(value) {
|
|
|
|
|
if($tw.utils.isArray(value)) {
|
|
|
|
|
var result = new Array(value.length);
|
|
|
|
|
for(var t=0, l=value.length; t<l; t++) {
|
|
|
|
|
var entry = value[t] || "";
|
|
|
|
|
if(entry.indexOf(" ") !== -1) {
|
|
|
|
|
result[t] = "[[" + entry + "]]";
|
|
|
|
|
} else {
|
|
|
|
|
result[t] = entry;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result.join(" ");
|
|
|
|
|
} else {
|
|
|
|
|
return value || "";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Parse a string array from a bracketted list. For example "OneTiddler [[Another Tiddler]] LastOne"
|
|
|
|
|
$tw.utils.parseStringArray = function(value, allowDuplicate) {
|
|
|
|
|
if(typeof value === "string") {
|
|
|
|
|
var memberRegExp = /(?:^|[^\S\xA0])(?:\[\[(.*?)\]\])(?=[^\S\xA0]|$)|([\S\xA0]+)/mg,
|
|
|
|
|
results = [], names = {},
|
|
|
|
|
match;
|
|
|
|
|
do {
|
|
|
|
|
match = memberRegExp.exec(value);
|
|
|
|
|
if(match) {
|
|
|
|
|
var item = match[1] || match[2];
|
|
|
|
|
if(item !== undefined && (!$tw.utils.hop(names,item) || allowDuplicate)) {
|
|
|
|
|
results.push(item);
|
|
|
|
|
names[item] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} while(match);
|
|
|
|
|
return results;
|
|
|
|
|
} else if($tw.utils.isArray(value)) {
|
|
|
|
|
return value;
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Parse a block of name:value fields. The `fields` object is used as the basis for the return value
|
|
|
|
|
$tw.utils.parseFields = function(text,fields) {
|
|
|
|
|
fields = fields || Object.create(null);
|
|
|
|
|
text.split(/\r?\n/mg).forEach(function(line) {
|
|
|
|
|
if(line.charAt(0) !== "#") {
|
|
|
|
|
var p = line.indexOf(":");
|
|
|
|
|
if(p !== -1) {
|
|
|
|
|
var field = line.substr(0, p).trim(),
|
|
|
|
|
value = line.substr(p+1).trim();
|
|
|
|
|
if(field) {
|
|
|
|
|
fields[field] = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return fields;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Safely parse a string as JSON
|
|
|
|
|
$tw.utils.parseJSONSafe = function(text,defaultJSON) {
|
|
|
|
|
try {
|
|
|
|
|
return JSON.parse(text);
|
|
|
|
|
} catch(e) {
|
|
|
|
|
if(typeof defaultJSON === "function") {
|
|
|
|
|
return defaultJSON(e);
|
|
|
|
|
} else {
|
|
|
|
|
return defaultJSON || {};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Resolves a source filepath delimited with `/` relative to a specified absolute root filepath.
|
|
|
|
|
In relative paths, the special folder name `..` refers to immediate parent directory, and the
|
|
|
|
|
name `.` refers to the current directory
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.resolvePath = function(sourcepath,rootpath) {
|
|
|
|
|
// If the source path starts with ./ or ../ then it is relative to the root
|
|
|
|
|
if(sourcepath.substr(0,2) === "./" || sourcepath.substr(0,3) === "../" ) {
|
|
|
|
|
var src = sourcepath.split("/"),
|
|
|
|
|
root = rootpath.split("/");
|
|
|
|
|
// Remove the filename part of the root
|
|
|
|
|
root.splice(root.length-1,1);
|
|
|
|
|
// Process the source path bit by bit onto the end of the root path
|
|
|
|
|
while(src.length > 0) {
|
|
|
|
|
var c = src.shift();
|
|
|
|
|
if(c === "..") { // Slice off the last root entry for a double dot
|
|
|
|
|
if(root.length > 0) {
|
|
|
|
|
root.splice(root.length-1,1);
|
|
|
|
|
}
|
|
|
|
|
} else if(c !== ".") { // Ignore dots
|
|
|
|
|
root.push(c); // Copy other elements across
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return root.join("/");
|
|
|
|
|
} else {
|
|
|
|
|
// If it isn't relative, just return the path
|
|
|
|
|
if(rootpath) {
|
|
|
|
|
var root = rootpath.split("/");
|
|
|
|
|
// Remove the filename part of the root
|
|
|
|
|
root.splice(root.length - 1, 1);
|
|
|
|
|
return root.join("/") + "/" + sourcepath;
|
|
|
|
|
} else {
|
|
|
|
|
return sourcepath;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Parse a semantic version string into its constituent parts -- see https://semver.org
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.parseVersion = function(version) {
|
|
|
|
|
var match = /^v?((\d+)\.(\d+)\.(\d+))(?:-([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?(?:\+([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?$/.exec(version);
|
|
|
|
|
if(match) {
|
|
|
|
|
return {
|
|
|
|
|
version: match[1],
|
|
|
|
|
major: parseInt(match[2],10),
|
|
|
|
|
minor: parseInt(match[3],10),
|
|
|
|
|
patch: parseInt(match[4],10),
|
|
|
|
|
prerelease: match[5],
|
|
|
|
|
build: match[6]
|
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Returns +1 if the version string A is greater than the version string B, 0 if they are the same, and +1 if B is greater than A.
|
|
|
|
|
Missing or malformed version strings are parsed as 0.0.0
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.compareVersions = function(versionStringA,versionStringB) {
|
|
|
|
|
var defaultVersion = {
|
|
|
|
|
major: 0,
|
|
|
|
|
minor: 0,
|
|
|
|
|
patch: 0
|
|
|
|
|
},
|
|
|
|
|
versionA = $tw.utils.parseVersion(versionStringA) || defaultVersion,
|
|
|
|
|
versionB = $tw.utils.parseVersion(versionStringB) || defaultVersion,
|
|
|
|
|
diff = [
|
|
|
|
|
versionA.major - versionB.major,
|
|
|
|
|
versionA.minor - versionB.minor,
|
|
|
|
|
versionA.patch - versionB.patch
|
|
|
|
|
];
|
|
|
|
|
if((diff[0] > 0) || (diff[0] === 0 && diff[1] > 0) || (diff[0] === 0 & diff[1] === 0 & diff[2] > 0)) {
|
|
|
|
|
return +1;
|
|
|
|
|
} else if((diff[0] < 0) || (diff[0] === 0 && diff[1] < 0) || (diff[0] === 0 & diff[1] === 0 & diff[2] < 0)) {
|
|
|
|
|
return -1;
|
|
|
|
|
} else {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Returns true if the version string A is greater than the version string B. Returns true if the versions are the same
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.checkVersions = function(versionStringA,versionStringB) {
|
|
|
|
|
return $tw.utils.compareVersions(versionStringA,versionStringB) !== -1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Register file type information
|
|
|
|
|
options: {flags: flags,deserializerType: deserializerType}
|
|
|
|
|
flags:"image" for image types
|
|
|
|
|
deserializerType: defaults to type if not specified
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.registerFileType = function(type,encoding,extension,options) {
|
|
|
|
|
options = options || {};
|
|
|
|
|
if($tw.utils.isArray(extension)) {
|
|
|
|
|
$tw.utils.each(extension,function(extension) {
|
|
|
|
|
$tw.config.fileExtensionInfo[extension] = {type: type};
|
|
|
|
|
});
|
|
|
|
|
extension = extension[0];
|
|
|
|
|
} else {
|
|
|
|
|
$tw.config.fileExtensionInfo[extension] = {type: type};
|
|
|
|
|
}
|
|
|
|
|
$tw.config.contentTypeInfo[type] = {encoding: encoding, extension: extension, flags: options.flags || [], deserializerType: options.deserializerType || type};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Given an extension, always access the $tw.config.fileExtensionInfo
|
|
|
|
|
using a lowercase extension only.
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.getFileExtensionInfo = function(ext) {
|
|
|
|
|
return ext ? $tw.config.fileExtensionInfo[ext.toLowerCase()] : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Given an extension, get the correct encoding for that file.
|
|
|
|
|
defaults to utf8
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.getTypeEncoding = function(ext) {
|
|
|
|
|
var extensionInfo = $tw.utils.getFileExtensionInfo(ext),
|
|
|
|
|
type = extensionInfo ? extensionInfo.type : null,
|
|
|
|
|
typeInfo = type ? $tw.config.contentTypeInfo[type] : null;
|
|
|
|
|
return typeInfo ? typeInfo.encoding : "utf8";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Run code globally with specified context variables in scope
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.evalGlobal = function(code,context,filename) {
|
|
|
|
|
var contextCopy = $tw.utils.extend(Object.create(null),context);
|
|
|
|
|
// Get the context variables as a pair of arrays of names and values
|
|
|
|
|
var contextNames = [], contextValues = [];
|
|
|
|
|
$tw.utils.each(contextCopy,function(value,name) {
|
|
|
|
|
contextNames.push(name);
|
|
|
|
|
contextValues.push(value);
|
|
|
|
|
});
|
|
|
|
|
// Add the code prologue and epilogue
|
|
|
|
|
code = "(function(" + contextNames.join(",") + ") {(function(){\n" + code + "\n;})();\nreturn exports;\n})\n";
|
|
|
|
|
// Compile the code into a function
|
|
|
|
|
var fn;
|
|
|
|
|
if($tw.browser) {
|
|
|
|
|
fn = window["eval"](code + "\n\n//# sourceURL=" + filename);
|
|
|
|
|
} else {
|
|
|
|
|
fn = vm.runInThisContext(code,filename);
|
|
|
|
|
}
|
|
|
|
|
// Call the function and return the exports
|
|
|
|
|
return fn.apply(null,contextValues);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Run code in a sandbox with only the specified context variables in scope
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.evalSandboxed = $tw.browser ? $tw.utils.evalGlobal : function(code,context,filename) {
|
|
|
|
|
var sandbox = $tw.utils.extend(Object.create(null),context);
|
|
|
|
|
vm.runInNewContext(code,sandbox,filename);
|
|
|
|
|
return sandbox.exports;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Creates a PasswordPrompt object
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.PasswordPrompt = function() {
|
|
|
|
|
// Store of pending password prompts
|
|
|
|
|
this.passwordPrompts = [];
|
|
|
|
|
// Create the wrapper
|
|
|
|
|
this.promptWrapper = $tw.utils.domMaker("div",{"class":"tc-password-wrapper"});
|
|
|
|
|
document.body.appendChild(this.promptWrapper);
|
|
|
|
|
// Hide the empty wrapper
|
|
|
|
|
this.setWrapperDisplay();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Hides or shows the wrapper depending on whether there are any outstanding prompts
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.PasswordPrompt.prototype.setWrapperDisplay = function() {
|
|
|
|
|
if(this.passwordPrompts.length) {
|
|
|
|
|
this.promptWrapper.style.display = "block";
|
|
|
|
|
} else {
|
|
|
|
|
this.promptWrapper.style.display = "none";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Adds a new password prompt. Options are:
|
|
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
|
|
|
|
// Create and add the prompt to the DOM
|
|
|
|
|
var self = this,
|
|
|
|
|
submitText = options.submitText || "Login",
|
|
|
|
|
dm = $tw.utils.domMaker,
|
|
|
|
|
children = [dm("h1",{text: options.serviceName})];
|
|
|
|
|
if(!options.noUserName) {
|
|
|
|
|
children.push(dm("input",{
|
|
|
|
|
attributes: {type: "text", name: "username", placeholder: $tw.language.getString("Encryption/Username")}
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
children.push(dm("input",{
|
|
|
|
|
attributes: {
|
|
|
|
|
type: "password",
|
|
|
|
|
name: "password",
|
|
|
|
|
placeholder: ( $tw.language == undefined ? "Password" : $tw.language.getString("Encryption/Password") )
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
if(options.repeatPassword) {
|
|
|
|
|
children.push(dm("input",{
|
|
|
|
|
attributes: {
|
|
|
|
|
type: "password",
|
|
|
|
|
name: "password2",
|
|
|
|
|
placeholder: $tw.language.getString("Encryption/RepeatPassword")
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
if(options.canCancel) {
|
|
|
|
|
children.push(dm("button",{
|
|
|
|
|
text: $tw.language.getString("Encryption/Cancel"),
|
|
|
|
|
attributes: {
|
|
|
|
|
type: "button"
|
|
|
|
|
},
|
|
|
|
|
eventListeners: [{
|
|
|
|
|
name: "click",
|
|
|
|
|
handlerFunction: function(event) {
|
|
|
|
|
self.removePrompt(promptInfo);
|
|
|
|
|
options.callback(null);
|
|
|
|
|
}
|
|
|
|
|
}]
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
children.push(dm("button",{
|
|
|
|
|
attributes: {type: "submit"},
|
|
|
|
|
text: submitText
|
|
|
|
|
}));
|
|
|
|
|
var form = dm("form",{
|
|
|
|
|
attributes: {autocomplete: "off"},
|
|
|
|
|
children: children
|
|
|
|
|
});
|
|
|
|
|
this.promptWrapper.appendChild(form);
|
|
|
|
|
window.setTimeout(function() {
|
|
|
|
|
form.elements[0].focus();
|
|
|
|
|
},10);
|
|
|
|
|
// Add a submit event handler
|
|
|
|
|
var self = this;
|
|
|
|
|
form.addEventListener("submit",function(event) {
|
|
|
|
|
// Collect the form data
|
|
|
|
|
var data = {},t;
|
|
|
|
|
$tw.utils.each(form.elements,function(element) {
|
|
|
|
|
if(element.name && element.value) {
|
|
|
|
|
data[element.name] = element.value;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// Check that the passwords match
|
|
|
|
|
if(options.repeatPassword && data.password !== data.password2) {
|
|
|
|
|
alert($tw.language.getString("Encryption/PasswordNoMatch"));
|
|
|
|
|
} else {
|
|
|
|
|
// Call the callback
|
|
|
|
|
if(options.callback(data)) {
|
|
|
|
|
// Remove the prompt if the callback returned true
|
|
|
|
|
self.removePrompt(promptInfo);
|
|
|
|
|
} else {
|
|
|
|
|
// Clear the password if the callback returned false
|
|
|
|
|
$tw.utils.each(form.elements,function(element) {
|
|
|
|
|
if(element.name === "password" || element.name === "password2") {
|
|
|
|
|
element.value = "";
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
return false;
|
|
|
|
|
},true);
|
|
|
|
|
// Add the prompt to the list
|
|
|
|
|
var promptInfo = {
|
|
|
|
|
serviceName: options.serviceName,
|
|
|
|
|
callback: options.callback,
|
|
|
|
|
form: form,
|
|
|
|
|
owner: this
|
|
|
|
|
};
|
|
|
|
|
this.passwordPrompts.push(promptInfo);
|
|
|
|
|
// Make sure the wrapper is displayed
|
|
|
|
|
this.setWrapperDisplay();
|
|
|
|
|
return promptInfo;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$tw.utils.PasswordPrompt.prototype.removePrompt = function(promptInfo) {
|
|
|
|
|
var i = this.passwordPrompts.indexOf(promptInfo);
|
|
|
|
|
if(i !== -1) {
|
|
|
|
|
this.passwordPrompts.splice(i,1);
|
|
|
|
|
promptInfo.form.parentNode.removeChild(promptInfo.form);
|
|
|
|
|
this.setWrapperDisplay();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Crypto helper object for encrypted content. It maintains the password text in a closure, and provides methods to change
|
|
|
|
|
the password, and to encrypt/decrypt a block of text
|
|
|
|
|
*/
|
|
|
|
|
$tw.utils.Crypto = function() {
|
|
|
|
|
var sjcl = $tw.node ? (global.sjcl || require("./sjcl.js")) : window.sjcl,
|
|
|
|
|
currentPassword = null,
|
|
|
|
|
callSjcl = function(method,inputText,password) {
|
|
|
|
|
password = password || currentPassword;
|
|
|
|
|
var outputText;
|
|
|
|
|
try {
|
|
|
|
|
if(password) {
|
|
|
|
|
outputText = sjcl[method](password,inputText);
|
|
|
|
|
}
|
|
|
|
|
} catch(ex) {
|
|
|
|
|
console.log("Crypto error:" + ex);
|
|
|
|
|
outputText = null;
|
|
|
|
|
}
|
|
|
|
|
return outputText;
|
|
|
|
|
};
|
|
|
|
|
this.setPassword = function(newPassword) {
|
|
|
|
|
currentPassword = newPassword;
|
|
|
|
|
this.updateCryptoStateTiddler();
|
|
|
|
|
};
|
|
|
|
|
this.updateCryptoStateTiddler = function() {
|
|
|
|
|
if($tw.wiki) {
|
|
|
|
|
var state = currentPassword ? "yes" : "no",
|
|
|
|
|
tiddler = $tw.wiki.getTiddler("$:/isEncrypted");
|
|
|
|
|
if(!tiddler || tiddler.fields.text !== state) {
|
|
|
|
|
$tw.wiki.addTiddler(new $tw.Tiddler({title: "$:/isEncrypted", text: state}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.hasPassword = function() {
|
|
|
|
|
return !!currentPassword;
|
|
|
|
|
}
|
|
|
|
|
this.encrypt = function(text,password) {
|
|
|
|
|
return callSjcl("encrypt",text,password);
|
|
|
|
|
};
|
|
|
|
|
this.decrypt = function(text,password) {
|
|
|
|
|
return callSjcl("decrypt",text,password);
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Module mechanism
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Execute the module named 'moduleName'. The name can optionally be relative to the module named 'moduleRoot'
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.execute = function(moduleName,moduleRoot) {
|
|
|
|
|
var name = moduleName;
|
|
|
|
|
if(moduleName.charAt(0) === ".") {
|
|
|
|
|
name = $tw.utils.resolvePath(moduleName,moduleRoot)
|
|
|
|
|
}
|
|
|
|
|
if(!$tw.modules.titles[name]) {
|
|
|
|
|
if($tw.modules.titles[name + ".js"]) {
|
|
|
|
|
name = name + ".js";
|
|
|
|
|
} else if($tw.modules.titles[name + "/index.js"]) {
|
|
|
|
|
name = name + "/index.js";
|
|
|
|
|
} else if($tw.modules.titles[moduleName]) {
|
|
|
|
|
name = moduleName;
|
|
|
|
|
} else if($tw.modules.titles[moduleName + ".js"]) {
|
|
|
|
|
name = moduleName + ".js";
|
|
|
|
|
} else if($tw.modules.titles[moduleName + "/index.js"]) {
|
|
|
|
|
name = moduleName + "/index.js";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var moduleInfo = $tw.modules.titles[name],
|
|
|
|
|
tiddler = $tw.wiki.getTiddler(name),
|
|
|
|
|
_exports = {},
|
|
|
|
|
sandbox = {
|
|
|
|
|
module: {exports: _exports},
|
|
|
|
|
//moduleInfo: moduleInfo,
|
|
|
|
|
exports: _exports,
|
|
|
|
|
console: console,
|
|
|
|
|
setInterval: setInterval,
|
|
|
|
|
clearInterval: clearInterval,
|
|
|
|
|
setTimeout: setTimeout,
|
|
|
|
|
clearTimeout: clearTimeout,
|
|
|
|
|
Buffer: $tw.browser ? undefined : Buffer,
|
|
|
|
|
$tw: $tw,
|
|
|
|
|
require: function(title) {
|
|
|
|
|
return $tw.modules.execute(title, name);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Object.defineProperty(sandbox.module, "id", {
|
|
|
|
|
value: name,
|
|
|
|
|
writable: false,
|
|
|
|
|
enumerable: true,
|
|
|
|
|
configurable: false
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if(!$tw.browser) {
|
|
|
|
|
$tw.utils.extend(sandbox,{
|
|
|
|
|
process: process
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
/*
|
|
|
|
|
CommonJS optional require.main property:
|
|
|
|
|
In a browser we offer a fake main module which points back to the boot function
|
|
|
|
|
(Theoretically, this may allow TW to eventually load itself as a module in the browser)
|
|
|
|
|
*/
|
|
|
|
|
Object.defineProperty(sandbox.require, "main", {
|
|
|
|
|
value: (typeof(require) !== "undefined") ? require.main : {TiddlyWiki: _boot},
|
|
|
|
|
writable: false,
|
|
|
|
|
enumerable: true,
|
|
|
|
|
configurable: false
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if(!moduleInfo) {
|
|
|
|
|
// We could not find the module on this path
|
|
|
|
|
// Try to defer to browserify etc, or node
|
|
|
|
|
var deferredModule;
|
|
|
|
|
if($tw.browser) {
|
|
|
|
|
if(window.require) {
|
|
|
|
|
try {
|
|
|
|
|
return window.require(moduleName);
|
|
|
|
|
} catch(e) {}
|
|
|
|
|
}
|
|
|
|
|
throw "Cannot find module named '" + moduleName + "' required by module '" + moduleRoot + "', resolved to " + name;
|
|
|
|
|
} else {
|
|
|
|
|
// If we don't have a module with that name, let node.js try to find it
|
|
|
|
|
return require(moduleName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Execute the module if we haven't already done so
|
|
|
|
|
if(!moduleInfo.exports) {
|
|
|
|
|
try {
|
|
|
|
|
// Check the type of the definition
|
|
|
|
|
if(typeof moduleInfo.definition === "function") { // Function
|
|
|
|
|
moduleInfo.exports = _exports;
|
|
|
|
|
moduleInfo.definition(moduleInfo,moduleInfo.exports,sandbox.require);
|
|
|
|
|
} else if(typeof moduleInfo.definition === "string") { // String
|
|
|
|
|
moduleInfo.exports = _exports;
|
|
|
|
|
$tw.utils.evalSandboxed(moduleInfo.definition,sandbox,tiddler.fields.title);
|
|
|
|
|
if(sandbox.module.exports) {
|
|
|
|
|
moduleInfo.exports = sandbox.module.exports; //more codemirror workaround
|
|
|
|
|
}
|
|
|
|
|
} else { // Object
|
|
|
|
|
moduleInfo.exports = moduleInfo.definition;
|
|
|
|
|
}
|
|
|
|
|
} catch(e) {
|
|
|
|
|
if (e instanceof SyntaxError) {
|
|
|
|
|
var line = e.lineNumber || e.line; // Firefox || Safari
|
|
|
|
|
if (typeof(line) != "undefined" && line !== null) {
|
|
|
|
|
$tw.utils.error("Syntax error in boot module " + name + ":" + line + ":\n" + e.stack);
|
|
|
|
|
} else if(!$tw.browser) {
|
|
|
|
|
// this is the only way to get node.js to display the line at which the syntax error appeared,
|
|
|
|
|
// and $tw.utils.error would exit anyway
|
|
|
|
|
// cf. https://bugs.chromium.org/p/v8/issues/detail?id=2589
|
|
|
|
|
throw e;
|
|
|
|
|
} else {
|
|
|
|
|
// Opera: line number is included in e.message
|
|
|
|
|
// Chrome/IE: there's currently no way to get the line number
|
|
|
|
|
$tw.utils.error("Syntax error in boot module " + name + ": " + e.message + "\n" + e.stack);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// line number should be included in e.stack for runtime errors
|
|
|
|
|
$tw.utils.error("Error executing boot module " + name + ": " + JSON.stringify(e) + "\n\n" + e.stack);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Return the exports of the module
|
|
|
|
|
return moduleInfo.exports;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Apply a callback to each module of a particular type
|
|
|
|
|
moduleType: type of modules to enumerate
|
|
|
|
|
callback: function called as callback(title,moduleExports) for each module
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.forEachModuleOfType = function(moduleType,callback) {
|
|
|
|
|
var modules = $tw.modules.types[moduleType];
|
|
|
|
|
$tw.utils.each(modules,function(element,title) {
|
|
|
|
|
callback(title,$tw.modules.execute(title));
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Get all the modules of a particular type in a hashmap by their `name` field
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.getModulesByTypeAsHashmap = function(moduleType,nameField) {
|
|
|
|
|
nameField = nameField || "name";
|
|
|
|
|
var results = Object.create(null);
|
|
|
|
|
$tw.modules.forEachModuleOfType(moduleType,function(title,module) {
|
|
|
|
|
results[module[nameField]] = module;
|
|
|
|
|
});
|
|
|
|
|
return results;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Apply the exports of the modules of a particular type to a target object
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.applyMethods = function(moduleType,targetObject) {
|
|
|
|
|
if(!targetObject) {
|
|
|
|
|
targetObject = Object.create(null);
|
|
|
|
|
}
|
|
|
|
|
$tw.modules.forEachModuleOfType(moduleType,function(title,module) {
|
|
|
|
|
$tw.utils.each(module,function(element,title,object) {
|
|
|
|
|
targetObject[title] = module[title];
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
return targetObject;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Return a class created from a modules. The module should export the properties to be added to those of the optional base class
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.createClassFromModule = function(moduleExports,baseClass) {
|
|
|
|
|
var newClass = function() {};
|
|
|
|
|
if(baseClass) {
|
|
|
|
|
newClass.prototype = new baseClass();
|
|
|
|
|
newClass.prototype.constructor = baseClass;
|
|
|
|
|
}
|
|
|
|
|
$tw.utils.extend(newClass.prototype,moduleExports);
|
|
|
|
|
return newClass;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.createClassesFromModules = function(moduleType,subType,baseClass) {
|
|
|
|
|
var classes = Object.create(null);
|
|
|
|
|
$tw.modules.forEachModuleOfType(moduleType,function(title,moduleExports) {
|
|
|
|
|
if(!subType || moduleExports.types[subType]) {
|
|
|
|
|
classes[moduleExports.name] = $tw.modules.createClassFromModule(moduleExports,baseClass);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return classes;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Barebones tiddler object
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Construct a tiddler object from a hashmap of tiddler fields. If multiple hasmaps are provided they are merged,
|
|
|
|
|
taking precedence to the right
|
|
|
|
|
*/
|
|
|
|
|
$tw.Tiddler = function(/* [fields,] fields */) {
|
|
|
|
|
this.fields = Object.create(null);
|
|
|
|
|
this.cache = Object.create(null);
|
|
|
|
|
for(var c=0; c<arguments.length; c++) {
|
|
|
|
|
var arg = arguments[c],
|
|
|
|
|
src = (arg instanceof $tw.Tiddler) ? arg.fields : arg;
|
|
|
|
|
for(var t in src) {
|
|
|
|
|
if(src[t] === undefined || src[t] === null) {
|
|
|
|
|
if(t in this.fields) {
|
|
|
|
|
delete this.fields[t]; // If we get a field that's undefined, delete any previous field value
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Parse the field with the associated field module (if any)
|
|
|
|
|
var fieldModule = $tw.Tiddler.fieldModules[t],
|
|
|
|
|
value;
|
|
|
|
|
if(fieldModule && fieldModule.parse) {
|
|
|
|
|
value = fieldModule.parse.call(this,src[t]);
|
|
|
|
|
} else {
|
|
|
|
|
value = src[t];
|
|
|
|
|
}
|
|
|
|
|
// Freeze the field to keep it immutable
|
|
|
|
|
if(value != null && typeof value === "object") {
|
|
|
|
|
Object.freeze(value);
|
|
|
|
|
}
|
|
|
|
|
this.fields[t] = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Freeze the tiddler against modification
|
|
|
|
|
Object.freeze(this.fields);
|
|
|
|
|
Object.freeze(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$tw.Tiddler.prototype.hasField = function(field) {
|
|
|
|
|
return $tw.utils.hop(this.fields,field);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Compare two tiddlers for equality
|
|
|
|
|
tiddler: the tiddler to compare
|
|
|
|
|
excludeFields: array of field names to exclude from the comparison
|
|
|
|
|
*/
|
|
|
|
|
$tw.Tiddler.prototype.isEqual = function(tiddler,excludeFields) {
|
|
|
|
|
if(!(tiddler instanceof $tw.Tiddler)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
excludeFields = excludeFields || [];
|
|
|
|
|
var self = this,
|
|
|
|
|
differences = []; // Fields that have differences
|
|
|
|
|
// Add to the differences array
|
|
|
|
|
function addDifference(fieldName) {
|
|
|
|
|
// Check for this field being excluded
|
|
|
|
|
if(excludeFields.indexOf(fieldName) === -1) {
|
|
|
|
|
// Save the field as a difference
|
|
|
|
|
$tw.utils.pushTop(differences,fieldName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Returns true if the two values of this field are equal
|
|
|
|
|
function isFieldValueEqual(fieldName) {
|
|
|
|
|
var valueA = self.fields[fieldName],
|
|
|
|
|
valueB = tiddler.fields[fieldName];
|
|
|
|
|
// Check for identical string values
|
|
|
|
|
if(typeof(valueA) === "string" && typeof(valueB) === "string" && valueA === valueB) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
// Check for identical array values
|
|
|
|
|
if($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
// Check for identical date values
|
|
|
|
|
if($tw.utils.isDate(valueA) && $tw.utils.isDate(valueB) && valueA.getTime() === valueB.getTime()) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
// Otherwise the fields must be different
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// Compare our fields
|
|
|
|
|
for(var fieldName in this.fields) {
|
|
|
|
|
if(!isFieldValueEqual(fieldName)) {
|
|
|
|
|
addDifference(fieldName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// There's a difference for every field in the other tiddler that we don't have
|
|
|
|
|
for(fieldName in tiddler.fields) {
|
|
|
|
|
if(!(fieldName in this.fields)) {
|
|
|
|
|
addDifference(fieldName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Return whether there were any differences
|
|
|
|
|
return differences.length === 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Register and install the built in tiddler field modules
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerfields/modified","tiddlerfield",{
|
|
|
|
|
name: "modified",
|
|
|
|
|
parse: $tw.utils.parseDate,
|
|
|
|
|
stringify: $tw.utils.stringifyDate
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerfields/created","tiddlerfield",{
|
|
|
|
|
name: "created",
|
|
|
|
|
parse: $tw.utils.parseDate,
|
|
|
|
|
stringify: $tw.utils.stringifyDate
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerfields/color","tiddlerfield",{
|
|
|
|
|
name: "color",
|
|
|
|
|
editTag: "input",
|
|
|
|
|
editType: "color"
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerfields/tags","tiddlerfield",{
|
|
|
|
|
name: "tags",
|
|
|
|
|
parse: $tw.utils.parseStringArray,
|
|
|
|
|
stringify: $tw.utils.stringifyList
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerfields/list","tiddlerfield",{
|
|
|
|
|
name: "list",
|
|
|
|
|
parse: $tw.utils.parseStringArray,
|
|
|
|
|
stringify: $tw.utils.stringifyList
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Barebones wiki store
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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
|
|
|
|
|
tiddlerTitles = null, // Array of tiddler titles
|
|
|
|
|
getTiddlerTitles = function() {
|
|
|
|
|
if(!tiddlerTitles) {
|
|
|
|
|
tiddlerTitles = Object.keys(tiddlers).sort(function(a,b) {return a.localeCompare(b);});
|
|
|
|
|
}
|
|
|
|
|
return tiddlerTitles;
|
|
|
|
|
},
|
|
|
|
|
pluginTiddlers = [], // Array of tiddlers containing registered plugins, ordered by priority
|
|
|
|
|
pluginInfo = Object.create(null), // Hashmap of parsed plugin content
|
|
|
|
|
shadowTiddlers = Object.create(null), // Hashmap by title of {source:, tiddler:}
|
|
|
|
|
shadowTiddlerTitles = null,
|
|
|
|
|
getShadowTiddlerTitles = function() {
|
|
|
|
|
if(!shadowTiddlerTitles) {
|
|
|
|
|
shadowTiddlerTitles = Object.keys(shadowTiddlers);
|
|
|
|
|
}
|
|
|
|
|
return shadowTiddlerTitles;
|
|
|
|
|
},
|
|
|
|
|
enableIndexers = options.enableIndexers || null,
|
|
|
|
|
indexers = [],
|
|
|
|
|
indexersByName = Object.create(null);
|
|
|
|
|
|
|
|
|
|
this.addIndexer = function(indexer,name) {
|
|
|
|
|
// Bail if this indexer is not enabled
|
|
|
|
|
if(enableIndexers && enableIndexers.indexOf(name) === -1) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
indexers.push(indexer);
|
|
|
|
|
indexersByName[name] = indexer;
|
|
|
|
|
indexer.init();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
this.getIndexer = function(name) {
|
|
|
|
|
return indexersByName[name] || null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Add a tiddler to the store
|
|
|
|
|
this.addTiddler = function(tiddler) {
|
|
|
|
|
if(!(tiddler instanceof $tw.Tiddler)) {
|
|
|
|
|
tiddler = new $tw.Tiddler(tiddler);
|
|
|
|
|
}
|
|
|
|
|
// Save the tiddler
|
|
|
|
|
if(tiddler) {
|
|
|
|
|
var title = tiddler.fields.title;
|
|
|
|
|
if(title) {
|
|
|
|
|
// Uncomment the following line for detailed logs of all tiddler writes
|
|
|
|
|
// console.log("Adding",title,tiddler)
|
|
|
|
|
// Record the old tiddler state
|
|
|
|
|
var updateDescriptor = {
|
|
|
|
|
old: {
|
|
|
|
|
tiddler: this.getTiddler(title),
|
|
|
|
|
shadow: this.isShadowTiddler(title),
|
|
|
|
|
exists: this.tiddlerExists(title)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Save the new tiddler
|
|
|
|
|
tiddlers[title] = tiddler;
|
|
|
|
|
// Check we've got the title
|
|
|
|
|
tiddlerTitles = $tw.utils.insertSortedArray(tiddlerTitles || [],title);
|
|
|
|
|
// Record the new tiddler state
|
|
|
|
|
updateDescriptor["new"] = {
|
|
|
|
|
tiddler: tiddler,
|
|
|
|
|
shadow: this.isShadowTiddler(title),
|
|
|
|
|
exists: this.tiddlerExists(title)
|
|
|
|
|
}
|
|
|
|
|
// Update indexes
|
|
|
|
|
this.clearCache(title);
|
|
|
|
|
this.clearGlobalCache();
|
|
|
|
|
$tw.utils.each(indexers,function(indexer) {
|
|
|
|
|
indexer.update(updateDescriptor);
|
|
|
|
|
});
|
|
|
|
|
// Queue a change event
|
|
|
|
|
this.enqueueTiddlerEvent(title);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Delete a tiddler
|
|
|
|
|
this.deleteTiddler = function(title) {
|
|
|
|
|
// Uncomment the following line for detailed logs of all tiddler deletions
|
|
|
|
|
// console.log("Deleting",title)
|
|
|
|
|
if($tw.utils.hop(tiddlers,title)) {
|
|
|
|
|
// Record the old tiddler state
|
|
|
|
|
var updateDescriptor = {
|
|
|
|
|
old: {
|
|
|
|
|
tiddler: this.getTiddler(title),
|
|
|
|
|
shadow: this.isShadowTiddler(title),
|
|
|
|
|
exists: this.tiddlerExists(title)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Delete the tiddler
|
|
|
|
|
delete tiddlers[title];
|
|
|
|
|
// Delete it from the list of titles
|
|
|
|
|
if(tiddlerTitles) {
|
|
|
|
|
var index = tiddlerTitles.indexOf(title);
|
|
|
|
|
if(index !== -1) {
|
|
|
|
|
tiddlerTitles.splice(index,1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Record the new tiddler state
|
|
|
|
|
updateDescriptor["new"] = {
|
|
|
|
|
tiddler: this.getTiddler(title),
|
|
|
|
|
shadow: this.isShadowTiddler(title),
|
|
|
|
|
exists: this.tiddlerExists(title)
|
|
|
|
|
}
|
|
|
|
|
// Update indexes
|
|
|
|
|
this.clearCache(title);
|
|
|
|
|
this.clearGlobalCache();
|
|
|
|
|
$tw.utils.each(indexers,function(indexer) {
|
|
|
|
|
indexer.update(updateDescriptor);
|
|
|
|
|
});
|
|
|
|
|
// Queue a change event
|
|
|
|
|
this.enqueueTiddlerEvent(title,true);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Get a tiddler from the store
|
|
|
|
|
this.getTiddler = function(title) {
|
|
|
|
|
if(title) {
|
|
|
|
|
var t = tiddlers[title];
|
|
|
|
|
if(t instanceof $tw.Tiddler) {
|
|
|
|
|
return t;
|
|
|
|
|
} else if(title !== undefined && shadowTiddlers[title]) {
|
|
|
|
|
return shadowTiddlers[title].tiddler;
|
|
|
|
|
}
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Get an array of all tiddler titles
|
|
|
|
|
this.allTitles = function() {
|
|
|
|
|
return getTiddlerTitles().slice(0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Iterate through all tiddler titles
|
|
|
|
|
this.each = function(callback) {
|
|
|
|
|
var titles = getTiddlerTitles(),
|
|
|
|
|
index,titlesLength,title;
|
|
|
|
|
for(index = 0, titlesLength = titles.length; index < titlesLength; index++) {
|
|
|
|
|
title = titles[index];
|
|
|
|
|
callback(tiddlers[title],title);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Get an array of all shadow tiddler titles
|
|
|
|
|
this.allShadowTitles = function() {
|
|
|
|
|
return getShadowTiddlerTitles().slice(0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Iterate through all shadow tiddler titles
|
|
|
|
|
this.eachShadow = function(callback) {
|
|
|
|
|
var titles = getShadowTiddlerTitles(),
|
|
|
|
|
index,titlesLength,title;
|
|
|
|
|
for(index = 0, titlesLength = titles.length; index < titlesLength; index++) {
|
|
|
|
|
title = titles[index];
|
|
|
|
|
if(tiddlers[title]) {
|
|
|
|
|
callback(tiddlers[title],title);
|
|
|
|
|
} else {
|
|
|
|
|
var shadowInfo = shadowTiddlers[title];
|
|
|
|
|
callback(shadowInfo.tiddler,title);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Iterate through all tiddlers and then the shadows
|
|
|
|
|
this.eachTiddlerPlusShadows = function(callback) {
|
|
|
|
|
var index,titlesLength,title,
|
|
|
|
|
titles = getTiddlerTitles();
|
|
|
|
|
for(index = 0, titlesLength = titles.length; index < titlesLength; index++) {
|
|
|
|
|
title = titles[index];
|
|
|
|
|
callback(tiddlers[title],title);
|
|
|
|
|
}
|
|
|
|
|
titles = getShadowTiddlerTitles();
|
|
|
|
|
for(index = 0, titlesLength = titles.length; index < titlesLength; index++) {
|
|
|
|
|
title = titles[index];
|
|
|
|
|
if(!tiddlers[title]) {
|
|
|
|
|
var shadowInfo = shadowTiddlers[title];
|
|
|
|
|
callback(shadowInfo.tiddler,title);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Iterate through all the shadows and then the tiddlers
|
|
|
|
|
this.eachShadowPlusTiddlers = function(callback) {
|
|
|
|
|
var index,titlesLength,title,
|
|
|
|
|
titles = getShadowTiddlerTitles();
|
|
|
|
|
for(index = 0, titlesLength = titles.length; index < titlesLength; index++) {
|
|
|
|
|
title = titles[index];
|
|
|
|
|
if(tiddlers[title]) {
|
|
|
|
|
callback(tiddlers[title],title);
|
|
|
|
|
} else {
|
|
|
|
|
var shadowInfo = shadowTiddlers[title];
|
|
|
|
|
callback(shadowInfo.tiddler,title);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
titles = getTiddlerTitles();
|
|
|
|
|
for(index = 0, titlesLength = titles.length; index < titlesLength; index++) {
|
|
|
|
|
title = titles[index];
|
|
|
|
|
if(!shadowTiddlers[title]) {
|
|
|
|
|
callback(tiddlers[title],title);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Test for the existence of a tiddler (excludes shadow tiddlers)
|
|
|
|
|
this.tiddlerExists = function(title) {
|
|
|
|
|
return !!$tw.utils.hop(tiddlers,title);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Determines if a tiddler is a shadow tiddler, regardless of whether it has been overridden by a real tiddler
|
|
|
|
|
this.isShadowTiddler = function(title) {
|
|
|
|
|
return $tw.utils.hop(shadowTiddlers,title);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
this.getShadowSource = function(title) {
|
|
|
|
|
if($tw.utils.hop(shadowTiddlers,title)) {
|
|
|
|
|
return shadowTiddlers[title].source;
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Get an array of all the currently recognised plugin types
|
|
|
|
|
this.getPluginTypes = function() {
|
|
|
|
|
var types = [];
|
|
|
|
|
$tw.utils.each(pluginTiddlers,function(pluginTiddler) {
|
|
|
|
|
var pluginType = pluginTiddler.fields["plugin-type"];
|
|
|
|
|
if(pluginType && types.indexOf(pluginType) === -1) {
|
|
|
|
|
types.push(pluginType);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return types;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Read plugin info for all plugins, or just an array of titles. Returns the number of plugins updated or deleted
|
|
|
|
|
this.readPluginInfo = function(titles) {
|
|
|
|
|
var results = {
|
|
|
|
|
modifiedPlugins: [],
|
|
|
|
|
deletedPlugins: []
|
|
|
|
|
};
|
|
|
|
|
$tw.utils.each(titles || getTiddlerTitles(),function(title) {
|
|
|
|
|
var tiddler = tiddlers[title];
|
|
|
|
|
if(tiddler) {
|
|
|
|
|
if(tiddler.fields.type === "application/json" && tiddler.hasField("plugin-type") && tiddler.fields.text) {
|
|
|
|
|
pluginInfo[tiddler.fields.title] = $tw.utils.parseJSONSafe(tiddler.fields.text);
|
|
|
|
|
results.modifiedPlugins.push(tiddler.fields.title);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if(pluginInfo[title]) {
|
|
|
|
|
delete pluginInfo[title];
|
|
|
|
|
results.deletedPlugins.push(title);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return results;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Get plugin info for a plugin
|
|
|
|
|
this.getPluginInfo = function(title) {
|
|
|
|
|
return pluginInfo[title];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|
this.registerPluginTiddlers = function(pluginType,titles) {
|
|
|
|
|
var self = this,
|
|
|
|
|
registeredTitles = [],
|
|
|
|
|
checkTiddler = function(tiddler,title) {
|
|
|
|
|
if(tiddler && tiddler.fields.type === "application/json" && tiddler.fields["plugin-type"] && (!pluginType || tiddler.fields["plugin-type"] === pluginType)) {
|
|
|
|
|
var disablingTiddler = self.getTiddler("$:/config/Plugins/Disabled/" + title);
|
|
|
|
|
if(title === "$:/core" || !disablingTiddler || (disablingTiddler.fields.text || "").trim() !== "yes") {
|
|
|
|
|
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
|
|
|
|
|
this.unregisterPluginTiddlers = function(pluginType,titles) {
|
|
|
|
|
var self = this,
|
|
|
|
|
unregisteredTitles = [];
|
|
|
|
|
// Remove any previous registered plugins of this type
|
|
|
|
|
for(var t=pluginTiddlers.length-1; t>=0; t--) {
|
|
|
|
|
var tiddler = pluginTiddlers[t];
|
|
|
|
|
if(tiddler.fields["plugin-type"] && (!pluginType || tiddler.fields["plugin-type"] === pluginType) && (!titles || titles.indexOf(tiddler.fields.title) !== -1)) {
|
|
|
|
|
unregisteredTitles.push(tiddler.fields.title);
|
|
|
|
|
pluginTiddlers.splice(t,1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return unregisteredTitles;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Unpack the currently registered plugins, creating shadow tiddlers for their constituent tiddlers
|
|
|
|
|
this.unpackPluginTiddlers = function() {
|
|
|
|
|
var self = this;
|
|
|
|
|
// Sort the plugin titles by the `plugin-priority` field
|
|
|
|
|
pluginTiddlers.sort(function(a,b) {
|
|
|
|
|
if("plugin-priority" in a.fields && "plugin-priority" in b.fields) {
|
|
|
|
|
return a.fields["plugin-priority"] - b.fields["plugin-priority"];
|
|
|
|
|
} else if("plugin-priority" in a.fields) {
|
|
|
|
|
return -1;
|
|
|
|
|
} else if("plugin-priority" in b.fields) {
|
|
|
|
|
return +1;
|
|
|
|
|
} else if(a.fields.title < b.fields.title) {
|
|
|
|
|
return -1;
|
|
|
|
|
} else if(a.fields.title === b.fields.title) {
|
|
|
|
|
return 0;
|
|
|
|
|
} else {
|
|
|
|
|
return +1;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// Now go through the plugins in ascending order and assign the shadows
|
|
|
|
|
shadowTiddlers = Object.create(null);
|
|
|
|
|
$tw.utils.each(pluginTiddlers,function(tiddler) {
|
|
|
|
|
// Extract the constituent tiddlers
|
|
|
|
|
if($tw.utils.hop(pluginInfo,tiddler.fields.title)) {
|
|
|
|
|
$tw.utils.each(pluginInfo[tiddler.fields.title].tiddlers,function(constituentTiddler,constituentTitle) {
|
|
|
|
|
// Save the tiddler object
|
|
|
|
|
if(constituentTitle) {
|
|
|
|
|
shadowTiddlers[constituentTitle] = {
|
|
|
|
|
source: tiddler.fields.title,
|
|
|
|
|
tiddler: new $tw.Tiddler(constituentTiddler,{title: constituentTitle})
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
shadowTiddlerTitles = null;
|
|
|
|
|
this.clearCache(null);
|
|
|
|
|
this.clearGlobalCache();
|
|
|
|
|
$tw.utils.each(indexers,function(indexer) {
|
|
|
|
|
indexer.rebuild();
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if(this.addIndexersToWiki) {
|
|
|
|
|
this.addIndexersToWiki();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Dummy methods that will be filled in after boot
|
|
|
|
|
$tw.Wiki.prototype.clearCache =
|
|
|
|
|
$tw.Wiki.prototype.clearGlobalCache =
|
|
|
|
|
$tw.Wiki.prototype.enqueueTiddlerEvent = function() {};
|
|
|
|
|
|
|
|
|
|
// Add an array of tiddlers
|
|
|
|
|
$tw.Wiki.prototype.addTiddlers = function(tiddlers) {
|
|
|
|
|
for(var t=0; t<tiddlers.length; t++) {
|
|
|
|
|
this.addTiddler(tiddlers[t]);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Define all modules stored in ordinary tiddlers
|
|
|
|
|
*/
|
|
|
|
|
$tw.Wiki.prototype.defineTiddlerModules = function() {
|
|
|
|
|
this.each(function(tiddler,title) {
|
|
|
|
|
if(tiddler.hasField("module-type")) {
|
|
|
|
|
switch (tiddler.fields.type) {
|
|
|
|
|
case "application/javascript":
|
|
|
|
|
// We only define modules that haven't already been defined, because in the browser modules in system tiddlers are defined in inline script
|
|
|
|
|
if(!$tw.utils.hop($tw.modules.titles,tiddler.fields.title)) {
|
|
|
|
|
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],tiddler.fields.text);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "application/json":
|
|
|
|
|
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],$tw.utils.parseJSONSafe(tiddler.fields.text));
|
|
|
|
|
break;
|
|
|
|
|
case "application/x-tiddler-dictionary":
|
|
|
|
|
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],$tw.utils.parseFields(tiddler.fields.text));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Register all the module tiddlers that have a module type
|
|
|
|
|
*/
|
|
|
|
|
$tw.Wiki.prototype.defineShadowModules = function() {
|
|
|
|
|
var self = this;
|
|
|
|
|
this.eachShadow(function(tiddler,title) {
|
|
|
|
|
// Don't define the module if it is overidden by an ordinary tiddler
|
|
|
|
|
if(!self.tiddlerExists(title) && tiddler.hasField("module-type")) {
|
|
|
|
|
// Define the module
|
|
|
|
|
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],tiddler.fields.text);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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:")
|
|
|
|
|
// Delete the overrides
|
|
|
|
|
overrides.forEach(function(title) {
|
|
|
|
|
var tiddler = self.getTiddler(title),
|
|
|
|
|
newTitle = "SAFE: " + title;
|
|
|
|
|
self.deleteTiddler(title);
|
|
|
|
|
self.addTiddler(new $tw.Tiddler(tiddler, {title: newTitle}));
|
|
|
|
|
report.push("* [[" + title + "|" + newTitle + "]]");
|
|
|
|
|
});
|
|
|
|
|
report.push()
|
|
|
|
|
this.addTiddler(new $tw.Tiddler({title: titleReportTiddler, text: report.join("\n\n")}));
|
|
|
|
|
// Set $:/DefaultTiddlers to point to our report
|
|
|
|
|
this.addTiddler(new $tw.Tiddler({title: "$:/DefaultTiddlers", text: "[[" + titleReportTiddler + "]]"}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Extracts tiddlers from a typed block of text, specifying default field values
|
|
|
|
|
*/
|
|
|
|
|
$tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields,options) {
|
|
|
|
|
srcFields = srcFields || Object.create(null);
|
|
|
|
|
options = options || {};
|
|
|
|
|
var deserializer = $tw.Wiki.tiddlerDeserializerModules[options.deserializer],
|
|
|
|
|
fields = Object.create(null);
|
|
|
|
|
if(!deserializer) {
|
|
|
|
|
deserializer = $tw.Wiki.tiddlerDeserializerModules[type];
|
|
|
|
|
}
|
|
|
|
|
if(!deserializer && $tw.utils.getFileExtensionInfo(type)) {
|
|
|
|
|
// If we didn't find the serializer, try converting it from an extension to a content type
|
|
|
|
|
type = $tw.utils.getFileExtensionInfo(type).type;
|
|
|
|
|
deserializer = $tw.Wiki.tiddlerDeserializerModules[type];
|
|
|
|
|
}
|
|
|
|
|
if(!deserializer && $tw.config.contentTypeInfo[type]) {
|
|
|
|
|
// see if this type has a different deserializer registered with it
|
|
|
|
|
type = $tw.config.contentTypeInfo[type].deserializerType;
|
|
|
|
|
deserializer = $tw.Wiki.tiddlerDeserializerModules[type];
|
|
|
|
|
}
|
|
|
|
|
if(!deserializer) {
|
|
|
|
|
// If we still don't have a deserializer, treat it as plain text
|
|
|
|
|
deserializer = $tw.Wiki.tiddlerDeserializerModules["text/plain"];
|
|
|
|
|
}
|
|
|
|
|
for(var f in srcFields) {
|
|
|
|
|
fields[f] = srcFields[f];
|
|
|
|
|
}
|
|
|
|
|
if(deserializer) {
|
|
|
|
|
return deserializer.call(this,text,fields,type);
|
|
|
|
|
} else {
|
|
|
|
|
// Return a raw tiddler for unknown types
|
|
|
|
|
fields.text = text;
|
|
|
|
|
return [fields];
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Register the built in tiddler deserializer modules
|
|
|
|
|
*/
|
|
|
|
|
var deserializeHeaderComment = function(text,fields) {
|
|
|
|
|
var headerCommentRegExp = new RegExp($tw.config.jsModuleHeaderRegExpString,"mg"),
|
|
|
|
|
match = headerCommentRegExp.exec(text);
|
|
|
|
|
fields.text = text;
|
|
|
|
|
if(match) {
|
|
|
|
|
fields = $tw.utils.parseFields(match[1].split(/\r?\n\r?\n/mg)[0],fields);
|
|
|
|
|
}
|
|
|
|
|
return [fields];
|
|
|
|
|
};
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/js","tiddlerdeserializer",{
|
|
|
|
|
"application/javascript": deserializeHeaderComment
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/css","tiddlerdeserializer",{
|
|
|
|
|
"text/css": deserializeHeaderComment
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/tid","tiddlerdeserializer",{
|
|
|
|
|
"application/x-tiddler": function(text,fields) {
|
|
|
|
|
var split = text.split(/\r?\n\r?\n/mg);
|
|
|
|
|
if(split.length >= 1) {
|
|
|
|
|
fields = $tw.utils.parseFields(split[0],fields);
|
|
|
|
|
}
|
|
|
|
|
if(split.length >= 2) {
|
|
|
|
|
fields.text = split.slice(1).join("\n\n");
|
|
|
|
|
}
|
|
|
|
|
return [fields];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/tids","tiddlerdeserializer",{
|
|
|
|
|
"application/x-tiddlers": function(text,fields) {
|
|
|
|
|
var titles = [],
|
|
|
|
|
tiddlers = [],
|
|
|
|
|
match = /\r?\n\r?\n/mg.exec(text);
|
|
|
|
|
if(match) {
|
|
|
|
|
fields = $tw.utils.parseFields(text.substr(0,match.index),fields);
|
|
|
|
|
var lines = text.substr(match.index + match[0].length).split(/\r?\n/mg);
|
|
|
|
|
for(var t=0; t<lines.length; t++) {
|
|
|
|
|
var line = lines[t];
|
|
|
|
|
if(line.charAt(0) !== "#") {
|
|
|
|
|
var colonPos= line.indexOf(":");
|
|
|
|
|
if(colonPos !== -1) {
|
|
|
|
|
var tiddler = $tw.utils.extend(Object.create(null),fields);
|
|
|
|
|
tiddler.title = (tiddler.title || "") + line.substr(0,colonPos).trim();
|
|
|
|
|
if(titles.indexOf(tiddler.title) !== -1) {
|
|
|
|
|
console.log("Warning: .multids file contains multiple definitions for " + tiddler.title);
|
|
|
|
|
}
|
|
|
|
|
titles.push(tiddler.title);
|
|
|
|
|
tiddler.text = line.substr(colonPos + 2).trim();
|
|
|
|
|
tiddlers.push(tiddler);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return tiddlers;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/txt","tiddlerdeserializer",{
|
|
|
|
|
"text/plain": function(text,fields,type) {
|
|
|
|
|
fields.text = text;
|
|
|
|
|
fields.type = type || "text/plain";
|
|
|
|
|
return [fields];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/html","tiddlerdeserializer",{
|
|
|
|
|
"text/html": function(text,fields) {
|
|
|
|
|
fields.text = text;
|
|
|
|
|
fields.type = "text/html";
|
|
|
|
|
return [fields];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/json","tiddlerdeserializer",{
|
|
|
|
|
"application/json": function(text,fields) {
|
|
|
|
|
var isTiddlerValid = function(data) {
|
|
|
|
|
// Not valid if it's not an object with a title property
|
|
|
|
|
if(typeof(data) !== "object" || !$tw.utils.hop(data,"title")) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
for(var f in data) {
|
|
|
|
|
if($tw.utils.hop(data,f)) {
|
|
|
|
|
// Check field name doesn't contain control characters
|
|
|
|
|
if(typeof(data[f]) !== "string" || /[\x00-\x1F]/.test(f)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
isTiddlerArrayValid = function(data) {
|
|
|
|
|
for(var t=0; t<data.length; t++) {
|
|
|
|
|
if(!isTiddlerValid(data[t])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
data = $tw.utils.parseJSONSafe(text);
|
|
|
|
|
if($tw.utils.isArray(data) && isTiddlerArrayValid(data)) {
|
|
|
|
|
return data;
|
|
|
|
|
} else if(isTiddlerValid(data)) {
|
|
|
|
|
return [data];
|
|
|
|
|
} else {
|
|
|
|
|
// Plain JSON file
|
|
|
|
|
fields.text = text;
|
|
|
|
|
fields.type = "application/json";
|
|
|
|
|
return [fields];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Browser definitions
|
|
|
|
|
|
|
|
|
|
if($tw.browser && !$tw.node) {
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.decryptEncryptedTiddlers = function(callback) {
|
|
|
|
|
var encryptedArea = document.getElementById("encryptedStoreArea");
|
|
|
|
|
if(encryptedArea) {
|
|
|
|
|
var encryptedText = encryptedArea.innerHTML,
|
|
|
|
|
prompt = "Enter a password to decrypt this TiddlyWiki";
|
|
|
|
|
// Prompt for the password
|
|
|
|
|
if($tw.utils.hop($tw.boot,"encryptionPrompts")) {
|
|
|
|
|
prompt = $tw.boot.encryptionPrompts.decrypt;
|
|
|
|
|
}
|
|
|
|
|
$tw.passwordPrompt.createPrompt({
|
|
|
|
|
serviceName: prompt,
|
|
|
|
|
noUserName: true,
|
|
|
|
|
submitText: "Decrypt",
|
|
|
|
|
callback: function(data) {
|
|
|
|
|
// Attempt to decrypt the tiddlers
|
|
|
|
|
$tw.crypto.setPassword(data.password);
|
|
|
|
|
var decryptedText = $tw.crypto.decrypt(encryptedText);
|
|
|
|
|
if(decryptedText) {
|
|
|
|
|
var json = $tw.utils.parseJSONSafe(decryptedText);
|
|
|
|
|
for(var title in json) {
|
|
|
|
|
$tw.preloadTiddler(json[title]);
|
|
|
|
|
}
|
|
|
|
|
// Call the callback
|
|
|
|
|
callback();
|
|
|
|
|
// Exit and remove the password prompt
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
// We didn't decrypt everything, so continue to prompt for password
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
// Just invoke the callback straight away if there weren't any encrypted tiddlers
|
|
|
|
|
callback();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Register a deserializer that can extract tiddlers from the DOM
|
|
|
|
|
*/
|
|
|
|
|
$tw.modules.define("$:/boot/tiddlerdeserializer/dom","tiddlerdeserializer",{
|
|
|
|
|
"(DOM)": function(node) {
|
|
|
|
|
var extractTextTiddlers = function(node) {
|
|
|
|
|
var e = node.firstChild;
|
|
|
|
|
while(e && e.nodeName.toLowerCase() !== "pre") {
|
|
|
|
|
e = e.nextSibling;
|
|
|
|
|
}
|
|
|
|
|
var title = node.getAttribute ? node.getAttribute("title") : null;
|
|
|
|
|
if(e && title) {
|
|
|
|
|
var attrs = node.attributes,
|
|
|
|
|
tiddler = {
|
|
|
|
|
text: $tw.utils.htmlDecode(e.innerHTML)
|
|
|
|
|
};
|
|
|
|
|
for(var i=attrs.length-1; i >= 0; i--) {
|
|
|
|
|
tiddler[attrs[i].name] = attrs[i].value;
|
|
|
|
|
}
|
|
|
|
|
return [tiddler];
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
extractModuleTiddlers = function(node) {
|
|
|
|
|
if(node.hasAttribute && node.hasAttribute("data-tiddler-title")) {
|
|
|
|
|
var text = node.innerHTML,
|
|
|
|
|
s = text.indexOf("{"),
|
|
|
|
|
e = text.lastIndexOf("}");
|
|
|
|
|
if(node.hasAttribute("data-module") && s !== -1 && e !== -1) {
|
|
|
|
|
text = text.substring(s+1,e);
|
|
|
|
|
}
|
|
|
|
|
var fields = {text: text},
|
|
|
|
|
attributes = node.attributes;
|
|
|
|
|
for(var a=0; a<attributes.length; a++) {
|
|
|
|
|
if(attributes[a].nodeName.substr(0,13) === "data-tiddler-") {
|
|
|
|
|
fields[attributes[a].nodeName.substr(13)] = attributes[a].value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return [fields];
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
t,result = [];
|
|
|
|
|
if(node) {
|
|
|
|
|
var type = (node.getAttribute && node.getAttribute("type")) || null;
|
|
|
|
|
if(type) {
|
|
|
|
|
// A new-style container with an explicit deserialization type
|
|
|
|
|
result = $tw.wiki.deserializeTiddlers(type,node.textContent);
|
|
|
|
|
} else {
|
|
|
|
|
// An old-style container of classic DIV-based tiddlers
|
|
|
|
|
for(t = 0; t < node.childNodes.length; t++) {
|
|
|
|
|
var childNode = node.childNodes[t],
|
|
|
|
|
tiddlers = extractTextTiddlers(childNode);
|
|
|
|
|
tiddlers = tiddlers || extractModuleTiddlers(childNode);
|
|
|
|
|
if(tiddlers) {
|
|
|
|
|
result.push.apply(result,tiddlers);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$tw.loadTiddlersBrowser = function() {
|
|
|
|
|
// In the browser, we load tiddlers from certain elements
|
|
|
|
|
var containerSelectors = [
|
|
|
|
|
// IDs for old-style v5.1.x tiddler stores
|
|
|
|
|
"#libraryModules",
|
|
|
|
|
"#modules",
|
|
|
|
|
"#bootKernelPrefix",
|
|
|
|
|
"#bootKernel",
|
|
|
|
|
"#styleArea",
|
|
|
|
|
"#storeArea",
|
|
|
|
|
"#systemArea",
|
|
|
|
|
// Classes for new-style v5.2.x JSON tiddler stores
|
|
|
|
|
"script.tiddlywiki-tiddler-store"
|
|
|
|
|
];
|
|
|
|
|
for(var t=0; t<containerSelectors.length; t++) {
|
|
|
|
|
var nodes = document.querySelectorAll(containerSelectors[t]);
|
|
|
|
|
for(var n=0; n<nodes.length; n++) {
|
|
|
|
|
$tw.wiki.addTiddlers($tw.wiki.deserializeTiddlers("(DOM)",nodes[n]));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Server definitions
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Get any encrypted tiddlers
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.decryptEncryptedTiddlers = function(callback) {
|
|
|
|
|
// 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:}
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadTiddlersFromFile = function(filepath,fields) {
|
|
|
|
|
var ext = path.extname(filepath),
|
|
|
|
|
extensionInfo = $tw.utils.getFileExtensionInfo(ext),
|
|
|
|
|
type = extensionInfo ? extensionInfo.type : null,
|
|
|
|
|
typeInfo = type ? $tw.config.contentTypeInfo[type] : null,
|
|
|
|
|
data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"),
|
|
|
|
|
tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields),
|
|
|
|
|
metadata = $tw.loadMetadataForFile(filepath);
|
|
|
|
|
if(metadata) {
|
|
|
|
|
if(type === "application/json") {
|
|
|
|
|
tiddlers = [{text: data, type: "application/json"}];
|
|
|
|
|
}
|
|
|
|
|
tiddlers = [$tw.utils.extend({},tiddlers[0],metadata)];
|
|
|
|
|
}
|
|
|
|
|
return {filepath: filepath, type: type, tiddlers: tiddlers, hasMetaFile: !!metadata};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Load the metadata fields in the .meta file corresponding to a particular file
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadMetadataForFile = function(filepath) {
|
|
|
|
|
var metafilename = filepath + ".meta";
|
|
|
|
|
if(fs.existsSync(metafilename)) {
|
|
|
|
|
return $tw.utils.parseFields(fs.readFileSync(metafilename,"utf8") || "");
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
A default set of files for TiddlyWiki to ignore during load.
|
|
|
|
|
This matches what NPM ignores, and adds "*.meta" to ignore tiddler
|
|
|
|
|
metadata files.
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.excludeRegExp = /^\.DS_Store$|^.*\.meta$|^\..*\.swp$|^\._.*$|^\.git$|^\.hg$|^\.lock-wscript$|^\.svn$|^\.wafpickle-.*$|^CVS$|^npm-debug\.log$/;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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.
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadTiddlersFromPath = function(filepath,excludeRegExp) {
|
|
|
|
|
excludeRegExp = excludeRegExp || $tw.boot.excludeRegExp;
|
|
|
|
|
var tiddlers = [];
|
|
|
|
|
if(fs.existsSync(filepath)) {
|
|
|
|
|
var stat = fs.statSync(filepath);
|
|
|
|
|
if(stat.isDirectory()) {
|
|
|
|
|
var files = fs.readdirSync(filepath);
|
|
|
|
|
// Look for a tiddlywiki.files file
|
|
|
|
|
if(files.indexOf("tiddlywiki.files") !== -1) {
|
|
|
|
|
Array.prototype.push.apply(tiddlers,$tw.loadTiddlersFromSpecification(filepath,excludeRegExp));
|
|
|
|
|
} else {
|
|
|
|
|
// If not, read all the files in the directory
|
|
|
|
|
$tw.utils.each(files,function(file) {
|
|
|
|
|
if(!excludeRegExp.test(file) && file !== "plugin.info") {
|
|
|
|
|
tiddlers.push.apply(tiddlers,$tw.loadTiddlersFromPath(filepath + path.sep + file,excludeRegExp));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else if(stat.isFile()) {
|
|
|
|
|
tiddlers.push($tw.loadTiddlersFromFile(filepath,{title: filepath}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return tiddlers;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Load all the tiddlers defined by a `tiddlywiki.files` specification file
|
|
|
|
|
filepath: pathname of the directory containing the specification file
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
|
|
|
|
|
var tiddlers = [];
|
|
|
|
|
// Read the specification
|
|
|
|
|
var filesInfo = $tw.utils.parseJSONSafe(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8"));
|
|
|
|
|
// Helper to process a file
|
|
|
|
|
var processFile = function(filename,isTiddlerFile,fields,isEditableFile) {
|
|
|
|
|
var extInfo = $tw.config.fileExtensionInfo[path.extname(filename)],
|
|
|
|
|
type = (extInfo || {}).type || fields.type || "text/plain",
|
|
|
|
|
typeInfo = $tw.config.contentTypeInfo[type] || {},
|
|
|
|
|
pathname = path.resolve(filepath,filename),
|
|
|
|
|
text = fs.readFileSync(pathname,typeInfo.encoding || "utf8"),
|
|
|
|
|
metadata = $tw.loadMetadataForFile(pathname) || {},
|
|
|
|
|
fileTiddlers;
|
|
|
|
|
if(isTiddlerFile) {
|
|
|
|
|
fileTiddlers = $tw.wiki.deserializeTiddlers(path.extname(pathname),text,metadata) || [];
|
|
|
|
|
} else {
|
|
|
|
|
fileTiddlers = [$tw.utils.extend({text: text},metadata)];
|
|
|
|
|
}
|
|
|
|
|
var combinedFields = $tw.utils.extend({},fields,metadata);
|
|
|
|
|
$tw.utils.each(fileTiddlers,function(tiddler) {
|
|
|
|
|
$tw.utils.each(combinedFields,function(fieldInfo,name) {
|
|
|
|
|
if(typeof fieldInfo === "string" || $tw.utils.isArray(fieldInfo)) {
|
|
|
|
|
tiddler[name] = fieldInfo;
|
|
|
|
|
} else {
|
|
|
|
|
var value = tiddler[name];
|
|
|
|
|
switch(fieldInfo.source) {
|
|
|
|
|
case "filename":
|
|
|
|
|
value = path.basename(filename);
|
|
|
|
|
break;
|
|
|
|
|
case "filename-uri-decoded":
|
|
|
|
|
value = $tw.utils.decodeURIComponentSafe(path.basename(filename));
|
|
|
|
|
break;
|
|
|
|
|
case "basename":
|
|
|
|
|
value = path.basename(filename,path.extname(filename));
|
|
|
|
|
break;
|
|
|
|
|
case "basename-uri-decoded":
|
|
|
|
|
value = $tw.utils.decodeURIComponentSafe(path.basename(filename,path.extname(filename)));
|
|
|
|
|
break;
|
|
|
|
|
case "extname":
|
|
|
|
|
value = path.extname(filename);
|
|
|
|
|
break;
|
|
|
|
|
case "created":
|
|
|
|
|
value = new Date(fs.statSync(pathname).birthtime);
|
|
|
|
|
break;
|
|
|
|
|
case "modified":
|
|
|
|
|
value = new Date(fs.statSync(pathname).mtime);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(fieldInfo.prefix) {
|
|
|
|
|
value = fieldInfo.prefix + value;
|
|
|
|
|
}
|
|
|
|
|
if(fieldInfo.suffix) {
|
|
|
|
|
value = value + fieldInfo.suffix;
|
|
|
|
|
}
|
|
|
|
|
tiddler[name] = value;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
if(isEditableFile) {
|
|
|
|
|
tiddlers.push({filepath: pathname, hasMetaFile: !!metadata && !isTiddlerFile, isEditableFile: true, tiddlers: fileTiddlers});
|
|
|
|
|
} else {
|
|
|
|
|
tiddlers.push({tiddlers: fileTiddlers});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
// Helper to recursively search subdirectories
|
|
|
|
|
var getAllFiles = function(dirPath, recurse, arrayOfFiles) {
|
|
|
|
|
recurse = recurse || false;
|
|
|
|
|
arrayOfFiles = arrayOfFiles || [];
|
|
|
|
|
var files = fs.readdirSync(dirPath);
|
|
|
|
|
files.forEach(function(file) {
|
|
|
|
|
if (recurse && fs.statSync(dirPath + path.sep + file).isDirectory()) {
|
|
|
|
|
arrayOfFiles = getAllFiles(dirPath + path.sep + file, recurse, arrayOfFiles);
|
|
|
|
|
} else if(fs.statSync(dirPath + path.sep + file).isFile()){
|
|
|
|
|
arrayOfFiles.push(path.join(dirPath, path.sep, file));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return arrayOfFiles;
|
|
|
|
|
}
|
|
|
|
|
// Process the listed tiddlers
|
|
|
|
|
$tw.utils.each(filesInfo.tiddlers,function(tidInfo) {
|
|
|
|
|
if(tidInfo.prefix && tidInfo.suffix) {
|
|
|
|
|
tidInfo.fields.text = {prefix: tidInfo.prefix,suffix: tidInfo.suffix};
|
|
|
|
|
} else if(tidInfo.prefix) {
|
|
|
|
|
tidInfo.fields.text = {prefix: tidInfo.prefix};
|
|
|
|
|
} else if(tidInfo.suffix) {
|
|
|
|
|
tidInfo.fields.text = {suffix: tidInfo.suffix};
|
|
|
|
|
}
|
|
|
|
|
processFile(tidInfo.file,tidInfo.isTiddlerFile,tidInfo.fields);
|
|
|
|
|
});
|
|
|
|
|
// Process any listed directories
|
|
|
|
|
$tw.utils.each(filesInfo.directories,function(dirSpec) {
|
|
|
|
|
// Read literal directories directly
|
|
|
|
|
if(typeof dirSpec === "string") {
|
|
|
|
|
var pathname = path.resolve(filepath,dirSpec);
|
|
|
|
|
if(fs.existsSync(pathname) && fs.statSync(pathname).isDirectory()) {
|
|
|
|
|
tiddlers.push.apply(tiddlers,$tw.loadTiddlersFromPath(pathname,excludeRegExp));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Process directory specifier
|
|
|
|
|
var dirPath = path.resolve(filepath,dirSpec.path);
|
|
|
|
|
if(fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory()) {
|
|
|
|
|
var files = getAllFiles(dirPath, dirSpec.searchSubdirectories),
|
|
|
|
|
fileRegExp = new RegExp(dirSpec.filesRegExp || "^.*$"),
|
|
|
|
|
metaRegExp = /^.*\.meta$/;
|
|
|
|
|
for(var t=0; t<files.length; t++) {
|
|
|
|
|
var thisPath = path.relative(filepath, files[t]),
|
|
|
|
|
filename = path.basename(thisPath);
|
|
|
|
|
if(filename !== "tiddlywiki.files" && !metaRegExp.test(filename) && fileRegExp.test(filename)) {
|
|
|
|
|
processFile(thisPath,dirSpec.isTiddlerFile,dirSpec.fields,dirSpec.isEditableFile);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
console.log("Warning: a directory in a tiddlywiki.files file does not exist.");
|
|
|
|
|
console.log("dirPath: " + dirPath);
|
|
|
|
|
console.log("tiddlywiki.files location: " + filepath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return tiddlers;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Load the tiddlers from a plugin folder, and package them up into a proper JSON plugin tiddler
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadPluginFolder = function(filepath,excludeRegExp) {
|
|
|
|
|
excludeRegExp = excludeRegExp || $tw.boot.excludeRegExp;
|
|
|
|
|
var infoPath = filepath + path.sep + "plugin.info";
|
|
|
|
|
if(fs.existsSync(filepath) && fs.statSync(filepath).isDirectory()) {
|
|
|
|
|
// Read the plugin information
|
|
|
|
|
if(!fs.existsSync(infoPath) || !fs.statSync(infoPath).isFile()) {
|
|
|
|
|
console.log("Warning: missing plugin.info file in " + filepath);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
var pluginInfo = $tw.utils.parseJSONSafe(fs.readFileSync(infoPath,"utf8"));
|
|
|
|
|
// Read the plugin files
|
|
|
|
|
var pluginFiles = $tw.loadTiddlersFromPath(filepath,excludeRegExp);
|
|
|
|
|
// Save the plugin tiddlers into the plugin info
|
|
|
|
|
pluginInfo.tiddlers = pluginInfo.tiddlers || Object.create(null);
|
|
|
|
|
for(var f=0; f<pluginFiles.length; f++) {
|
|
|
|
|
var tiddlers = pluginFiles[f].tiddlers;
|
|
|
|
|
for(var t=0; t<tiddlers.length; t++) {
|
|
|
|
|
var tiddler= tiddlers[t];
|
|
|
|
|
if(tiddler.title) {
|
|
|
|
|
pluginInfo.tiddlers[tiddler.title] = tiddler;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Give the plugin the same version number as the core if it doesn't have one
|
|
|
|
|
if(!("version" in pluginInfo)) {
|
|
|
|
|
pluginInfo.version = $tw.packageInfo.version;
|
|
|
|
|
}
|
|
|
|
|
// Use "plugin" as the plugin-type if we don't have one
|
|
|
|
|
if(!("plugin-type" in pluginInfo)) {
|
|
|
|
|
pluginInfo["plugin-type"] = "plugin";
|
|
|
|
|
}
|
|
|
|
|
pluginInfo.dependents = pluginInfo.dependents || [];
|
|
|
|
|
pluginInfo.type = "application/json";
|
|
|
|
|
// Set plugin text
|
|
|
|
|
pluginInfo.text = JSON.stringify({tiddlers: pluginInfo.tiddlers});
|
|
|
|
|
delete pluginInfo.tiddlers;
|
|
|
|
|
// Deserialise array fields (currently required for the dependents field)
|
|
|
|
|
for(var field in pluginInfo) {
|
|
|
|
|
if($tw.utils.isArray(pluginInfo[field])) {
|
|
|
|
|
pluginInfo[field] = $tw.utils.stringifyList(pluginInfo[field]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return pluginInfo;
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
name: Name of the plugin to find
|
|
|
|
|
paths: array of file paths to search for it
|
|
|
|
|
Returns the path of the plugin folder
|
|
|
|
|
*/
|
|
|
|
|
$tw.findLibraryItem = function(name,paths) {
|
|
|
|
|
var pathIndex = 0;
|
|
|
|
|
do {
|
|
|
|
|
var pluginPath = path.resolve(paths[pathIndex],"./" + name)
|
|
|
|
|
if(fs.existsSync(pluginPath) && fs.statSync(pluginPath).isDirectory()) {
|
|
|
|
|
return pluginPath;
|
|
|
|
|
}
|
|
|
|
|
} while(++pathIndex < paths.length);
|
|
|
|
|
return null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
name: Name of the plugin to load
|
|
|
|
|
paths: array of file paths to search for it
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadPlugin = function(name,paths) {
|
|
|
|
|
var pluginPath = $tw.findLibraryItem(name,paths);
|
|
|
|
|
if(pluginPath) {
|
|
|
|
|
var pluginFields = $tw.loadPluginFolder(pluginPath);
|
|
|
|
|
if(pluginFields) {
|
|
|
|
|
$tw.wiki.addTiddler(pluginFields);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
console.log("Warning: Cannot find plugin '" + name + "'");
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
libraryPath: Path of library folder for these plugins (relative to core path)
|
|
|
|
|
envVar: Environment variable name for these plugins
|
|
|
|
|
Returns an array of search paths
|
|
|
|
|
*/
|
|
|
|
|
$tw.getLibraryItemSearchPaths = function(libraryPath,envVar) {
|
|
|
|
|
var pluginPaths = [path.resolve($tw.boot.corePath,libraryPath)],
|
|
|
|
|
env = process.env[envVar];
|
|
|
|
|
if(env) {
|
|
|
|
|
env.split(path.delimiter).map(function(item) {
|
|
|
|
|
if(item) {
|
|
|
|
|
pluginPaths.push(item);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return pluginPaths;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
plugins: Array of names of plugins (eg, "tiddlywiki/filesystemadaptor")
|
|
|
|
|
libraryPath: Path of library folder for these plugins (relative to core path)
|
|
|
|
|
envVar: Environment variable name for these plugins
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadPlugins = function(plugins,libraryPath,envVar) {
|
|
|
|
|
if(plugins) {
|
|
|
|
|
var pluginPaths = $tw.getLibraryItemSearchPaths(libraryPath,envVar);
|
|
|
|
|
for(var t=0; t<plugins.length; t++) {
|
|
|
|
|
$tw.loadPlugin(plugins[t],pluginPaths);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
path: path of wiki directory
|
|
|
|
|
options:
|
|
|
|
|
parentPaths: array of parent paths that we mustn't recurse into
|
|
|
|
|
readOnly: true if the tiddler file paths should not be retained
|
|
|
|
|
*/
|
|
|
|
|
$tw.loadWikiTiddlers = function(wikiPath,options) {
|
|
|
|
|
options = options || {};
|
|
|
|
|
var parentPaths = options.parentPaths || [],
|
|
|
|
|
wikiInfoPath = path.resolve(wikiPath,$tw.config.wikiInfo),
|
|
|
|
|
wikiInfo,
|
|
|
|
|
pluginFields;
|
|
|
|
|
// Bail if we don't have a wiki info file
|
|
|
|
|
if(fs.existsSync(wikiInfoPath)) {
|
|
|
|
|
wikiInfo = $tw.utils.parseJSONSafe(fs.readFileSync(wikiInfoPath,"utf8"));
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
// Save the path to the tiddlers folder for the filesystemadaptor
|
|
|
|
|
var config = wikiInfo.config || {};
|
|
|
|
|
if($tw.boot.wikiPath == wikiPath) {
|
|
|
|
|
$tw.boot.wikiTiddlersPath = path.resolve($tw.boot.wikiPath,config["default-tiddler-location"] || $tw.config.wikiTiddlersSubDir);
|
|
|
|
|
}
|
|
|
|
|
// Load any parent wikis
|
|
|
|
|
if(wikiInfo.includeWikis) {
|
|
|
|
|
parentPaths = parentPaths.slice(0);
|
|
|
|
|
parentPaths.push(wikiPath);
|
|
|
|
|
$tw.utils.each(wikiInfo.includeWikis,function(info) {
|
|
|
|
|
if(typeof info === "string") {
|
|
|
|
|
info = {path: info};
|
|
|
|
|
}
|
|
|
|
|
var resolvedIncludedWikiPath = path.resolve(wikiPath,info.path);
|
|
|
|
|
if(parentPaths.indexOf(resolvedIncludedWikiPath) === -1) {
|
|
|
|
|
var subWikiInfo = $tw.loadWikiTiddlers(resolvedIncludedWikiPath,{
|
|
|
|
|
parentPaths: parentPaths,
|
|
|
|
|
readOnly: info["read-only"]
|
|
|
|
|
});
|
|
|
|
|
// Merge the build targets
|
|
|
|
|
wikiInfo.build = $tw.utils.extend([],subWikiInfo.build,wikiInfo.build);
|
|
|
|
|
} else {
|
|
|
|
|
$tw.utils.error("Cannot recursively include wiki " + resolvedIncludedWikiPath);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// Load any plugins, themes and languages listed in the wiki info file
|
|
|
|
|
$tw.loadPlugins(wikiInfo.plugins,$tw.config.pluginsPath,$tw.config.pluginsEnvVar);
|
|
|
|
|
$tw.loadPlugins(wikiInfo.themes,$tw.config.themesPath,$tw.config.themesEnvVar);
|
|
|
|
|
$tw.loadPlugins(wikiInfo.languages,$tw.config.languagesPath,$tw.config.languagesEnvVar);
|
|
|
|
|
// Load the wiki files, registering them as writable
|
|
|
|
|
var resolvedWikiPath = path.resolve(wikiPath,$tw.config.wikiTiddlersSubDir);
|
|
|
|
|
$tw.utils.each($tw.loadTiddlersFromPath(resolvedWikiPath),function(tiddlerFile) {
|
|
|
|
|
if(!options.readOnly && tiddlerFile.filepath) {
|
|
|
|
|
$tw.utils.each(tiddlerFile.tiddlers,function(tiddler) {
|
|
|
|
|
$tw.boot.files[tiddler.title] = {
|
|
|
|
|
filepath: tiddlerFile.filepath,
|
|
|
|
|
type: tiddlerFile.type,
|
|
|
|
|
hasMetaFile: tiddlerFile.hasMetaFile,
|
|
|
|
|
isEditableFile: config["retain-original-tiddler-path"] || tiddlerFile.isEditableFile || tiddlerFile.filepath.indexOf($tw.boot.wikiTiddlersPath) !== 0
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
$tw.wiki.addTiddlers(tiddlerFile.tiddlers);
|
|
|
|
|
});
|
|
|
|
|
if ($tw.boot.wikiPath == wikiPath) {
|
|
|
|
|
// Save the original tiddler file locations if requested
|
|
|
|
|
var output = {}, relativePath, fileInfo;
|
|
|
|
|
for(var title in $tw.boot.files) {
|
|
|
|
|
fileInfo = $tw.boot.files[title];
|
|
|
|
|
if(fileInfo.isEditableFile) {
|
|
|
|
|
relativePath = path.relative($tw.boot.wikiTiddlersPath,fileInfo.filepath);
|
|
|
|
|
fileInfo.originalpath = relativePath;
|
|
|
|
|
output[title] =
|
|
|
|
|
path.sep === "/" ?
|
|
|
|
|
relativePath :
|
|
|
|
|
relativePath.split(path.sep).join("/");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(Object.keys(output).length > 0){
|
|
|
|
|
$tw.wiki.addTiddler({title: "$:/config/OriginalTiddlerPaths", type: "application/json", text: JSON.stringify(output)});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Load any plugins within the wiki folder
|
|
|
|
|
var wikiPluginsPath = path.resolve(wikiPath,$tw.config.wikiPluginsSubDir);
|
|
|
|
|
if(fs.existsSync(wikiPluginsPath)) {
|
|
|
|
|
var pluginFolders = fs.readdirSync(wikiPluginsPath);
|
|
|
|
|
for(var t=0; t<pluginFolders.length; t++) {
|
|
|
|
|
pluginFields = $tw.loadPluginFolder(path.resolve(wikiPluginsPath,"./" + pluginFolders[t]));
|
|
|
|
|
if(pluginFields) {
|
|
|
|
|
$tw.wiki.addTiddler(pluginFields);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Load any themes within the wiki folder
|
|
|
|
|
var wikiThemesPath = path.resolve(wikiPath,$tw.config.wikiThemesSubDir);
|
|
|
|
|
if(fs.existsSync(wikiThemesPath)) {
|
|
|
|
|
var themeFolders = fs.readdirSync(wikiThemesPath);
|
|
|
|
|
for(var t=0; t<themeFolders.length; t++) {
|
|
|
|
|
pluginFields = $tw.loadPluginFolder(path.resolve(wikiThemesPath,"./" + themeFolders[t]));
|
|
|
|
|
if(pluginFields) {
|
|
|
|
|
$tw.wiki.addTiddler(pluginFields);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Load any languages within the wiki folder
|
|
|
|
|
var wikiLanguagesPath = path.resolve(wikiPath,$tw.config.wikiLanguagesSubDir);
|
|
|
|
|
if(fs.existsSync(wikiLanguagesPath)) {
|
|
|
|
|
var languageFolders = fs.readdirSync(wikiLanguagesPath);
|
|
|
|
|
for(var t=0; t<languageFolders.length; t++) {
|
|
|
|
|
pluginFields = $tw.loadPluginFolder(path.resolve(wikiLanguagesPath,"./" + languageFolders[t]));
|
|
|
|
|
if(pluginFields) {
|
|
|
|
|
$tw.wiki.addTiddler(pluginFields);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return wikiInfo;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$tw.loadTiddlersNode = function() {
|
|
|
|
|
// Load the boot tiddlers
|
|
|
|
|
$tw.utils.each($tw.loadTiddlersFromPath($tw.boot.bootPath),function(tiddlerFile) {
|
|
|
|
|
$tw.wiki.addTiddlers(tiddlerFile.tiddlers);
|
|
|
|
|
});
|
|
|
|
|
// Load the core tiddlers
|
|
|
|
|
$tw.wiki.addTiddler($tw.loadPluginFolder($tw.boot.corePath));
|
|
|
|
|
// Load any extra plugins
|
|
|
|
|
$tw.utils.each($tw.boot.extraPlugins,function(name) {
|
|
|
|
|
if(name.charAt(0) === "+") { // Relative path to plugin
|
|
|
|
|
var pluginFields = $tw.loadPluginFolder(name.substring(1));
|
|
|
|
|
if(pluginFields) {
|
|
|
|
|
$tw.wiki.addTiddler(pluginFields);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
var parts = name.split("/"),
|
|
|
|
|
type = parts[0];
|
|
|
|
|
if(parts.length === 3 && ["plugins","themes","languages"].indexOf(type) !== -1) {
|
|
|
|
|
$tw.loadPlugins([parts[1] + "/" + parts[2]],$tw.config[type + "Path"],$tw.config[type + "EnvVar"]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// Load the tiddlers from the wiki directory
|
|
|
|
|
if($tw.boot.wikiPath) {
|
|
|
|
|
$tw.boot.wikiInfo = $tw.loadWikiTiddlers($tw.boot.wikiPath);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// End of if($tw.node)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Main startup function called once tiddlers have been decrypted
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Startup TiddlyWiki
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.initStartup = function(options) {
|
|
|
|
|
// Get the URL hash and check for safe mode
|
|
|
|
|
$tw.locationHash = "#";
|
|
|
|
|
if($tw.browser && !$tw.node) {
|
|
|
|
|
if(location.hash === "#:safe") {
|
|
|
|
|
$tw.safeMode = true;
|
|
|
|
|
} else {
|
|
|
|
|
$tw.locationHash = $tw.utils.getLocationHash();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Initialise some more $tw properties
|
|
|
|
|
$tw.utils.deepDefaults($tw,{
|
|
|
|
|
modules: { // Information about each module
|
|
|
|
|
titles: Object.create(null), // hashmap by module title of {fn:, exports:, moduleType:}
|
|
|
|
|
types: {} // hashmap by module type of hashmap of exports
|
|
|
|
|
},
|
|
|
|
|
config: { // Configuration overridables
|
|
|
|
|
pluginsPath: "../plugins/",
|
|
|
|
|
themesPath: "../themes/",
|
|
|
|
|
languagesPath: "../languages/",
|
|
|
|
|
editionsPath: "../editions/",
|
|
|
|
|
wikiInfo: "./tiddlywiki.info",
|
|
|
|
|
wikiPluginsSubDir: "./plugins",
|
|
|
|
|
wikiThemesSubDir: "./themes",
|
|
|
|
|
wikiLanguagesSubDir: "./languages",
|
|
|
|
|
wikiTiddlersSubDir: "./tiddlers",
|
|
|
|
|
wikiOutputSubDir: "./output",
|
|
|
|
|
jsModuleHeaderRegExpString: "^\\/\\*\\\\(?:\\r?\\n)((?:^[^\\r\\n]*(?:\\r?\\n))+?)(^\\\\\\*\\/$(?:\\r?\\n)?)",
|
|
|
|
|
fileExtensionInfo: Object.create(null), // Map file extension to {type:}
|
|
|
|
|
contentTypeInfo: Object.create(null), // Map type to {encoding:,extension:}
|
|
|
|
|
pluginsEnvVar: "TIDDLYWIKI_PLUGIN_PATH",
|
|
|
|
|
themesEnvVar: "TIDDLYWIKI_THEME_PATH",
|
|
|
|
|
languagesEnvVar: "TIDDLYWIKI_LANGUAGE_PATH",
|
|
|
|
|
editionsEnvVar: "TIDDLYWIKI_EDITION_PATH"
|
|
|
|
|
},
|
|
|
|
|
log: {}, // Log flags
|
|
|
|
|
unloadTasks: []
|
|
|
|
|
});
|
|
|
|
|
if(!$tw.boot.tasks.readBrowserTiddlers) {
|
|
|
|
|
// For writable tiddler files, a hashmap of title to {filepath:,type:,hasMetaFile:}
|
|
|
|
|
$tw.boot.files = Object.create(null);
|
|
|
|
|
// System paths and filenames
|
|
|
|
|
$tw.boot.bootPath = options.bootPath || path.dirname(module.filename);
|
|
|
|
|
$tw.boot.corePath = path.resolve($tw.boot.bootPath,"../core");
|
|
|
|
|
// If there's no arguments then default to `--help`
|
|
|
|
|
if($tw.boot.argv.length === 0) {
|
|
|
|
|
$tw.boot.argv = ["--help"];
|
|
|
|
|
}
|
|
|
|
|
// Parse any extra plugin references
|
|
|
|
|
$tw.boot.extraPlugins = $tw.boot.extraPlugins || [];
|
|
|
|
|
while($tw.boot.argv[0] && $tw.boot.argv[0].indexOf("+") === 0) {
|
|
|
|
|
$tw.boot.extraPlugins.push($tw.boot.argv[0].substring(1));
|
|
|
|
|
$tw.boot.argv.splice(0,1);
|
|
|
|
|
}
|
|
|
|
|
// If the first command line argument doesn't start with `--` then we
|
|
|
|
|
// interpret it as the path to the wiki folder, which will otherwise default
|
|
|
|
|
// to the current folder
|
|
|
|
|
if($tw.boot.argv[0] && $tw.boot.argv[0].indexOf("--") !== 0) {
|
|
|
|
|
$tw.boot.wikiPath = $tw.boot.argv[0];
|
|
|
|
|
$tw.boot.argv = $tw.boot.argv.slice(1);
|
|
|
|
|
} else {
|
|
|
|
|
$tw.boot.wikiPath = process.cwd();
|
|
|
|
|
}
|
|
|
|
|
// Read package info
|
|
|
|
|
$tw.packageInfo = $tw.packageInfo || require("../package.json");
|
|
|
|
|
// Check node version number
|
|
|
|
|
if(!$tw.utils.checkVersions(process.version.substr(1),$tw.packageInfo.engines.node.substr(2))) {
|
|
|
|
|
$tw.utils.error("TiddlyWiki5 requires node.js version " + $tw.packageInfo.engines.node);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Add file extension information
|
|
|
|
|
$tw.utils.registerFileType("text/vnd.tiddlywiki","utf8",".tid");
|
|
|
|
|
$tw.utils.registerFileType("application/x-tiddler","utf8",".tid");
|
|
|
|
|
$tw.utils.registerFileType("application/x-tiddlers","utf8",".multids");
|
|
|
|
|
$tw.utils.registerFileType("application/x-tiddler-html-div","utf8",".tiddler");
|
|
|
|
|
$tw.utils.registerFileType("text/vnd.tiddlywiki2-recipe","utf8",".recipe");
|
|
|
|
|
$tw.utils.registerFileType("text/plain","utf8",".txt");
|
|
|
|
|
$tw.utils.registerFileType("text/css","utf8",".css");
|
|
|
|
|
$tw.utils.registerFileType("text/html","utf8",[".html",".htm"]);
|
|
|
|
|
$tw.utils.registerFileType("application/hta","utf16le",".hta",{deserializerType:"text/html"});
|
|
|
|
|
$tw.utils.registerFileType("application/javascript","utf8",".js");
|
|
|
|
|
$tw.utils.registerFileType("application/json","utf8",".json");
|
|
|
|
|
$tw.utils.registerFileType("application/pdf","base64",".pdf",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("application/zip","base64",".zip");
|
|
|
|
|
$tw.utils.registerFileType("application/x-zip-compressed","base64",".zip");
|
|
|
|
|
$tw.utils.registerFileType("image/jpeg","base64",[".jpg",".jpeg"],{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/jpg","base64",[".jpg",".jpeg"],{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/png","base64",".png",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/gif","base64",".gif",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/webp","base64",".webp",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/heic","base64",".heic",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/heif","base64",".heif",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/svg+xml","utf8",".svg",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/vnd.microsoft.icon","base64",".ico",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]});
|
|
|
|
|
$tw.utils.registerFileType("application/font-woff","base64",".woff");
|
|
|
|
|
$tw.utils.registerFileType("application/x-font-ttf","base64",".woff");
|
|
|
|
|
$tw.utils.registerFileType("application/font-woff2","base64",".woff2");
|
|
|
|
|
$tw.utils.registerFileType("audio/ogg","base64",".ogg");
|
|
|
|
|
$tw.utils.registerFileType("video/ogg","base64",[".ogm",".ogv",".ogg"]);
|
|
|
|
|
$tw.utils.registerFileType("video/webm","base64",".webm");
|
|
|
|
|
$tw.utils.registerFileType("video/mp4","base64",".mp4");
|
|
|
|
|
$tw.utils.registerFileType("audio/mp3","base64",".mp3");
|
|
|
|
|
$tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]);
|
|
|
|
|
$tw.utils.registerFileType("text/markdown","utf8",[".md",".markdown"],{deserializerType:"text/x-markdown"});
|
|
|
|
|
$tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]);
|
|
|
|
|
$tw.utils.registerFileType("application/enex+xml","utf8",".enex");
|
|
|
|
|
$tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.wordprocessingml.document","base64",".docx");
|
|
|
|
|
$tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","base64",".xlsx");
|
|
|
|
|
$tw.utils.registerFileType("application/vnd.openxmlformats-officedocument.presentationml.presentation","base64",".pptx");
|
|
|
|
|
$tw.utils.registerFileType("text/x-bibtex","utf8",".bib",{deserializerType:"application/x-bibtex"});
|
|
|
|
|
$tw.utils.registerFileType("application/x-bibtex","utf8",".bib");
|
|
|
|
|
$tw.utils.registerFileType("application/epub+zip","base64",".epub");
|
|
|
|
|
$tw.utils.registerFileType("application/octet-stream","base64",".octet-stream");
|
|
|
|
|
// Create the wiki store for the app
|
|
|
|
|
$tw.wiki = new $tw.Wiki();
|
|
|
|
|
// Install built in tiddler fields modules
|
|
|
|
|
$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap("tiddlerfield");
|
|
|
|
|
// Install the tiddler deserializer modules
|
|
|
|
|
$tw.Wiki.tiddlerDeserializerModules = Object.create(null);
|
|
|
|
|
$tw.modules.applyMethods("tiddlerdeserializer",$tw.Wiki.tiddlerDeserializerModules);
|
|
|
|
|
// Call unload handlers in the browser
|
|
|
|
|
if($tw.browser) {
|
|
|
|
|
window.onbeforeunload = function(event) {
|
|
|
|
|
event = event || {};
|
|
|
|
|
var result;
|
|
|
|
|
$tw.utils.each($tw.unloadTasks,function(task) {
|
|
|
|
|
var r = task(event);
|
|
|
|
|
if(r) {
|
|
|
|
|
result = r;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
$tw.boot.loadStartup = function(options){
|
|
|
|
|
|
|
|
|
|
// Load tiddlers
|
|
|
|
|
if($tw.boot.tasks.readBrowserTiddlers) {
|
|
|
|
|
$tw.loadTiddlersBrowser();
|
|
|
|
|
} else {
|
|
|
|
|
$tw.loadTiddlersNode();
|
|
|
|
|
}
|
|
|
|
|
// Load any preloaded tiddlers
|
|
|
|
|
if($tw.preloadTiddlers) {
|
|
|
|
|
$tw.wiki.addTiddlers($tw.preloadTiddlers);
|
|
|
|
|
}
|
|
|
|
|
// Give hooks a chance to modify the store
|
|
|
|
|
$tw.hooks.invokeHook("th-boot-tiddlers-loaded");
|
|
|
|
|
}
|
|
|
|
|
$tw.boot.execStartup = function(options){
|
|
|
|
|
// Unpack plugin tiddlers
|
|
|
|
|
$tw.wiki.readPluginInfo();
|
|
|
|
|
$tw.wiki.registerPluginTiddlers("plugin",$tw.safeMode ? ["$:/core"] : undefined);
|
|
|
|
|
$tw.wiki.unpackPluginTiddlers();
|
|
|
|
|
// Process "safe mode"
|
|
|
|
|
if($tw.safeMode) {
|
|
|
|
|
$tw.wiki.processSafeMode();
|
|
|
|
|
}
|
|
|
|
|
// Register typed modules from the tiddlers we've just loaded
|
|
|
|
|
$tw.wiki.defineTiddlerModules();
|
|
|
|
|
// And any modules within plugins
|
|
|
|
|
$tw.wiki.defineShadowModules();
|
|
|
|
|
// Make sure the crypto state tiddler is up to date
|
|
|
|
|
if($tw.crypto) {
|
|
|
|
|
$tw.crypto.updateCryptoStateTiddler();
|
|
|
|
|
}
|
|
|
|
|
// Gather up any startup modules
|
|
|
|
|
$tw.boot.remainingStartupModules = []; // Array of startup modules
|
|
|
|
|
$tw.modules.forEachModuleOfType("startup",function(title,module) {
|
|
|
|
|
if(module.startup) {
|
|
|
|
|
$tw.boot.remainingStartupModules.push(module);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// Keep track of the startup tasks that have been executed
|
|
|
|
|
$tw.boot.executedStartupModules = Object.create(null);
|
|
|
|
|
$tw.boot.disabledStartupModules = $tw.boot.disabledStartupModules || [];
|
|
|
|
|
// Repeatedly execute the next eligible task
|
|
|
|
|
$tw.boot.executeNextStartupTask(options.callback);
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
Startup TiddlyWiki
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.startup = function(options) {
|
|
|
|
|
options = options || {};
|
|
|
|
|
// Get the URL hash and check for safe mode
|
|
|
|
|
$tw.boot.initStartup(options);
|
|
|
|
|
$tw.boot.loadStartup(options);
|
|
|
|
|
$tw.boot.execStartup(options);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Add another unload task
|
|
|
|
|
*/
|
|
|
|
|
$tw.addUnloadTask = function(task) {
|
|
|
|
|
if($tw.unloadTasks.indexOf(task) === -1) {
|
|
|
|
|
$tw.unloadTasks.push(task);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Execute the remaining eligible startup tasks
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.executeNextStartupTask = function(callback) {
|
|
|
|
|
// Find the next eligible task
|
|
|
|
|
var taskIndex = 0, task,
|
|
|
|
|
asyncTaskCallback = function() {
|
|
|
|
|
if(task.name) {
|
|
|
|
|
$tw.boot.executedStartupModules[task.name] = true;
|
|
|
|
|
}
|
|
|
|
|
return $tw.boot.executeNextStartupTask(callback);
|
|
|
|
|
};
|
|
|
|
|
while(taskIndex < $tw.boot.remainingStartupModules.length) {
|
|
|
|
|
task = $tw.boot.remainingStartupModules[taskIndex];
|
|
|
|
|
if($tw.boot.isStartupTaskEligible(task)) {
|
|
|
|
|
// Remove this task from the list
|
|
|
|
|
$tw.boot.remainingStartupModules.splice(taskIndex,1);
|
|
|
|
|
// Assemble log message
|
|
|
|
|
var s = ["Startup task:",task.name];
|
|
|
|
|
if(task.platforms) {
|
|
|
|
|
s.push("platforms:",task.platforms.join(","));
|
|
|
|
|
}
|
|
|
|
|
if(task.after) {
|
|
|
|
|
s.push("after:",task.after.join(","));
|
|
|
|
|
}
|
|
|
|
|
if(task.before) {
|
|
|
|
|
s.push("before:",task.before.join(","));
|
|
|
|
|
}
|
|
|
|
|
$tw.boot.log(s.join(" "));
|
|
|
|
|
// Execute task
|
|
|
|
|
if(!$tw.utils.hop(task,"synchronous") || task.synchronous) {
|
|
|
|
|
task.startup();
|
|
|
|
|
if(task.name) {
|
|
|
|
|
$tw.boot.executedStartupModules[task.name] = true;
|
|
|
|
|
}
|
|
|
|
|
return $tw.boot.executeNextStartupTask(callback);
|
|
|
|
|
} else {
|
|
|
|
|
task.startup(asyncTaskCallback);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
taskIndex++;
|
|
|
|
|
}
|
|
|
|
|
if(typeof callback === 'function') {
|
|
|
|
|
callback();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Returns true if we are running on one of the platforms specified in taskModule's
|
|
|
|
|
`platforms` array; or if `platforms` property is not defined.
|
|
|
|
|
*/
|
|
|
|
|
$tw.boot.doesTaskMatchPlatform = function(taskModule) {
|
|
|
|
|
var platforms = taskModule.platforms;
|
|
|
|
|
if(platforms) {
|
|
|
|
|
for(var t=0; t<platforms.length; t++) {
|
|
|
|
|
switch (platforms[t]) {
|
|
|
|
|
case "browser":
|
|
|
|
|
if ($tw.browser) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "node":
|
|
|
|
|
if ($tw.node) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$tw.utils.error("Module " + taskModule.name + ": '" + platforms[t] + "' in export.platforms invalid");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$tw.boot.isStartupTaskEligible = function(taskModule) {
|
|
|
|
|
var t;
|
|
|
|
|
// Check that the platform is correct
|
|
|
|
|
if(!$tw.boot.doesTaskMatchPlatform(taskModule)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var name = taskModule.name,
|
|
|
|
|
remaining = $tw.boot.remainingStartupModules;
|
|
|
|
|
if(name) {
|
|
|
|
|
// Fail if this module is disabled
|
|
|
|
|
if($tw.boot.disabledStartupModules.indexOf(name) !== -1) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// Check that no other outstanding tasks must be executed before this one
|
|
|
|
|
for(t=0; t<remaining.length; t++) {
|
|
|
|
|
var task = remaining[t];
|
|
|
|
|
if(task.before && task.before.indexOf(name) !== -1) {
|
|
|
|
|
if($tw.boot.doesTaskMatchPlatform(task) && (!task.name || $tw.boot.disabledStartupModules.indexOf(task.name) === -1)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Check that all of the tasks that we must be performed after has been done
|
|
|
|
|
var after = taskModule.after;
|
|
|
|
|
if(after) {
|
|
|
|
|
for(t=0; t<after.length; t++) {
|
|
|
|
|
if(!$tw.boot.executedStartupModules[after[t]]) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Global Hooks mechanism which allows plugins to modify default functionality
|
|
|
|
|
*/
|
|
|
|
|
$tw.hooks = $tw.hooks || { names: {}};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Add hooks to the hashmap
|
|
|
|
|
*/
|
|
|
|
|
$tw.hooks.addHook = function(hookName,definition) {
|
|
|
|
|
if($tw.utils.hop($tw.hooks.names,hookName)) {
|
|
|
|
|
$tw.hooks.names[hookName].push(definition);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$tw.hooks.names[hookName] = [definition];
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Invoke the hook by key
|
|
|
|
|
*/
|
|
|
|
|
$tw.hooks.invokeHook = function(hookName /*, value,... */) {
|
|
|
|
|
var args = Array.prototype.slice.call(arguments,1);
|
|
|
|
|
if($tw.utils.hop($tw.hooks.names,hookName)) {
|
|
|
|
|
for (var i = 0; i < $tw.hooks.names[hookName].length; i++) {
|
|
|
|
|
args[0] = $tw.hooks.names[hookName][i].apply(null,args);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return args[0];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Main boot function to decrypt tiddlers and then startup
|
|
|
|
|
|
|
|
|
|
$tw.boot.boot = function(callback) {
|
|
|
|
|
// Initialise crypto object
|
|
|
|
|
$tw.crypto = new $tw.utils.Crypto();
|
|
|
|
|
// Initialise password prompter
|
|
|
|
|
if($tw.browser && !$tw.node) {
|
|
|
|
|
$tw.passwordPrompt = new $tw.utils.PasswordPrompt();
|
|
|
|
|
}
|
|
|
|
|
// Preload any encrypted tiddlers
|
|
|
|
|
$tw.boot.decryptEncryptedTiddlers(function() {
|
|
|
|
|
// Startup
|
|
|
|
|
$tw.boot.startup({callback: callback});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/////////////////////////// Autoboot in the browser
|
|
|
|
|
|
|
|
|
|
if($tw.browser && !$tw.boot.suppressBoot) {
|
|
|
|
|
$tw.boot.boot();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $tw;
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if(typeof(exports) !== "undefined") {
|
|
|
|
|
exports.TiddlyWiki = _boot;
|
|
|
|
|
} else {
|
|
|
|
|
_boot(window.$tw);
|
|
|
|
|
}
|
|
|
|
|
//# sourceURL=$:/boot/boot.js
|
|
|
|
|
</script>
|
|
|
|
|
</div>
|
|
|
|
|
<!--~~ Raw markup for the bottom of the body section ~~-->
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|