The bmannconsulting.com website

Adding tiddlywiki source folder and what will become notes output folder

Changed files
+6949
notes
tiddlywiki
plugins
WMR
aliases
edit-comptext
inc
notebook-mobile
simple-search
themes
tiddlers
notes/.gitkeep

This is a binary file and will not be displayed.

+1
tiddlywiki/plugins/WMR/CircleJack.svg.svg
···
+
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256"><circle cx="128" cy="128" r="128"/><path fill="#FFF" d="M181.035 228.486c-9.88 0-14.08-.336-19.035-8.486 0 0-6.002.148-9 0-5.014-.193-6-4.928-6-8 0-8.04 3.104-16.455 3-25-.035-3.04-4.467-14.16-6-18-4.81.906-9.5 2-18 2s-19.914-2.254-31-4c-2.16 8.926-8.31 21.928-3 31 6.442 9.383 10.992 11.436 18 12s8.695 8.174 7 11c-2.125 3.375-4.883 3-9 3s-8.858-1.53-12-3c-5.25-2.932-7.973-6.625-12-11 .938 1.748-.3 4.807-2 6-3.47 2.434-13.328 2.62-17 1-5.358-2.383-19-19.477-21-32 5.325-10.074 13.074-18.03 17-29-8.556-5.46-13.674-16.99-11.993-25.143.89-4.324 1.993-6.84-3.007-9.857-22.066-10.832-18.714-46.676-11-65 6.706-15.934 22.39-23.95 31-16 7.623 7.04 7.375 13 4 13-3.376 0-5.01-6.266-8-8-8.052-4.676-16.65 6.92-20 17-4.586 13.797-8.236 47.324 14 48 4.284-.146 6.647-.51 10-2 5.48-2.434 13.572-3.895 18-4 15.02-.48 33.03 5.746 42 6 8.967.252 21.168-2.508 29-2 5.68.26 11.518 1.54 17 3 3.55-17.297 3.586-30.05 12-33 4.936.78 9.184 7.406 12 11 5.746-.23 10.574 1.387 16 3 9.824-1.395 18.324-6.707 27-11-8.79 7.18-10.004 18.2-9 29 .373 5.605-1.045 12.26-3 18-3.664 9.352-10.79 19.504-19 19-3.105-.1-5.693-2.123-8-4-.447 3.8-2.303 7.637-4 11-3.914 7.453-13.527 10.04-23 18s2.97 36.82 6 42c3.033 5.18 11.195 6.176 9 11-.71 2.1-2.812 3.486-6.965 3.486zm-109.03-23.59c2.187.862 6.98.556 8.995 1.104-3.707-3.51-8.977-8.752-13-12-1.32-3.93-1-12-1-12-1.584 3.215-3.918 6.62-5 10-1.137 3.71 5.34 11.053 10.006 12.895z"/></svg>
+7
tiddlywiki/plugins/WMR/CircleJack.svg.svg.meta
···
+
created: 20170918060138058
+
creator: Thomas Elmiger
+
modified: 20200219150938674
+
modifier: Thomas Elmiger
+
tags: picture
+
title: CircleJack.svg
+
type: image/svg+xml
+14
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/about.tid
···
+
created: 20181125122609022
+
modified: 20200219150938451
+
tags:
+
title: $:/plugins/telmiger/WMR/about
+
type: text/vnd.tiddlywiki
+
+
!!! About the Wikitext Markup Reference
+
+
Examples are copied from or inspired by
+
+
* [[Tobi Beer's Markup Reference|http://tobibeer.github.io/tb5/#Markup%20Reference]]
+
** try the [[searchable version|http://tobibeer.github.io/tb5/#Markup]] too!
+
+
A great idea found via [[Greg Davis' Begin plugin|http://gdplugins.tiddlyspot.com/#%24%3A%2Fplugins%2Fgdavis%2Ftwbegin]].
+10
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/bar.tid
···
+
caption: Bar
+
created: 20181129205651711
+
creator: Thomas
+
modified: 20200219150938497
+
modifier: Thomas Elmiger
+
tags: Bar
+
title: $:/plugins/telmiger/WMR/bar
+
type: text/vnd.tiddlywiki
+
+
He ordered another beer.
+25
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/code.tid
···
+
created: 20181124200421812
+
creator: Thomas
+
modified: 20200219150938484
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/code
+
type: text/vnd.tiddlywiki
+
+
<<wt "Display `code` via backticks.">>
+
+
Use double backticks ... <<wt "``for `embedded` backticks`` in code.">>
+
+
For longer code use a [[code block|https://tiddlywiki.com/#Code%20Blocks%20in%20WikiText]]:
+
+
<div class="wmr-input">
+
<pre>&#96;&#96;&#96;
+
monospaced
+
codeblock
+
&#96;&#96;&#96;</pre>
+
</div>
+
+
```
+
monospaced
+
codeblock
+
```
+87
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/filters.tid
···
+
created: 20181128065322406
+
creator: Thomas
+
modified: 20200219150938468
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/filters
+
type: text/vnd.tiddlywiki
+
wmr-source-link: https://tiddlywiki.com/#Filter%20Expression
+
+
+
!!! Display the result of a filter expression
+
+
Use [[filter operators|https://tiddlywiki.com/#Filter%20Operators]] like `tag` to select tiddlers.
+
+
List tiddlers tagged `Foo`:
+
+
<<wt "{{{ [tag[Foo]] }}}
+
">>
+
+
List tiddlers tagged `Foo` OR `Bar`:
+
+
<<wt "{{{ [tag[Foo]][tag[Bar]] }}}
+
">>
+
+
List tiddlers tagged `Foo` AND `Bar`:
+
+
<<wt "{{{ [tag[Foo]] +[tag[Bar]] }}}
+
">>
+
+
List tiddlers tagged `Foo` NOT `Bar`:
+
+
<<wt "{{{ [tag[Foo]] -[tag[Bar]] }}}
+
">>
+
+
---
+
+
!!! Limit results
+
+
<<wt "{{{ [tag[Foo]limit[1]] }}}
+
">>
+
+
---
+
+
!!! Sorting
+
+
Sort titles:
+
+
<<wt "{{{ [tag[Foo]][tag[Bar]] +[sort[]] }}}
+
">>
+
+
Sort reverse:
+
+
<<wt "{{{ [tag[Foo]][tag[Bar]] +[!sort[]] }}}
+
">>
+
+
Sort numbers:
+
+
<<wt "{{{ [[1]][[10]][[2]][[3]] +[nsort[]] }}}
+
">>
+
+
First created:
+
+
<<wt "{{{ [tag[Foo]][tag[Bar]] +[sort[created]] }}}
+
">>
+
+
Last modified:
+
+
<<wt "{{{ [tag[Foo]][tag[Bar]] +[!sort[modified]] }}}
+
">>
+
+
---
+
+
!!! Special effects
+
+
!!!! If empty ... aka Else ~
+
+
Since TW version 5.1.18
+
+
<<wt "{{{ [tag[foo]] ~[[no foo]] }}}
+
">>
+
+
!!!! Range
+
+
<<wt "{{{ [range[3,1,0.5]] }}}
+
">>
+
+
See https://tiddlywiki.com/#range%20Operator
+43
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/font-variants.tid
···
+
created: 20181124191306552
+
creator: Thomas
+
modified: 20200219150938522
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/font-variants
+
type: text/vnd.tiddlywiki
+
+
<<wt "Normal text: We don’t serve their kind here! What? Your droids. They’ll have to wait outside. We don’t want them here. Listen, why don’t you wait out by the speeder. We don’t want any trouble. I heartily agree with you sir. Negola dewaghi wooldugger?!? He doesn’t like you. I’m sorry.">>
+
+
<<wt "''bold'' ">>
+
+
+
<<wt //italics//>>
+
+
+
<<wt "''//bold italics//'' ">>
+
+
+
<<wt __underline__>>
+
+
+
<<wt ~~strikethrough~~>>
+
+
+
<<wt super^^script^^>>
+
+
+
<<wt sub,,script,,>>
+
+
+
<<wt "! Heading 1
+
+
!! Heading 2
+
+
!!! Heading 3
+
+
!!!! Heading 4
+
+
!!!!! Heading 5
+
+
!!!!!! Heading 6
+
">>
+10
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/foo-bar.tid
···
+
caption: Foo Bar
+
created: 20181130170447615
+
creator: Thomas Elmiger
+
modified: 20200219150938505
+
modifier: Thomas Elmiger
+
tags: Bar Foo Dummy
+
title: $:/plugins/telmiger/WMR/foo-bar
+
type: text/vnd.tiddlywiki
+
+
Dummy text
+13
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/foo.tid
···
+
caption: Foo
+
created: 20181127222534567
+
creator: Thomas
+
modified: 20200219150938514
+
modifier: Thomas Elmiger
+
tags: Foo Dummy
+
title: $:/plugins/telmiger/WMR/foo
+
type: text/vnd.tiddlywiki
+
wmr-example: 54rem
+
+
A man went into a ''bar''.
+
+
He ordered a beer.
+70
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/html.tid
···
+
created: 20181124205849430
+
creator: Thomas
+
modified: 20200219150938529
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/html
+
type: text/vnd.tiddlywiki
+
+
<div class="wmr-input">
+
+
```
+
<article class="hello">
+
HTML tags work like that.
+
<!-- even comments -->
+
</article>
+
```
+
</div>
+
+
<article class="hello">
+
HTML tags work like that.
+
<!-- even comments -->
+
</article>
+
+
+
<div class="wmr-input">
+
+
```
+
<a href={{TiddlerWithURL}}>link</a>
+
<b class=<<getClass>>>bold</b>
+
```
+
</div>
+
+
<a href={{TiddlerWithURL}}>link</a>
+
<b class=<<version>>>bold</b>
+
+
set attributes via transclusion or macro
+
+
+
<div class="wmr-input">
+
+
```
+
<div address="""attribute,
+
"quoted",
+
with,
+
linebreaks.""">inspect me!</div>
+
```
+
</div>
+
+
<div address="""attribute,
+
"quoted",
+
with,
+
linebreaks.""">inspect me!</div>
+
+
+
<div class="wmr-input">
+
+
```
+
* nest<div>
+
+
; via
+
: html
+
</div>
+
```
+
</div>
+
+
*nest <div>
+
+
;via
+
:html
+
</div>
+7
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/icon.tid
···
+
created: 20181125123109958
+
modified: 20200219150938666
+
tags: $:/tags/Macro
+
title: $:/plugins/telmiger/WMR/icon
+
type: text/vnd.tiddlywiki
+
+
{{CircleJack.svg}}
+32
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/images.tid
···
+
created: 20181124203347203
+
creator: Thomas
+
modified: 20200219150938658
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/images
+
type: text/vnd.tiddlywiki
+
wmr-source-link: https://tiddlywiki.com/#Images%20in%20WikiText
+
+
!!! Internal images
+
+
Images saved in the wiki:
+
+
<<wt """[img width=128 [CircleJack.svg]]
+
[img width=64 [title/tooltip|CircleJack.svg]]
+
[img width=32 [CircleJack.svg]]
+
[img width=32 class="red" [CircleJack.svg]]
+
""">>
+
+
+
!!! Images from the web
+
+
<<wt """[img[https://tiddlywiki.com/favicon.ico]]
+
""">>
+
+
+
!!! Images in separate files
+
+
<<wt """[img[path/image.jpg]]
+
""">>
+
+
Solutions can be found in the user group ...
+40
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/links.tid
···
+
created: 20181124191601375
+
creator: Thomas
+
modified: 20200219150938648
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/links
+
type: text/vnd.tiddlywiki
+
wmr-source-link: https://tiddlywiki.com/#Linking%20in%20WikiText
+
+
!!! Internal Wiki Links
+
+
<<wt "[[Wikitext Markup Reference]]
+
+
[[Missing Tiddler]] – italic
+
+
$:/AdvancedSearch
+
+
[[shadow tiddler|$:/AdvancedSearch]] – bold
+
">>
+
+
+
<<wt "CamelCaseLink
+
+
~SuppressedLink
+
">>
+
+
+
!!! External Links
+
+
<<wt "https://tiddlywiki.com
+
+
[[web link|https://tiddlywiki.com]]
+
+
~https://not.alink.com
+
">>
+
+
+
!!! File Links
+
+
Links to local/external files: see [[tiddlywiki.com|https://tiddlywiki.com/#Linking%20in%20WikiText]]
+114
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/lists.tid
···
+
created: 20181124191350660
+
creator: Thomas
+
modified: 20200219150938642
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/lists
+
type: text/vnd.tiddlywiki
+
+
!! Wikitext lists
+
+
!!! Unordered list
+
+
<<wt "* list item
+
** list in list
+
*** list in list in list
+
">>
+
+
!!! Ordered list
+
+
<<wt "# list item
+
#* list in list
+
#** list in list in list
+
# list item
+
## numbered list in list
+
">>
+
+
!!! [[Definition list|https://tiddlywiki.com/#Definitions%20in%20WikiText]]
+
+
<<wt "; term
+
: definition of the term
+
">>
+
+
---
+
+
!! [[List widget|https://tiddlywiki.com/prerelease/#ListWidget]]
+
+
<<wt """<$list filter="[tag[Foo]sort[title]]"/>
+
""">>
+
+
<<wt "{{{ [tag[Foo]!sort[title]] }}}"
+
""">>
+
+
+
!!! List format
+
+
```
+
<ul>
+
<$list filter="[tag[Foo]sort[title]]">
+
<li><<currentTiddler>></li>
+
</$list>
+
</ul>
+
```
+
+
<ul>
+
<$list filter="[tag[Foo]sort[title]]">
+
<li><<currentTiddler>></li>
+
</$list>
+
</ul>
+
+
!!! Store list item in variable
+
+
By default, the title of the list item is stored in the Current Tiddler variable:
+
+
+
```
+
<$list filter="[tag[Bar]]">
+
<<currentTiddler>>
+
{{||$:/core/ui/ViewTemplate/tags}}
+
</$list>
+
```
+
+
<$list filter="[tag[Bar]]">
+
<<currentTiddler>>
+
{{||$:/core/ui/ViewTemplate/tags}}
+
</$list>
+
+
+
When we store the title in our own variable, the Current Tiddler remains unchanged. In the following example, the tags of the displaying tiddler will be shown:
+
+
```
+
<$list filter="[tag[Bar]]" variable="tiddler">
+
<<tiddler>>
+
{{||$:/core/ui/ViewTemplate/tags}}
+
</$list>
+
```
+
+
<$list filter="[tag[Bar]]" variable="tiddler">
+
<<tiddler>>
+
{{||$:/core/ui/ViewTemplate/tags}}
+
</$list>
+
+
!!! Empty message
+
+
+
```
+
<$list filter="[tag[foo]limit[1]]" emptyMessage="No `foo` tagged tiddlers available.">
+
`foo` tagged tiddlers exist
+
</$list>
+
+
```
+
+
<$list filter="[tag[foo]limit[1]]" emptyMessage="No `foo` tagged tiddlers available.">
+
`foo` tagged tiddlers exist
+
</$list>
+
+
```
+
<$list filter="[tag[Foo]limit[1]]" emptyMessage="no `Foo` tagged tiddlers available">
+
`Foo` tagged tiddlers exist.
+
</$list>
+
```
+
+
<$list filter="[tag[Foo]limit[1]]" emptyMessage="no `Foo` tagged tiddlers available">
+
`Foo` tagged tiddlers exist.
+
</$list>
+71
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/macros.tid
···
+
created: 20181124210017691
+
creator: Thomas
+
modified: 20200219150938635
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/macros
+
type: text/vnd.tiddlywiki
+
+
<div class="wikitext-examples">
+
+
<div class="wmr-input">
+
+
```
+
\define run(foo:'bar') [[$foo$]]
+
+
<<run "foo bar">>
+
```
+
</div>
+
+
» defines macro `run`<br>
+
» with parameter `foo`<br>
+
» whose value defaults to `bar`<br>
+
» outputs a link to value of param:<br>
+
&nbsp;&nbsp;[[foo bar]]
+
+
<div class="wmr-input">
+
+
```
+
\define test()
+
I am $(x)$.
+
\end
+
+
<$set name="x" value="y
+
of z">
+
<<test>>
+
</$set>
+
```
+
</div>
+
+
» defines macro test which<br>
+
» outputs value of variable x<br><br>
+
+
» sets variable x to: "y<br>
+
&nbsp;&nbsp;of z" //(multiline allowed)//<br>
+
» runs macro test which outputs:<br>
+
&nbsp;&nbsp;"I am y of z."
+
+
<div class="wmr-input">
+
+
```
+
\define test(x, y, z:'0')
+
$x$ $y$ $z$
+
\end
+
+
<$macrocall
+
$name="test"
+
x=<<version>>
+
y={{!!title}}/>
+
```
+
</div>
+
+
» defines macro test<br>
+
» outputs 3 params<br><br>
+
+
» calls test via macrocall widget<br>
+
» using macro version as param x<br>
+
» and transclusion as param y<br><br>
+
+
» output: <<version>> {{!!title}} 0
+
+
</div>
+37
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/new-lines.tid
···
+
created: 20181124200219330
+
creator: Thomas
+
modified: 20200219150938627
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/new-lines
+
type: text/vnd.tiddlywiki
+
+
<<wt "Since
+
new paragraphs
+
need //two// linebreaks in TW5 ...
+
+
You can also use:
+
">>
+
+
<div class="wmr-input">
+
+
```
+
"""
+
tripple quotes to
+
force //hard// linebreaks
+
like this.
+
"""
+
```
+
</div>
+
+
"""
+
tripple quotes to
+
force hard linebreaks
+
like this.
+
"""
+
+
<<wt "HTML tags: <br>
+
as well as <br/> are //accepted.//
+
">>
+
+
Both result in a `<br>` when rendered.
+46
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/plugin-macros.tid
···
+
created: 20181124191802720
+
modified: 20200219150938617
+
tags: $:/tags/Macro
+
title: $:/plugins/telmiger/WMR/plugin-macros
+
type: text/vnd.tiddlywiki
+
+
\define wt(wikitext:"example")
+
<$wikify name="in" text="""$wikitext$""" type="text/plain">
+
<$set name="out" value="""
+
+
$wikitext$
+
+
""">
+
<$macrocall $name="renderWT" input=<<in>> output=<<out>>/>
+
</$set>
+
</$wikify>
+
\end
+
+
\define renderWT(input,output)
+
<div class="wmr-input">
+
+
```
+
$input$
+
```
+
</div>
+
<div class="wmr-output">$output$</div>
+
\end
+
+
\define revealstate(tiddler,stateID)
+
<$set name="qualstate" value=<<qualify "$:/state/wiki-markup/$stateID$">> >
+
<$reveal type="nomatch" state=<<qualstate>> text="visible" animate="yes">
+
<$button set=<<qualstate>> setTo="visible" class="btnClosed">Show</$button>
+
</$reveal>
+
<$reveal type="match" state=<<qualstate>> text="visible" animate="yes">
+
<$button set=<<qualstate>> setTo="hidden" class="btnOpen">Hide section</$button>
+
<article class="wikitext-examples">
+
<$transclude tiddler="$tiddler$" mode="block"/>
+
<footer>
+
<$list filter="[{$tiddler$!!wmr-source-link}prefix[https://tiddlywiki.com]]">
+
<a href={{$tiddler$!!wmr-source-link}}>More on tiddlywiki.com</a> | </$list>
+
<$link to="$tiddler$">Open separately</$link>
+
</footer>
+
</article>
+
</$reveal>
+
</$set>
+
\end
+19
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/quotes.tid
···
+
created: 20181129204618410
+
creator: Thomas
+
modified: 20200219150938607
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/quotes
+
type: text/vnd.tiddlywiki
+
+
!!! [[Quotes and citations|https://tiddlywiki.com/#Block%20Quotes%20in%20WikiText]]
+
+
<<wt "<<<
+
We are the ones we have been waiting for.
+
<<< Hopi wisdom
+
">>
+
+
<<wt "<<<.tc-big-quote
+
We are the ones we have been waiting for.
+
<<< Hopi wisdom
+
">>
+105
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/reference.tid
···
+
created: 20181125111047842
+
creator: Thomas
+
modified: 20200219150938597
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/reference
+
type: text/vnd.tiddlywiki
+
+
<div class="wikitext-examples">
+
+
!! Font Variants
+
+
<<revealstate "$:/plugins/telmiger/WMR/font-variants" "font-variants">>
+
+
+
!! Lists, Definitions
+
+
<<revealstate "$:/plugins/telmiger/WMR/lists" "lists">>
+
+
+
!! Links
+
+
<<revealstate "$:/plugins/telmiger/WMR/links" "links">>
+
+
+
!! Special Characters, Lines, Ruler
+
+
<<revealstate "$:/plugins/telmiger/WMR/special-chars" "special-chars">>
+
+
+
!! New Lines
+
+
<<revealstate "$:/plugins/telmiger/WMR/new-lines" "new-lines">>
+
+
+
!! Quotes
+
+
<<revealstate "$:/plugins/telmiger/WMR/quotes" "quotes">>
+
+
+
!! Styles
+
+
<<revealstate "$:/plugins/telmiger/WMR/styles" "styles">>
+
+
+
!! Images
+
+
<<revealstate "$:/plugins/telmiger/WMR/images" "images">>
+
+
+
!! Tables
+
+
<<revealstate "$:/plugins/telmiger/WMR/tables" "tables">>
+
+
+
!! Code
+
+
<<revealstate "$:/plugins/telmiger/WMR/code" "code">>
+
+
+
!! Plain HTML
+
+
<<revealstate "$:/plugins/telmiger/WMR/html" "html">>
+
+
+
!! Transclusion
+
+
<<revealstate "$:/plugins/telmiger/WMR/transclusion" "transclusion">>
+
+
+
!! Tabs
+
+
<<revealstate "$:/plugins/telmiger/WMR/tabs" "tabs">>
+
+
+
!! Special Cases
+
+
<<revealstate "$:/plugins/telmiger/WMR/special" "special">>
+
+
+
!! Variables
+
+
<<revealstate "$:/plugins/telmiger/WMR/variables" "variables">>
+
+
+
!! Macros
+
+
<<revealstate "$:/plugins/telmiger/WMR/macros" "macros">>
+
+
+
!! Filters
+
+
<<revealstate "$:/plugins/telmiger/WMR/filters" "filters">>
+
+
+
!! Templates
+
+
<<revealstate "$:/plugins/telmiger/WMR/templates" "templates">>
+
+
+
!! Typed Elements
+
+
<<revealstate "$:/plugins/telmiger/WMR/typed-elements" "typed-elements">>
+
+
</div>
+38
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/special-chars.tid
···
+
created: 20181124191754197
+
creator: Thomas
+
modified: 20200219150938582
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/special-chars
+
type: text/vnd.tiddlywiki
+
+
<<wt "Dashes come in two sizes---the longer is the em dash (HTML: &mdash;).
+
+
The en dash (HTML: &ndash;) is for ranges (2000--2018) and connections (London--New York)
+
">>
+
+
<<wt "---
+
horizontal rules: line with `---` only or HTML:
+
<hr>
+
">>
+
+
+
<<wt "2 &times; 5&thinsp;m = 10&thinsp;m
+
+
&aelig; – &aring; – &oelig; – &oslash; – &AElig; – &Aring; – &OElig; – &Oslash;
+
">>
+
+
<<wt "* a&#160;non breaking space:&nbsp;entity
+
* a&#8239;narrow no-break space: (no entity available)
+
* a&#8194;en space:&ensp;entity
+
* a&#8195;em space:&emsp;entity
+
* a&#8196;3-per-em space:&emsp13;entity
+
* a&#8197;4-per-em space:&emsp14;entity
+
* a&#8198;6-per-em space: (no entity available)
+
* a&#8199;figure space&numsp;entity
+
* a&#8200;punctuation space:&puncsp;entity
+
* a&#8201;thin space:&thinsp;entity
+
* a&#8202;hair space:&hairsp;entity
+
">>
+
+
[[More Unicode characters and HTML entities|https://www.key-shortcut.com/en/character-tables/unicode-2000-2fff/]]
+28
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/special.tid
···
+
created: 20181124200507179
+
creator: Thomas
+
modified: 20200219150938591
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/special
+
type: text/vnd.tiddlywiki
+
+
<div class="wmr-input">
+
+
```
+
> block
+
>> quotes
+
>>> are easy
+
```
+
</div>
+
+
> block
+
>> quotes
+
>>> are <br>easy
+
+
+
<<wt "# mixed
+
#* lists
+
#; you
+
#: know
+
#> like so
+
">>
+43
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/styles.css.tid
···
+
created: 20181124215313762
+
modified: 20200219150938567
+
tags: $:/tags/Stylesheet
+
title: $:/plugins/telmiger/WMR/styles.css
+
type: text/vnd.tiddlywiki
+
+
.wikitext-examples .wmr-input {
+
margin-top: 2rem;
+
max-width: 28rem;
+
}
+
+
.wikitext-examples footer {
+
background-color: #e9e9e9;
+
padding: 0.25rem;
+
border-bottom: 1px solid #999;
+
}
+
+
.wmr-output .red {
+
color: red;
+
fill: red;
+
}
+
+
+
/* Buttons */
+
+
.wikitext-examples .btnClosed,
+
.wikitext-examples .btnOpen {
+
width: 100%;
+
text-align: left;
+
background: #e9e9e9;
+
border: none;
+
padding: 0.25rem;
+
}
+
+
.wikitext-examples .btnClosed:before {
+
content: "&#9654;";
+
margin-right: 0.5rem;
+
}
+
+
.wikitext-examples .btnOpen:before {
+
content: "&#9660;";
+
margin-right: 0.5rem;
+
}
+40
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/styles.tid
···
+
created: 20181124200539896
+
creator: Thomas
+
modified: 20200219150938574
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/styles
+
type: text/vnd.tiddlywiki
+
wmr-source-link: https://tiddlywiki.com/#How%20to%20apply%20custom%20styles
+
+
<<wt "!.red CSS
+
#.red classes can be
+
;.red assigned
+
:.red like
+
>.red this
+
">>
+
+
+
<<wt "@@.myClass.red
+
assign classes using double @
+
@@
+
">>
+
+
+
<<wt "@@color:darkorange; apply styles directly @@
+
">>
+
+
+
<<wt "@@.red
+
@@border:1px solid blue;
+
combine classes and styles
+
@@
+
">>
+
+
+
<<wt "@@.purple Use style tags. @@ – Is it purple?
+
+
<style>
+
.purple{color:purple;}
+
</style>
+
">>
+41
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/tables.tid
···
+
created: 20181124205512397
+
creator: Thomas
+
modified: 20200219150938560
+
modifier: Thomas
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/tables
+
type: text/vnd.tiddlywiki
+
+
!!! Positioning
+
+
<<wt """| highClass |k
+
|!Left | !Center | !Right|
+
|^NW |^ N |^ NE|
+
|W | ✦ | E|
+
|,SW |, S |, SE|
+
""">>
+
+
!!! Cells
+
+
<<wt """|!merge cells|<|<|
+
| 1 | 2 | 3 |
+
|to the |< left |<|
+
|and|also| vertical <br>~ (up) |
+
|>| right >|~|
+
+
""">>
+
+
!!! Header, Footer, Caption, Style
+
<<wt """|!header 1 |!header 2|
+
| Footer |<|f
+
| cell 1 | cell 2 |
+
|This is a caption |c
+
| red |k
+
""">>
+
+
<style>
+
.highClass td {
+
height: 2.75rem;
+
min-width: 3.75rem;
+
}
+
</style>
+18
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/tabs.tid
···
+
created: 20181130193703180
+
creator: Thomas Elmiger
+
modified: 20200219150938552
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/tabs
+
type: text/vnd.tiddlywiki
+
wmr-source-link: https://tiddlywiki.com/#tabs%20Macro
+
+
!!! Filter tiddlers for tabs
+
+
<$macrocall $name="wt" wikitext="""<<tabs "[tag[Foo]][tag[Bar]]" default:"$:/plugins/telmiger/WMR/foo">>"""/>
+
+
+
+
!!! Vertical tabs
+
+
<$macrocall $name="wt" wikitext="""<<tabs "[tag[Foo]][tag[Bar]]" "$:/plugins/telmiger/WMR/foo" class:"tc-vertical">>"""/>
+33
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/templates.tid
···
+
created: 20181129173332986
+
creator: Thomas
+
modified: 20200219150938545
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/templates
+
type: text/vnd.tiddlywiki
+
wmr-source-link: https://tiddlywiki.com/#Transclusion%20with%20Templates
+
+
[[Transclude|https://tiddlywiki.com/#Transclusion%20in%20WikiText]] tiddler `.../foo` applying [[template|https://tiddlywiki.com/#TemplateTiddlers]] `.../tmpl-code`:
+
+
<<wt "{{$:/plugins/telmiger/WMR/foo||$:/plugins/telmiger/WMR/tmpl-code}}">>
+
+
Use template `Bar` for the [[Current Tiddler|https://tiddlywiki.com/#Current%20Tiddler]] (default):
+
+
<div class="wmr-input">
+
+
```
+
{{||Bar}}
+
```
+
</div>
+
+
---
+
+
A template can show different fields of a tiddler. While the list of tiddlers tagged `Foo` shows the content of the field `title` ...
+
+
<<wt "{{{ [tag[Foo]] }}}
+
">>
+
+
... the same for tag `Bar` displayed through the template $:/core/ui/ViewTemplate/subtitle shows the content of the fields `modifier` and `modified`:
+
+
<<wt "{{{ [tag[Bar]]||$:/core/ui/ViewTemplate/subtitle }}}
+
">>
+9
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/tmpl-code.tid
···
+
caption: Bar
+
created: 20181130195051148
+
creator: Thomas Elmiger
+
modified: 20200219150938537
+
modifier: Thomas Elmiger
+
title: $:/plugins/telmiger/WMR/tmpl-code
+
type: text/vnd.tiddlywiki
+
+
<pre><code>{{!!text}}</code></pre>
+53
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/transclusion.tid
···
+
created: 20181124205928499
+
creator: Thomas
+
modified: 20200219150938697
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/transclusion
+
type: text/vnd.tiddlywiki
+
wmr-source-link: http://tiddlywiki.com/#Transclusion%20in%20WikiText
+
+
!!! Display content from other tiddlers
+
+
Transclude [[text|$:/plugins/telmiger/WMR/foo]] and [[images|$:/core/images/home-button]] from the main content (text field):
+
+
<<wt "{{$:/plugins/telmiger/WMR/foo}}">>
+
+
<<wt "{{$:/core/images/home-button}}">>
+
+
+
!!! Content of tiddler fields
+
+
<div class="wmr-input">
+
+
```
+
{{Foo!!bar}}
+
{{!!bar}}
+
```
+
</div>
+
+
* field `bar` of tiddler `Foo`
+
* field `bar` of the Current Tiddler
+
+
!!! Data tiddler entries
+
+
<div class="wmr-input">
+
+
```
+
{{Foo##index}}
+
{{##index}}
+
```
+
</div>
+
+
* `index` of [[datatiddler|https://tiddlywiki.com/#DataTiddlers]] titled `Foo`
+
* `index` of `CurrentTiddler`
+
+
---
+
+
!!! Transclude widget
+
+
Try the [[transclude widget|https://tiddlywiki.com/#TranscludeWidget]] if you have to set the parsing mode manually.
+
+
<<wt 'Story: <$transclude tiddler="$:/plugins/telmiger/WMR/foo" mode="block"/>'>>
+
+
<<wt 'Story: <$transclude tiddler="$:/plugins/telmiger/WMR/foo" mode="inline"/>'>>
+86
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/typed-elements.tid
···
+
created: 20181124210140010
+
creator: Thomas
+
modified: 20200219150938690
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/typed-elements
+
type: text/vnd.tiddlywiki
+
+
<div class="wmr-input">
+
+
```
+
$$$text/unknown
+
plain text, not //formatted//
+
$$$
+
```
+
</div>
+
+
$$$text/unknown
+
plain text, not //formatted//
+
$$$
+
+
<br>
+
These are [[Typed Blocks|https://tiddlywiki.com/#Typed%20Blocks%20in%20WikiText]]
+
+
<div class="wmr-input">
+
+
```
+
$$$image/svg+xml
+
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="100">
+
<circle cx="100" cy="50" r="40" stroke-width="0" fill="green" />
+
</svg>
+
$$$
+
```
+
</div>
+
+
+
$$$image/svg+xml
+
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="100">
+
<circle cx="100" cy="50" r="40" stroke-width="0" fill="green" />
+
</svg>
+
$$$
+
+
<div class="wmr-input">
+
+
```
+
$$$.svg
+
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="100">
+
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="blue" />
+
</svg>
+
$$$
+
```
+
</div>
+
+
+
$$$.svg
+
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="100">
+
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="blue" />
+
</svg>
+
$$$
+
+
+
<div class="wmr-input">
+
+
```
+
$$$text/vnd.tiddlywiki>text/html
+
This is ''some'' wikitext
+
$$$
+
```
+
</div>
+
+
$$$text/vnd.tiddlywiki>text/html
+
This is ''some'' wikitext
+
$$$
+
+
<div class="wmr-input">
+
+
```
+
$$$text/vnd.tiddlywiki>text/plain
+
This is ''some'' wikitext
+
$$$
+
```
+
</div>
+
+
$$$text/vnd.tiddlywiki>text/plain
+
This is ''some'' wikitext
+
$$$
+71
tiddlywiki/plugins/WMR/_system/plugins/telmiger/WMR/variables.tid
···
+
created: 20181128064053957
+
creator: Thomas
+
modified: 20200219150938682
+
modifier: Thomas Elmiger
+
tags: ShortReference
+
title: $:/plugins/telmiger/WMR/variables
+
type: text/vnd.tiddlywiki
+
+
\define animal1() lion
+
\define animals1()
+
seal <br>
+
penguin
+
\end
+
+
+
!!! Set the value of a variable
+
+
To use a local variable in a single tiddler, insert a definition at the very top of the tiddler:
+
+
`\define animal1() lion`
+
+
To use a variable in a limited part of a tiddler, use the [[set widget|https://tiddlywiki.com/#SetWidget]]:
+
+
<$macrocall $name="wt" wikitext="""<$set name="animal2" value="zebra">
+
<<animal1>> eats <<animal2>>
+
</$set>
+
"""/>
+
+
!!! Multi-line variables
+
+
```
+
\define animals1()
+
seal <br>
+
penguin
+
\end
+
+
<<animals1>>
+
```
+
+
<<animals1>>
+
+
<$macrocall $name="wt" wikitext="""<$set name="animals2" value="
+
* zebra
+
* gnu
+
* antelope
+
">
+
+
<<animals2>>
+
</$set>
+
"""/>
+
+
+
!!! Variables as parameters
+
+
<$tiddler tiddler="$:/plugins/telmiger/WMR/foo">
+
+
<$macrocall $name="wt" wikitext="""<$set name="mywidth" value={{!!wmr-example}}>
+
[img width=<<mywidth>> [CircleJack.svg]]
+
</$set>
+
"""/>
+
+
</$tiddler>
+
+
!!!! Change the value
+
+
<$macrocall $name="wt" wikitext="""<$edit-text tiddler="$:/plugins/telmiger/WMR/foo" field="wmr-example"/>
+
"""/>
+
+
Hint: We also use the [[tiddler widget|https://tiddlywiki.com/#TiddlerWidget]] above to set $:/plugins/telmiger/WMR/foo as the current tiddler in the context of the image. This makes sure that the [[text reference|https://tiddlywiki.com/#TextReference]] `!!wmr-example` points to the right field.
+
+
The edit text widget should ''not'' be used to edit a field of the tiddler that contains it to ommit unwanted side effects.
+11
tiddlywiki/plugins/WMR/plugin.info
···
+
{
+
"title": "$:/plugins/telmiger/WMR",
+
"author": "Thomas Elmiger",
+
"core-version": ">=5.1.18",
+
"description": "Wikitext Markup Reference – WMR",
+
"list": "reference about",
+
"name": "Wikitext Markup Reference – WMR",
+
"plugin-type": "plugin",
+
"source": "https://tid.li/tw5/plugins.html",
+
"version": "0.3.4"
+
}
+214
tiddlywiki/plugins/aliases/$__core_modules_widgets_link.js
···
+
/*\
+
title: $:/core/modules/widgets/link.js
+
type: application/javascript
+
module-type: widget
+
+
Link widget
+
+
\*/
+
(function(){
+
+
/*jslint node: true, browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
var Widget = require("$:/core/modules/widgets/widget.js").widget;
+
+
var LinkWidget = function(parseTreeNode,options) {
+
this.initialise(parseTreeNode,options);
+
};
+
+
/*
+
Inherit from the base widget class
+
*/
+
LinkWidget.prototype = new Widget();
+
+
/*
+
Render this widget into the DOM
+
*/
+
LinkWidget.prototype.render = function(parent,nextSibling) {
+
// Save the parent dom node
+
this.parentDomNode = parent;
+
// Compute our attributes
+
this.computeAttributes();
+
// Execute our logic
+
this.execute();
+
// Get the value of the tv-wikilinks configuration macro
+
var wikiLinksMacro = this.getVariable("tv-wikilinks"),
+
useWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== "no") : true,
+
missingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);
+
// Render the link if required
+
if(useWikiLinks && missingLinksEnabled) {
+
this.renderLink(parent,nextSibling);
+
} else {
+
// Just insert the link text
+
var domNode = this.document.createElement("span");
+
parent.insertBefore(domNode,nextSibling);
+
this.renderChildren(domNode,null);
+
this.domNodes.push(domNode);
+
}
+
};
+
+
/*
+
Render this widget into the DOM
+
*/
+
LinkWidget.prototype.renderLink = function(parent,nextSibling) {
+
var self = this;
+
// Sanitise the specified tag
+
var tag = this.linkTag;
+
if($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {
+
tag = "a";
+
}
+
// Create our element
+
var namespace = this.getVariable("namespace",{defaultValue: "http://www.w3.org/1999/xhtml"}),
+
domNode = this.document.createElementNS(namespace,tag);
+
// Assign classes
+
var classes = [];
+
if(this.overrideClasses === undefined) {
+
classes.push("tc-tiddlylink");
+
if(this.isShadow) {
+
classes.push("tc-tiddlylink-shadow");
+
}
+
if(this.isMissing && !this.isShadow) {
+
classes.push("tc-tiddlylink-missing");
+
} else {
+
if(!this.isMissing) {
+
classes.push("tc-tiddlylink-resolves");
+
}
+
}
+
if(this.linkClasses) {
+
classes.push(this.linkClasses);
+
}
+
} else if(this.overrideClasses !== "") {
+
classes.push(this.overrideClasses)
+
}
+
if(classes.length > 0) {
+
domNode.setAttribute("class",classes.join(" "));
+
}
+
// Set an href
+
var wikilinkTransformFilter = this.getVariable("tv-filter-export-link"),
+
wikiLinkText;
+
if(wikilinkTransformFilter) {
+
// Use the filter to construct the href
+
wikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {
+
iterator(self.wiki.getTiddler(self.to),self.to)
+
})[0];
+
} else {
+
// Expand the tv-wikilink-template variable to construct the href
+
var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"),
+
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$";
+
wikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,"$uri_encoded$",encodeURIComponent(this.to));
+
wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to)));
+
}
+
// Override with the value of tv-get-export-link if defined
+
wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText});
+
if(tag === "a") {
+
var namespaceHref = (namespace === "http://www.w3.org/2000/svg") ? "http://www.w3.org/1999/xlink" : undefined;
+
domNode.setAttributeNS(namespaceHref,"href",wikiLinkText);
+
}
+
// Set the tabindex
+
if(this.tabIndex) {
+
domNode.setAttribute("tabindex",this.tabIndex);
+
}
+
// Set the tooltip
+
// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to "<$transclude field='tooltip'><$transclude field='title'/></$transclude>"
+
var tooltipWikiText = this.tooltip || this.getVariable("tv-wikilink-tooltip");
+
if(tooltipWikiText) {
+
var tooltipText = this.wiki.renderText("text/plain","text/vnd.tiddlywiki",tooltipWikiText,{
+
parseAsInline: true,
+
variables: {
+
currentTiddler: this.to
+
},
+
parentWidget: this
+
});
+
domNode.setAttribute("title",tooltipText);
+
}
+
if(this["aria-label"]) {
+
domNode.setAttribute("aria-label",this["aria-label"]);
+
}
+
// Add a click event handler
+
$tw.utils.addEventListeners(domNode,[
+
{name: "click", handlerObject: this, handlerMethod: "handleClickEvent"},
+
]);
+
// Make the link draggable if required
+
if(this.draggable === "yes") {
+
$tw.utils.makeDraggable({
+
domNode: domNode,
+
dragTiddlerFn: function() {return self.to;},
+
widget: this
+
});
+
}
+
// Insert the link into the DOM and render any children
+
parent.insertBefore(domNode,nextSibling);
+
this.renderChildren(domNode,null);
+
this.domNodes.push(domNode);
+
};
+
+
LinkWidget.prototype.handleClickEvent = function(event) {
+
// Send the click on its way as a navigate event
+
var bounds = this.domNodes[0].getBoundingClientRect();
+
this.dispatchEvent({
+
type: "tm-navigate",
+
navigateTo: this.to,
+
navigateFromTitle: this.getVariable("storyTiddler"),
+
navigateFromNode: this,
+
navigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height
+
},
+
navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),
+
metaKey: event.metaKey,
+
ctrlKey: event.ctrlKey,
+
altKey: event.altKey,
+
shiftKey: event.shiftKey,
+
followAliases: this.followAliases
+
});
+
if(this.domNodes[0].hasAttribute("href")) {
+
event.preventDefault();
+
}
+
event.stopPropagation();
+
return false;
+
};
+
+
/*
+
Compute the internal state of the widget
+
*/
+
LinkWidget.prototype.execute = function() {
+
// Pick up our attributes
+
this.to = this.getAttribute("to",this.getVariable("currentTiddler"));
+
this.tooltip = this.getAttribute("tooltip");
+
this["aria-label"] = this.getAttribute("aria-label");
+
this.linkClasses = this.getAttribute("class");
+
this.overrideClasses = this.getAttribute("overrideClass");
+
this.tabIndex = this.getAttribute("tabindex");
+
this.draggable = this.getAttribute("draggable","yes");
+
this.linkTag = this.getAttribute("tag","a");
+
this.followAliases = this.getAttribute("followAliases", "true");
+
// Determine the link characteristics
+
this.isMissing = !this.wiki.tiddlerExists(this.to) && !(this.wiki.filterTiddlers("[title["+this.to+"]listed[aliases]]").length === 1);
+
this.isShadow = this.wiki.isShadowTiddler(this.to);
+
this.hideMissingLinks = (this.getVariable("tv-show-missing-links") || "yes") === "no";
+
// Make the child widgets
+
var templateTree;
+
if(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {
+
templateTree = this.parseTreeNode.children;
+
} else {
+
// Default template is a link to the title
+
templateTree = [{type: "text", text: this.to}];
+
}
+
this.makeChildWidgets(templateTree);
+
};
+
+
/*
+
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
+
*/
+
LinkWidget.prototype.refresh = function(changedTiddlers) {
+
var changedAttributes = this.computeAttributes();
+
if(changedAttributes.to || changedTiddlers[this.to] || changedAttributes["aria-label"] || changedAttributes.tooltip) {
+
this.refreshSelf();
+
return true;
+
}
+
return this.refreshChildren(changedTiddlers);
+
};
+
+
exports.link = LinkWidget;
+
+
})();
+626
tiddlywiki/plugins/aliases/$__core_modules_widgets_navigator.js
···
+
/*\
+
title: $:/core/modules/widgets/navigator.js
+
type: application/javascript
+
module-type: widget
+
+
Navigator widget
+
+
\*/
+
(function(){
+
+
/*jslint node: true, browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
var IMPORT_TITLE = "$:/Import";
+
+
var Widget = require("$:/core/modules/widgets/widget.js").widget;
+
+
var NavigatorWidget = function(parseTreeNode,options) {
+
this.initialise(parseTreeNode,options);
+
this.addEventListeners([
+
{type: "tm-navigate", handler: "handleNavigateEvent"},
+
{type: "tm-edit-tiddler", handler: "handleEditTiddlerEvent"},
+
{type: "tm-delete-tiddler", handler: "handleDeleteTiddlerEvent"},
+
{type: "tm-save-tiddler", handler: "handleSaveTiddlerEvent"},
+
{type: "tm-cancel-tiddler", handler: "handleCancelTiddlerEvent"},
+
{type: "tm-close-tiddler", handler: "handleCloseTiddlerEvent"},
+
{type: "tm-close-all-tiddlers", handler: "handleCloseAllTiddlersEvent"},
+
{type: "tm-close-other-tiddlers", handler: "handleCloseOtherTiddlersEvent"},
+
{type: "tm-new-tiddler", handler: "handleNewTiddlerEvent"},
+
{type: "tm-import-tiddlers", handler: "handleImportTiddlersEvent"},
+
{type: "tm-perform-import", handler: "handlePerformImportEvent"},
+
{type: "tm-fold-tiddler", handler: "handleFoldTiddlerEvent"},
+
{type: "tm-fold-other-tiddlers", handler: "handleFoldOtherTiddlersEvent"},
+
{type: "tm-fold-all-tiddlers", handler: "handleFoldAllTiddlersEvent"},
+
{type: "tm-unfold-all-tiddlers", handler: "handleUnfoldAllTiddlersEvent"},
+
{type: "tm-rename-tiddler", handler: "handleRenameTiddlerEvent"}
+
]);
+
};
+
+
/*
+
Inherit from the base widget class
+
*/
+
NavigatorWidget.prototype = new Widget();
+
+
/*
+
Render this widget into the DOM
+
*/
+
NavigatorWidget.prototype.render = function(parent,nextSibling) {
+
this.parentDomNode = parent;
+
this.computeAttributes();
+
this.execute();
+
this.renderChildren(parent,nextSibling);
+
};
+
+
/*
+
Compute the internal state of the widget
+
*/
+
NavigatorWidget.prototype.execute = function() {
+
// Get our parameters
+
this.storyTitle = this.getAttribute("story");
+
this.historyTitle = this.getAttribute("history");
+
this.setVariable("tv-story-list",this.storyTitle);
+
this.setVariable("tv-history-list",this.historyTitle);
+
// Construct the child widgets
+
this.makeChildWidgets();
+
};
+
+
/*
+
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
+
*/
+
NavigatorWidget.prototype.refresh = function(changedTiddlers) {
+
var changedAttributes = this.computeAttributes();
+
if(changedAttributes.story || changedAttributes.history) {
+
this.refreshSelf();
+
return true;
+
} else {
+
return this.refreshChildren(changedTiddlers);
+
}
+
};
+
+
NavigatorWidget.prototype.getStoryList = function() {
+
return this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;
+
};
+
+
NavigatorWidget.prototype.saveStoryList = function(storyList) {
+
if(this.storyTitle) {
+
var storyTiddler = this.wiki.getTiddler(this.storyTitle);
+
this.wiki.addTiddler(new $tw.Tiddler(
+
{title: this.storyTitle},
+
storyTiddler,
+
{list: storyList}
+
));
+
}
+
};
+
+
NavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {
+
if(storyList) {
+
var p = storyList.indexOf(title);
+
while(p !== -1) {
+
storyList.splice(p,1);
+
p = storyList.indexOf(title);
+
}
+
}
+
};
+
+
NavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {
+
if(storyList) {
+
var pos = storyList.indexOf(oldTitle);
+
if(pos !== -1) {
+
storyList[pos] = newTitle;
+
do {
+
pos = storyList.indexOf(oldTitle,pos + 1);
+
if(pos !== -1) {
+
storyList.splice(pos,1);
+
}
+
} while(pos !== -1);
+
} else {
+
storyList.splice(0,0,newTitle);
+
}
+
}
+
};
+
+
NavigatorWidget.prototype.addToStory = function(title,fromTitle) {
+
if(this.storyTitle) {
+
this.wiki.addToStory(title,fromTitle,this.storyTitle,{
+
openLinkFromInsideRiver: this.getAttribute("openLinkFromInsideRiver","top"),
+
openLinkFromOutsideRiver: this.getAttribute("openLinkFromOutsideRiver","top")
+
});
+
}
+
};
+
+
/*
+
Add a new record to the top of the history stack
+
title: a title string or an array of title strings
+
fromPageRect: page coordinates of the origin of the navigation
+
*/
+
NavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {
+
this.wiki.addToHistory(title,fromPageRect,this.historyTitle);
+
};
+
+
/*
+
Handle a tm-navigate event
+
*/
+
NavigatorWidget.prototype.handleNavigateEvent = function(event) {
+
event = $tw.hooks.invokeHook("th-navigating",event);
+
if(event.navigateTo) {
+
if (!this.wiki.tiddlerExists(event.navigateTo) && event.followAliases == "true") {
+
var aliases = this.wiki.filterTiddlers("[title["+event.navigateTo+"]listed[aliases]]")
+
if (aliases.length === 1) {
+
event.navigateTo = aliases[0];
+
}
+
}
+
this.addToStory(event.navigateTo,event.navigateFromTitle);
+
if(!event.navigateSuppressNavigation) {
+
this.addToHistory(event.navigateTo,event.navigateFromClientRect);
+
}
+
}
+
return false;
+
};
+
+
// Close a specified tiddler
+
NavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {
+
var title = event.param || event.tiddlerTitle,
+
storyList = this.getStoryList();
+
// Look for tiddlers with this title to close
+
this.removeTitleFromStory(storyList,title);
+
this.saveStoryList(storyList);
+
return false;
+
};
+
+
// Close all tiddlers
+
NavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {
+
this.saveStoryList([]);
+
return false;
+
};
+
+
// Close other tiddlers
+
NavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {
+
var title = event.param || event.tiddlerTitle;
+
this.saveStoryList([title]);
+
return false;
+
};
+
+
// Place a tiddler in edit mode
+
NavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {
+
var editTiddler = $tw.hooks.invokeHook("th-editing-tiddler",event);
+
if(!editTiddler) {
+
return false;
+
}
+
var self = this;
+
function isUnmodifiedShadow(title) {
+
return self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);
+
}
+
function confirmEditShadow(title) {
+
return confirm($tw.language.getString(
+
"ConfirmEditShadowTiddler",
+
{variables:
+
{title: title}
+
}
+
));
+
}
+
var title = event.param || event.tiddlerTitle;
+
if(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {
+
return false;
+
}
+
// Replace the specified tiddler with a draft in edit mode
+
var draftTiddler = this.makeDraftTiddler(title);
+
// Update the story and history if required
+
if(!event.paramObject || event.paramObject.suppressNavigation !== "yes") {
+
var draftTitle = draftTiddler.fields.title,
+
storyList = this.getStoryList();
+
this.removeTitleFromStory(storyList,draftTitle);
+
this.replaceFirstTitleInStory(storyList,title,draftTitle);
+
this.addToHistory(draftTitle,event.navigateFromClientRect);
+
this.saveStoryList(storyList);
+
return false;
+
}
+
};
+
+
// Delete a tiddler
+
NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {
+
// Get the tiddler we're deleting
+
var title = event.param || event.tiddlerTitle,
+
tiddler = this.wiki.getTiddler(title),
+
storyList = this.getStoryList(),
+
originalTitle = tiddler ? tiddler.fields["draft.of"] : "",
+
originalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,
+
confirmationTitle;
+
if(!tiddler) {
+
return false;
+
}
+
// Check if the tiddler we're deleting is in draft mode
+
if(originalTitle) {
+
// If so, we'll prompt for confirmation referencing the original tiddler
+
confirmationTitle = originalTitle;
+
} else {
+
// If not a draft, then prompt for confirmation referencing the specified tiddler
+
confirmationTitle = title;
+
}
+
// Seek confirmation
+
if((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || "") !== "") && !confirm($tw.language.getString(
+
"ConfirmDeleteTiddler",
+
{variables:
+
{title: confirmationTitle}
+
}
+
))) {
+
return false;
+
}
+
// Delete the original tiddler
+
if(originalTitle) {
+
if(originalTiddler) {
+
$tw.hooks.invokeHook("th-deleting-tiddler",originalTiddler);
+
}
+
this.wiki.deleteTiddler(originalTitle);
+
this.removeTitleFromStory(storyList,originalTitle);
+
}
+
// Invoke the hook function and delete this tiddler
+
$tw.hooks.invokeHook("th-deleting-tiddler",tiddler);
+
this.wiki.deleteTiddler(title);
+
// Remove the closed tiddler from the story
+
this.removeTitleFromStory(storyList,title);
+
this.saveStoryList(storyList);
+
// Trigger an autosave
+
$tw.rootWidget.dispatchEvent({type: "tm-auto-save-wiki"});
+
return false;
+
};
+
+
/*
+
Create/reuse the draft tiddler for a given title
+
*/
+
NavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {
+
// See if there is already a draft tiddler for this tiddler
+
var draftTitle = this.wiki.findDraft(targetTitle);
+
if(draftTitle) {
+
return this.wiki.getTiddler(draftTitle);
+
}
+
// Get the current value of the tiddler we're editing
+
var tiddler = this.wiki.getTiddler(targetTitle);
+
// Save the initial value of the draft tiddler
+
draftTitle = this.generateDraftTitle(targetTitle);
+
var draftTiddler = new $tw.Tiddler(
+
tiddler,
+
{
+
title: draftTitle,
+
"draft.title": targetTitle,
+
"draft.of": targetTitle
+
},
+
this.wiki.getModificationFields()
+
);
+
this.wiki.addTiddler(draftTiddler);
+
return draftTiddler;
+
};
+
+
/*
+
Generate a title for the draft of a given tiddler
+
*/
+
NavigatorWidget.prototype.generateDraftTitle = function(title) {
+
return this.wiki.generateDraftTitle(title);
+
};
+
+
// Take a tiddler out of edit mode, saving the changes
+
NavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {
+
var title = event.param || event.tiddlerTitle,
+
tiddler = this.wiki.getTiddler(title),
+
storyList = this.getStoryList();
+
// Replace the original tiddler with the draft
+
if(tiddler) {
+
var draftTitle = (tiddler.fields["draft.title"] || "").trim(),
+
draftOf = (tiddler.fields["draft.of"] || "").trim();
+
if(draftTitle) {
+
var isRename = draftOf !== draftTitle,
+
isConfirmed = true;
+
if(isRename && this.wiki.tiddlerExists(draftTitle)) {
+
isConfirmed = confirm($tw.language.getString(
+
"ConfirmOverwriteTiddler",
+
{variables:
+
{title: draftTitle}
+
}
+
));
+
}
+
if(isConfirmed) {
+
// Create the new tiddler and pass it through the th-saving-tiddler hook
+
var newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{
+
title: draftTitle,
+
"draft.title": undefined,
+
"draft.of": undefined
+
},this.wiki.getModificationFields());
+
newTiddler = $tw.hooks.invokeHook("th-saving-tiddler",newTiddler);
+
this.wiki.addTiddler(newTiddler);
+
// If enabled, relink references to renamed tiddler
+
var shouldRelink = this.getAttribute("relinkOnRename","no").toLowerCase().trim() === "yes";
+
if(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {
+
console.log("Relinking '" + draftOf + "' to '" + draftTitle + "'");
+
this.wiki.relinkTiddler(draftOf,draftTitle);
+
}
+
// Remove the draft tiddler
+
this.wiki.deleteTiddler(title);
+
// Remove the original tiddler if we're renaming it
+
if(isRename) {
+
this.wiki.deleteTiddler(draftOf);
+
}
+
// #2381 always remove new title & old
+
this.removeTitleFromStory(storyList,draftTitle);
+
this.removeTitleFromStory(storyList,draftOf);
+
if(!event.paramObject || event.paramObject.suppressNavigation !== "yes") {
+
// Replace the draft in the story with the original
+
this.replaceFirstTitleInStory(storyList,title,draftTitle);
+
this.addToHistory(draftTitle,event.navigateFromClientRect);
+
if(draftTitle !== this.storyTitle) {
+
this.saveStoryList(storyList);
+
}
+
}
+
// Trigger an autosave
+
$tw.rootWidget.dispatchEvent({type: "tm-auto-save-wiki"});
+
}
+
}
+
}
+
return false;
+
};
+
+
// Take a tiddler out of edit mode without saving the changes
+
NavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {
+
event = $tw.hooks.invokeHook("th-cancelling-tiddler", event);
+
// Flip the specified tiddler from draft back to the original
+
var draftTitle = event.param || event.tiddlerTitle,
+
draftTiddler = this.wiki.getTiddler(draftTitle),
+
originalTitle = draftTiddler && draftTiddler.fields["draft.of"];
+
if(draftTiddler && originalTitle) {
+
// Ask for confirmation if the tiddler text has changed
+
var isConfirmed = true,
+
originalTiddler = this.wiki.getTiddler(originalTitle),
+
storyList = this.getStoryList();
+
if(this.wiki.isDraftModified(draftTitle)) {
+
isConfirmed = confirm($tw.language.getString(
+
"ConfirmCancelTiddler",
+
{variables:
+
{title: draftTitle}
+
}
+
));
+
}
+
// Remove the draft tiddler
+
if(isConfirmed) {
+
this.wiki.deleteTiddler(draftTitle);
+
if(!event.paramObject || event.paramObject.suppressNavigation !== "yes") {
+
if(originalTiddler) {
+
this.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);
+
this.addToHistory(originalTitle,event.navigateFromClientRect);
+
} else {
+
this.removeTitleFromStory(storyList,draftTitle);
+
}
+
this.saveStoryList(storyList);
+
}
+
}
+
}
+
return false;
+
};
+
+
// Create a new draft tiddler
+
// event.param can either be the title of a template tiddler, or a hashmap of fields.
+
//
+
// The title of the newly created tiddler follows these rules:
+
// * If a hashmap was used and a title field was specified, use that title
+
// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix
+
// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix
+
//
+
// If a draft of the target tiddler already exists then it is reused
+
NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
+
event = $tw.hooks.invokeHook("th-new-tiddler", event);
+
// Get the story details
+
var storyList = this.getStoryList(),
+
templateTiddler, additionalFields, title, draftTitle, existingTiddler;
+
// Get the template tiddler (if any)
+
if(typeof event.param === "string") {
+
// Get the template tiddler
+
templateTiddler = this.wiki.getTiddler(event.param);
+
// Generate a new title
+
title = this.wiki.generateNewTitle(event.param || $tw.language.getString("DefaultNewTiddlerTitle"));
+
}
+
// Get the specified additional fields
+
if(typeof event.paramObject === "object") {
+
additionalFields = event.paramObject;
+
}
+
if(typeof event.param === "object") { // Backwards compatibility with 5.1.3
+
additionalFields = event.param;
+
}
+
if(additionalFields && additionalFields.title) {
+
title = additionalFields.title;
+
}
+
// Make a copy of the additional fields excluding any blank ones
+
var filteredAdditionalFields = $tw.utils.extend({},additionalFields);
+
Object.keys(filteredAdditionalFields).forEach(function(fieldName) {
+
if(filteredAdditionalFields[fieldName] === "") {
+
delete filteredAdditionalFields[fieldName];
+
}
+
});
+
// Generate a title if we don't have one
+
title = title || this.wiki.generateNewTitle($tw.language.getString("DefaultNewTiddlerTitle"));
+
// Find any existing draft for this tiddler
+
draftTitle = this.wiki.findDraft(title);
+
// Pull in any existing tiddler
+
if(draftTitle) {
+
existingTiddler = this.wiki.getTiddler(draftTitle);
+
} else {
+
draftTitle = this.generateDraftTitle(title);
+
existingTiddler = this.wiki.getTiddler(title);
+
}
+
// Merge the tags
+
var mergedTags = [];
+
if(existingTiddler && existingTiddler.fields.tags) {
+
$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);
+
}
+
if(additionalFields && additionalFields.tags) {
+
// Merge tags
+
mergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));
+
}
+
if(templateTiddler && templateTiddler.fields.tags) {
+
// Merge tags
+
mergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);
+
}
+
// Save the draft tiddler
+
var draftTiddler = new $tw.Tiddler({
+
text: "",
+
"draft.title": title
+
},
+
templateTiddler,
+
additionalFields,
+
this.wiki.getCreationFields(),
+
existingTiddler,
+
filteredAdditionalFields,
+
{
+
title: draftTitle,
+
"draft.of": title,
+
tags: mergedTags
+
},this.wiki.getModificationFields());
+
this.wiki.addTiddler(draftTiddler);
+
// Update the story to insert the new draft at the top and remove any existing tiddler
+
if(storyList && storyList.indexOf(draftTitle) === -1) {
+
var slot = storyList.indexOf(event.navigateFromTitle);
+
if(slot === -1) {
+
slot = this.getAttribute("openLinkFromOutsideRiver","top") === "bottom" ? storyList.length - 1 : slot;
+
}
+
storyList.splice(slot + 1,0,draftTitle);
+
}
+
if(storyList && storyList.indexOf(title) !== -1) {
+
storyList.splice(storyList.indexOf(title),1);
+
}
+
this.saveStoryList(storyList);
+
// Add a new record to the top of the history stack
+
this.addToHistory(draftTitle);
+
return false;
+
};
+
+
// Import JSON tiddlers into a pending import tiddler
+
NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
+
// Get the tiddlers
+
var tiddlers = [];
+
try {
+
tiddlers = JSON.parse(event.param);
+
} catch(e) {
+
}
+
// Get the current $:/Import tiddler
+
var importTiddler = this.wiki.getTiddler(IMPORT_TITLE),
+
importData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),
+
newFields = new Object({
+
title: IMPORT_TITLE,
+
type: "application/json",
+
"plugin-type": "import",
+
"status": "pending"
+
}),
+
incomingTiddlers = [];
+
// Process each tiddler
+
importData.tiddlers = importData.tiddlers || {};
+
$tw.utils.each(tiddlers,function(tiddlerFields) {
+
tiddlerFields.title = $tw.utils.trim(tiddlerFields.title);
+
var title = tiddlerFields.title;
+
if(title) {
+
incomingTiddlers.push(title);
+
importData.tiddlers[title] = tiddlerFields;
+
}
+
});
+
// Give the active upgrader modules a chance to process the incoming tiddlers
+
var messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);
+
$tw.utils.each(messages,function(message,title) {
+
newFields["message-" + title] = message;
+
});
+
// Deselect any suppressed tiddlers
+
$tw.utils.each(importData.tiddlers,function(tiddler,title) {
+
if($tw.utils.count(tiddler) === 0) {
+
newFields["selection-" + title] = "unchecked";
+
}
+
});
+
// Save the $:/Import tiddler
+
newFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);
+
this.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));
+
// Update the story and history details
+
if(this.getVariable("tv-auto-open-on-import") !== "no") {
+
var storyList = this.getStoryList(),
+
history = [];
+
// Add it to the story
+
if(storyList && storyList.indexOf(IMPORT_TITLE) === -1) {
+
storyList.unshift(IMPORT_TITLE);
+
}
+
// And to history
+
history.push(IMPORT_TITLE);
+
// Save the updated story and history
+
this.saveStoryList(storyList);
+
this.addToHistory(history);
+
}
+
return false;
+
};
+
+
//
+
NavigatorWidget.prototype.handlePerformImportEvent = function(event) {
+
var self = this,
+
importTiddler = this.wiki.getTiddler(event.param),
+
importData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),
+
importReport = [];
+
// Add the tiddlers to the store
+
importReport.push($tw.language.getString("Import/Imported/Hint") + "\n");
+
$tw.utils.each(importData.tiddlers,function(tiddlerFields) {
+
var title = tiddlerFields.title;
+
if(title && importTiddler && importTiddler.fields["selection-" + title] !== "unchecked") {
+
var tiddler = new $tw.Tiddler(tiddlerFields);
+
tiddler = $tw.hooks.invokeHook("th-importing-tiddler",tiddler);
+
self.wiki.addTiddler(tiddler);
+
importReport.push("# [[" + tiddlerFields.title + "]]");
+
}
+
});
+
// Replace the $:/Import tiddler with an import report
+
this.wiki.addTiddler(new $tw.Tiddler({
+
title: event.param,
+
text: importReport.join("\n"),
+
"status": "complete"
+
}));
+
// Navigate to the $:/Import tiddler
+
this.addToHistory([event.param]);
+
// Trigger an autosave
+
$tw.rootWidget.dispatchEvent({type: "tm-auto-save-wiki"});
+
};
+
+
NavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {
+
var paramObject = event.paramObject || {};
+
if(paramObject.foldedState) {
+
var foldedState = this.wiki.getTiddlerText(paramObject.foldedState,"show") === "show" ? "hide" : "show";
+
this.wiki.setText(paramObject.foldedState,"text",null,foldedState);
+
}
+
};
+
+
NavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {
+
var self = this,
+
paramObject = event.paramObject || {},
+
prefix = paramObject.foldedStatePrefix;
+
$tw.utils.each(this.getStoryList(),function(title) {
+
self.wiki.setText(prefix + title,"text",null,event.param === title ? "show" : "hide");
+
});
+
};
+
+
NavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {
+
var self = this,
+
paramObject = event.paramObject || {},
+
prefix = paramObject.foldedStatePrefix || "$:/state/folded/";
+
$tw.utils.each(this.getStoryList(),function(title) {
+
self.wiki.setText(prefix + title,"text",null,"hide");
+
});
+
};
+
+
NavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {
+
var self = this,
+
paramObject = event.paramObject || {},
+
prefix = paramObject.foldedStatePrefix;
+
$tw.utils.each(this.getStoryList(),function(title) {
+
self.wiki.setText(prefix + title,"text",null,"show");
+
});
+
};
+
+
NavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {
+
var paramObject = event.paramObject || {},
+
from = paramObject.from || event.tiddlerTitle,
+
to = paramObject.to;
+
this.wiki.renameTiddler(from,to);
+
};
+
+
exports.navigator = NavigatorWidget;
+
+
})();
+25
tiddlywiki/plugins/aliases/$__core_ui_ViewTemplate_body.tid
···
+
created: 20160218185029873
+
modified: 20160218192615033
+
tags: $:/tags/ViewTemplate
+
title: $:/core/ui/ViewTemplate/body
+
+
<$reveal tag="div" class="tc-tiddler-body" type="nomatch" state=<<folded-state>> text="hide" retain="yes" animate="yes">
+
+
<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]">
+
+
<$transclude>
+
+
<$transclude tiddler="$:/language/MissingTiddler/Hint"/>
+
+
<$list filter="[title{!!title}listed[aliases]first[]]" variable="">
+
You may have meant one of the following pages
+
<$list filter="[title{!!title}listed[aliases]]">
+
<li><$link>{{!!title}}</$link></li>
+
</$list>
+
+
</$list>
+
</$transclude>
+
+
</$list>
+
+
</$reveal>
+10
tiddlywiki/plugins/aliases/plugin.info
···
+
{
+
"title": "$:/plugins/mklauber/aliases",
+
"description": "Aliases - Alias Manager",
+
"author": "Matthew Lauber",
+
"version": "5.1.22",
+
"core-version": ">=5.1.18",
+
"plugin-type": "plugin",
+
"list": "",
+
"source": "https://github.com/mklauber/tiddly-aliases"
+
}
+25
tiddlywiki/plugins/edit-comptext/config.tid
···
+
type: application/json
+
title: $:/plugins/snowgoon88/edit-comptext/config
+
+
{
+
"configuration": {
+
"caseSensitive" : false,
+
"maxMatch" : 8,
+
"minPatLength" : 2,
+
"triggerKeyCombination" : "^ "
+
},
+
"template": [{
+
"pattern": "[[",
+
"filter": "[all[tiddlers]!is[system]]",
+
"start": "[[",
+
"end": "]]"
+
},
+
{
+
"pattern": "||",
+
"filter": "[all[tiddlers]!is[system]]",
+
"start": "[[|",
+
"end": "]]",
+
"startOffset" : 2
+
}
+
]
+
}
+30
tiddlywiki/plugins/edit-comptext/edit-comptext.js
···
+
/*\
+
title: $:/plugins/snowgoon88/edit-comptext/edit-comptext.js
+
type: application/javascript
+
module-type: widget
+
+
Taken from original Edit-text widget
+
Version 5.1.13 of TW5
+
Add link-to-tiddler completion in framed.js and simple.js
+
+
TODO : CHECK usefull, and particularly save_changes after every input ??
+
TODO : where should popupNode be created in the DOM ?
+
TODO : check that options are valid (numeric ?)
+
var isNumeric = function(n) {
+
return !isNaN(parseFloat(n)) && isFinite(n);
+
};
+
+
\*/
+
(function(){
+
+
/*jslint node: true, browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
var editTextWidgetFactory = require("$:/core/modules/editor/factory.js").editTextWidgetFactory,
+
FramedCompEngine = require("$:/plugins/snowgoon88/edit-comptext/framed.js").FramedCompEngine,
+
SimpleCompEngine = require("$:/plugins/snowgoon88/edit-comptext/simple.js").SimpleCompEngine;
+
+
exports["edit-comptext"] = editTextWidgetFactory(FramedCompEngine,SimpleCompEngine);
+
+
})();
+60
tiddlywiki/plugins/edit-comptext/examples.tid
···
+
title: $:/plugins/snowgoon88/edit-comptext/examples
+
+
The configuration file [[$:/plugins/snowgoon88/edit-comptext/config]] allow you to use the completion plugin for various usages. Here are some examples...
+
+
!! Link Completion
+
The 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.
+
+
+
```
+
{
+
"pattern": "[[",
+
"title": "[all[tiddlers]!is[system]]",
+
"start": "[[",
+
"end": "]]"
+
}
+
```
+
+
!! Link Completion and reposition to add Alias
+
Another basic 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 `]]`. The cursor is positionned just before the `|`, ready for typing an Alias.
+
+
```
+
{
+
"pattern": "||",
+
"filter": "[all[tiddlers]!is[system]]",
+
"start": "[[|",
+
"end": "]]",
+
"startOffset" : 2
+
}
+
+
```
+
+
!! Special macro completion
+
I have a 'pnjin' macro that is invoked by `<<pnjin "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 `<p` 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 `<<pnjin \"` and `\">>`. So...
+
+
```
+
{
+
"pattern": "<p",
+
"title": "[tag[PNJ]!is[system]]",
+
"start": "<<pnjin \"",
+
"end": "\">>"
+
}
+
```
+
+
!! Insert some templates or stamp or snippets into text.
+
I 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 `<<`, then I only want to chose among the last part of the titles of tiddlers tagged `$:stamp` so I use a mask (`$:/config/stamp/`) to only display the last part of the tiddlers title. When selectected, the `body` of the tiddler is inserted, with no surrounding strings. As a results, the Completion Template is (notice the `body` field):
+
+
```
+
{
+
"pattern": "<<",
+
"body": "[tag[$:stamp]]",
+
"mask" : "$:/config/stamp/",
+
"start": "",
+
"end": ""
+
}
+
```
+
+
!! And you ?
+
If you have funny usages of completion, let me know. If you'd like to do something that is not yet possible, let me know...
+
+
mail : snowgoon88(AT)gmail(DOT)com
+759
tiddlywiki/plugins/edit-comptext/files/completion.js
···
+
/*\
+
title: $:/plugins/snowgoon88/edit-comptext/completion.js
+
type: application/javascript
+
module-type: library
+
+
Try to make self-contained completion module.
+
+
To use this 'module', you need a `widget` with a kind of `editarea` node.
+
I do not know the exacte prerequisites of this editarea node for the module to
+
work, but mostly one should be able to attach the following `eventHandler` to
+
it:
+
- input
+
- keydown
+
- keypress
+
- keyup
+
The `widget` is needed because I use:
+
- widget.document
+
- widget.wiki.filterTiddlers(...)
+
+
From the Widget, once you have a proper editarea, you just have to call
+
- var completion = new Completion( theWidget, theEditAreaNode, configObject);
+
where `configObject` is expected to have the following fields. if a field is missing, a default value will be given.
+
One can have many `elements' in the template array.
+
+
{
+
"configuration": {
+
"caseSensitive" : false,
+
"maxMatch" : 8,
+
"minPatLength" : 2,
+
"triggerKeyCombination" : "^ "
+
},
+
"template": [{
+
"pattern": "[[",
+
"filter": "[all[tiddlers]!is[system]]",
+
"start": "[[",
+
"end": "]]"
+
}
+
]
+
}
+
+
TODO : CHECK if needed
+
\*/
+
+
(function(){
+
+
/*jslint node: true, browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
// To compute pixel coordinates of cursor
+
var getCaretCoordinates = require("$:/plugins/snowgoon88/edit-comptext/cursor-position.js");
+
+
/** Default Completion Attributes */
+
var DEFATT = { maxMatch: 5, minPatLength: 2, caseSensitive: false, triggerKeyCombination: "^ " };
+
+
/**
+
* Struct for generic Completion Templates.
+
* <ul>
+
* <li>pat : pattern searched for.</li>
+
* <li>filter : filter operation used to find the list of completion options</li>
+
* <li>mask: replaced by "" when presenting completion options</li>
+
* </ul>
+
*/
+
var Template = function( pat, filter, mask, field, start, end, startOffset ) {
+
this.pat = pat;
+
this.filter = filter;
+
this.mask = "^"+regExpEscape(mask);
+
this.field = field;
+
this.start = start;
+
this.end = end;
+
this.pos = 0;
+
this.startOffset = startOffset;
+
};
+
/**
+
* Struct for storing completion options, as we need to memorise
+
* the titles of the tiddlers when masked and when body must be displayed.
+
*/
+
var OptCompletion = function( title, str ) {
+
this.title = title;
+
this.str = str;
+
};
+
+
var keyMatchGenerator = function(combination) {
+
let singleMatchGenerator = function(character) {
+
if (character === '^') {
+
return event => event.ctrlKey;
+
}
+
else if (character === '+') {
+
return event => event.shiftKey;
+
}
+
else if (character === '!') {
+
return event => event.altKey;
+
}
+
else {
+
return event => (event.keyCode || event.which) === character.charCodeAt(0);
+
}
+
};
+
+
let matchers = [];
+
for (let i = 0; i < combination.length; i++) {
+
matchers.push(singleMatchGenerator(combination[i]));
+
}
+
+
return event => {
+
for (let i = 0; i < matchers.length; i++) {
+
if (!matchers[i](event)) {
+
return false;
+
}
+
}
+
return true;
+
};
+
};
+
+
/**
+
* Widget is needed in creating popupNode.
+
* - widget.document
+
* - widget.wiki.filterTiddlers(...)
+
* - sibling : where to create the popup in the DOM.
+
*/
+
var Completion = function( editWidget, areaNode, param, sibling, offTop, offLeft ) {
+
console.log( "==Completion::creation" );
+
+
//check if the widget uses the framed engine
+
if(typeof sibling !== 'undefined') {
+
//The framed engine propagates all keydown events to the parent document
+
//Disable this and only propagate keydown events not handled by the autocompletion in our handleKeydown method
+
editWidget._original_handleKeydownEvent = editWidget.handleKeydownEvent;
+
editWidget.handleKeydownEvent = function(event) {
+
return false;
+
};
+
}
+
+
// About underlying Widget
+
this._widget = editWidget;
+
this._areaNode = areaNode;
+
this._sibling = (typeof sibling !== 'undefined') ? sibling : this._areaNode;
+
this._offTop = (typeof offTop !== 'undefined') ? offTop : 0;
+
this._offLeft = (typeof offLeft !== 'undefined') ? offLeft : 0;
+
+
// Completions attributes
+
/** State */
+
this._state = "VOID";
+
this._template = undefined;
+
/** Best matches */
+
this._bestMatches = []; // An array of OptCompletion
+
this._idxChoice = -1;
+
/** Param */
+
// maximum nb of match displayed
+
//DEBUG console.log( "__PARAM" );
+
//DEBUG console.log( param.configuration );
+
this._maxMatch = param.configuration.maxMatch || DEFATT.maxMatch;
+
// Beware that a (0 || 2) gives 2 !, so change way attributs are checked.
+
this._minPatLength = DEFATT.minPatLength;
+
if ('minPatLength' in param.configuration) {
+
this._minPatLength = param.configuration.minPatLength;
+
}
+
this._caseSensitive= param.configuration.caseSensitive || DEFATT.caseSensitive;
+
this._triggerKeyMatcher = keyMatchGenerator(param.configuration.triggerKeyCombination || DEFATT.triggerKeyCombination);
+
/** Input information */
+
this._lastChar = "";
+
this._hasInput = false;
+
/** List of Completion Templates */
+
this._listTemp = [];
+
+
// Read templates from Param
+
if( param.template ) {
+
var idT;
+
for( idT=0; idT<param.template.length; idT++ ) {
+
var temp = param.template[idT];
+
// field 'body' ou 'title' (default)
+
if( temp.body ) {
+
this._listTemp.push(
+
new Template( temp.pattern, temp.body,
+
temp.mask ? temp.mask : "",
+
"body",
+
temp.start, temp.end,
+
temp.startOffset)
+
);
+
}
+
else {
+
this._listTemp.push(
+
new Template( temp.pattern,
+
temp.title ? temp.title : temp.filter,
+
temp.mask ? temp.mask : "",
+
"title",
+
temp.start, temp.end,
+
temp.startOffset )
+
);
+
}
+
//DEBUG temp = this._listTemp[this._listTemp.length-1];
+
//DEBUG console.log( "__CONF : "+temp.pattern+":"+temp.filter+":"+temp.mask+":"+temp.field+":"+temp.start+":"+temp.end );
+
}
+
}
+
// or defaut template
+
else {
+
this._listTemp = [
+
new Template( "[[", "[all[tiddlers]!is[system]]",
+
"", "title",
+
"[[", "]]" )
+
];
+
}
+
// Create Popup
+
//this._popNode = createPopup(this._widget, this._areaNode );
+
this._popNode = createPopup(this._widget, this._sibling );
+
+
// Listen to the Keyboard
+
$tw.utils.addEventListeners( this._areaNode,[
+
{name: "input", handlerObject: this, handlerMethod: "handleInput"},
+
{name: "keydown", handlerObject: this, handlerMethod: "handleKeydown"},
+
{name: "keypress", handlerObject: this, handlerMethod: "handleKeypress"},
+
{name: "keyup", handlerObject: this, handlerMethod: "handleKeyup"}
+
]);
+
+
/**
+
* Find the bestMatches among listChoice with given pattern
+
* @param listChoice : array of String
+
* @change : this._bestMatches => array of OptCompletion
+
*/
+
this._findBestMatches = function( listChoice, pattern, nbMax) {
+
// regexp search pattern, case sensitive
+
var flagSearch = this._caseSensitive ? "" : "i" ;
+
var regpat = RegExp( regExpEscape(pattern), flagSearch );
+
var regpat_start = RegExp( "^"+regExpEscape(pattern), flagSearch );
+
var regMask = RegExp( this._template.mask ? this._template.mask : "","");
+
var nbMatch = 0;
+
// nbMax set to _maxMatch if no value given
+
nbMax = nbMax !== undefined ? nbMax : this._maxMatch;
+
+
//DEBUG console.log( "__FIND masked="+regMask+" regPat="+regpat);
+
+
this._bestMatches= [];
+
var otherMatches = [];
+
// We test every possible choice
+
for( var i=0; i< listChoice.length; i++ ) {
+
// apply mask over potential choice
+
var maskedChoice = listChoice[i].replace( regMask, "");
+
// Test first if pattern is found at START of the maskedChoice
+
// THEN added to BestMatches
+
if( regpat_start.test( maskedChoice )) {
+
if (nbMatch >= nbMax) {
+
this._bestMatches.push( new OptCompletion("","...") );
+
return;
+
} else {
+
this._bestMatches.push( new OptCompletion(listChoice[i],maskedChoice) );
+
nbMatch += 1;
+
}
+
}
+
// then if pattern is found WITHIN the maskedChoice
+
// added AFTER the choices that starts with pattern
+
else if( regpat.test( maskedChoice ) ) {
+
if (nbMatch >= nbMax) {
+
// add all otherMatches to _bestMatches
+
this._bestMatches.push( new OptCompletion("","<hr>") ) ; //separator
+
this._bestMatches = this._bestMatches.concat( otherMatches );
+
this._bestMatches.push( new OptCompletion("","...") );
+
return;
+
} else {
+
otherMatches.push( new OptCompletion(listChoice[i],maskedChoice) );
+
nbMatch += 1;
+
}
+
}
+
}
+
// Here, must add the otherMatches
+
this._bestMatches.push( new OptCompletion("","<hr>") ) ; //separator
+
this._bestMatches = this._bestMatches.concat( otherMatches );
+
};
+
/**
+
* Change Selected Status of Items
+
*/
+
this._next = function (node) {
+
var count = node.children.length;
+
//DEBUG console.log( "__NEXT: co="+count+" nbMatch="+this._bestMatches.length);
+
if( this._bestMatches.length > 0 )
+
this._goto( node, this._idxChoice < count - 1 ? this._idxChoice + 1 : -1);
+
//DEBUG this._logStatus( "NexT" );
+
};
+
this._previous = function (node) {
+
var count = node.children.length;
+
var selected = this._idxChoice > -1;
+
//DEBUG console.log( "__PREV: co="+count+" nbMatch="+this._bestMatches.length);
+
if( this._bestMatches.length > 0 )
+
this._goto( node, selected ? this._idxChoice - 1 : count - 1);
+
//DEBUG this._logStatus( "PreV" );
+
};
+
// Should not be used, highlights specific item without any checks!
+
this._goto = function (node, idx) {
+
var lis = node.children;
+
var selected = this._idxChoice > -1;
+
if (selected) {
+
lis[this._idxChoice].setAttribute("patt-selected", "false");
+
}
+
+
this._idxChoice = idx;
+
+
if (idx > -1 && lis.length > 0) {
+
lis[idx].setAttribute("patt-selected", "true");
+
}
+
};
+
/**
+
* Abort pattern and undisplay.
+
*/
+
this._abortPattern = function (displayNode) {
+
this._state = "VOID";
+
this._bestChoices = [];
+
this._idxChoice = -1;
+
this._undisplay( displayNode );
+
this._template = undefined;
+
};
+
/**
+
* Display popupNode at the cursor position in areaNode.
+
*/
+
this._display = function( areaNode, popupNode ) {
+
if ( popupNode.style.display == 'none' ) {
+
// Must get coordinate
+
// Cursor coordinates within area + area coordinates + scroll
+
var coord = getCaretCoordinates(areaNode, areaNode.selectionEnd);
+
var styleSize = getComputedStyle(areaNode).getPropertyValue('font-size');
+
var fontSize = parseFloat(styleSize);
+
+
popupNode.style.left = (this._offLeft+areaNode.offsetLeft-areaNode.scrollLeft+coord.left) + 'px';
+
popupNode.style.top = (this._offTop+areaNode.offsetTop-areaNode.scrollTop+coord.top+fontSize*2) + 'px';
+
popupNode.style.display = 'block';
+
}
+
};
+
/**
+
* Undisplay someNode
+
*/
+
this._undisplay = function( displayNode ) {
+
if ( displayNode.style.display != 'none' ) {
+
displayNode.style.display = 'none';
+
}
+
};
+
+
/**
+
* Used for debug
+
*/
+
this._logStatus = function(msg) {
+
console.log( "__STATUS: "+this._state+":-"+msg+"- idx="+this._idxChoice );
+
};
+
+
};
+
// **************************************************************************
+
// ******************************************************************eventCbk
+
// **************************************************************************
+
/**
+
* Disable the *effects* of ENTER / UP / DOWN / ESC when needed.
+
* Set _hasInput to false.
+
*/
+
Completion.prototype.handleKeydown = function(event) {
+
// key
+
var key = event.keyCode;
+
this._hasInput = false;
+
+
//DEBUG console.log( "__KEYDOWN ("+key+") hasI="+this._hasInput);
+
+
// ENTER while selecting
+
if( (this._state === "PATTERN" || this._state === "SELECT") && key === 13 ) {
+
event.preventDefault();
+
event.stopPropagation();
+
}
+
// ESC while selecting
+
else if( (this._state === "PATTERN" || this._state === "SELECT") && key === 27 ) {
+
event.preventDefault();
+
event.stopPropagation();
+
}
+
// UP/DOWN while a pattern is extracted
+
else if( (key===38 || key===40) &&
+
(this._state === "PATTERN" || this._state === "SELECT") ) {
+
event.preventDefault();
+
} else {
+
//If we have not handled the keydown event, allow the widget to propagate it to the parent document
+
if(this._widget._original_handleKeydownEvent) {
+
this._widget._original_handleKeydownEvent(event);
+
}
+
}
+
};
+
/**
+
* Means that something has been added/deleted => set _hasInput
+
*/
+
Completion.prototype.handleInput = function(event) {
+
this._hasInput = true;
+
//DEBUG console.log( "__INPUT hasI="+this._hasInput );
+
};
+
+
/**
+
* Set _lastChar, detects CTRL+SPACE.
+
*/
+
Completion.prototype.handleKeypress = function(event) {
+
var curPos = this._areaNode.selectionStart; // cursor position
+
var val = this._areaNode.value; // text in the area
+
// key
+
var key = event.keyCode || event.which;
+
+
this._lastChar = String.fromCharCode(key);
+
//DEBUG console.log( "__KEYPRESS ("+key+") hasI="+this._hasInput+" char="+this._lastChar );
+
//DEBUG this._logStatus( "KEYPRESS" );
+
+
// Detect Ctrl+Space
+
if( this._triggerKeyMatcher(event) && this._state === "VOID" ) {
+
//Find a proper Template
+
// first from which we can extract a pattern
+
if( this._template === undefined ) {
+
//DEBUG console.log("__SPACE : find a Template" );
+
var idT, res;
+
for( idT=0; idT < this._listTemp.length; idT++ ) {
+
res = extractPattern( val, curPos, this._listTemp[idT] );
+
//DEBUG console.log(" t="+this._listTemp[idT].pat+" res="+res);
+
// res is not undefined => good template candidate
+
if( res ) {
+
this._template = this._listTemp[idT];
+
this._state = "PATTERN";
+
break;
+
}
+
}
+
}
+
else {
+
//DEBUG console.log("__SPACE : already a template" );
+
this._state = "PATTERN";
+
}
+
}
+
};
+
/**
+
* ESC -> abort;
+
* Detect [ -> VOID switch to _state=PATTERN
+
* PATTERN || SELECT : ENTER -> insertText
+
* UP/DOWN -> previous/next
+
* pattern.length > _minPatternLength -> display
+
*/
+
Completion.prototype.handleKeyup = function(event) {
+
var curPos = this._areaNode.selectionStart; // cursor position
+
var val = this._areaNode.value; // text in the area
+
// key a
+
var key = event.keyCode;
+
+
//DEBUG console.log( "__KEYUP ("+key+") hasI="+this._hasInput );
+
+
// ESC
+
if( key === 27 ) {
+
this._abortPattern( this._popNode );
+
//DEBUG this._logStatus( "" );
+
}
+
// Check for every template
+
if( this._hasInput && this._state === "VOID" ) {
+
// check every template's pattern
+
var idT, template;
+
for( idT=0; idT < this._listTemp.length; idT++ ) {
+
template = this._listTemp[idT];
+
if( this._lastChar === template.pat[template.pos] ) {
+
template.pos += 1;
+
//DEBUG console.log( "__CHECK : pat="+template.pat+" pos="+template.pos );
+
// Pattern totaly matched ?
+
if( template.pos === template.pat.length ) {
+
//DEBUG console.log( "__CHECK => found "+template.pat );
+
this._state = "PATTERN";
+
this._template = template;
+
+
break; // get out of loop
+
}
+
}
+
else {
+
template.pos = 0;
+
//DEBUG console.log( "__CHECK : pat="+template.pat+" pos="+template.pos );
+
}
+
}
+
}
+
// a pattern
+
else if( this._state === "PATTERN" || this._state === "SELECT" ) {
+
// Pattern below cursor : undefined if no pattern
+
var pattern = extractPattern( val, curPos, this._template );
+
if( key === 13 ) { // ENTER
+
//DEBUG console.log( "KEY : Enter" );
+
// Choice made in the displayNode ?
+
var selected = this._idxChoice > -1 && this._idxChoice !== this._maxMatch;
+
//DEBUG console.log( " > sel="+selected+" len="+this._bestChoices.length );
+
if( selected ) {
+
//DEBUG console.log( " > selected" );
+
var temp = this._bestMatches[this._idxChoice];
+
var str = temp.str;
+
// if str is "<hr>" or "...", abort
+
if (str === "<hr>" || str === "...") {
+
this._abortPattern( this._popNode );
+
this._areaNode.focus();
+
return;
+
}
+
if( this._template.field === "body" ) {
+
str = $tw.wiki.getTiddlerText( temp.title );
+
}
+
insertInto( this._areaNode,
+
str,
+
pattern.start, curPos, this._template );
+
// save this new content
+
this._widget.saveChanges( this._areaNode.value );
+
}
+
// otherwise take the first choice (if exists)
+
else if( this._bestMatches.length > 0 ) {
+
//DEBUG console.log( " > take first one" );
+
var temp = this._bestMatches[0];
+
var str = temp.str;
+
// if str is "<hr>" or "...", abort
+
if (str === "<hr>" || str === "...") {
+
this._abortPattern( this._popNode );
+
this._areaNode.focus();
+
return;
+
}
+
if( this._template.field === "body" ) {
+
str = $tw.wiki.getTiddlerText( temp.title );
+
}
+
insertInto( this._areaNode,
+
str,
+
pattern.start, curPos, this._template );
+
// save this new content
+
this._widget.saveChanges( this._areaNode.value );
+
}
+
this._abortPattern( this._popNode );
+
//DEBUG this._logStatus( "" );
+
}
+
else if( key === 38 && this._hasInput === false) { // up
+
this._state = "SELECT";
+
event.preventDefault();
+
this._previous( this._popNode );
+
//DEBUG this._logStatus( pattern.text );
+
//event.stopPropagation();
+
}
+
else if( key === 40 && this._hasInput === false) { // down
+
this._state = "SELECT";
+
event.preventDefault();
+
this._next( this._popNode );
+
//DEBUG this._logStatus( pattern.text );
+
//event.stopPropagation();
+
}
+
else if( pattern ) { // pattern changed by keypressed
+
this._idxChoice = -1;
+
// log
+
//DEBUG console.log( " PATTERN changed" );
+
//DEBUG this._logStatus( pattern.text );
+
//DEBUG console.log( " pat.length",pattern.text.length, " min",this._minPatLength);
+
// Popup with choices if pattern at least minPatLength letters long
+
if( pattern.text.length > (this._minPatLength-1) ) {
+
//DEBUG console.log( " should compute" );
+
// compute listOptions from templateFilter
+
var allOptions;
+
if( this._template )
+
allOptions = this._widget.wiki.filterTiddlers( this._template.filter );
+
else
+
allOptions = this._widget.wiki.filterTiddlers("[all[tiddlers]]");
+
this._findBestMatches( allOptions, pattern.text );
+
this._popNode.innerHTML = "";
+
//console.log( "BC "+ this._pattern + " => " + choice );
+
if (this._bestMatches.length > 0) {
+
for( var i=0; i<this._bestMatches.length; i++) {
+
let li_elem = itemHTML(this._bestMatches[i].str,
+
pattern.text);
+
// pass this as comp to eventHandler
+
li_elem.addEventListener( "click",
+
function( idx, event) {
+
//DEBUG console.log( "__ITEM Listener", this, idx, event );
+
this.handleItemClik( idx );
+
}.bind(this,i));
+
li_elem.addEventListener( "touchstart",
+
function( idx, event) {
+
//comp is the completion object, passed using 'bind'
+
this.handleItemClik( idx );
+
}.bind(this,i));
+
li_elem.addEventListener( "mouseover",
+
function( idx, event) {
+
this._goto( this._popNode,
+
idx );
+
}.bind(this,i));
+
+
// li_elem.addEventListener( "click",
+
// this.handleItemClick );
+
this._popNode.appendChild( li_elem );
+
}
+
this._display( this._areaNode, this._popNode );
+
}
+
else { // no matches
+
this._state = "PATTERN";
+
this._undisplay( this._popNode );
+
}
+
}
+
}
+
else { // no pattern detected
+
this._abortPattern( this._popNode );
+
}
+
}
+
// to ensure that one MUST add an input (through onInput())
+
this._hasInput = false;
+
};
+
// not real event handler as awaits the index of the clicked/touched bestChoice
+
Completion.prototype.handleItemClik = function( idx_select) {
+
+
var curPos = this._areaNode.selectionStart; // cursor position
+
var val = this._areaNode.value; // text in the area
+
var pattern = extractPattern( val, curPos, this._template );
+
+
//DEBUG console.log( "__handleItemClik idx="+idx_select, this );
+
+
// insert choice into document
+
var temp = this._bestMatches[idx_select];
+
var str = temp.str;
+
+
// if str is "<hr>" or "...", abort
+
if (str === "<hr>" || str === "...") {
+
this._abortPattern( this._popNode );
+
this._areaNode.focus();
+
return;
+
}
+
+
if( this._template.field === "body" ) {
+
str = $tw.wiki.getTiddlerText( temp.title );
+
}
+
insertInto( this._areaNode,
+
str,
+
pattern.start, curPos, this._template );
+
// save this new content
+
this._widget.saveChanges( this._areaNode.value );
+
this._abortPattern( this._popNode );
+
this._areaNode.focus();
+
//DEBUG this._logStatus( "" );
+
}
+
// **************************************************************************
+
// ******************************************************** private functions
+
// **************************************************************************
+
/**
+
* Create popup element.
+
*/
+
var createPopup = function( widget, node ) {
+
// Insert a special "div" element for poping up
+
// Its 'display' property in 'style' control its visibility
+
var popupNode = widget.document.createElement("div");
+
popupNode.setAttribute( "style", "display:none; position: absolute;");
+
popupNode.className = "tc-block-dropdown ect-block-dropdown";
+
// Insert the element into the DOM
+
node.parentNode.insertBefore(popupNode,node.nextSibling);
+
//CHECK the domNodes is a attribute of Widget [widget.js]
+
//CHECK this.domNodes.push(popupNode);
+
+
return popupNode;
+
};
+
/**
+
* Extract Pattern from text at a given position.
+
*
+
* Between previous template.pat (or '[[') and pos
+
*
+
* If no pattern -> undefined
+
*/
+
var extractPattern = function( text, pos, template ) {
+
// Detect previous and next ]]=>STOP or [[=>START
+
var sPat = template.pat ? template.pat : '[[';
+
var pos_prevOpen = text.lastIndexOf( sPat, pos );
+
var ePat = template.end ? template.end : ']]';
+
var pos_prevClosed = text.lastIndexOf( ePat, pos );
+
var pos_nextClosed = text.indexOf( ePat, pos );
+
//DEBUG console.log("__CALC st="+sPat+" -> en="+ePat );
+
//DEBUG console.log("__CALC po="+pos_prevOpen+" pc="+pos_prevClosed+" nc="+pos_nextClosed+" pos="+pos);
+
pos_nextClosed = (pos_nextClosed >= 0) ? pos_nextClosed : pos;
+
+
if( (pos_prevOpen >= 0) && // must be opened
+
((pos_prevOpen > pos_prevClosed ) || // not closed yet
+
(pos_prevClosed === pos))) { // closed at cursor
+
//DEBUG console.log(" pat="+text.slice( pos_prevOpen+sPat.length, pos) );
+
return { text: text.slice( pos_prevOpen+sPat.length, pos ),
+
start: pos_prevOpen,
+
end: pos_nextClosed
+
};
+
}
+
};
+
/**
+
* Controls how list items are generated.
+
* Function that takes two parameters :
+
* - text : suggestion text
+
* - input : the user’s input
+
* Returns : list item.
+
* Generates list items with the user’s input highlighted via <mark>.
+
*/
+
var itemHTML = function (text, input) {
+
// text si input === ''
+
// otherwise, build RegExp that is global (g) and case insensitive (i)
+
// to replace with <mark>$&</mark> where "$&" is the matched pattern
+
var html = input === '' ? text : text.replace(RegExp(regExpEscape(input.trim()), "gi"), "<mark>$&</mark>");
+
// the DOM element created
+
var elem = create("li", {
+
innerHTML: html,
+
"patt-selected": "false",
+
});
+
return elem;
+
};
+
/**
+
* Insert text into a textarea node,
+
* enclosing in 'template.start..template.end'
+
*
+
* - posBefore : where the 'template.pat+pattern' starts
+
* - posAfter : where the cursor currently is
+
*/
+
var insertInto = function(node, text, posBefore, posAfter, template ) {
+
//DEBUG console.log( "__INSERT : "+template.pattern+":"+template.filter+":"+template.mask+":"+template.field+":"+template.start+":"+template.end );
+
var val = node.value;
+
var sStart = template.start !== undefined ? template.start : '[[';
+
var sEnd = template.end !== undefined ? template.end : ']]';
+
var newVal = val.slice(0, posBefore) + sStart + text + sEnd + val.slice(posAfter);
+
//console.log("__INSERT s="+sStart+" e="+sEnd);
+
//console.log ("__INSERT pb="+posBefore+" pa="+posAfter+" txt="+text);
+
//console.log( "NEW VAL = "+newVal );
+
// WARN : Directly modifie domNode.value.
+
// Not sure it does not short-circuit other update methods of the domNode....
+
// i.e. could use widget.updateEditor(newVal) from edit-comptext widget.
+
// but how to be sure that cursor is well positionned ?
+
node.value = newVal;
+
+
// if startOffset in Template, set cursor at beginning of inserted value,
+
// with an Offset (usefull for aliasing links)
+
if (template.startOffset) {
+
let cursorPos = posBefore+template.startOffset;
+
node.setSelectionRange( cursorPos, cursorPos );
+
}
+
else {
+
node.setSelectionRange(posBefore+text.length+sStart.length+sEnd.length, posBefore+text.length+sStart.length+sEnd.length );
+
}
+
};
+
/**
+
* Add an '\' in front of -\^$*+?.()|[]{}
+
*/
+
var regExpEscape = function (s) {
+
return s.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&");
+
};
+
/**
+
* Add an element in the DOM.
+
*/
+
var create = function(tag, o) {
+
var element = document.createElement(tag);
+
+
for (var i in o) {
+
var val = o[i];
+
+
if (i === "inside") {
+
$(val).appendChild(element);
+
}
+
else if (i === "around") {
+
var ref = $(val);
+
ref.parentNode.insertBefore(element, ref);
+
element.appendChild(ref);
+
}
+
else if (i in element) {
+
element[i] = val;
+
}
+
else {
+
element.setAttribute(i, val);
+
}
+
}
+
+
return element;
+
};
+
+
+
exports.Completion = Completion;
+
+
})();
+
+
+143
tiddlywiki/plugins/edit-comptext/files/cursor-position.js
···
+
/*\
+
Module that compute the pixel position of the cursor of a text
+
ements.
+
+
Taken from https://github.com/component/textarea-caret-position
+
+
(as https://github.com/kir/js_cursor_position is not updated any more)
+
\*/
+
// Fonction anonyme executée immediatement
+
( function(){
+
+
// The properties that we copy into a mirrored div.
+
// Note that some browsers, such as Firefox,
+
// do not concatenate properties, i.e. padding-top, bottom etc. -> padding,
+
// so we have to do every single property specifically.
+
var properties = [
+
'direction', // RTL support
+
'boxSizing',
+
'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does
+
'height',
+
'overflowX',
+
'overflowY', // copy the scrollbar for IE
+
+
'borderTopWidth',
+
'borderRightWidth',
+
'borderBottomWidth',
+
'borderLeftWidth',
+
'borderStyle',
+
+
'paddingTop',
+
'paddingRight',
+
'paddingBottom',
+
'paddingLeft',
+
+
// https://developer.mozilla.org/en-US/docs/Web/CSS/font
+
'fontStyle',
+
'fontVariant',
+
'fontWeight',
+
'fontStretch',
+
'fontSize',
+
'fontSizeAdjust',
+
'lineHeight',
+
'fontFamily',
+
+
'textAlign',
+
'textTransform',
+
'textIndent',
+
'textDecoration', // might not make a difference, but better be safe
+
+
'letterSpacing',
+
'wordSpacing',
+
+
'tabSize',
+
'MozTabSize'
+
+
];
+
var isFirefox = false;
+
if($tw.browser) {
+
isFirefox = window.mozInnerScreenX != null;
+
}
+
+
function getCaretCoordinates(element, position, options) {
+
+
var debug = options && options.debug || false;
+
if (debug) {
+
var el = document.querySelector('#input-textarea-caret-position-mirror-div');
+
if ( el ) { el.parentNode.removeChild(el); }
+
}
+
+
// mirrored div
+
var div = document.createElement('div');
+
div.id = 'input-textarea-caret-position-mirror-div';
+
document.body.appendChild(div);
+
+
var style = div.style;
+
var computed;
+
if($tw.browser) {
+
computed = window.getComputedStyle? getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9
+
}
+
else {
+
computed = element.currentStyle;
+
}
+
+
+
// default textarea styles
+
style.whiteSpace = 'pre-wrap';
+
if (element.nodeName !== 'INPUT')
+
style.wordWrap = 'break-word'; // only for textarea-s
+
+
// position off-screen
+
style.position = 'absolute'; // required to return coordinates properly
+
if (!debug)
+
style.visibility = 'hidden'; // not 'display: none' because we want rendering
+
+
// transfer the element's properties to the div
+
properties.forEach(function (prop) {
+
style[prop] = computed[prop];
+
});
+
+
if (isFirefox) {
+
// Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275
+
if (element.scrollHeight > parseInt(computed.height))
+
style.overflowY = 'scroll';
+
} else {
+
style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'
+
}
+
+
div.textContent = element.value.substring(0, position);
+
// the second special handling for input type="text" vs textarea: spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037
+
if (element.nodeName === 'INPUT')
+
div.textContent = div.textContent.replace(/\s/g, "\u00a0");
+
+
var span = document.createElement('span');
+
// Wrapping must be replicated *exactly*, including when a long word gets
+
// onto the next line, with whitespace at the end of the line before (#7).
+
// The *only* reliable way to do that is to copy the *entire* rest of the
+
// textarea's content into the <span> created at the caret position.
+
// for inputs, just '.' would be enough, but why bother?
+
span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all
+
div.appendChild(span);
+
+
var coordinates = {
+
top: span.offsetTop + parseInt(computed['borderTopWidth']),
+
left: span.offsetLeft + parseInt(computed['borderLeftWidth'])
+
};
+
+
if (debug) {
+
span.style.backgroundColor = '#aaa';
+
} else {
+
document.body.removeChild(div);
+
}
+
+
return coordinates;
+
}
+
+
// Exporte as a module of node.js otherwise set as global
+
if (typeof module != "undefined" && typeof module.exports != "undefined") {
+
module.exports = getCaretCoordinates;
+
} else {
+
window.getCaretCoordinates = getCaretCoordinates;
+
}
+
+
})();
+26
tiddlywiki/plugins/edit-comptext/files/edit-comptext.css
···
+
+
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
+
+
/* The \rules pragma at the top of the tiddler restricts the WikiText
+
* to just allow macros and transclusion. This avoids mistakenly
+
* triggering unwanted WikiText processing.
+
*
+
* MUST not save as text/css for macro to be processed
+
*/
+
+
.ect-block-dropdown li {
+
display: block;
+
padding: 4px 14px 4px 14px;
+
text-decoration: none;
+
color: <<colour tiddler-link-foreground>>; /*#5778d8;*/
+
background: transparent;
+
}
+
.ect-block-dropdown li[patt-selected="true"] {
+
color: <<colour tiddler-link-background>>; /*#ffffff; */
+
background-color: <<colour tiddler-link-foreground>>; /*#5778d8; */
+
}
+
.ect-block-dropdown li[patt-selected="true"] mark {
+
background: hsl(86, 100%, 21%);
+
color: inherit;
+
}
+
+35
tiddlywiki/plugins/edit-comptext/files/framed.js
···
+
/*\
+
title: $:/plugins/snowgoon88/edit-comptext/framed.js
+
type: application/javascript
+
module-type: library
+
+
Taken from $:/core/modules/editor/engines/framed.js
+
Text editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea
+
+
\*/
+
(function(){
+
+
/*jslint node: true,browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
var HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height";
+
+
// Configuration tiddler
+
var COMPLETION_OPTIONS = "$:/plugins/snowgoon88/edit-comptext/config";
+
var Completion = require("$:/plugins/snowgoon88/edit-comptext/completion.js").Completion;
+
var FramedEngine = require("$:/core/modules/editor/engines/framed.js").FramedEngine;
+
+
function FramedCompEngine(options) {
+
FramedEngine.call(this,options);
+
this._configOptions = $tw.wiki.getTiddlerData( COMPLETION_OPTIONS, {} );
+
this._completion = new Completion( this.widget, this.domNode, this._configOptions, this.dummyTextArea, this.iframeNode.offsetTop, this.iframeNode.offsetLeft );
+
};
+
+
FramedCompEngine.prototype = Object.create(FramedEngine.prototype);
+
+
FramedCompEngine.prototype.constructor = FramedCompEngine;
+
+
exports.FramedCompEngine = FramedCompEngine;
+
$tw.modules.types.library["$:/core/modules/editor/engines/framed.js"].exports.FramedEngine = FramedCompEngine;
+
})();
+36
tiddlywiki/plugins/edit-comptext/files/simple.js
···
+
/*\
+
title: $:/plugins/snowgoon88/edit-comptext/simple.js
+
type: application/javascript
+
module-type: library
+
+
Taken from $:/core/modules/editor/engines/simple.js
+
Text editor engine based on a simple input or textarea tag
+
+
\*/
+
(function(){
+
+
/*jslint node: true, browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
var HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height";
+
+
// Configuration tiddler
+
var COMPLETION_OPTIONS = "$:/plugins/snowgoon88/edit-comptext/config";
+
var Completion = require("$:/plugins/snowgoon88/edit-comptext/completion.js").Completion;
+
var SimpleEngine = require("$:/core/modules/editor/engines/simple.js").SimpleEngine;
+
+
function SimpleCompEngine(options) {
+
SimpleEngine.call(this,options);
+
this._configOptions = $tw.wiki.getTiddlerData( COMPLETION_OPTIONS, {} );
+
this._completion = new Completion( this.widget, this.domNode, this._configOptions );
+
};
+
+
SimpleCompEngine.prototype = Object.create(SimpleEngine.prototype);
+
+
SimpleCompEngine.prototype.constructor = SimpleCompEngine;
+
+
+
exports.SimpleCompEngine = SimpleCompEngine;
+
$tw.modules.types.library["$:/core/modules/editor/engines/simple.js"].exports.SimpleEngine = SimpleCompEngine;
+
})();
+40
tiddlywiki/plugins/edit-comptext/files/tiddlywiki.files
···
+
{
+
"tiddlers": [
+
{
+
"file": "framed.js",
+
"fields": {
+
"type": "application/javascript",
+
"title": "$:/plugins/snowgoon88/edit-comptext/framed.js",
+
"module-type": "startup"
+
}
+
},{
+
"file": "simple.js",
+
"fields": {
+
"type": "application/javascript",
+
"title": "$:/plugins/snowgoon88/edit-comptext/simple.js",
+
"module-type": "startup"
+
}
+
},{
+
"file": "cursor-position.js",
+
"fields": {
+
"type": "application/javascript",
+
"title": "$:/plugins/snowgoon88/edit-comptext/cursor-position.js",
+
"module-type": "library"
+
}
+
},{
+
"file": "completion.js",
+
"fields": {
+
"type": "application/javascript",
+
"title": "$:/plugins/snowgoon88/edit-comptext/completion.js",
+
"module-type": "library"
+
}
+
},{
+
"file": "edit-comptext.css",
+
"fields": {
+
"type": "text/vnd.tiddlywiki",
+
"title": "$:/plugins/snowgoon88/edit-comptext/edit-comptext.css",
+
"tags": "[[$:/tags/Stylesheet]]"
+
}
+
}
+
]
+
}
+10
tiddlywiki/plugins/edit-comptext/plugin.info
···
+
{
+
"title": "$:/plugins/snowgoon88/edit-comptext",
+
"description": "Editor with some on-line completion capabilities",
+
"author": "AlainD",
+
"version": "0.9.3",
+
"core-version": ">=5.1.13",
+
"source": "https://github.com/snowgoon88/TW5-extendedit",
+
"plugin-type": "plugin",
+
"list": "readme usage examples"
+
}
+39
tiddlywiki/plugins/edit-comptext/readme.tid
···
+
title: $:/plugins/snowgoon88/edit-comptext/readme
+
+
!! What ?
+
This plugin adds ''completion'' when editing the body of a tiddler.
+
+
* Enter completion-mode by typing `[[` or `CTRL+SPACE`
+
* A list of tiddlers with a title that matches the pattern between `[[` and cursor appears
+
* `UP/DOWN` keys can select a tiddler, `ENTER` to validate
+
* `NEW` : can click with mouse or touch surface to select your completion.
+
* If there is only one match, `ENTER` selects it.
+
* you can specify you own trigger pattern and the list of possible completions. See [[$:/plugins/snowgoon88/edit-comptext/usage]] for more details.
+
* `NEW` : after completion, the cursor can be set inside the inserted text. This allows for easier creation of "aliased links" (try completion with `||` for example).
+
* `NEW` : version 0.9.1 and higher, the default TW5 editor automatically has autocompletion as soon as the plugin is enabled (if TW5 version 5.1.22 or higher)
+
+
!! To try it or get the latest news
+
See [[http://snowgoon88.github.io/TW5-extendedit]]
+
+
!! Install
+
+
To add the plugin to your own TiddlyWiki5, just drag this link to the browser window:
+
+
[[$:/plugins/snowgoon88/edit-comptext]]
+
+
Sometime (prior to TW5.1.22), a small configuration step is then needed
+
+
in `$:/ControlPanel -> Advanced -> Editor Type -> text/vnd.tiddlywiki` you must chose `comptext` instead of `text`.
+
+
Reload and « voilà »...
+
+
This plugin is quite mature now :o)
+
+
!! Old version
+
+
* A version compatible with 5.0.8 to 5.1.11 : [[http://snowgoon88.github.io/TW5-extendedit/index_5.1.11.html]]
+
+
!! Source code
+
On github [[https://github.com/snowgoon88/TW5-extendedit]]
+
+
Get in touch : snowgoon88(AT)gmail(DOT)com
+27
tiddlywiki/plugins/edit-comptext/usage.tid
···
+
title: $:/plugins/snowgoon88/edit-comptext/usage
+
+
Now, this plugin should be automatically integrated in the common editors.
+
+
In some older version of Tiddlywiki, you might have to change things in `$:/ControlPanel -> Advanced -> Editor Type -> text/vnd.tiddlywiki` to put `comptext` instead of `text`.
+
+
Configuration of the edit-comptext plugin can be done through the tiddler [[$:/plugins/snowgoon88/edit-comptext/config]]. Use a JSON tiddler (do not forget to set the type to `application/json`. See some examples at [[$:/plugins/snowgoon88/edit-comptext/examples]]
+
+
In the `configuration` object you can set :
+
+
* `caseSensitive`: `true`/`false` (is search case sensitive ?)
+
* `maxMatch` : an `integer` (max number of match displayed)
+
* `minPatLength` : an `integer` (minimal length of a pattern to trigger completion search)
+
* `triggerKeyCombination ` : a `string` representing the key combination that triggers the autocompletion popup. To use modifier keys in your combination, use following conversions : `ctrl` -> `^`, `alt` -> `!`, `shift` -> `+`. Note: ` ` (literally a whitespace) represents the `space` key.
+
+
In the `template` array you can specify the various completion templates that will be used. Every template can have the following members.
+
+
* `pattern` : `string` (pattern that triggers a completion, default "[[" )
+
* `title` or `body`: `string` (the filter operators that gives the list of valid completions, default "[all[tiddlers]!is[system]]"). If you specify `body`, then the body of the tiddler will be inserted on selection.
+
* `start` : `string` (when completion is chosen, start is put before the completion, default "[[")
+
* `end` : `string` (when completion is chosen, end is put after the completion, default "]]")
+
* `startOffset` : `interger` but OPTIONNAL. If provided, the cursor will be positionned `startOffset` characters after the beginning of the completed text. This is useful to create aliased links using "||" as a trigger.
+
+
!! Current body of Config Tiddler
+
+
{{$:/plugins/snowgoon88/edit-comptext/config}}
+
+11
tiddlywiki/plugins/inc/buttons/open.tid
···
+
title: $:/plugins/tobibeer/inc/buttons/open
+
+
<$button tooltip="Open this tiddler" class=<<tv-config-toolbar-class>>>
+
<$action-navigate/>
+
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
+
{{$:/core/images/down-arrow}}
+
</$list>
+
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
+
<span class="tc-btn-text">open</span>
+
</$list>
+
</$button>
+23
tiddlywiki/plugins/inc/macro.tid
···
+
title: $:/plugins/tobibeer/inc/macro
+
tags: $:/tags/Macro
+
+
\define tb-inc(tiddler)
+
<div class="tb-inc" title="""transcluded tiddler '$tiddler$'""">
+
<$tiddler tiddler="""$tiddler$""">
+
<div class="tb-inc-controls tc-tiddler-controls">
+
<$list filter="[list[$:/plugins/tobibeer/inc/toolbar!!text]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list>
+
</div>
+
<div class="tb-inc-tiddler">
+
<$transclude mode=block/>
+
</div>
+
</$tiddler>
+
</div>
+
\end
+
\define {(tiddler)
+
<$reveal type="match" text="""$tiddler$""" default="">
+
<$macrocall $name="tb-inc" tiddler=<<currentTiddler>>/>
+
</$reveal>
+
<$reveal type="nomatch" text="""$tiddler$""" default="">
+
<$macrocall $name="tb-inc" tiddler="""$tiddler$"""/>
+
</$reveal>
+
\end
+12
tiddlywiki/plugins/inc/plugin.info
···
+
{
+
"title": "$:/plugins/tobibeer/inc",
+
"description": "Enhance transclusion by including tiddlers with an on-hover toolbar",
+
"author": "Tobias Beer",
+
"version": "0.5.2",
+
"core-version": ">=5.1.9",
+
"source": "https://github.com/tobibeer/tw5-inc",
+
"documentation": "https://tobibeer.github.io/tw5-inc",
+
"plugin-type": "plugin",
+
"requires": "",
+
"list": "readme"
+
}
+6
tiddlywiki/plugins/inc/readme.tid
···
+
title: $:/plugins/tobibeer/inc/readme
+
+
Provides the macro `<<{>>` that allows to transclude tiddlers with an on-hover toolbar for editing.
+
+
; documentation / examples / demos...
+
: http://tobibeer.github.io/tw5-plugins#inc
+24
tiddlywiki/plugins/inc/styles.tid
···
+
title: $:/plugins/tobibeer/inc/styles
+
tags: $:/tags/Stylesheet
+
type: text/css
+
+
.tb-inc-controls{
+
margin-top:-2em;
+
padding: 5px;
+
display:none;
+
}
+
.tb-inc-tab-content .tb-inc{
+
margin:0;
+
padding:0;
+
position:relative;
+
}
+
.tb-inc-tab-content .tb-inc-controls{
+
position:absolute;
+
margin-top:-5px;
+
right:0;
+
top:0;
+
}
+
.tb-inc:hover > .tb-inc-controls{
+
display:block;
+
float:right;
+
}
+5
tiddlywiki/plugins/inc/templates/tabs.tid
···
+
title: $:/plugins/tobibeer/inc/templates/tabs
+
+
<div class="tb-inc-tab-content">
+
<$macrocall $name="{" tiddler=<<currentTab>>/>
+
</div>
+7
tiddlywiki/plugins/inc/toolbar.tid
···
+
title: $:/plugins/tobibeer/inc/toolbar
+
+
$:/plugins/tobibeer/inc/buttons/open
+
+
$:/core/ui/Buttons/edit
+
+
$:/core/ui/Buttons/delete
+41
tiddlywiki/plugins/notebook-mobile/js/notebookSidebarNav.js
···
+
/*\
+
title: $:/themes/nico/notebook-mobile/js/notebookSidebarNav.js
+
type: application/javascript
+
module-type: global
+
+
Closes the notebook sidebar on mobile when navigating
+
+
\*/
+
(function(){
+
+
/*jslint node: true, browser: true */
+
/*global $tw: false */
+
"use strict";
+
+
const isOnMobile = () => {
+
let bottombar = document.querySelector('.nc-bottombar');
+
return bottombar && bottombar.getClientRects().length > 0;
+
};
+
+
const closeSidebar = () => {
+
$tw.wiki.setText("$:/state/notebook-sidebar", "text", undefined, "no");
+
};
+
+
const closeSidebarOnMobile = () => {
+
if (isOnMobile()) {
+
console.log("closing sidebar");
+
closeSidebar();
+
};
+
};
+
+
const setup = () => {
+
$tw.hooks.addHook("th-navigating",function(event) {
+
closeSidebarOnMobile();
+
return event;
+
});
+
};
+
+
setup();
+
+
exports.closeNotebookSidebar = closeSidebar;
+
})();
+6
tiddlywiki/plugins/notebook-mobile/js/notebookSidebarNav.js.meta
···
+
created: 20200430151329085
+
modified: 20201210200127495
+
module-type: global
+
tags:
+
title: $:/plugins/nico/notebook-mobile/js/notebookSidebarNav.js
+
type: application/javascript
+12
tiddlywiki/plugins/notebook-mobile/plugin.info
···
+
{
+
"title": "$:/plugins/nico/notebook-mobile",
+
"name": "Mobile support for the Notebook theme",
+
"description": "JavaScript hooks for mobile devices support of the Notebook theme",
+
"author": "NicolasPetton",
+
"version": "1.0.0",
+
"core-version": ">=5.1.22",
+
"source": "https://github.com/NicolasPetton/Notebook",
+
"list": "",
+
"dependents": "",
+
"plugin-type": "plugin"
+
}
+52
tiddlywiki/plugins/simple-search/_system/Search.tid
···
+
created: 20181031180159723
+
creator: Thomas Elmiger
+
icon: $:/plugins/telmiger/simple-search/images/search-button
+
modified: 20200219130005254
+
modifier: Thomas Elmiger
+
title: $:/Search
+
type: text/vnd.tiddlywiki
+
+
<div class="tc-layer-search">
+
<div class="te-close-this">
+
{{$:/plugins/telmiger/simple-search/ui/Buttons/close-search}}
+
</div>
+
<div class="tc-simple-search">
+
<$set name="searchTiddler" value="$:/temp/advancedsearch">
+
<div class="tc-search">
+
<$edit-text tiddler=<<searchTiddler>> type="search" tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> class="tc-popup-handle"/>{{$:/plugins/telmiger/simple-search/ui/Buttons/advanced-search}}<$reveal tag="div" class="tc-block-dropdown-wrapper tc-simple-search-results" state=<<searchTiddler>> type="nomatch" text="">
+
<$reveal tag="div" class="tc-block-dropdown tc-search-drop-down tc-popup-handle" state=<<qualify "$:/state/popup/search-dropdown">> type="nomatch" text="" default="">
+
<$list filter="[<searchTiddler>minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
+
{{$:/plugins/telmiger/simple-search/results}}
+
</$list>
+
</$reveal>
+
</$reveal><$reveal state=<<searchTiddler>> type="nomatch" text="">{{$:/plugins/telmiger/simple-search/ui/Buttons/clear-search}}
+
<div class="tc-simple-search-results">
+
{{$:/plugins/telmiger/simple-search/ui/Buttons/new-tiddler}}
+
<$button tooltip="show/hide filtered list" aria-label="toggle results" popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
+
{{$:/core/images/down-arrow}}
+
<$list filter="[<searchTiddler>minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
+
<$set name="searchTerm" value={{{ [<searchTiddler>get[text]] }}}>
+
<$set name="resultCount" value="""<$count filter="[!is[system]search:*<searchTerm>]"/>""">
+
{{$:/language/Search/Matches}}
+
</$set>
+
</$set>
+
</$list>
+
</$button>
+
{{$:/plugins/telmiger/simple-search/ui/Buttons/options}}
+
</div>
+
</$reveal>
+
</div>
+
+
</$set>
+
</div>
+
<$reveal type="match" state="$:/plugins/telmiger/simple-search/settings/edit" text="yes">
+
<span class="te-edit-this">
+
<$button message="tm-edit-tiddler" param={{!!title}} tooltip="edit tiddler" aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>
+
{{$:/core/images/edit-button}}
+
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
+
<span class="tc-btn-text">edit</span>
+
</$list>
+
</$button>
+
</span>
+
</$reveal>
+
</div>
+6
tiddlywiki/plugins/simple-search/_system/config/AnimationDuration.tid
···
+
created: 20181104093400732
+
modified: 20200604181038434
+
title: $:/config/AnimationDuration
+
type: text/vnd.tiddlywiki
+
+
150
+7
tiddlywiki/plugins/simple-search/_system/config/ShortcutInfo/simple-search.tid
···
+
created: 20200604181038448
+
modified: 20200604181038448
+
tags:
+
title: $:/config/ShortcutInfo/simple-search
+
type: text/vnd.tiddlywiki
+
+
Launch a search
+6
tiddlywiki/plugins/simple-search/_system/config/shortcuts/simple-search.tid
···
+
created: 20181222220644632
+
modified: 20200604181038457
+
title: $:/config/shortcuts/simple-search
+
type: text/vnd.tiddlywiki
+
+
shift-cmd-Space
+6
tiddlywiki/plugins/simple-search/_system/core/ui/SideBarSegments/search.tid
···
+
created: 20190127221311868
+
creator: Thomas Elmiger
+
modified: 20200604181038467
+
modifier: Thomas Elmiger
+
title: $:/core/ui/SideBarSegments/search
+
type: text/vnd.tiddlywiki
+13
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/SearchResultsList.tid
···
+
caption: Simple Search
+
created: 20190101192116785
+
creator: Thomas Elmiger
+
modified: 20200604181038475
+
modifier: Thomas Elmiger
+
tags: $:/tags/SearchResults
+
title: $:/plugins/telmiger/simple-search/SearchResultsList
+
type: text/vnd.tiddlywiki
+
+
<div tabindex="0">
+
{{$:/plugins/telmiger/simple-search/SearchResultsTop}}
+
{{$:/plugins/telmiger/simple-search/SearchResultsOther}}
+
</div>
+17
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/SearchResultsOther.tid
···
+
caption: Simple Search Other
+
created: 20190101201254151
+
creator: Thomas Elmiger
+
modified: 20200604181038487
+
modifier: Thomas Elmiger
+
title: $:/plugins/telmiger/simple-search/SearchResultsOther
+
type: text/vnd.tiddlywiki
+
+
\define other()
+
<small>//Other//</small>
+
<ul class="te-nav-list">
+
<$wikify name="other-filter" text="[!is[system]search:{{$:/plugins/telmiger/simple-search/filter-other}}{$(searchTiddler)$}sort[title]limit[250]]">
+
<$list filter=<<other-filter>> template="$:/plugins/telmiger/simple-search/ui/ListItemTemplate"/>
+
</$wikify>
+
</ul>
+
\end
+
<<other>>
+16
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/SearchResultsTop.tid
···
+
caption: Simple Search Top
+
created: 20190101201620497
+
creator: Thomas Elmiger
+
modified: 20200604181038505
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/SearchResultsTop
+
type: text/vnd.tiddlywiki
+
+
\define top()
+
<small>//Caption/Title//</small>
+
<ul class="te-nav-list">
+
<$list filter="[!is[system]search:caption,title{$(searchTiddler)$}sort[caption]limit[250]]" template="$:/plugins/telmiger/simple-search/ui/ListItemTemplate"/>
+
</ul>
+
\end
+
<<top>>
+8
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/about.tid
···
+
created: 20200528213406686
+
modified: 20200604181038520
+
tags:
+
title: $:/plugins/telmiger/simple-search/about
+
type: text/vnd.tiddlywiki
+
+
A nice and simple overlay interface for searching your wiki. Designed for mobile and desktop screens.
+
''Reduce to the max.'' The standard search input field in the sidebar is removed, instead there is a {{$:/plugins/telmiger/simple-search/ui/Buttons/search}} [[button|$:/plugins/telmiger/simple-search/ui/Buttons/search]].
+9
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/filter-other.tid
···
+
created: 20181230131454911
+
creator: Thomas Elmiger
+
modified: 20200604181038535
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/filter-other
+
type: text/vnd.tiddlywiki
+
+
-caption,title
+9
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/hide-new-button.css.tid
···
+
created: 20200528214941993
+
modified: 20200604181038542
+
tags:
+
title: $:/plugins/telmiger/simple-search/hide-new-button.css
+
type: text/vnd.tiddlywiki
+
+
.tc-simple-search-results .tc-image-new-button {
+
display: none;
+
}
+9
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/hide-options-button.css.tid
···
+
created: 20200528221013699
+
modified: 20200604181038557
+
tags:
+
title: $:/plugins/telmiger/simple-search/hide-options-button.css
+
type: text/vnd.tiddlywiki
+
+
.tc-simple-search-results .tc-image-options-button {
+
display: none;
+
}
+7
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/icon.tid
···
+
created: 20181104090446387
+
modified: 20200604181038568
+
tags:
+
title: $:/plugins/telmiger/simple-search/icon
+
type: text/vnd.tiddlywiki
+
+
{{$:/plugins/telmiger/simple-search/images/search-button}}
+11
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/images/search-button.tid
···
+
created: 20181031165637871
+
creator: Thomas Elmiger
+
modified: 20200604181038575
+
modifier: Thomas Elmiger
+
tags: $:/tags/Image
+
title: $:/plugins/telmiger/simple-search/images/search-button
+
type: text/vnd.tiddlywiki
+
+
<svg class="tc-image-advanced-search-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
+
<path fill-rule="evenodd" d="M74.6 88A48 48 0 1188 74.7l34.3 34.3a9.4 9.4 0 11-13.4 13.3L74.6 88zM48 80a32 32 0 100-64 32 32 0 000 64z"/>
+
</svg>
+21
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/license.tid
···
+
created: 20180104062422859
+
creator: Thomas Elmiger
+
modified: 20200604181038647
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/license
+
type: text/vnd.tiddlywiki
+
+
`Simple Search is published under the MIT License.`
+
+
!!! Simple Search
+
The content of $:/plugins/telmiger/simple-search is<br>
+
Copyright (c), Thomas Elmiger, https://thomas-elmiger.ch
+
+
!!! The MIT License (MIT)
+
+
Permission 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:
+
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+
THE 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.
+35
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/macros.tid
···
+
created: 20190303170108747
+
creator: Thomas Elmiger
+
modified: 20200604181038686
+
modifier: Thomas Elmiger
+
tags: $:/tags/Macro
+
title: $:/plugins/telmiger/simple-search/macros
+
type: text/vnd.tiddlywiki
+
+
\define tempStory() $:/temp/simple-search/story
+
+
\define simple-search-openSearch()
+
<$action-navigate $to="$:/Search" $scroll="no"/>
+
<$list filter="[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]">
+
<<simple-search-closeAdvanced>>
+
</$list>
+
\end
+
+
\define simple-search-closeSearch()
+
<$action-sendmessage $message="tm-close-tiddler" $param="$:/Search"/>
+
<<simple-search-restoreAdvanced>>
+
\end
+
+
\define simple-search-closeAdvanced()
+
<$set name="myStory" filter="[list[$:/StoryList]]" >
+
<$action-setfield $tiddler=<<tempStory>> $field="text" $value=<<myStory>>/>
+
</$set>
+
<$action-sendmessage $message="tm-close-tiddler" $param="$:/AdvancedSearch"/>
+
\end
+
+
\define simple-search-restoreAdvanced()
+
<$list filter="[<tempStory>!is[missing]]">
+
<$action-setfield $tiddler="$:/StoryList" list={{{ [<tempStory>get[text]] }}}/>
+
<$action-deletetiddler $tiddler=<<tempStory>>/>
+
</$list>
+
\end
+47
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/readme.tid
···
+
created: 20170208062643245
+
creator: Thomas Elmiger
+
modified: 20200604181038731
+
modifier: Thomas Elmiger
+
tags: EditorCounter
+
title: $:/plugins/telmiger/simple-search/readme
+
type: text/vnd.tiddlywiki
+
+
!! Simple Search
+
+
{{$:/plugins/telmiger/simple-search/about}}
+
+
+
!!! Keyboard accessible
+
+
* Press <kbd>Shift</kbd> + <kbd>Cmd</kbd> + <kbd>Space</kbd> to ''launch'' or ''close'' Simple Search (or define your own shortcut [[in the control panel|$:/core/ui/ControlPanel/KeyboardShortcuts]]).
+
* Navigate with <kbd>Tab</kbd>
+
** {{$:/core/ui/Buttons/advanced-search}} takes you to $:/AdvancedSearch
+
** the next <kbd>Tab</kbd> jumps to the search results.
+
+
Depending on your browser and settings, you can select a list item using <kbd>Tab</kbd> or <kbd>up</kbd> and <kbd>down</kbd> arrow keys, finally confirm your choice with <kbd>Enter</kbd>.
+
+
+
!!! Search in fields
+
Primary results are listed for tiddlers containing the search term in the ''title'' OR the ''caption'' fields.
+
+
The secondary list finds results based on all other fields (not title nor caption). This can be adapted via settings.
+
+
+
!!! Create tiddlers
+
+
Empty result list? No problem. Create missing tiddlers using the search term as title and caption.
+
+
* Hit <kbd>Tab</kbd> until you reach the plus button (+).
+
* Create a tiddler with <kbd>Enter</kbd>.
+
+
See template options on the ''settings tab''. – Hat tip to //Diego Mesa// for inspiring this feature.
+
+
+
!!! Settings
+
+
Make sure to visit the ''settings tab'' to adjust your preferences.
+
+
+
!! Core overruling
+
+
This plugin overwrites $:/core/ui/SideBarSegments/search and nothing else.
+23
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/results.tid
···
+
created: 20181101220620505
+
creator: Thomas Elmiger
+
modified: 20200604181038739
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/results
+
type: text/vnd.tiddlywiki
+
+
\define close-simple-search()
+
<<simple-search-closeSearch>>
+
<$action-navigate $to=<<navigateTo>>/>
+
\end
+
<div class="tc-search-results">
+
<$linkcatcher actions=<<close-simple-search>>>
+
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]" emptyMessage="""
+
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]">
+
<$transclude mode="block"/>
+
</$list>
+
""">
+
{{$:/plugins/telmiger/simple-search/SearchResultsList}}
+
</$list>
+
</$linkcatcher>
+
</div>
+285
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/search.css.tid
···
+
created: 20181016202403907
+
creator: Thomas Elmiger
+
modified: 20200604181038747
+
modifier: Thomas Elmiger
+
tags: $:/tags/Stylesheet
+
title: $:/plugins/telmiger/simple-search/search.css
+
type: text/vnd.tiddlywiki
+
+
/*
+
** Simple Search
+
** (c) Thomas Elmiger
+
** """
+
*/
+
+
/* Zoomin Storyview Hack */
+
+
[data-tiddler-title="$:/Search"].tc-tiddler-view-frame.tc-storyview-zoomin-tiddler {
+
display: block !important;
+
}
+
+
+
/* Search layer */
+
+
.tc-layer-search {
+
position: fixed;
+
top: 0;
+
left: 0;
+
width: 100vw;
+
height: 100vh;
+
z-index: 10001;
+
background-color: rgba(0,0,0,0.66);
+
}
+
+
+
/* Search box */
+
+
.tc-simple-search {
+
position: fixed;
+
top: 1rem;
+
right: 3vw;
+
left: 3vw;
+
width: 94vw;
+
height: 5rem;
+
z-index: 102;
+
max-width: 100%;
+
background-color: rgba(0,0,0,0.75);
+
padding: 1rem .5rem 1rem 1rem;
+
border-radius: 0.5rem;
+
border: 1px solid {{$:/plugins/telmiger/simple-search/settings/border-colour}};
+
}
+
+
.tc-simple-search .tc-search input[type=search],
+
.tc-simple-search .tc-search input[type=search]:focus {
+
-webkit-appearance: none; -moz-appearance: none;
+
padding: 0 .25rem .125rem .25rem;
+
width: calc(100% - 4rem);
+
margin-right: .25rem;
+
color: rgb(13, 13, 13);
+
border: solid 1px transparent;
+
border-radius: .25rem;
+
background-color: rgb(222, 222, 222);
+
}
+
+
.tc-simple-search .tc-search input[type=search]:focus {
+
background-color: rgb(242, 242, 242);
+
}
+
+
@media (min-width: 42rem) {
+
+
.tc-simple-search {
+
right: 4rem;
+
left: 4rem;
+
width: calc(100% - 8rem);
+
height: 6rem;
+
padding: 1rem 2rem 1rem 3rem;
+
}
+
+
.tc-simple-search .tc-search input[type=search],
+
.tc-simple-search .tc-search input[type=search]:focus {
+
padding: 0 .5rem .25rem .5rem;
+
width: calc(100% - 5rem);
+
margin-right: .75rem;
+
font-size: 1.5rem;
+
}
+
+
.tc-simple-search .tc-search button {
+
margin-right: .25rem;
+
}
+
+
.tc-simple-search .tc-search a svg,
+
.tc-simple-search .tc-search button svg {
+
width: 1.2rem;
+
height: 1.2rem;
+
}
+
+
}
+
+
@media (min-width: 77rem) {
+
+
.tc-simple-search {
+
right: 10vw;
+
left: 10vw;
+
width: 80vw;
+
height: 7.66rem;
+
padding: 2rem 3rem 2rem 4rem;
+
}
+
+
.tc-simple-search .tc-search input[type=search],
+
.tc-simple-search .tc-search input[type=search]:focus {
+
padding: 0 .5rem .25rem .5rem;
+
width: calc(100% - 6rem);
+
margin-right: 1rem;
+
font-size: 1.75rem;
+
}
+
+
.tc-simple-search .tc-search button {
+
margin-right: .5rem;
+
}
+
+
.tc-simple-search .tc-search a svg,
+
.tc-simple-search .tc-search button svg {
+
width: 1.33rem;
+
height: 1.33rem;
+
}
+
+
}
+
+
+
/* Search buttons */
+
+
.tc-simple-search-results button {
+
margin: .25rem 0;
+
color: lightgray;
+
}
+
+
.tc-simple-search .tc-search button svg {
+
fill: lightgray;
+
}
+
+
.tc-simple-search .tc-search button:hover svg,
+
.tc-simple-search .tc-search button:focus svg {
+
fill: rgb(150, 150, 150);
+
}
+
+
.tc-simple-search button.te-btn-mini svg {
+
width: 0.75rem;
+
height: 0.75rem;
+
}
+
+
+
/* Search results */
+
+
+
.tc-simple-search .tc-block-dropdown-wrapper {
+
position: absolute;
+
width: 90vw;
+
margin-top: 2rem;
+
margin-left: -3vw;
+
}
+
+
@media (min-width: 42rem) {
+
.tc-simple-search .tc-block-dropdown-wrapper {
+
width: calc(100% - 6rem);
+
margin-left: 0;
+
}
+
}
+
+
@media (min-width: 77rem) {
+
.tc-simple-search .tc-block-dropdown-wrapper {
+
width: 72vw;
+
}
+
}
+
+
.tc-simple-search p {
+
line-height: 1;
+
margin: 1.25rem 0 0.75rem 0;
+
}
+
+
.tc-simple-search .tc-search-results ul {
+
list-style: none;
+
padding-left: 0.25rem;
+
}
+
+
.tc-simple-search .tc-search-drop-down .tc-search-results a.tc-tiddlylink {
+
white-space: initial;
+
padding: 0.25rem 0.5rem;
+
line-height: 1.1;
+
border: 1px solid transparent;
+
}
+
+
.tc-simple-search .tc-search-drop-down .tc-search-results a.tc-tiddlylink:focus {
+
border: 1px dotted lightgray;
+
}
+
+
.tc-simple-search .tc-search + .tc-block-dropdown-wrapper {
+
margin: 0 1rem 0 0;
+
}
+
+
.tc-simple-search .tc-block-dropdown.tc-search-drop-down {
+
margin: 0;
+
max-height: 50vh;
+
overflow: auto;
+
}
+
+
.tc-block-dropdown.tc-search-drop-down {
+
position: relative;
+
margin-right: 1rem;
+
padding-left: .5rem; padding-right: .5rem;
+
max-width: 100%;
+
}
+
+
@media (min-width: 42rem) {
+
.tc-simple-search .tc-block-dropdown.tc-search-drop-down {
+
max-height: 60vh;
+
}
+
}
+
+
@media (min-width: 77rem) {
+
.tc-simple-search .tc-block-dropdown.tc-search-drop-down {
+
max-height: 80vh;
+
}
+
}
+
+
+
/* Close and Edit buttons */
+
+
.tc-layer-search .te-close-this {
+
width: 100%;
+
height: 100%;
+
}
+
+
.tc-layer-search .te-close-this button {
+
width: 100%;
+
height: 100%;
+
text-align: right;
+
}
+
+
.tc-layer-search .te-close-this svg {
+
display: none;
+
}
+
+
@media (min-width: 42rem) {
+
.tc-layer-search .te-close-this svg {
+
display: inherit;
+
fill: lightgray;
+
position: absolute;
+
top: 1rem;
+
right: 1rem;
+
}
+
}
+
+
.tc-layer-search .te-edit-this button {
+
z-index: 102;
+
position: absolute;
+
bottom: 1rem;
+
left: 1rem;
+
width: 1rem;
+
height: 1rem;
+
font-size: 1.2rem;
+
}
+
+
+
/* Hide tiddler info and frame */
+
+
[data-tiddler-title="$:/Search"] .tc-tiddler-title,
+
[data-tiddler-title="$:/Search"] .tc-subtitle,
+
[data-tiddler-title="$:/Search"] .tc-fold-banner,
+
[data-tiddler-title="$:/Search"] .tc-tags-wrapper
+
{
+
display: none;
+
padding: 0;
+
margin: 0;
+
}
+
+
[data-tiddler-title="$:/Search"].tc-tiddler-view-frame,
+
[data-tiddler-title="$:/Search"] .tc-tiddler-body > p {
+
height: 0;
+
width: 0;
+
padding: 0;
+
margin: 0;
+
border: none;
+
}
+
+
+
/* End """ */
+63
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/settings.tid
···
+
created: 20181104092840050
+
creator: Thomas Elmiger
+
modified: 20200604181038754
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/settings
+
type: text/vnd.tiddlywiki
+
+
\define lingo-base() $:/language/ControlPanel/Basics/
+
+
!! Settings
+
+
An options button is available on the search layer so you can always return to these settings when necessary.
+
+
<$checkbox tiddler="$:/plugins/telmiger/simple-search/hide-options-button.css" invertTag="yes" tag="$:/tags/Stylesheet"> show </$checkbox> the {{$:/plugins/telmiger/simple-search/ui/Buttons/options}} button
+
+
!!! Design
+
+
''Layer animation:'' Simple Search feels rather slow for values above 150, so make sure to check this TW setting. <br>
+
<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> <$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input"/>
+
+
''Search box border:'' Adapt the colour to the design of your wiki. Use //transparent// if you don’t want a border. <br>
+
[[Border colour:|$:/plugins/telmiger/simple-search/settings/border-colour]] <$edit-text tiddler="$:/plugins/telmiger/simple-search/settings/border-colour" tag="input"/> <$edit-text tiddler="$:/plugins/telmiger/simple-search/settings/border-colour" type="color" tag="input"/>
+
+
+
!!! Search button
+
+
<$checkbox tiddler="$:/config/PageControlButtons/Visibility/$:/plugins/telmiger/simple-search/ui/Buttons/search" field="text" checked="show" unchecked="hide" default="show"> show in Page Toolbar (in the sidebar)</$checkbox>
+
+
<$checkbox tiddler="$:/plugins/telmiger/simple-search/ui/Buttons/search" tag="$:/tags/TopRightBar"> show in Top Right Bar (besides the sidebar toggle, permanently visible)</$checkbox>
+
+
+
!!! Minimal search term length
+
+
<label><$edit-text tiddler="$:/config/Search/MinLength" size="3" tag="input"/> ''characters''</label>
+
+
+
!!! Fields to search
+
+
<label>''Field list:'' <$edit-text tiddler="$:/plugins/telmiger/simple-search/filter-other" size="20" tag="input"/></label>
+
+
This list defines, which fields are relevant for the secondary result list (“Other”). The default value `-caption,title` leads to searches in all fields except caption and title. See [[search operator documentation|https://tiddlywiki.com/#search%20Operator]] for more info.
+
+
+
!!! Create new tiddlers
+
+
<$checkbox tiddler="$:/plugins/telmiger/simple-search/hide-new-button.css" invertTag="yes" tag="$:/tags/Stylesheet"> show </$checkbox> the {{$:/plugins/telmiger/simple-search/ui/Buttons/new-tiddler}} button
+
+
Define the template for new tiddlers you can create based on search terms. The default value `{{$:/temp/advancedsearch}}` inserts your search term as title and caption.
+
+
<label>''Title template:'' <$edit-text tiddler="$:/plugins/telmiger/simple-search/settings/new-tpl" size="20" tag="input"/></label>
+
+
Use the following field to add tags to tiddlers created via Simple Search. Don’t forget to add brackets to tags containing spaces, e.g. `[[My Tag]] Foo Bar`.
+
+
<label>''Tag template:'' <$edit-text tiddler="$:/plugins/telmiger/simple-search/settings/new-tags" size="20" tag="input"/></label>
+
+
---
+
+
!!! Search layer edit mode
+
+
Would you like to edit the tiddler $:/Search? Activate edit mode here:
+
+
<$checkbox tiddler="$:/plugins/telmiger/simple-search/settings/edit" field="text" checked="yes" unchecked="no"> Show edit icon in lower left corner of the screen.</$checkbox>
+6
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/settings/border-colour.tid
···
+
created: 20181104130108875
+
modified: 20200604181038763
+
title: $:/plugins/telmiger/simple-search/settings/border-colour
+
type: text/vnd.tiddlywiki
+
+
transparent
+4
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/settings/new-tags.tid
···
+
created: 20190101213434925
+
modified: 20200604181038770
+
title: $:/plugins/telmiger/simple-search/settings/new-tags
+
type: text/vnd.tiddlywiki
+8
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/settings/new-tpl.tid
···
+
created: 20190101213442298
+
creator: Thomas Elmiger
+
modified: 20200604181038777
+
modifier: Thomas Elmiger
+
title: $:/plugins/telmiger/simple-search/settings/new-tpl
+
type: text/vnd.tiddlywiki
+
+
{{$:/temp/advancedsearch}}
+7
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/support.tid
···
+
created: 20181222180114594
+
modified: 20200604181038785
+
tags:
+
title: $:/plugins/telmiger/simple-search/support
+
type: text/vnd.tiddlywiki
+
+
{{$:/plugins/telmiger/support}}
+14
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/Buttons/advanced-search.tid
···
+
caption: Simple to Advanced Search
+
created: 20190101210358315
+
creator: Thomas Elmiger
+
modified: 20200604181038791
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/advanced-search
+
type: text/vnd.tiddlywiki
+
+
<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class="tc-btn-invisible">
+
<<simple-search-closeSearch>>
+
<$action-navigate $to="$:/AdvancedSearch"/>
+
{{$:/core/images/advanced-search-button}}
+
</$button>
+13
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/Buttons/clear-search.tid
···
+
caption: Clear Search
+
created: 20190101210749466
+
creator: Thomas Elmiger
+
modified: 20200604181038800
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/clear-search
+
type: text/vnd.tiddlywiki
+
+
<$button class="tc-btn-invisible" tooltip="clear search field" aria-label="reset search">
+
<$action-setfield $tiddler="$:/temp/advancedsearch" text="" />
+
{{$:/core/images/close-button}}
+
</$button>
+15
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/Buttons/close-search.tid
···
+
caption: {{$:/core/images/close-button}} Close Search
+
created: 20190303205314106
+
creator: Thomas Elmiger
+
modified: 20200604181038807
+
modifier: Thomas Elmiger
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/close-search
+
type: text/vnd.tiddlywiki
+
+
<$button tooltip="Close Search" aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>
+
<<simple-search-closeSearch>>
+
{{$:/core/images/close-button}}
+
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
+
<span class="tc-btn-text">close</span>
+
</$list>
+
</$button>
+18
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/Buttons/new-tiddler.tid
···
+
caption: Create tiddler named with search term
+
created: 20190101203433764
+
creator: Thomas Elmiger
+
description: {{$:/language/Buttons/NewTiddler/Hint}}
+
modified: 20200604181038815
+
modifier: Thomas Elmiger
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/new-tiddler
+
type: text/vnd.tiddlywiki
+
+
<$wikify name="id" text="{{$:/plugins/telmiger/simple-search/settings/new-tpl}}">
+
<$button tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class="tc-btn-invisible te-btn-mini">
+
<<simple-search-closeSearch>>
+
<$action-createtiddler $basetitle=<<id>> tags={{$:/plugins/telmiger/simple-search/settings/new-tags}} text="" caption=<<id>>/>
+
<$action-navigate $to=<<id>>/>
+
<$action-sendmessage $message="tm-edit-tiddler" $param=<<id>>/>
+
{{$:/core/images/new-button}}
+
</$button>
+
</$wikify>
+14
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/Buttons/options.tid
···
+
caption: Simple Search Options
+
created: 20190101204729675
+
creator: Thomas Elmiger
+
modified: 20200604181038822
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/options
+
type: text/vnd.tiddlywiki
+
+
<$button tooltip="Options" class="tc-btn-invisible te-btn-mini">
+
<<simple-search-closeSearch>>
+
<$action-navigate $to="$:/plugins/telmiger/simple-search/settings"/>
+
{{$:/core/images/options-button}}
+
</$button>
+36
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/Buttons/search.tid
···
+
caption: {{$:/plugins/telmiger/simple-search/images/search-button}} Search
+
created: 20181031170153387
+
creator: Thomas Elmiger
+
description: Search
+
modified: 20200604181038831
+
modifier: Thomas Elmiger
+
tags: $:/tags/PageControls
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/search
+
type: text/vnd.tiddlywiki
+
+
\define search-button-label()
+
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
+
{{$:/plugins/telmiger/simple-search/images/search-button}}
+
</$list>
+
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
+
<span class="tc-btn-text"><$text text={{$:/plugins/telmiger/simple-search/ui/Buttons/search!!description}}/></span>
+
</$list>
+
\end
+
+
\define control-panel-button-on(class)
+
<$button tooltip={{$:/plugins/telmiger/simple-search/ui/Buttons/search!!description}} aria-label={{$:/plugins/telmiger/simple-search/ui/Buttons/search!!description}} class="""$(tv-config-toolbar-class)$ $class$""">
+
<<simple-search-openSearch>>
+
<<search-button-label>>
+
</$button>
+
\end
+
+
\define control-panel-button-off(class)
+
<$button tooltip="Close Search" aria-label="Hide tiddler Search" class="""$(tv-config-toolbar-class)$ $class$""">
+
<<simple-search-closeSearch>>
+
<<search-button-label>>
+
</$button>
+
\end
+
+
<$list filter="[list[$:/StoryList]] +[field:title[$:/Search]]" emptyMessage=<<control-panel-button-on>>>
+
<<control-panel-button-off "tc-selected">>
+
</$list>
+15
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/KeyboardShortcuts/search.tid
···
+
created: 20190129170004355
+
creator: Thomas Elmiger
+
key: ((simple-search))
+
modified: 20200604181038838
+
modifier: Thomas Elmiger
+
tags: $:/tags/KeyboardShortcut
+
title: $:/plugins/telmiger/simple-search/ui/KeyboardShortcuts/search
+
type: text/vnd.tiddlywiki
+
+
\import $:/plugins/telmiger/simple-search/macros
+
<$navigator story="$:/StoryList" history="$:/HistoryList" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>
+
<$list filter="[list[$:/StoryList]] +[field:title[$:/Search]]" emptyMessage=<<simple-search-openSearch>>>
+
<<simple-search-closeSearch>>
+
</$list>
+
</$navigator>
+14
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/simple-search/ui/ListItemTemplate.tid
···
+
caption: Template for search list items
+
created: 20181230141935738
+
creator: Thomas Elmiger
+
modified: 20200604181038848
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/simple-search/ui/ListItemTemplate
+
type: text/vnd.tiddlywiki
+
+
<li class="tc-menu-list-item">
+
<$link to={{!!title}} tooltip="title: {{!!title}}">
+
<$view field="caption"><$view field="title"/></$view>
+
</$link>
+
</li>
+42
tiddlywiki/plugins/simple-search/_system/plugins/telmiger/support.tid
···
+
created: 20181103150753927
+
creator: Thomas Elmiger
+
modified: 20200604181038936
+
modifier: Thomas Elmiger
+
tags:
+
title: $:/plugins/telmiger/support
+
type: text/vnd.tiddlywiki
+
+
!! Support the Author
+
+
''Hi!'' I’m Thomas, the author of [[tid.li/tw5/plugins.html|https://tid.li/tw5/plugins.html]]. Feedback is always welcome, as well as funding for maintenance, support and new projects :)
+
+
---
+
+
!!! One Time Support
+
+
If using my plugins just makes you happy, consider a one time payment via ~PayPal to reward the effort:
+
+
https://www.paypal.me/telmiger
+
+
---
+
+
!!! Permanent Support
+
+
If my tools make you more productive or save you time in your job or your everyday life, you can support me as a Patron:
+
+
https://www.patreon.com/telmiger
+
+
---
+
+
!!! Thank You
+
+
Substantial parts of my availabe time go to the deveopment of useful plugins for [[TiddlyWiki|https://tiddlywiki.com/]]. – Many others do the same and I would like to thank them all, especially [[Jeremy Ruston|https://tiddlywiki.com/#JeremyRuston]] and all the active members of the community!
+
+
//Hereby I promise to share future revenues (if any) with other developers who’s works I use or who inspired me.//
+
+
If you like my work, I would be very happy to hear from you.
+
+
''Thank you very much for your support!''<br>
+
//Thomas//
+
+
https://thomas-elmiger.ch
+11
tiddlywiki/plugins/simple-search/plugin.info
···
+
{
+
"title": "$:/plugins/telmiger/simple-search",
+
"author": "Thomas Elmiger",
+
"core-version": ">=5.1.18",
+
"description": "Search & find stuff easily",
+
"list": "readme settings support license",
+
"name": "Simple Search",
+
"plugin-type": "plugin",
+
"source": "https://tid.li/tw5/plugins.html",
+
"version": "1.0.24"
+
}
+26
tiddlywiki/themes/notebook/LICENSE.tid
···
+
created: 20200419141443144
+
modified: 20210118213330307
+
tags:
+
title: $:/themes/nico/notebook/LICENSE
+
type: text/vnd.tiddlywiki
+
+
+
MIT License Copyright (c) 2020 [[Nicolas Petton|https://nicolas.petton.fr]] nicolas@petton.fr
+
+
Permission 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:
+
+
The above copyright notice and this permission notice (including the next
+
paragraph) shall be included in all copies or substantial portions of the
+
Software.
+
+
THE 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.
+32
tiddlywiki/themes/notebook/ThemeTweaks.tid
···
+
created: 20201217172915960
+
modified: 20210123211851680
+
title: $:/themes/nico/notebook/themetweaks
+
tags: $:/tags/ControlPanel/Appearance
+
caption: {{$:/language/ThemeTweaks/ThemeTweaks}}
+
+
\define lingo-base() $:/language/ThemeTweaks/
+
+
You can tweak certain aspects of the ''Notebook'' theme.
+
+
! <<lingo Options>>
+
+
|<$link to="$:/themes/nico/notebook/options/stickytitles"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler="$:/themes/nico/notebook/options/stickytitles"><option value="no">{{$:/language/No}}</option><option value="yes">{{$:/language/Yes}}</option></$select> |
+
|<$link to="$:/themes/tiddlywiki/vanilla/options/codewrapping"><<lingo Options/CodeWrapping>></$link> |<$select tiddler="$:/themes/tiddlywiki/vanilla/options/codewrapping"><option value="pre">{{$:/language/No}}</option><option value="pre-wrap">{{$:/language/Yes}}</option></$select> |
+
|<$link to="$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover">Reveal tiddler controls on mouseover</$link> |<$select tiddler="$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover"><option value="no">{{$:/language/No}}</option><option value="yes">{{$:/language/Yes}}</option></$select> |
+
+
! <<lingo Settings>>
+
+
|<$link to="$:/themes/nico/notebook/settings/fontfamily"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler="$:/themes/nico/notebook/settings/fontfamily" default="" tag="input"/> | |
+
|<$link to="$:/themes/nico/notebook/settings/codefontfamily"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler="$:/themes/nico/notebook/settings/codefontfamily" default="" tag="input"/> | |
+
|<$link to="$:/themes/nico/notebook/settings/editorfontfamily"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler="$:/themes/nico/notebook/settings/editorfontfamily" default="" tag="input"/> | |
+
+
! <<lingo Metrics>>
+
+
|<$link to="$:/themes/tiddlywiki/vanilla/metrics/fontsize"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/metrics/fontsize" default="" tag="input"/> |
+
|<$link to="$:/themes/tiddlywiki/vanilla/metrics/lineheight"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/metrics/lineheight" default="" tag="input"/> |
+
|<$link to="$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler="$:/themes/nico/notebook/metrics/bodyfontsize" default="" tag="input"/> |
+
|<$link to="$:/themes/tiddlywiki/vanilla/metrics/bodylineheight"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler="$:/themes/nico/notebook/metrics/bodylineheight" default="" tag="input"/> |
+
|<$link to="$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint" default="" tag="input"/> |
+
|<$link to="$:/themes/nico/notebook/metrics/sidebar-width"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler="$:/themes/nico/notebook/metrics/sidebar-width" default="" tag="input"/> |
+
|<$link to="$:/themes/nico/notebook/metrics/story-width"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler="$:/themes/nico/notebook/metrics/story-width" default="" tag="input"/> |
+
+636
tiddlywiki/themes/notebook/base.tid
···
+
created: 20200419141443144
+
modified: 20210120224227503
+
tags: $:/tags/Stylesheet
+
title: $:/themes/nico/notebook/base
+
type: text/vnd.tiddlywiki
+
+
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline
+
+
\define if-sidebar(text)
+
<$reveal state="$:/state/notebook-sidebar" type="match" text="yes">
+
$text$
+
</$reveal>
+
\end
+
+
\define if-reveal-tiddler-controls-on-hover(text)
+
<$reveal state="$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover" type="match" text="yes">
+
$text$
+
</$reveal>
+
\end
+
+
/* Top and bottom bars */
+
+
/* Hide the top-right bar */
+
.tc-topbar.tc-topbar-right {
+
display: none;
+
}
+
+
div.tc-sidebar-header {
+
padding: 0;
+
min-height: 0;
+
}
+
+
.tc-story-river {
+
padding: 6px 0 !important;
+
width: 100% !important;
+
max-width: {{$:/themes/nico/notebook/metrics/story-width}} !important;
+
margin: 0 auto !important;
+
margin-top: 34px !important;
+
}
+
+
div.tc-tiddler-frame {
+
width: 100%;
+
margin: 20px 0;
+
background: <<colour tiddler-background>>;
+
box-shadow: 0 5px 20px rgba(0,0,0, 0.12);
+
border-radius: 6px;
+
padding: 42px 60px 60px 60px;
+
}
+
+
h1.tc-site-title {
+
margin-top: 14px;
+
font-size: 1.5em !important;
+
}
+
+
.nc-bar {
+
padding: 10px;
+
height: {{$:/themes/nico/notebook/metrics/topbar-height}};
+
background: <<colour page-background>>;
+
display: flex;
+
justify-content: space-between;
+
}
+
+
.nc-topbar-wrapper {
+
position: fixed;
+
top: 0;
+
left: 0;
+
right: 0;
+
/* The z-index needs to be above the z-index used in tiddlers in zoomin view */
+
z-index: 501;
+
}
+
+
.nc-bar.nc-topbar {
+
top: 0;
+
background: <<colour page-background>>ee;
+
max-width: calc({{$:/themes/nico/notebook/metrics/story-width}} + 40px);
+
padding: 10px 20px;
+
margin: 0 auto;
+
}
+
+
.nc-bar.nc-bottombar {
+
position: fixed;
+
bottom: 0;
+
left: 0;
+
right: 0;
+
/* The z-index needs to be above the z-index used in tiddlers in zoomin view */
+
z-index: 501;
+
}
+
+
.nc-bar .left svg {
+
fill: <<colour sidebar-controls-foreground>>;
+
}
+
+
.nc-bar input[type="search"] {
+
width: 200px;
+
padding: .6em 1em;
+
margin-top: -.2em;
+
background: <<colour sidebar-button-foreground>>44;
+
color: <<colour foreground>>cc;
+
transition: all ease-in .2s;
+
border: 1px solid transparent;
+
outline: 0;
+
}
+
+
.nc-bar input[type="search"]:focus {
+
width: 300px;
+
background: <<colour tiddler-background>>;
+
color: <<colour foreground>>;
+
border: 1px solid <<colour primary>>;
+
box-shadow: 0 0 .2rem 0 <<colour primary>>;
+
}
+
+
input[type="search"]::-webkit-search-cancel-button {
+
-webkit-appearance: auto;
+
}
+
+
.nc-bar .tc-block-dropdown.tc-search-drop-down {
+
margin-left: 0;
+
width: 400px;
+
border: 0;
+
box-shadow: 0 0 6px 0 rgba(0,0,0,.2);
+
border-radius: 6px;
+
padding: 20px 0;
+
}
+
+
.nc-bar p {
+
margin: 0;
+
}
+
+
.nc-bar .tc-page-controls {
+
margin-top: 0;
+
}
+
+
.nc-bar .tc-page-controls button {
+
margin-right: .8em;
+
}
+
+
.nc-bar .tc-page-controls button .tc-btn-text {
+
font-size: 14px;
+
}
+
+
.nc-bar .tc-block-dropdown {
+
max-height: 70vh;
+
overflow: auto;
+
}
+
+
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.nc-topbar {
+
display: none;
+
}
+
+
.tc-story-river {
+
padding: 0 !important;
+
margin-top: 0 !important;
+
margin-bottom: 60px !important;
+
}
+
+
div.tc-tiddler-frame {
+
margin: 0;
+
box-shadow: none;
+
border-radius: 0;
+
border-top: 0;
+
}
+
}
+
+
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.nc-bottombar {
+
display: none;
+
}
+
}
+
+
@media(max-width: 1100px) {
+
.nc-bar input[type="search"] {
+
width: 200px;
+
}
+
}
+
+
/* Sidebar */
+
+
@keyframes sidebar-appear {
+
0% {
+
left: -{{$:/themes/nico/notebook/metrics/sidebar-width}};
+
}
+
100% {
+
left: 0;
+
}
+
}
+
+
<<if-sidebar """
+
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.nc-sidebar {
+
animation: sidebar-appear .14s;
+
padding-top: 10px;
+
}
+
}
+
""">>
+
+
.nc-sidebar {
+
background: <<colour tiddler-background>>;
+
border-right: 1px solid <<colour tiddler-border>>;
+
width: {{$:/themes/nico/notebook/metrics/sidebar-width}};
+
overflow-y: auto;
+
overflow-x: hidden;
+
z-index: 500;
+
}
+
+
.nc-sidebar .segment {
+
border-bottom: 1px solid rgba(0,0,0,.1);
+
}
+
+
.nc-sidebar ol {
+
margin: 0;
+
padding: 0;
+
list-style: none;
+
line-height: 1.8em;
+
}
+
+
.nc-sidebar ol ol {
+
padding-left: 18px;
+
}
+
+
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.mobile-only {
+
display: none;
+
}
+
}
+
+
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.desktop-only {
+
display: none;
+
}
+
}
+
+
.nc-sidebar h1.tc-site-title {
+
margin: 0;
+
}
+
+
.nc-sidebar p {
+
margin: 6px 0;
+
}
+
+
.nc-sidebar .tc-site-subtitle {
+
color: <<colour site-title-foreground>>;
+
}
+
+
.nc-sidebar .section .label {
+
padding: 2px 0;
+
color: <<colour site-title-foreground>>;
+
fill: <<colour site-title-foreground>>;
+
font-weight: bold;
+
line-height: 1.6em;
+
display: block;
+
width: 100%;
+
text-align: left;
+
padding: 8px 15px;
+
border-radius: 0;
+
}
+
+
.nc-sidebar .section:not(.open) .label:hover {
+
background: rgba(0,0,0,.06);
+
}
+
+
.nc-sidebar .section.open .label {
+
color: <<colour tiddler-background>>;
+
fill: <<colour tiddler-background>>;
+
background: <<colour primary>>;
+
border-bottom: 1px solid rgba(0,0,0,.1);
+
}
+
+
.nc-sidebar .section .label .caret {
+
display: inline-block;
+
width: 15px;
+
float: right;
+
}
+
+
.nc-sidebar .content {
+
padding: 6px 15px;
+
font-size: 1em;
+
}
+
+
.nc-sidebar .tc-tiddlylink {
+
color: <<colour primary>>;
+
}
+
+
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.nc-sidebar {
+
position: fixed;
+
left: 0;
+
top: 0;
+
bottom: 0;
+
}
+
}
+
+
<<if-sidebar """
+
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
@keyframes sidebar-slide {
+
0% {
+
left: -100vw;
+
}
+
100% {
+
left: 0;
+
}
+
}
+
.nc-sidebar {
+
overflow: auto;
+
position: fixed;
+
width: 100%;
+
left: 0;
+
top: 0;
+
bottom: 48px;
+
z-index: 3000;
+
animation: sidebar-slide ease-in .2s;
+
animation-fill-mode: forwards;
+
}
+
}
+
+
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.tc-page-container {
+
margin-left: {{$:/themes/nico/notebook/metrics/sidebar-width}} !important;
+
}
+
+
.nc-topbar-wrapper {
+
left: {{$:/themes/nico/notebook/metrics/sidebar-width}};
+
}
+
}
+
""">>
+
+
/* Animate the hamburger button */
+
+
@keyframes menu-bars-1 {
+
0% {}
+
100% {
+
transform: rotate(-45deg) translateY(-10px) translateX(-6px);
+
fill: <<colour foreground>>;
+
}
+
}
+
+
@keyframes menu-bars-2 {
+
0% {}
+
100% { opacity: 0; }
+
}
+
+
@keyframes menu-bars-3 {
+
0% {}
+
100% {
+
transform: rotate(45deg) translateY(6px) translateX(2px);
+
fill: <<colour foreground>>;
+
}
+
}
+
+
.sidebar-toggle {
+
/* position: fixed; */
+
/* top: 6px; */
+
/* left: 6px; */
+
/* z-index: 600; */
+
/* padding: 4px; */
+
/* border-radius: 8px; */
+
margin-right: 10px;
+
transition: all ease-in-out .2s;
+
fill: <<colour sidebar-controls-foreground>>;
+
}
+
+
.sidebar-toggle:hover,
+
.sidebar-toggle.open {
+
fill: <<colour sidebar-controls-foreground-hover>>;
+
}
+
+
/* @media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { */
+
/* .sidebar-toggle { */
+
/* top: auto; */
+
/* bottom: 10px; */
+
/* left: 10px; */
+
/* } */
+
/* } */
+
+
.sidebar-toggle .bars .bar {
+
transform: rotate(0) translateY(0) translateX(0);
+
opacity: 1;
+
transform-origin: 20px 10px;
+
transition: transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out;
+
}
+
+
.sidebar-toggle .bars .bar:nth-of-type(3) {
+
transform-origin: 20px 20px;
+
}
+
+
.sidebar-toggle.open .bars .bar:nth-of-type(1) {
+
animation: menu-bars-1 .6s;
+
animation-fill-mode: forwards;
+
}
+
.sidebar-toggle.open .bars .bar:nth-of-type(2) {
+
animation: menu-bars-2 .6s;
+
animation-fill-mode: forwards;
+
}
+
.sidebar-toggle.open .bars .bar:nth-of-type(3) {
+
animation: menu-bars-3 .6s;
+
animation-fill-mode: forwards;
+
}
+
+
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
div.tc-tiddler-frame {
+
padding: 14px;
+
}
+
}
+
+
/* Inputs */
+
+
input, textarea {
+
transition: border .14s ease-in-out;
+
background: <<colour tiddler-editor-background>>;
+
border: 1px solid <<colour tiddler-editor-border>>;
+
padding: .5em;
+
border-radius: 4px;
+
}
+
+
input:focus, textarea:focus {
+
box-shadow: 0 0 0.2rem 0 <<colour primary>>;
+
outline: 0;
+
border-color: <<colour primary>>;
+
}
+
+
button {
+
border-radius: 1.5em;
+
border: 1px solid #ccc;
+
background: <<colour tiddler-background>>;
+
padding: .3em 1em;
+
cursor: pointer;
+
transition: box-shadow ease-in .1s;
+
color: <<color foreground>>;
+
}
+
+
button:focus, button:active {
+
outline: 0 none;
+
}
+
+
button.tc-btn-invisible {
+
border-radius: 0;
+
}
+
+
.tc-editor-toolbar button,
+
.tc-editor-toolbar button.tc-btn-invisible {
+
border-radius: 3px;
+
background: <<colour tiddler-editor-background>>;
+
color: <<colour foreground>>;
+
fill: <<colour foreground>>;
+
border: 1px solid <<colour tiddler-editor-border>>;
+
}
+
+
.tc-editor-toolbar button:hover,
+
.tc-editor-toolbar button:active {
+
border-color: <<colour primary>>;
+
background: <<colour primary>>;
+
color: <<colour background>>;
+
fill: <<colour background>>;
+
}
+
+
.tc-tiddler-frame input.tc-edit-texteditor,
+
.tc-tiddler-frame textarea.tc-edit-texteditor,
+
.tc-tiddler-frame iframe.tc-edit-texteditor {
+
transition: border .14s ease-in-out;
+
border: 1px solid <<colour tiddler-editor-border>>;
+
background: <<colour tiddler-editor-background>>;
+
padding: 4px;
+
border-radius: 4px;
+
}
+
+
.tc-tiddler-frame input.tc-edit-texteditor:focus,
+
.tc-tiddler-frame textarea.tc-edit-texteditor:focus,
+
.tc-tiddler-frame iframe.tc-edit-texteditor:focus {
+
box-shadow: 0 0 0.2rem 0 <<colour primary>>;
+
outline: 0;
+
border-color: <<colour primary>>;
+
}
+
+
.tc-tiddler-controls .tc-btn-text {
+
font-size: 16px;
+
}
+
+
<<if-reveal-tiddler-controls-on-hover """
+
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.tc-tiddler-frame .tc-tiddler-controls svg {
+
opacity: 0;
+
transition: all .2s ease-in;
+
}
+
+
.tc-tiddler-controls svg.tc-image-close-button,
+
.tc-tiddler-controls .py-toggle-todo-button svg,
+
.tc-tiddler-controls svg.tc-image-done-button,
+
.tc-tiddler-frame .tc-tiddler-controls:hover svg {
+
opacity: 1;
+
}
+
+
.tc-tiddler-controls .py-toggle-todo-button .done svg {
+
fill: #2da562;
+
}
+
}
+
""">>
+
+
button.tc-tag-label, span.tc-tag-label {
+
padding: 0.3em 1em !important;
+
}
+
+
/* Fonts */
+
+
html, body {
+
font-family: {{$:/themes/nico/notebook/settings/fontfamily}};
+
}
+
+
.tc-tiddler-frame input.tc-edit-texteditor,
+
.tc-tiddler-frame textarea.tc-edit-texteditor,
+
.tc-tiddler-frame iframe.tc-edit-texteditor {
+
font-family: {{$:/themes/nico/notebook/settings/editorfontfamily}};
+
}
+
+
pre, code {
+
font-family: {{$:/themes/nico/notebook/settings/codefontfamily}};
+
}
+
+
.tc-titlebar, .tc-site-title {
+
font-size: 28px !important;
+
line-height: 34px !important;
+
font-weight: 600 !important;
+
letter-spacing: -0.5px !important;
+
}
+
+
h1, h2, h3, h4, h5, h6 {
+
font-weight: 600;
+
}
+
+
.tc-tiddler-body h1,
+
.tc-tiddler-body h2,
+
.tc-tiddler-preview-preview h1,
+
.tc-tiddler-preview-preview h2 {
+
font-weight: bold;
+
}
+
+
div.tc-tiddler-frame .tc-tiddler-body {
+
font-size: {{$:/themes/nico/notebook/metrics/bodyfontsize}};
+
line-height: {{$:/themes/nico/notebook/metrics/bodylineheight}};
+
}
+
+
/* Tabs */
+
+
div.tc-tab-buttons {
+
margin-bottom: -4px;
+
}
+
+
div.tc-tab-buttons button {
+
font-weight: bold;
+
font-size: 1.2em;
+
line-height: 1em;
+
padding: .6em .8em .4em .8em;
+
border: 0;
+
border-radius: 0;
+
background: transparent;
+
cursor: pointer;
+
transition: background ease-in .2s;
+
}
+
+
div.tc-tab-buttons button:hover {
+
background: rgba(0,0,0,.03);
+
}
+
+
div.tc-tab-buttons button.tc-tab-selected {
+
border: 0;
+
background: transparent;
+
border-bottom: 4px solid <<colour primary>>;
+
}
+
+
/* Dropdowns */
+
+
@keyframes pop {
+
0% {
+
transform: scale(0.8);
+
opacity: 0;
+
}
+
+
80% {
+
transform: scale(1.03);
+
opacity: 1;
+
}
+
+
100% {
+
transform: scale(1);
+
opacity: 1;
+
}
+
}
+
+
.tc-drop-down {
+
box-shadow: 0 0 10px rgba(0,0,0,.2);
+
border-radius: 6px;
+
padding: 10px 0 !important;
+
animation: pop .15s ease-in forwards;
+
}
+
+
.tc-drop-down a, .tc-drop-down button {
+
padding: 3px 15px !important;
+
}
+
+
.tc-search-results {
+
line-height: 2em;
+
}
+
+
.tc-search-results em {
+
font-weight: bold;
+
font-style: normal;
+
}
+
+
/* Draft list */
+
+
.tc-drafts-list {
+
font-size: .9em;
+
left: auto;
+
right: 0;
+
}
+
+
.tc-drafts-list a {
+
padding: 6px 12px;
+
font-weight: bold;
+
border-top-left-radius: 6px;
+
border-top-right-radius: 6px;
+
display: inline-block;
+
}
+
+
.nc-refs {
+
color: #888;
+
font-size: .9em;
+
}
+
+
.nc-refs h4 {
+
margin-bottom: 4px;
+
}
+
+
.nc-post-created {
+
color: #acacac;
+
font-size: .8em;
+
}
+115
tiddlywiki/themes/notebook/changelog.tid
···
+
caption: ChangeLog
+
created: 20201217180707912
+
modified: 20210202214001915
+
tags:
+
title: $:/themes/nico/notebook/changelog
+
type: text/vnd.tiddlywiki
+
+
! 1.4.1
+
+
!! Fixes
+
+
* Fix the transclusion mode of sidebar sections
+
* Fix section title rendering for tiddlers without a caption field
+
* Fix the colour of links in the sidebar when using Notebook palettes with Vanilla
+
+
! 1.4.0
+
+
!! Features
+
+
* New redesigned topbar layout
+
* Add a configuration setting for the story width
+
* Add support for keyboard navigation in the search dropdown
+
+
! 1.3.6
+
+
!! Improvements
+
+
* Improve the style of tabs
+
* New animation for drop-downs
+
* Use a lighter page background colour in the beige palette
+
+
!! Fixes
+
+
* Fix the default ctrl+shift+F shortcut for focusing the search input
+
+
! 1.3.5
+
+
!! Features
+
+
* Add an option to reveal tiddler controls on mouseover
+
+
! 1.3.4
+
+
!! Improvements
+
+
* Add a keyboard shortcut (alt+shift+s) to toggle Notebook sidebar
+
* Add missing colours to tiddler editor fields in the dark palette
+
+
!! Fixes
+
+
* Fix the size of toolbar button labels when the $:/config/Toolbar/Text is set to yes
+
+
! 1.3.3
+
+
!! Improvements
+
+
* Make the sidebar more generic by using the default sidebar sections
+
+
! 1.3.2
+
+
!! Improvements
+
+
* Add colours for messages in the dark palette
+
* Add colours for notification in the dark palette
+
* Set colours for messages in the beige palette
+
+
! 1.3.1
+
+
!! Features
+
+
* New font family settings distinct from the Vanilla theme
+
+
!! Improvements
+
+
* Use a slightly lighter colour as the search input background
+
* Improve contrast of sidebar buttons in the dark palette
+
+
!! Fixes
+
+
* Fix tiddler control button colours in all three palettes
+
* Fix tab colours in palette-dark
+
+
! 1.3.0
+
+
!! Improvements
+
+
* New dark colour palette
+
* Use a darker color for tiddler subtitles
+
* Add back the WebKit search cancel button in search inputs
+
+
!! Fixes
+
+
* Fix the z-index of the topbar for the zoomin story view
+
* Fix the font weight of tiddler titles in edit mode
+
+
! 1.2.0
+
+
!! Improvements
+
+
* Better support for dark colour palettes
+
+
!! Fixes
+
+
* Fix rendering of overflowing/wrapping text in the sidebar
+
+
! 1.1.0
+
+
!! Features
+
+
* New theme tweaks tab dedicated to Notebook in the control panel
+
* Inputs in the edit template are now styled consistently with other inputs
+
+
!! Fixes
+
+
* Fixes the position of sticky tiddler titles when the option is turned on
+6
tiddlywiki/themes/notebook/config/index.multids
···
+
title: $:/config/
+
+
ShortcutInfo/notebook-focus-search: Focus on the topbar search field
+
shortcuts/notebook-focus-search: ctrl+shift+F
+
Search/AutoFocus: false
+
shortcuts/sidebar-search:
+12
tiddlywiki/themes/notebook/images/bars.tid
···
+
created: 20200428212322206
+
modified: 20201210210231235
+
title: $:/themes/nico/notebook/images/bars
+
type: text/vnd.tiddlywiki
+
+
<svg class="bars" height="21pt" viewBox="0 0 42 42" enable-background="new 0 0 32 22.5" version="1.1" xmlns="http://www.w3.org/2000/svg">
+
<g class="svg-menu-toggle" sketch:type="MSLayerGroup">
+
<rect class="bar" x="8" y="28" width="26" height="4"></rect>
+
<rect class="bar" x="8" y="19" width="26" height="4"></rect>
+
<rect class="bar" x="8" y="10" width="26" height="4"></rect>
+
</g>
+
</svg>
+6
tiddlywiki/themes/notebook/images/caret-down.tid
···
+
created: 20200429194348688
+
modified: 20201210210230919
+
title: $:/themes/nico/notebook/images/caret-down
+
type: text/vnd.tiddlywiki
+
+
<svg width="6pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"/></svg>
+6
tiddlywiki/themes/notebook/images/caret-right.tid
···
+
created: 20200429194305719
+
modified: 20201210210230909
+
title: $:/themes/nico/notebook/images/caret-right
+
type: text/vnd.tiddlywiki
+
+
<svg width="4pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 512"><path d="M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"/></svg>
+11
tiddlywiki/themes/notebook/images/color-switch.tid
···
+
created: 20201210170859810
+
creator: nico
+
modified: 20201210205606403
+
modifier: nico
+
tags:
+
title: $:/themes/nico/notebook/images/color-switch
+
type: text/vnd.tiddlywiki
+
+
<svg width="20px" height="20px" viewBox="0 0 16 16" class="bi bi-circle-half" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
+
<path fill-rule="evenodd" d="M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
+
</svg
+7
tiddlywiki/themes/notebook/metrics/bodyfontsize.tid
···
+
created: 20200428203454207
+
modified: 20201210205606363
+
tags:
+
title: $:/themes/nico/notebook/metrics/bodyfontsize
+
type: text/vnd.tiddlywiki
+
+
15px
+7
tiddlywiki/themes/notebook/metrics/bodylineheight.tid
···
+
created: 20200428203454207
+
modified: 20201210205606363
+
tags:
+
title: $:/themes/nico/notebook/metrics/bodylineheight
+
type: text/vnd.tiddlywiki
+
+
22px
+7
tiddlywiki/themes/notebook/metrics/sidebar-width.tid
···
+
created: 20200429144554294
+
modified: 20201210210231246
+
tags:
+
title: $:/themes/nico/notebook/metrics/sidebar-width
+
type: text/vnd.tiddlywiki
+
+
350px
+7
tiddlywiki/themes/notebook/metrics/story-width.tid
···
+
created: 20210123210054185
+
modified: 20210123211911688
+
tags:
+
title: $:/themes/nico/notebook/metrics/story-width
+
type: text/vnd.tiddlywiki
+
+
800px
+7
tiddlywiki/themes/notebook/metrics/topbar-height.tid
···
+
created: 20200428203454207
+
modified: 20201210205606363
+
tags:
+
title: $:/themes/nico/notebook/metrics/topbar-height
+
type: text/vnd.tiddlywiki
+
+
52px
+5
tiddlywiki/themes/notebook/options.multids
···
+
title: $:/themes/nico/notebook/options/
+
+
stickytitles: no
+
codewrapping: pre-wrap
+
reveal-tiddler-controls-on-hover: no
+11
tiddlywiki/themes/notebook/overrides/$__core_ui_PageTemplate_sidebar.tid
···
+
created: 20200430072116835
+
modified: 20201217174129501
+
title: $:/core/ui/PageTemplate/sidebar
+
type: text/vnd.tiddlywiki
+
+
\whitespace trim
+
\define config-title()
+
$:/config/SideBarSegments/Visibility/$(listItem)$
+
\end
+
+
Overwritten by $:/themes/nico/notebook so that the default sidebar does not get rendered.
+7
tiddlywiki/themes/notebook/overrides/$__themes_tiddlywiki_vanilla_themetweaks.tid
···
+
caption: {{$:/language/ThemeTweaks/ThemeTweaks}}
+
created: 20201217163834291
+
modified: 20201217163914434
+
title: $:/themes/tiddlywiki/vanilla/themetweaks
+
type: text/vnd.tiddlywiki
+
+
Overwritten by $:/themes/nico/notebook so that the Vanilla theme tweaks do not appear in the control panel.
+105
tiddlywiki/themes/notebook/palettes/palette-beige
···
+
alert-background: #ffe476
+
alert-border: #b99e2f
+
alert-highlight: #881122
+
alert-muted-foreground: #b99e2f
+
background: #ffffff
+
blockquote-bar: <<colour muted-foreground>>
+
button-background:
+
button-foreground:
+
button-border:
+
code-background: #f7f7f9
+
code-border: #e1e1e8
+
code-foreground: #dd1144
+
dirty-indicator: #c63636
+
download-background: #66cccc
+
download-foreground: <<colour background>>
+
dragger-background: <<colour foreground>>
+
dragger-foreground: <<colour background>>
+
dropdown-background: <<colour background>>
+
dropdown-border: #ddd
+
dropdown-tab-background-selected: #fff
+
dropdown-tab-background: #ececec
+
dropzone-background: #da8548
+
external-link-background-hover: inherit
+
external-link-background-visited: inherit
+
external-link-background: inherit
+
external-link-foreground-hover: inherit
+
external-link-foreground-visited: #0000aa
+
external-link-foreground: #0000ee
+
foreground: #3F3B3B
+
message-background: #e6f5e8
+
message-border: #2b5532
+
message-foreground: #2b5532
+
modal-backdrop: <<colour foreground>>
+
modal-background: <<colour background>>
+
modal-border: #999999
+
modal-footer-background: #f5f5f5
+
modal-footer-border: #dddddd
+
modal-header-border: #eeeeee
+
muted-foreground: #999999
+
notification-background: #ffffdd
+
notification-border: #999999
+
page-background: #f5f5ee
+
pre-background: #f6f6f6
+
pre-border: #cccccc
+
primary: #7f4bca
+
select-tag-background:
+
select-tag-foreground:
+
sidebar-button-foreground: #a6a69c
+
sidebar-controls-foreground-hover: #000000
+
sidebar-controls-foreground: <<colour sidebar-button-foreground>>
+
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
+
sidebar-foreground: #acacac
+
sidebar-muted-foreground-hover: #444444
+
sidebar-muted-foreground: #c0c0c0
+
sidebar-tab-background-selected: #ffffff
+
sidebar-tab-background: <<colour tab-background>>
+
sidebar-tab-border-selected: <<colour tab-border-selected>>
+
sidebar-tab-border: <<colour tab-border>>
+
sidebar-tab-divider: <<colour tab-divider>>
+
sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>
+
sidebar-tab-foreground: <<colour tab-foreground>>
+
sidebar-tiddler-link-foreground-hover: <<colour primary>>
+
sidebar-tiddler-link-foreground: <<colour tab-foreground>>
+
site-title-foreground: #353748
+
static-alert-foreground: #aaaaaa
+
tab-background-selected: #ffffff
+
tab-background: #eeeeee
+
tab-border-selected: #cccccc
+
tab-border: #cccccc
+
tab-divider: #d8d8d8
+
tab-foreground-selected: <<colour foreground>>
+
tab-foreground: #888888
+
table-border: #dddddd
+
table-footer-background: #a8a8a8
+
table-header-background: #f0f0f0
+
tag-background: #ffeedd
+
tag-foreground: #000
+
tiddler-background: <<colour background>>
+
tiddler-border: #dbdbc7;
+
tiddler-controls-foreground-hover: #888888;
+
tiddler-controls-foreground-selected: #888888;
+
tiddler-controls-foreground: #cccccc
+
tiddler-editor-background: <<colour background>>
+
tiddler-editor-border-image: #ffffff
+
tiddler-editor-border: rgba(0,0,0,.2)
+
tiddler-editor-fields-even: #e0e8e0
+
tiddler-editor-fields-odd: #f0f4f0
+
tiddler-info-background: #f8f8f8
+
tiddler-info-border: #dddddd
+
tiddler-info-tab-background: #f8f8f8
+
tiddler-link-background: <<colour background>>
+
tiddler-link-foreground: <<colour primary>>
+
tiddler-subtitle-foreground: #aaaaaa
+
tiddler-title-foreground: #333
+
toolbar-new-button:
+
toolbar-options-button:
+
toolbar-save-button:
+
toolbar-info-button:
+
toolbar-edit-button:
+
toolbar-close-button:
+
toolbar-delete-button:
+
toolbar-cancel-button:
+
toolbar-done-button:
+
untagged-background: #999999
+
very-muted-foreground: #888888
+5
tiddlywiki/themes/notebook/palettes/palette-beige.meta
···
+
description: A beige colour palette for Notebook
+
name: Notebook Beige
+
tags: $:/tags/Palette $:/tags/notebook/Palette
+
title: $:/themes/nico/notebook/palettes/palette-beige
+
type: application/x-tiddler-dictionary
+105
tiddlywiki/themes/notebook/palettes/palette-dark
···
+
alert-background: #643b43
+
alert-border: #3f181f
+
alert-highlight: #881122
+
alert-muted-foreground: #bc8b94
+
background: #383e49
+
blockquote-bar: <<colour muted-foreground>>
+
button-background:
+
button-border:
+
button-foreground:
+
code-background: #2c323b
+
code-border: #111
+
code-foreground: #dd1144
+
dirty-indicator: #c63636
+
download-background: #98be65
+
download-foreground: <<colour background>>
+
dragger-background: <<colour foreground>>
+
dragger-foreground: <<colour background>>
+
dropdown-background: <<colour background>>
+
dropdown-border: #111
+
dropdown-tab-background-selected: #fff
+
dropdown-tab-background: #ececec
+
dropzone-background: #da8548
+
external-link-background-hover: inherit
+
external-link-background-visited: inherit
+
external-link-background: inherit
+
external-link-foreground-hover: inherit
+
external-link-foreground-visited: #61afef
+
external-link-foreground: #c678dd
+
foreground: #c8ced8
+
message-background: #2c323e
+
message-border: #111
+
message-foreground: #d5e2f1
+
modal-backdrop: <<colour foreground>>
+
modal-background: <<colour background>>
+
modal-border: #999999
+
modal-footer-background: #f5f5f5
+
modal-footer-border: #dddddd
+
modal-header-border: #eeeeee
+
muted-foreground: #999999
+
notification-background: #3a5e39
+
notification-border: #192c19
+
page-background: #262b33
+
pre-background: <<colour page-background>>
+
pre-border: <<colour tiddler-border>>
+
primary: #bf93ff
+
select-tag-background:
+
select-tag-foreground:
+
sidebar-button-foreground: #5e646f
+
sidebar-controls-foreground-hover: #cad2e5
+
sidebar-controls-foreground: <<colour sidebar-button-foreground>>
+
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
+
sidebar-foreground: #cad2e5
+
sidebar-muted-foreground-hover: #444444
+
sidebar-muted-foreground: #c0c0c0
+
sidebar-tab-background-selected: <<colour tab-background-selected>>
+
sidebar-tab-background: <<colour tab-background>>
+
sidebar-tab-border-selected: <<colour tab-border-selected>>
+
sidebar-tab-border: <<colour tab-border>>
+
sidebar-tab-divider: <<colour tab-divider>>
+
sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>
+
sidebar-tab-foreground: <<colour tab-foreground>>
+
sidebar-tiddler-link-foreground-hover: <<colour primary>>
+
sidebar-tiddler-link-foreground: <<colour tab-foreground>>
+
site-title-foreground: <<colour foreground>>
+
static-alert-foreground: #aaaaaa
+
tab-background-selected: <<colour background>>
+
tab-background: <<colour page-background>>
+
tab-border-selected: <<colour foreground>>
+
tab-border: #cad2e5
+
tab-divider: #cad2e5
+
tab-foreground-selected: #ecf2ff
+
tab-foreground: #cad2e5
+
table-border: #aaaaaa
+
table-footer-background: #a8a8a8
+
table-header-background: #262b33
+
tag-background: #fcb671
+
tag-foreground: #000
+
tiddler-background: <<colour background>>
+
tiddler-border: #111
+
tiddler-controls-foreground-hover: #cad2e5
+
tiddler-controls-foreground-selected: #cad2e5
+
tiddler-controls-foreground: #5e646f
+
tiddler-editor-background: <<colour background>>
+
tiddler-editor-border-image: #ffffff
+
tiddler-editor-border: rgba(255, 255, 255, 0.3)
+
tiddler-editor-fields-even: <<colour background>>
+
tiddler-editor-fields-odd: #2c323b
+
tiddler-info-background: #f8f8f8
+
tiddler-info-border: #dddddd
+
tiddler-info-tab-background: #f8f8f8
+
tiddler-link-background: <<colour background>>
+
tiddler-link-foreground: <<colour primary>>
+
tiddler-subtitle-foreground: #aaaaaa
+
tiddler-title-foreground: <<colour foreground>>
+
toolbar-cancel-button:
+
toolbar-close-button:
+
toolbar-delete-button:
+
toolbar-done-button:
+
toolbar-edit-button:
+
toolbar-info-button:
+
toolbar-new-button:
+
toolbar-options-button:
+
toolbar-save-button:
+
untagged-background: #999999
+
very-muted-foreground: #888888
+5
tiddlywiki/themes/notebook/palettes/palette-dark.meta
···
+
description: A dark colour palette for Notebook
+
name: Notebook Dark
+
tags: $:/tags/Palette $:/tags/notebook/Palette
+
title: $:/themes/nico/notebook/palettes/palette-dark
+
type: application/x-tiddler-dictionary
+105
tiddlywiki/themes/notebook/palettes/palette-grey
···
+
alert-background: #ffe476
+
alert-border: #b99e2f
+
alert-highlight: #881122
+
alert-muted-foreground: #b99e2f
+
background: #ffffff
+
blockquote-bar: <<colour muted-foreground>>
+
button-background:
+
button-foreground:
+
button-border:
+
code-background: #f7f7f9
+
code-border: #e1e1e8
+
code-foreground: #dd1144
+
dirty-indicator: #c63636
+
download-background: #66cccc
+
download-foreground: <<colour background>>
+
dragger-background: <<colour foreground>>
+
dragger-foreground: <<colour background>>
+
dropdown-background: <<colour background>>
+
dropdown-border: #ddd
+
dropdown-tab-background-selected: #fff
+
dropdown-tab-background: #ececec
+
dropzone-background: #da8548
+
external-link-background-hover: inherit
+
external-link-background-visited: inherit
+
external-link-background: inherit
+
external-link-foreground-hover: inherit
+
external-link-foreground-visited: #0000aa
+
external-link-foreground: #0000ee
+
foreground: #283c46
+
message-background: #ecf2ff
+
message-border: #cfd6e6
+
message-foreground: #547599
+
modal-backdrop: <<colour foreground>>
+
modal-background: <<colour background>>
+
modal-border: #999999
+
modal-footer-background: #f5f5f5
+
modal-footer-border: #dddddd
+
modal-header-border: #eeeeee
+
muted-foreground: #999999
+
notification-background: #ffffdd
+
notification-border: #999999
+
page-background: #f4f4f4
+
pre-background: #f6f6f6
+
pre-border: #cccccc
+
primary: #127edd
+
select-tag-background:
+
select-tag-foreground:
+
sidebar-button-foreground: #a6a69c
+
sidebar-controls-foreground-hover: #000000
+
sidebar-controls-foreground: <<colour sidebar-button-foreground>>
+
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
+
sidebar-foreground: #acacac
+
sidebar-muted-foreground-hover: #444444
+
sidebar-muted-foreground: #c0c0c0
+
sidebar-tab-background-selected: #ffffff
+
sidebar-tab-background: <<colour tab-background>>
+
sidebar-tab-border-selected: <<colour tab-border-selected>>
+
sidebar-tab-border: <<colour tab-border>>
+
sidebar-tab-divider: <<colour tab-divider>>
+
sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>
+
sidebar-tab-foreground: <<colour tab-foreground>>
+
sidebar-tiddler-link-foreground-hover: <<colour primary>>
+
sidebar-tiddler-link-foreground: <<colour tab-foreground>>
+
site-title-foreground: #353748
+
static-alert-foreground: #aaaaaa
+
tab-background-selected: #ffffff
+
tab-background: #eeeeee
+
tab-border-selected: #cccccc
+
tab-border: #cccccc
+
tab-divider: #d8d8d8
+
tab-foreground-selected: <<colour foreground>>
+
tab-foreground: #888888
+
table-border: #dddddd
+
table-footer-background: #a8a8a8
+
table-header-background: #f0f0f0
+
tag-background: #ffeedd
+
tag-foreground: #000
+
tiddler-background: <<colour background>>
+
tiddler-border: #ddd
+
tiddler-controls-foreground-hover: #888888;
+
tiddler-controls-foreground-selected: #888888;
+
tiddler-controls-foreground: #cccccc
+
tiddler-editor-background: <<colour background>>
+
tiddler-editor-border-image: #ffffff
+
tiddler-editor-border: rgba(0,0,0,.2)
+
tiddler-editor-fields-even: #e0e8e0
+
tiddler-editor-fields-odd: #f0f4f0
+
tiddler-info-background: #f8f8f8
+
tiddler-info-border: #dddddd
+
tiddler-info-tab-background: #f8f8f8
+
tiddler-link-background: <<colour background>>
+
tiddler-link-foreground: <<colour primary>>
+
tiddler-subtitle-foreground: #aaaaaa
+
tiddler-title-foreground: #333
+
toolbar-new-button:
+
toolbar-options-button:
+
toolbar-save-button:
+
toolbar-info-button:
+
toolbar-edit-button:
+
toolbar-close-button:
+
toolbar-delete-button:
+
toolbar-cancel-button:
+
toolbar-done-button:
+
untagged-background: #999999
+
very-muted-foreground: #888888
+5
tiddlywiki/themes/notebook/palettes/palette-grey.meta
···
+
description: A grey color palette for Notebook
+
name: Notebook Grey
+
tags: $:/tags/Palette $:/tags/notebook/Palette
+
title: $:/themes/nico/notebook/palettes/palette-grey
+
type: application/x-tiddler-dictionary
+12
tiddlywiki/themes/notebook/plugin.info
···
+
{
+
"title": "$:/themes/nico/notebook",
+
"name": "Notebook theme",
+
"description": "A clean, uncluttered TiddlyWiki theme",
+
"author": "NicolasPetton",
+
"version": "1.4.1",
+
"core-version": ">=5.1.22",
+
"source": "https://github.com/NicolasPetton/Notebook",
+
"list": "LICENSE changelog",
+
"dependents": "$:/themes/tiddlywiki/vanilla $:/plugins/nico/notebook-mobile",
+
"plugin-type": "theme"
+
}
+7
tiddlywiki/themes/notebook/settings/codefontfamily.tid
···
+
created: 20210101213404232
+
modified: 20210101214210227
+
tags:
+
title: $:/themes/nico/notebook/settings/codefontfamily
+
type: text/vnd.tiddlywiki
+
+
"Fira Mono","Liberation Mono",Menlo,Courier,monospace
+7
tiddlywiki/themes/notebook/settings/fontfamily.tid
···
+
created: 20210101213404232
+
modified: 20210101213411800
+
tags:
+
title: $:/themes/nico/notebook/settings/fontfamily
+
type: text/vnd.tiddlywiki
+
+
"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"
+8
tiddlywiki/themes/notebook/shortcuts/notebook-focus-search.tid
···
+
created: 20201210122048919
+
key: ((notebook-focus-search))
+
modified: 20210115130024907
+
tags: $:/tags/KeyboardShortcut
+
title: $:/themes/nico/notebook/shortcuts/notebook-focus-search
+
type: text/vnd.tiddlywiki
+
+
<$action-sendmessage $message="tm-focus-selector" $param=".nc-topbar input"/>
+13
tiddlywiki/themes/notebook/shortcuts/toggle-sidebar.tid
···
+
created: 20210115130000707
+
key: ((toggle-sidebar))
+
modified: 20210115130021883
+
tags: $:/tags/KeyboardShortcut
+
title: $:/themes/nico/notebook/shortcuts/toggle-sidebar
+
type: text/vnd.tiddlywiki
+
+
<$list
+
filter="[[$:/state/notebook-sidebar]is[missing]] [{$:/state/notebook-sidebar}removeprefix[yes]]"
+
emptyMessage="""<$action-setfield $tiddler="$:/state/notebook-sidebar" text="yes"/>"""
+
>
+
<$action-setfield $tiddler="$:/state/notebook-sidebar" text="no"/>
+
</$list>
+31
tiddlywiki/themes/notebook/stickytitles.tid
···
+
created: 20201217172915960
+
modified: 20201217180034682
+
title: $:/themes/nico/notebook/stickytitles
+
tags: $:/tags/Stylesheet
+
+
<$reveal state="$:/themes/nico/notebook/options/stickytitles" type="match" text="yes">
+
+
.tc-tiddler-title {
+
position: -webkit-sticky;
+
position: -moz-sticky;
+
position: -o-sticky;
+
position: -ms-sticky;
+
position: sticky;
+
top: {{$:/themes/nico/notebook/metrics/topbar-height}};
+
background: <<colour tiddler-background>>;
+
z-index: 500;
+
}
+
+
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
+
.tc-tiddler-title {
+
top: 0;
+
}
+
}
+
+
<$list filter="[range[100]]">
+
`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {
+
z-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;
+
}
+
`
+
</$list>
+
</$reveal>
+5
tiddlywiki/themes/notebook/tags/Sidebar.tid
···
+
created: 20200429164516951
+
list: $:/themes/nico/notebook/ui/Buttons/menu $:/themes/nico/notebook/ui/Sidebar/Headings $:/themes/nico/notebook/ui/Sidebar/Search $:/themes/nico/notebook/Sidebar/Sections
+
modified: 20201210205606504
+
title: $:/themes/nico/notebook/tags/Sidebar
+
type: text/vnd.tiddlywiki
+5
tiddlywiki/themes/notebook/tags/SidebarSection.tid
···
+
created: 20200429201017275
+
list: $:/themes/nico/notebook/ui/Sidebar/Open $:/themes/nico/notebook/ui/Sidebar/Recent $:/themes/nico/notebook/ui/Sidebar/Tools $:/themes/nico/notebook/ui/Sidebar/More
+
modified: 20201210215658901
+
title: $:/themes/nico/notebook/tags/SidebarSection
+
type: text/vnd.tiddlywiki
+22
tiddlywiki/themes/notebook/ui/Bottombar.tid
···
+
created: 20200429113453340
+
modified: 20201210210230886
+
tags: $:/tags/PageTemplate
+
title: $:/themes/nico/notebook/ui/Bottombar
+
type: text/vnd.tiddlywiki
+
+
<$reveal state="$:/state/notebook-bottombar" type="match" text="yes" default="yes" retain="yes" animate="yes">
+
<div class="nc-bar nc-bottombar">
+
<$list filter="[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]" variable="listItem">
+
<$reveal type="nomatch" state=<<config-title>> text="hide" tag="div">
+
<$transclude tiddler=<<listItem>> mode="block"/>
+
</$reveal>
+
</$list>
+
<div class="left">
+
{{$:/themes/nico/notebook/ui/Buttons/menu}}
+
</div>
+
<div class="right">
+
{{$:/core/ui/SideBarSegments/page-controls}}
+
</div>
+
</div>
+
</$reveal>
+
+38
tiddlywiki/themes/notebook/ui/Buttons/SwitchPalette.tid
···
+
created: 20201210171047824
+
description: Toggle between grey/beige colour palette
+
modified: 20210118213335643
+
tags: $:/tags/PageControls
+
title: $:/themes/nico/notebook/ui/Buttons/SwitchPalette
+
type: text/vnd.tiddlywiki
+
+
<span class="desktop-only">
+
<$vars
+
palettes="[all[tiddlers+shadows]tag[$:/tags/notebook/Palette]]"
+
popupTiddler=<<qualify "$:/state/notebook/palette-dropdown">>
+
>
+
<$button
+
popup=<<popupTiddler>>
+
tooltip="Switch colours"
+
aria-label="Switch colours"
+
class=<<tv-config-toolbar-class>>
+
>
+
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
+
{{$:/themes/nico/notebook/images/color-switch}}
+
</$list>
+
+
<$list filter="[<tv-config-toolbar-text>match[yes]]">
+
<span class="tc-btn-text">Switch colours</span>
+
</$list>
+
+
<$reveal state=<<popupTiddler>> type="popup" position="belowleft" class="tc-drop-down">
+
<$list filter=<<palettes>>>
+
<$button class="tc-btn-invisible">
+
{{!!name}}
+
<$action-setfield $tiddler="$:/palette" text={{!!title}}/>
+
</$button>
+
</$list>
+
</$reveal>
+
+
</$button>
+
</$vars>
+
</span>
+17
tiddlywiki/themes/notebook/ui/Buttons/menu.tid
···
+
created: 20200429115248943
+
modified: 20210124211756417
+
tags:
+
title: $:/themes/nico/notebook/ui/Buttons/menu
+
type: text/vnd.tiddlywiki
+
+
<$reveal state="$:/state/notebook-sidebar" type="match" text="yes" default="no" retain="yes" animate="no">
+
<$button set="$:/state/notebook-sidebar" setTo="no" tooltip="Toggle menu" class="tc-btn-invisible sidebar-toggle open">
+
{{$:/themes/nico/notebook/images/bars}}
+
</$button>
+
</$reveal>
+
+
<$reveal type="nomatch" state="$:/state/notebook-sidebar" text="yes">
+
<$button set="$:/state/notebook-sidebar" setTo="yes" tooltip="Toggle menu" class="tc-btn-invisible sidebar-toggle">
+
{{$:/themes/nico/notebook/images/bars}}
+
</$button>
+
</$reveal>
+62
tiddlywiki/themes/notebook/ui/Search.tid
···
+
created: 20200429191943257
+
modified: 20210126170723413
+
title: $:/themes/nico/notebook/ui/Search
+
type: text/vnd.tiddlywiki
+
+
\define advanced-search-actions()
+
<$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/notebook-search}}/>
+
<$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/>
+
<$action-navigate $to="$:/AdvancedSearch"/>
+
\end
+
+
\define input-accept-actions()
+
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]">
+
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
+
<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>
+
</$list>
+
\end
+
+
\define cancel-search-actions()
+
<$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>""">
+
<$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/>
+
<$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list>
+
\end
+
+
<$vars editTiddler="$:/temp/search"
+
searchTiddler="$:/temp/search/input"
+
searchListState=<<qualify "$:/state/search-list/selected-item">>>
+
<$macrocall $name="keyboard-driven-input"
+
tiddler=<<editTiddler>>
+
storeTitle=<<searchTiddler>>
+
selectionStateTitle=<<searchListState>>
+
refreshTitle="$:/temp/search/refresh"
+
type="search"
+
tag="input"
+
focus={{$:/config/Search/AutoFocus}}
+
focusPopup="$:/state/popup/notebook-search"
+
class="tc-popup-handle"
+
filterMinLength={{$:/config/Search/MinLength}}
+
placeholder="Search..."
+
inputAcceptActions=<<input-accept-actions>>
+
inputCancelActions=<<cancel-search-actions>>
+
cancelPopups="yes"
+
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]"
+
/>
+
<$button
+
tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}
+
aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}
+
class="tc-btn-invisible tc-page-controls"
+
>
+
{{$:/core/images/advanced-search-button}}
+
<<advanced-search-actions>>
+
</$button>
+
<$reveal tag="div" class="tc-block-dropdown-wrapper" state="$:/state/popup/notebook-search" type="nomatch" text="" default="">
+
<$list filter="[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="" variable="listItem">
+
<div class="tc-block-dropdown tc-search-drop-down">
+
<$tiddler tiddler=<<configTiddler>>>
+
{{$:/themes/nico/notebook/ui/Sidebar/SearchResults}}
+
</$tiddler>
+
</div>
+
</$list>
+
</$reveal>
+
</$vars>
+23
tiddlywiki/themes/notebook/ui/Sidebar.tid
···
+
created: 20200428201218885
+
modified: 20210112213605486
+
tags: $:/tags/PageTemplate
+
title: $:/themes/nico/notebook/ui/Sidebar
+
type: text/vnd.tiddlywiki
+
+
\whitespace trim
+
\define config-title()
+
$:/config/SideBarSegments/Visibility/$(listItem)$
+
\end
+
+
<$reveal state="$:/state/notebook-sidebar" type="match" text="yes" default="no" retain="yes" animate="no">
+
<$scrollable fallthrough="no">
+
<div class="nc-sidebar">
+
<$list filter="[all[shadows+tiddlers]tag[$:/themes/nico/notebook/tags/Sidebar]!has[draft.of]]" variable="listItem">
+
<$reveal type="nomatch" state=<<config-title>> text="hide" tag="div">
+
<$transclude tiddler=<<listItem>> mode="inline"/>
+
</$reveal>
+
</$list>
+
</div>
+
</$scrollable>
+
</$reveal>
+
+16
tiddlywiki/themes/notebook/ui/Sidebar/Headings.tid
···
+
created: 20200429160014174
+
modified: 20201210210231267
+
tags: $:/themes/nico/notebook/tags/Sidebar
+
title: $:/themes/nico/notebook/ui/Sidebar/Headings
+
type: text/vnd.tiddlywiki
+
+
<div class="segment">
+
<div class="content">
+
<h1 class="tc-site-title">
+
{{$:/SiteTitle}}
+
</h1>
+
<div class="tc-site-subtitle">
+
{{$:/SiteSubtitle}}
+
</div>
+
</div>
+
</div>
+13
tiddlywiki/themes/notebook/ui/Sidebar/Search.tid
···
+
created: 20200429191943257
+
modified: 20210124220152702
+
tags: $:/themes/nico/notebook/tags/Sidebar
+
title: $:/themes/nico/notebook/ui/Sidebar/Search
+
type: text/vnd.tiddlywiki
+
+
<div class="mobile-only">
+
<div class="segment">
+
<div class="content search">
+
{{$:/themes/nico/notebook/ui/Search}}
+
</div>
+
</div>
+
</div>
+27
tiddlywiki/themes/notebook/ui/Sidebar/SearchResults.tid
···
+
created: 20200429191943257
+
modified: 20210126164631418
+
tags:
+
title: $:/themes/nico/notebook/ui/Sidebar/SearchResults
+
type: text/vnd.tiddlywiki
+
+
\define searchResultList()
+
<small>{{$:/language/Search/Matches/Title}}</small>
+
+
<$list filter="[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]">
+
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>
+
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
+
</span>
+
</$list>
+
+
<small>{{$:/language/Search/Matches/All}}</small>
+
+
<$list filter="[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]">
+
<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>
+
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
+
</span>
+
</$list>
+
\end
+
+
<div class="tc-search-results">
+
<<searchResultList>>
+
</div>
+32
tiddlywiki/themes/notebook/ui/Sidebar/SectionTemplate.tid
···
+
created: 20200429161226897
+
modified: 20210202213859460
+
title: $:/themes/nico/notebook/ui/Sidebar/SectionTemplate
+
type: text/vnd.tiddlywiki
+
+
\define sidebarHeading()
+
<$vars tv-wikilinks="no">
+
<$transclude field="caption">
+
<$view field="title"/>
+
</$transclude>
+
</$vars>
+
\end
+
+
<$reveal state="$:/state/notebook-sidebar-section" type="match" text=<<currentTiddler>> default="no" animate="no">
+
<div class="segment section open">
+
<$button set="$:/state/notebook-sidebar-section" setTo="" class="tc-btn-invisible label">
+
<<sidebarHeading>>
+
<span class="caret">{{$:/themes/nico/notebook/images/caret-down}}</span>
+
</$button>
+
<div class="content">
+
<$transclude $tiddler=<<currentTiddler>> mode="block"/>
+
</div>
+
</div>
+
</$reveal>
+
<$reveal state="$:/state/notebook-sidebar-section" type="nomatch" text=<<currentTiddler>> default="yes" animate="no">
+
<div class="segment section">
+
<$button set="$:/state/notebook-sidebar-section" setTo=<<currentTiddler>> class="tc-btn-invisible label">
+
<<sidebarHeading>>
+
<span class="caret">{{$:/themes/nico/notebook/images/caret-right}}</span>
+
</$button>
+
</div>
+
</$reveal>
+9
tiddlywiki/themes/notebook/ui/Sidebar/Sections.tid
···
+
created: 20200429163239707
+
modified: 20210112213620486
+
tags: $:/themes/nico/notebook/tags/Sidebar
+
title: $:/themes/nico/notebook/ui/Sidebar/Sections
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[all[shadows+tiddlers]!has[draft.of]tag[$:/tags/SideBar]]">
+
{{||$:/themes/nico/notebook/ui/Sidebar/SectionTemplate}}
+
</$list>
+25
tiddlywiki/themes/notebook/ui/Topbar.tid
···
+
created: 20200428203101797
+
modified: 20210124213834458
+
tags: $:/tags/PageTemplate
+
title: $:/themes/nico/notebook/ui/Topbar
+
type: text/vnd.tiddlywiki
+
+
<$reveal state="$:/state/notebook-topbar" type="match" text="yes" default="yes" retain="yes" animate="yes">
+
<div class="nc-topbar-wrapper">
+
<div class="nc-bar nc-topbar tc-adjust-top-of-scroll">
+
<$list filter="[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]" variable="listItem">
+
<$reveal type="nomatch" state=<<config-title>> text="hide" tag="div">
+
<$transclude tiddler=<<listItem>> mode="block"/>
+
</$reveal>
+
</$list>
+
<div class="left">
+
{{$:/themes/nico/notebook/ui/Buttons/menu}}
+
{{$:/themes/nico/notebook/ui/Search}}
+
</div>
+
<div class="right">
+
{{$:/core/ui/SideBarSegments/page-controls}}
+
</div>
+
</div>
+
</div>
+
</$reveal>
+
+10
tiddlywiki/tiddlers/$__DefaultTiddlers.tid
···
+
created: 20210916025924102
+
creator: Boris Mann
+
modified: 20210916034054316
+
modifier: Boris Mann
+
title: $:/DefaultTiddlers
+
type: text/vnd.tiddlywiki
+
+
Journal
+
[[Recent Notes]]
+
[[Colophon]]
+10
tiddlywiki/tiddlers/$__Import.tid
···
+
created: 20210916062145475
+
modified: 20210916062145475
+
status: complete
+
title: $:/Import
+
type: text/vnd.tiddlywiki
+
+
The following tiddlers were imported:
+
+
# [[$:/plugins/tobibeer/inc/macro]]
+
# [[$:/plugins/tobibeer/inc/styles]]
+6
tiddlywiki/tiddlers/$__SiteTitle.tid
···
+
created: 20210916025859626
+
modified: 20210916025904518
+
title: $:/SiteTitle
+
type: text/vnd.tiddlywiki
+
+
BMC Garden Notes
+2
tiddlywiki/tiddlers/$__StoryList.tid
···
+
list: Journal [[Recent Notes]] Colophon
+
title: $:/StoryList
+8
tiddlywiki/tiddlers/$__config_DefaultMoreSidebarTab.tid
···
+
created: 20210916030231633
+
creator: Boris Mann
+
modified: 20210916030231640
+
modifier: Boris Mann
+
title: $:/config/DefaultMoreSidebarTab
+
type: text/vnd.tiddlywiki
+
+
$:/core/ui/MoreSideBar/Missing
+6
tiddlywiki/tiddlers/$__config_EditToolbarButtons_Visibility_$__core_ui_Buttons_delete.tid
···
+
created: 20210916051746488
+
modified: 20210916051746495
+
title: $:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/delete
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_clear.tid
···
+
created: 20210916051635074
+
modified: 20210916051635080
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/clear
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_editor-height.tid
···
+
created: 20210916051710573
+
modified: 20210916051710580
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/editor-height
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_line-width.tid
···
+
created: 20210916051633754
+
modified: 20210916051633761
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/line-width
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_link.tid
···
+
created: 20210916051705228
+
modified: 20210916051705235
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/link
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_linkify.tid
···
+
created: 20210916051648816
+
modified: 20210916051648823
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/linkify
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_opacity.tid
···
+
created: 20210916051633296
+
modified: 20210916051633303
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/opacity
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_paint.tid
···
+
created: 20210916051632867
+
modified: 20210916051632874
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/paint
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_picture.tid
···
+
created: 20210916051706347
+
modified: 20210916051706354
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/picture
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_preview-type.tid
···
+
created: 20210916051714547
+
modified: 20210916051714555
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/preview-type
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_rotate-left.tid
···
+
created: 20210916051634145
+
modified: 20210916051634153
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/rotate-left
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_size.tid
···
+
created: 20210916051709035
+
modified: 20210916051709043
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/size
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_stamp.tid
···
+
created: 20210916051707029
+
modified: 20210916051707035
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/stamp
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__core_ui_EditorToolbar_transcludify.tid
···
+
created: 20210916051649314
+
modified: 20210916051649320
+
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/transcludify
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_bold.tid
···
+
created: 20210916051638516
+
modified: 20210916051638523
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/bold
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_heading-1.tid
···
+
created: 20210916051654999
+
modified: 20210916051655006
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_heading-2.tid
···
+
created: 20210916051656924
+
modified: 20210916051656931
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_heading-3.tid
···
+
created: 20210916051657728
+
modified: 20210916051657734
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_heading-4.tid
···
+
created: 20210916051700778
+
modified: 20210916051700784
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_heading-5.tid
···
+
created: 20210916051701737
+
modified: 20210916051701745
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_heading-6.tid
···
+
created: 20210916051703192
+
modified: 20210916051703200
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_italic.tid
···
+
created: 20210916051639317
+
modified: 20210916051639323
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/italic
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_list-bullet.tid
···
+
created: 20210916051652234
+
modified: 20210916051652240
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_list-number.tid
···
+
created: 20210916051653039
+
modified: 20210916051653046
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_mono-line.tid
···
+
created: 20210916051642183
+
modified: 20210916051642191
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_EditorToolbarButtons_Visibility_$__plugins_tiddlywiki_markdown_EditorToolbar_quote.tid
···
+
created: 20210916051650644
+
modified: 20210916051650650
+
title: $:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/quote
+
type: text/vnd.tiddlywiki
+
+
hide
+8
tiddlywiki/tiddlers/$__config_NewJournal_Tags.tid
···
+
created: 20210916030018559
+
creator: Boris Mann
+
modified: 20210916030610676
+
modifier: Boris Mann
+
title: $:/config/NewJournal/Tags
+
type: text/vnd.tiddlywiki
+
+
Journal
+8
tiddlywiki/tiddlers/$__config_NewJournal_Title.tid
···
+
created: 20210916030008277
+
creator: Boris Mann
+
modified: 20210916030015394
+
modifier: Boris Mann
+
title: $:/config/NewJournal/Title
+
type: text/vnd.tiddlywiki
+
+
MMM DDth, YYYY
+8
tiddlywiki/tiddlers/$__config_NewTiddler_Tags.tid
···
+
created: 20210916030616323
+
creator: Boris Mann
+
modified: 20210916030616331
+
modifier: Boris Mann
+
title: $:/config/NewTiddler/Tags
+
type: text/vnd.tiddlywiki
+
+
Notes
+6
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__core_ui_Buttons_control-panel.tid
···
+
created: 20210916051607823
+
modified: 20210916051607832
+
title: $:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel
+
type: text/vnd.tiddlywiki
+
+
hide
+8
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__core_ui_Buttons_home.tid
···
+
created: 20210916030101807
+
creator: Boris Mann
+
modified: 20210916030101814
+
modifier: Boris Mann
+
title: $:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home
+
type: text/vnd.tiddlywiki
+
+
show
+8
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__core_ui_Buttons_more-page-actions.tid
···
+
created: 20210916030058400
+
creator: Boris Mann
+
modified: 20210916030058409
+
modifier: Boris Mann
+
title: $:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions
+
type: text/vnd.tiddlywiki
+
+
show
+8
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__core_ui_Buttons_new-journal.tid
···
+
created: 20210916030051879
+
creator: Boris Mann
+
modified: 20210916030051886
+
modifier: Boris Mann
+
title: $:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal
+
type: text/vnd.tiddlywiki
+
+
show
+6
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__core_ui_Buttons_save-wiki.tid
···
+
created: 20210916051611198
+
modified: 20210916051611205
+
title: $:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/save-wiki
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__plugins_telmiger_simple-search_ui_Buttons_search.tid
···
+
created: 20210916061405837
+
modified: 20210916061407652
+
title: $:/config/PageControlButtons/Visibility/$:/plugins/telmiger/simple-search/ui/Buttons/search
+
type: text/vnd.tiddlywiki
+
+
show
+6
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__plugins_tiddlywiki_markdown_new-markdown-button.tid
···
+
created: 20210916051601976
+
modified: 20210916051601983
+
title: $:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button
+
type: text/vnd.tiddlywiki
+
+
hide
+6
tiddlywiki/tiddlers/$__config_PageControlButtons_Visibility_$__themes_nico_notebook_ui_Buttons_SwitchPalette.tid
···
+
created: 20210916061334060
+
modified: 20210916061334067
+
title: $:/config/PageControlButtons/Visibility/$:/themes/nico/notebook/ui/Buttons/SwitchPalette
+
type: text/vnd.tiddlywiki
+
+
hide
+8
tiddlywiki/tiddlers/$__config_WikiParserRules_Inline_wikilink.tid
···
+
created: 20210916030213731
+
creator: Boris Mann
+
modified: 20210916030213740
+
modifier: Boris Mann
+
title: $:/config/WikiParserRules/Inline/wikilink
+
type: text/vnd.tiddlywiki
+
+
disable
+6
tiddlywiki/tiddlers/$__palette.tid
···
+
created: 20210916061324958
+
modified: 20210916061525293
+
title: $:/palette
+
type: text/vnd.tiddlywiki
+
+
$:/themes/nico/notebook/palettes/palette-dark
+36
tiddlywiki/tiddlers/$__plugins_telmiger_simple-search_ui_Buttons_search.tid
···
+
caption: {{$:/plugins/telmiger/simple-search/images/search-button}} Search
+
created: 20181031170153387
+
creator: Thomas Elmiger
+
description: Search
+
modified: 20210916061400864
+
modifier: Thomas Elmiger
+
tags: $:/tags/PageControls
+
title: $:/plugins/telmiger/simple-search/ui/Buttons/search
+
type: text/vnd.tiddlywiki
+
+
\define search-button-label()
+
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
+
{{$:/plugins/telmiger/simple-search/images/search-button}}
+
</$list>
+
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
+
<span class="tc-btn-text"><$text text={{$:/plugins/telmiger/simple-search/ui/Buttons/search!!description}}/></span>
+
</$list>
+
\end
+
+
\define control-panel-button-on(class)
+
<$button tooltip={{$:/plugins/telmiger/simple-search/ui/Buttons/search!!description}} aria-label={{$:/plugins/telmiger/simple-search/ui/Buttons/search!!description}} class="""$(tv-config-toolbar-class)$ $class$""">
+
<<simple-search-openSearch>>
+
<<search-button-label>>
+
</$button>
+
\end
+
+
\define control-panel-button-off(class)
+
<$button tooltip="Close Search" aria-label="Hide tiddler Search" class="""$(tv-config-toolbar-class)$ $class$""">
+
<<simple-search-closeSearch>>
+
<<search-button-label>>
+
</$button>
+
\end
+
+
<$list filter="[list[$:/StoryList]] +[field:title[$:/Search]]" emptyMessage=<<control-panel-button-on>>>
+
<<control-panel-button-off "tc-selected">>
+
</$list>
+18
tiddlywiki/tiddlers/$__plugins_tiddlywiki_markdown_new-markdown-button.tid
···
+
caption: {{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}
+
created: 20210916051623335
+
description: {{$:/language/Buttons/NewMarkdown/Hint}}
+
modified: 20210916051623344
+
tags: $:/tags/PageControls
+
title: $:/plugins/tiddlywiki/markdown/new-markdown-button
+
type: text/vnd.tiddlywiki
+
+
\whitespace trim
+
<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>
+
<$action-sendmessage $message="tm-new-tiddler" type="text/x-markdown"/>
+
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
+
{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}
+
</$list>
+
<$list filter="[<tv-config-toolbar-text>match[yes]]">
+
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>
+
</$list>
+
</$button>
+29
tiddlywiki/tiddlers/$__plugins_tobibeer_inc_macro.tid
···
+
created: 20210911064535767
+
creator: Boris Mann
+
modified: 20210916062145574
+
modifier: Boris Mann
+
tags: $:/tags/Macro
+
title: $:/plugins/tobibeer/inc/macro
+
type: text/vnd.tiddlywiki
+
+
\define tb-inc(tiddler)
+
<div class="tb-inc" title="""transcluded tiddler '$tiddler$'""">
+
<$tiddler tiddler="""$tiddler$""">
+
<div class="tb-inc-controls tc-tiddler-controls">
+
<$list filter="[list[$:/plugins/tobibeer/inc/toolbar!!text]]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list>
+
</div>
+
<p class="tbinc-title">[[$tiddler$]]</p>
+
<div class="tb-inc-tiddler">
+
<$transclude mode=block/>
+
</div>
+
</$tiddler>
+
</div>
+
\end
+
\define {(tiddler)
+
<$reveal type="match" text="""$tiddler$""" default="">
+
<$macrocall $name="tb-inc" tiddler=<<currentTiddler>>/>
+
</$reveal>
+
<$reveal type="nomatch" text="""$tiddler$""" default="">
+
<$macrocall $name="tb-inc" tiddler="""$tiddler$"""/>
+
</$reveal>
+
\end
+34
tiddlywiki/tiddlers/$__plugins_tobibeer_inc_styles.css
···
+
.tb-inc {
+
/* background-color: #F0F8FF; */
+
padding: 2px 10px 2px 20px;
+
border: 1px solid #ccc !important;
+
border-radius: 16px;
+
}
+
+
p.tbinc-title {
+
font-size: small;
+
text-align: right;
+
margin-right: 10px;
+
}
+
+
.tb-inc-controls{
+
margin-top:-2em;
+
padding: 5px;
+
display:none;
+
}
+
.tb-inc-tab-content .tb-inc{
+
margin:0;
+
padding:0;
+
position:relative;
+
}
+
.tb-inc-tab-content .tb-inc-controls{
+
position:absolute;
+
margin-top:-5px;
+
right:0;
+
top:0;
+
}
+
.tb-inc:hover > .tb-inc-controls{
+
display:block;
+
float:right;
+
}
+
+7
tiddlywiki/tiddlers/$__plugins_tobibeer_inc_styles.css.meta
···
+
created: 20210911063543477
+
creator: Boris Mann
+
modified: 20210916063130632
+
modifier: Boris Mann
+
tags: $:/tags/Stylesheet
+
title: $:/plugins/tobibeer/inc/styles
+
type: text/css
+5
tiddlywiki/tiddlers/$__tags_PageControls.tid
···
+
created: 20210916051623335
+
list: $:/core/ui/Buttons/home $:/core/ui/Buttons/new-tiddler $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/more-page-actions $:/core/ui/Buttons/close-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/permaview $:/plugins/tiddlywiki/markdown/new-markdown-button $:/core/ui/Buttons/new-image $:/core/ui/Buttons/import $:/core/ui/Buttons/export-page $:/core/ui/Buttons/control-panel $:/core/ui/Buttons/advanced-search $:/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
+
modified: 20210916051628008
+
title: $:/tags/PageControls
+
type: text/vnd.tiddlywiki
+5
tiddlywiki/tiddlers/$__tags_ViewToolbar.tid
···
+
created: 20210916051525955
+
list: $:/core/ui/Buttons/more-tiddler-actions $:/core/ui/Buttons/edit $:/core/ui/Buttons/close $:/core/ui/Buttons/info $:/core/ui/Buttons/new-here $:/core/ui/Buttons/new-journal-here $:/core/ui/Buttons/clone $:/core/ui/Buttons/export-tiddler $:/core/ui/Buttons/delete $:/core/ui/Buttons/permalink $:/core/ui/Buttons/permaview $:/core/ui/Buttons/open-window $:/core/ui/Buttons/close-others $:/core/ui/Buttons/fold-others $:/core/ui/Buttons/fold $:/core/ui/Buttons/fold-bar
+
modified: 20210916051532377
+
title: $:/tags/ViewToolbar
+
type: text/vnd.tiddlywiki
+6
tiddlywiki/tiddlers/$__theme.tid
···
+
created: 20210916061305933
+
modified: 20210916061305948
+
title: $:/theme
+
type: text/vnd.tiddlywiki
+
+
$:/themes/nico/notebook
+6
tiddlywiki/tiddlers/$__themes_nico_notebook_options_reveal-tiddler-controls-on-hover.tid
···
+
created: 20210916061455155
+
modified: 20210916061455162
+
title: $:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover
+
type: text/vnd.tiddlywiki
+
+
yes
+11
tiddlywiki/tiddlers/Adding plugins under TiddlyWiki on NodeJS.tid
···
+
created: 20210916055221950
+
modified: 20210916055706235
+
tags: TiddlyWiki [[TiddlyWiki on NodeJS]] twtip
+
title: Adding plugins under TiddlyWiki on NodeJS
+
type: text/vnd.tiddlywiki
+
+
Short answer is, even if you start and stop the NodeJS server, you need to refresh the HTML page to get changes to show in TW.
+
+
As well, you need to put plugins in `plugins/plugin-folder`, without including the author namespace.
+
+
I tried various versions of adding plugin paths, but that means keeping it outside the working folder? I never got this working, and it turns out the way that various plugins are stored in Github, I'm better off checking them in directly if I need them. Yes, updating is going to be relatively painful.
+13
tiddlywiki/tiddlers/Aliases Plugin.tid
···
+
created: 20210907072533168
+
creator: Boris Mann
+
github: https://github.com/mklauber/tiddly-aliases/
+
modified: 20210916054844419
+
modifier: Boris Mann
+
tags: plugin TiddlyWiki
+
title: Aliases Plugin
+
type: text/vnd.tiddlywiki
+
url: https://mklauber.github.io/tw5-plugins/
+
+
Add a field `aliases` and enter in what other names should resolve to this one.
+
+
If more than one, shows a disambiguation page.
+12
tiddlywiki/tiddlers/Auto-completion Plugin.tid
···
+
created: 20210907072448356
+
modified: 20210916031713249
+
tags: plugin
+
title: Auto-completion Plugin
+
type: text/vnd.tiddlywiki
+
url: http://snowgoon88.github.io/TW5-extendedit/
+
+
Installed $:/plugins/snowgoon88/edit-comptext
+
+
!! README
+
+
{{$:/plugins/snowgoon88/edit-comptext/readme}}
+17
tiddlywiki/tiddlers/Bookmarks.tid
···
+
created: 20210916065117023
+
modified: 20210916065339102
+
tags: list
+
title: Bookmarks
+
type: text/vnd.tiddlywiki
+
+
!! Links
+
+
<$list filter="[has[url]!sort[created]]">
+
<li><$link>{{!!title}}</$link> <a href="{{!!url}}">{{!!url}}</a></li>
+
</$list>
+
+
!! Github
+
+
<$list filter="[has[github]!sort[created]]">
+
<li><$link>{{!!title}}</$link> <a href="{{!!github}}">{{!!github}}</a></li>
+
</$list>
+25
tiddlywiki/tiddlers/Colophon.tid
···
+
created: 20210907053909500
+
creator: Boris Mann
+
modified: 20210916054154526
+
modifier: Boris Mann
+
tags:
+
title: Colophon
+
type: text/vnd.tiddlywiki
+
+
This is a TiddlyWiki which gets [[run on NodeJS|TiddlyWiki on NodeJS]].
+
+
It is published via Github Actions.
+
+
!! Updates
+
+
<$list filter="[tag[Colophon]!sort[created]]">
+
<li><$view field="created" format="date" template="MMM DDth, YYYY"/> <$link>{{!!title}}</$link></li>
+
</$list>
+
+
!! To Do
+
+
{{ To Do List }}
+
+
!! Done
+
+
{{ Done List }}
+8
tiddlywiki/tiddlers/Date Picker Plugin.tid
···
+
created: 20210907070054124
+
modified: 20210916054945252
+
tags: plugin dates TiddlyWiki
+
title: Date Picker Plugin
+
type: text/vnd.tiddlywiki
+
url: http://kixam.github.io/TW5-datePicker/
+
+
Can use it to more easily do the [[Editing the created or modified dates]] using an input tag or a calendar picker.
+53
tiddlywiki/tiddlers/DateFormat.tid
···
+
created: 20140418142957325
+
modified: 20210916060549578
+
tags: dates TiddlyWiki twtip [[TW Docs]]
+
title: DateFormat
+
type: text/vnd.tiddlywiki
+
url: https://tiddlywiki.com/#DateFormat
+
+
When used to display date values (with the `format` attribute set to ''date''), the ViewWidget accepts a `template` attribute that allows the format of the date values to be specified. The format string is processed with the following substitutions:
+
+
|!Token |!Substituted Value |
+
|`DDD` |Day of week in full (eg, "Monday") |
+
|`ddd` |Short day of week (eg, "Mon") |
+
|`DD` |Day of month |
+
|`0DD` |Adds a leading zero |
+
|`DDth` |Adds a suffix |
+
|`WW` |ISO-8601 week number of year |
+
|`0WW` |Adds a leading zero |
+
|`MMM` |Month in full (eg, "July") |
+
|`mmm` |Short month (eg, "Jul") |
+
|`MM` |Month number |
+
|`0MM` |Adds leading zero |
+
|`YYYY` |Full year |
+
|`YY` |Two digit year |
+
|`wYYYY` |Full year with respect to week number |
+
|`aYYYY` |<<.from-version "5.1.23">> Full year but negative dates are displayed as positive |
+
|`wYY` |Two digit year with respect to week number |
+
|`{era:BCE||CE}` |<<.from-version "5.1.23">> Displays a different string for years that are negative, zero or positive (see below) |
+
|`hh` |Hours |
+
|`0hh` |Adds a leading zero |
+
|`hh12` |Hours in 12 hour clock |
+
|`0hh12` |Hours in 12 hour clock with leading zero |
+
|`mm` |Minutes |
+
|`0mm` |Minutes with leading zero |
+
|`ss` |Seconds |
+
|`0ss` |Seconds with leading zero |
+
|`XXX` |Milliseconds |
+
|`0XXX` |Milliseconds with leading zero |
+
|`am` or `pm` |Lower case AM/PM indicator |
+
|`AM` or `PM` |Upper case AM/PM indicator |
+
|`TZD` |Timezone offset |
+
|`\x` |Used to escape a character that would otherwise have special meaning |
+
|`[UTC]`|Time-shift the represented date to UTC. Must be at very start of format string|
+
+
Note that other text is passed through unchanged, allowing commas, colons or other separators to be used.
+
+
The `{era:BCE||CE}` notation can specify different strings for years that are negative, zero or positive. For example `{era:BC|Z|AD}` would display `BC` for negative years, `AD` for positive years, and `Z` for year zero.
+
+
! Examples
+
+
|!Template |!Output |
+
|`DDth MMM YYYY` |16th February 2011 |
+
|`DDth MMM \M\M\M YYYY` |16th February MMM 2011 |
+
|`DDth mmm YYYY 0hh:0mm:0ss` |16th Feb 2011 11:38:42 |
+7
tiddlywiki/tiddlers/Display github link.tid
···
+
created: 20210916052622475
+
creator: Boris Mann
+
modified: 20210916052653639
+
modifier: Boris Mann
+
tags: [[To Do]] template
+
title: Display github link
+
type: text/vnd.tiddlywiki
+11
tiddlywiki/tiddlers/Done List.tid
···
+
created: 20210916033407192
+
creator: Boris Mann
+
modified: 20210916033418879
+
modifier: Boris Mann
+
tags: list
+
title: Done List
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[tag[Done]!sort[created]]">
+
<li><$link>{{!!title}}</$link></li>
+
</$list>
+11
tiddlywiki/tiddlers/Editing the created or modified dates.tid
···
+
created: 20210907053346783
+
modified: 20210916054940109
+
tags: dates fields twtip TiddlyWiki
+
title: Editing the created or modified dates
+
type: text/vnd.tiddlywiki
+
+
You can see the `created` or `modified` fields with the info button.
+
+
To modify them, you can use the "Add a new field" area, using the exact names.
+
+
The field value is a timestamp that looks like `20210907052837741` - YYYYMMDDHHmm plus whatever those micro seconds are, in absolute UTC time.
+11
tiddlywiki/tiddlers/Figure out how to add plugins.tid
···
+
created: 20210916040648970
+
creator: Boris Mann
+
modified: 20210916062609972
+
modifier: Boris Mann
+
tags: [[To Do]] TiddlyWiki Done
+
title: Figure out how to add plugins
+
type: text/vnd.tiddlywiki
+
+
Under [[TiddlyWiki on NodeJS]], need to figure out how to add plugins.
+
+
<<{ [[Adding plugins under TiddlyWiki on NodeJS]]>>
+11
tiddlywiki/tiddlers/Import existing notes into TW.tid
···
+
created: 20210916033704100
+
creator: Boris Mann
+
modified: 20210916033851290
+
modifier: Boris Mann
+
tags: [[To Do]] Jekyll Markdown
+
title: Import existing notes into TW
+
type: text/vnd.tiddlywiki
+
+
There are 222 items in the notes folder of the site. Plus a handful more in my journal section.
+
+
I'll probably want to import them as their native Markdown to start, so will need the [[Markdown Plugin]] installed.
+11
tiddlywiki/tiddlers/Inc Plugin.tid
···
+
created: 20210911163113341
+
github: https://github.com/tobibeer/tw5-inc
+
modified: 20210916064306494
+
tags: plugin transclusion macro TiddlyWiki
+
title: Inc Plugin
+
type: text/vnd.tiddlywiki
+
url: https://tobibeer.github.io/tw5-plugins/#inc
+
+
Enhance transclusion by including tiddlers with an on-hover toolbar, a macro plugin by [[Tobi Beer]].
+
+
I posted about it to [[Talk TW]] https://talk.tiddlywiki.org/t/inc-plugin-enhance-transclusion-by-including-tiddlers-with-an-on-hover-toolbar/691
+39
tiddlywiki/tiddlers/Initial site setup.tid
···
+
created: 20210916035311409
+
creator: Boris Mann
+
modified: 20210916065419030
+
modifier: Boris Mann
+
tags: Colophon
+
title: Initial site setup
+
type: text/vnd.tiddlywiki
+
+
Ran the [[TiddlyWiki on NodeJS]] command to create a new server version:
+
+
`tiddlywiki mynewwiki --init server`
+
+
All it does is create a default `tiddlywiki.info` file.
+
+
Created a new `notes` folder at the top level of my [[bmcgarden]] git repo. Added a `.gitkeep` to it -- static generated tiddlywiki files will go in here.
+
+
Created a `tiddlywiki` folder, this is where the source tiddlers will live, and maybe a one page `index.html` version of tiddlywiki?
+
+
Did the [[Merge in content from twtips]].
+
+
Created [[To Do List]] and [[Done List]], and used the <<tag list>> tag to track other re-usable lists.
+
+
Started writing a first [[Journal]] page.
+
+
Lost my mind researching [[TiddlyWiki on NodeJS]] and how to do plugins.
+
+
<<{ [[Adding plugins under TiddlyWiki on NodeJS]] >>
+
+
Installed the [[Auto-completion Plugin]]. This is all a bit trickier and more fragile because you have to find the github source, and then download ''those'' files. Github source is here https://github.com/snowgoon88/TW5-extendedit.
+
+
Now going to do [[Aliases Plugin]], the Github source for which is here: ~~https://github.com/mklauber/tw5-plugins~~ nope, that's a plugin library with submodules, actual source is here https://github.com/mklauber/tiddly-aliases/
+
+
Installed [[Wikitext Markup Reference Plugin]]. While looking at [[Thomas Elmiger]] plugins, also grabbed [[Simple Search Plugin]].
+
+
Enabled some <<tag template>> stuff.
+
+
Installed the [[Inc Plugin]] and dropped in the [[styles from twgroceries|https://boris.files.fission.name/p/twgroceries/#Style%20transcluded%20items]]. Minus the background colour and plus a rounded border radius.
+
+
Created a [[Bookmarks]] page that lists tiddlers with `url` field and a second list with `github` field.
+11
tiddlywiki/tiddlers/Journal.tid
···
+
created: 20210916034121365
+
creator: Boris Mann
+
modified: 20210916065342329
+
modifier: Boris Mann
+
tags: list
+
title: Journal
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[tag[Journal]!sort[created]]">
+
<li><$link>{{!!title}}</$link></li>
+
</$list>
+13
tiddlywiki/tiddlers/Merge in content from twtips.tid
···
+
created: 20210916032725768
+
creator: Boris Mann
+
modified: 20210916033532376
+
modifier: Boris Mann
+
tags: [[To Do]] Done
+
title: Merge in content from twtips
+
type: text/vnd.tiddlywiki
+
+
I started putting together a TiddlyWiki tips -- aka twtips -- site using [[TWOF]] at https://boris.files.fission.name/p/tiddlywiki/twtips.html
+
+
I don't want to run TOO many different sites, so I can just keep all the tips here.
+
+
Conveniently, because [[TiddlyWiki has amazing drag and drop support|TiddlyWiki drag and drop]], I just opened it in another window and dragged over all the content.
+10
tiddlywiki/tiddlers/Notebook Theme.tid
···
+
created: 20210916061057617
+
github: https://github.com/NicolasPetton/notebook
+
modified: 20210916061236289
+
tags: TiddlyWiki theme
+
title: Notebook Theme
+
type: text/vnd.tiddlywiki
+
url: https://nicolas.petton.fr/tw/notebook.html
+
+
By [[Nicolas Petton]]
+
+8
tiddlywiki/tiddlers/Posting to a Discourse forum using TiddlyWiki.tid
···
+
created: 20210907074642833
+
creator: Boris Mann
+
modified: 20210916040534890
+
modifier: Boris Mann
+
tags: Discourse TiddlyWiki twtip [[Talk TW]] Notes
+
title: Posting to a Discourse forum using TiddlyWiki
+
type: text/vnd.tiddlywiki
+
url: https://talk.tiddlywiki.org/t/posting-to-a-discourse-forum-using-tiddlywiki/491
+11
tiddlywiki/tiddlers/Recent Notes.tid
···
+
created: 20210916035137036
+
creator: Boris Mann
+
modified: 20210916040612264
+
modifier: Boris Mann
+
tags: list
+
title: Recent Notes
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[tag[Notes]!sort[modified]limit[5]]">
+
<li><$view field="created" format="date" template="MMM DDth"/> <$link>{{!!title}}</$link></li>
+
</$list>
+23
tiddlywiki/tiddlers/September 15th, 2021.tid
···
+
created: 20210916030119146
+
creator: Boris Mann
+
modified: 20210916040253575
+
modifier: Boris Mann
+
tags: Journal
+
title: September 15th, 2021
+
type: text/vnd.tiddlywiki
+
+
Well, I haven't done anything in my [[BMC]] website here for a long time, because I'm writing in many other different places.
+
+
Since I'm diving deep into [[TiddlyWiki]] these days, I thought I'd try running a TW for the notes section of my website.
+
+
Documenting and updating a [[Colophon]] is a long standing tradition for me, in the 20+ years of publishing my own writing on the web. The [[bmannconsulting colophon|https://bmannconsulting.com/colophon/]] is the version for the whole website over that time. Especially for self-programmable interface like TW, I've gotten in even more of a habit of writing down the changes I make over time.
+
+
For now, when I [[run this on my local machine under NodeJS|TiddlyWiki on NodeJS]], I'll be checking in the whole folder into Git. I'll need to do some of the following:
+
+
* [[Import existing notes into TW]] - there are only 222 of them, so not that big a job
+
* [[Static publish on Github via Github Actions]] - and figure out how that might work in parallel with my Jekyll publishing system?
+
* [[Merge in content from twtips]]
+
+
Other things that are part of [[Initial site setup]]:
+
+
{{ Initial site setup }}
+9
tiddlywiki/tiddlers/Static publish on Github via Github Actions.tid
···
+
created: 20210916033901704
+
creator: Boris Mann
+
modified: 20210916033959134
+
modifier: Boris Mann
+
tags: [[To Do]] [[Github Actions]]
+
title: Static publish on Github via Github Actions
+
type: text/vnd.tiddlywiki
+
+
I'll have to figure out [[TiddlyWiki Static Publishing]] and how that will work alongside Jekyll publishing and the [[Fission Publish]] action.
+8
tiddlywiki/tiddlers/TWOF.tid
···
+
aliases: [[TiddlyWiki on Fission]]
+
created: 20210916033627220
+
creator: Boris Mann
+
modified: 20210916040354605
+
modifier: Boris Mann
+
tags: TiddlyWiki Fission Notes
+
title: TWOF
+
type: text/vnd.tiddlywiki
+22
tiddlywiki/tiddlers/Thomas Elmiger.tid
···
+
created: 20210916053729497
+
modified: 20210916054027110
+
tags: Person TiddlyWiki developer
+
title: Thomas Elmiger
+
type: text/vnd.tiddlywiki
+
url: https://tid.li/
+
+
Maker of utilities for TiddlyWiki at https://tid.li/tw5/
+
+
His home page comments are pretty great:
+
+
<pre>
+
Take It Down
+
There will be Sunshine after Rain
+
Local storage will be the new cloud. Connect the dots.
+
+
Take control. Own your ideas. Do what you want.
+
+
Publish what you have to say. Keep the rest private.
+
+
Use free software like my utilities for TiddlyWiki.
+
</pre>
+12
tiddlywiki/tiddlers/Tiddly Groceries.tid
···
+
created: 20210907080405802
+
creator: Boris Mann
+
modified: 20210916054434479
+
modifier: Boris Mann
+
tags: Notes TiddlyWiki
+
title: Tiddly Groceries
+
type: text/vnd.tiddlywiki
+
url: https://marxsal.github.io/various/groceries.html
+
+
A TiddlyWiki that features a Shopping List, Stores, and Items. On the Items, you can pick which stores it is available at.
+
+
The code I used as the beginning for my [[twgroceries]] site. Mine is pretty heavily customized and extended at this point.
+9
tiddlywiki/tiddlers/TiddlyWiki Plugins List.tid
···
+
created: 20210916054739153
+
modified: 20210916060607192
+
tags: TiddlyWiki plugin list
+
title: TiddlyWiki Plugins List
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[tag[TiddlyWiki]tag[plugin]!sort[created]]">
+
<li><$link>{{!!title}}</$link></li>
+
</$list>
+11
tiddlywiki/tiddlers/TiddlyWiki on NodeJS.tid
···
+
created: 20210916031331718
+
creator: Boris Mann
+
modified: 20210916033556987
+
modifier: Boris Mann
+
tags: TiddlyWiki NodeJS
+
title: TiddlyWiki on NodeJS
+
type: text/vnd.tiddlywiki
+
+
TiddlyWiki has an npm package that you can run.
+
+
https://tiddlywiki.com/static/Installing%2520TiddlyWiki%2520on%2520Node.js.html
+11
tiddlywiki/tiddlers/To Do List.tid
···
+
created: 20210916033335011
+
creator: Boris Mann
+
modified: 20210916033348553
+
modifier: Boris Mann
+
tags: list
+
title: To Do List
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[tag[To Do]!tag[Done]!sort[created]]">
+
<li><$link>{{!!title}}</$link></li>
+
</$list>
+11
tiddlywiki/tiddlers/To Do.tid
···
+
created: 20210916030847335
+
creator: Boris Mann
+
modified: 20210916033356353
+
modifier: Boris Mann
+
tags:
+
title: To Do
+
type: text/vnd.tiddlywiki
+
+
These are mini reminders of things to do.
+
+
{{ To Do List }}
+10
tiddlywiki/tiddlers/ToDoNow Plugin.tid
···
+
created: 20210916060251853
+
modified: 20210916061031213
+
tags: TiddlyWiki plugin
+
title: ToDoNow Plugin
+
type: text/vnd.tiddlywiki
+
url: https://tid.li/tw5/tdn.html
+
+
By [[Thomas Elmiger]].
+
+
To Do's as tiddlers. Depends on a number of other plugins and scripts.
+11
tiddlywiki/tiddlers/Todolist Plugin.tid
···
+
created: 20210907060923805
+
github: https://github.com/kookma/TW-Todolist
+
modified: 20210916060614769
+
tags: plugin TiddlyWiki
+
title: Todolist Plugin
+
type: text/vnd.tiddlywiki
+
url: https://kookma.github.io/TW-Todolist/
+
+
By [[@kookma]]
+
+
To Dos are stored in data tiddlers as JSON, not as full tiddlers.
+10
tiddlywiki/tiddlers/URL Footer.tid
···
+
created: 20210907075730753
+
modified: 20210916054720313
+
tags: $:/tags/ViewTemplate footer url template
+
title: URL Footer
+
type: text/vnd.tiddlywiki
+
+
<$list filter="[is[current]has[url]]">
+
<hr />
+
Link: <a href={{!!url}}><$view field="url"/></a><br />
+
</$list>
+18
tiddlywiki/tiddlers/Upgrade to 5.2.0 pre-release.tid
···
+
created: 20210907064026330
+
creator: Boris Mann
+
modified: 20210916033156550
+
modifier: Boris Mann
+
tags: [[To Do]] [[Talk TW]] TiddlyWiki prerelease
+
title: Upgrade to 5.2.0 pre-release
+
type: text/vnd.tiddlywiki
+
+
I asked about this specifically for [[TiddlyWiki on NodeJS]] in the Talk TW forum: https://talk.tiddlywiki.org/t/pre-release-version-of-tiddlywiki-npm-package/753
+
+
+
<<<
+
I’m just getting back to working with TW on NodeJS. I have the 5.1.23 version of the npm package installed.
+
+
Is there a pre-release version of the npm package?
+
+
What is the expected way to install a pre-release version?
+
<<<
+10
tiddlywiki/tiddlers/Wikitext Markup Reference Plugin.tid
···
+
aliases: [[WMR Plugin]]
+
created: 20210907072943408
+
github: https://github.com/rimi/tw5-telmiger-plugins
+
modified: 20210916054851334
+
tags: plugin TiddlyWiki
+
title: Wikitext Markup Reference Plugin
+
type: text/vnd.tiddlywiki
+
url: https://tid.li/tw5/plugins.html#%24%3A%2Fplugins%2Ftelmiger%2FWMR
+
+
Visit the reference: [[WMR]]
+12
tiddlywiki/tiddlers/Wikitext Markup Reference.tid
···
+
aliases: WMR
+
created: 20210907073048189
+
modified: 20210916031713274
+
tags: wikitext
+
title: Wikitext Markup Reference
+
type: text/vnd.tiddlywiki
+
+
Installed via [[Wikitext Markup Reference Plugin]].
+
+
---
+
+
{{$:/plugins/telmiger/WMR/reference}}
+5
tiddlywiki/tiddlers/bmcgarden.tid
···
+
created: 20210916065108740
+
github: https://github.com/bmann/bmcgarden
+
modified: 20210916065108762
+
title: bmcgarden
+
type: text/vnd.tiddlywiki
+10
tiddlywiki/tiddlers/twgroceries.tid
···
+
created: 20210907080330330
+
creator: Boris Mann
+
modified: 20210916040448706
+
modifier: Boris Mann
+
tags: Notes TiddlyWiki
+
title: twgroceries
+
type: text/vnd.tiddlywiki
+
url: https://boris.files.fission.name/p/twgroceries/
+
+
My customized instance of [[Tiddly Groceries]], which is powered by [[TWOF]].
+41
tiddlywiki/tiddlywiki.info
···
+
{
+
"description": "BMC Garden Notes",
+
"plugins": [
+
"tiddlywiki/tiddlyweb",
+
"tiddlywiki/filesystem",
+
"tiddlywiki/highlight",
+
"tiddlywiki/twitter",
+
"tiddlywiki/markdown"
+
],
+
"themes": [
+
"tiddlywiki/vanilla",
+
"tiddlywiki/snowwhite"
+
],
+
"build": {
+
"index": [
+
"--rendertiddler",
+
"$:/plugins/tiddlywiki/tiddlyweb/save/offline",
+
"index.html",
+
"text/plain"
+
],
+
"static": [
+
"--rendertiddler",
+
"$:/core/templates/static.template.html",
+
"static.html",
+
"text/plain",
+
"--rendertiddler",
+
"$:/core/templates/alltiddlers.template.html",
+
"alltiddlers.html",
+
"text/plain",
+
"--rendertiddlers",
+
"[!is[system]]",
+
"$:/core/templates/static.tiddler.html",
+
"static",
+
"text/plain",
+
"--rendertiddler",
+
"$:/core/templates/static.template.css",
+
"static/static.css",
+
"text/plain"
+
]
+
}
+
}