tiddlywiki 5.3.0 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/bin/build-site.sh +1 -1
  2. package/boot/boot.js +6 -7
  3. package/core/images/new-journal-button.tid +1 -3
  4. package/core/modules/parsers/wikiparser/rules/fnprocdef.js +2 -2
  5. package/core/modules/parsers/wikiparser/rules/parameters.js +1 -1
  6. package/core/modules/startup/rootwidget.js +1 -0
  7. package/core/modules/startup/startup.js +5 -0
  8. package/core/modules/utils/dom/dragndrop.js +4 -2
  9. package/core/modules/utils/dom/http.js +19 -3
  10. package/core/modules/widgets/checkbox.js +3 -1
  11. package/core/modules/widgets/importvariables.js +1 -1
  12. package/core/modules/widgets/select.js +4 -0
  13. package/core/modules/widgets/transclude.js +69 -39
  14. package/core/modules/widgets/widget.js +7 -28
  15. package/core/modules/wiki.js +1 -1
  16. package/core/ui/AlertTemplate.tid +1 -0
  17. package/core/ui/EditTemplate.tid +1 -0
  18. package/core/ui/ImportPreviews/Text.tid +1 -0
  19. package/core/ui/PageStylesheet.tid +1 -0
  20. package/core/ui/PageTemplate.tid +1 -0
  21. package/core/ui/RootTemplate.tid +1 -0
  22. package/core/ui/StoryTiddlerTemplate.tid +1 -0
  23. package/core/ui/ViewTemplate/body/default.tid +1 -0
  24. package/core/ui/ViewTemplate.tid +1 -0
  25. package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
  26. package/core/wiki/config/ViewTemplateBodyFilters.multids +2 -1
  27. package/core/wiki/macros/toc.tid +2 -2
  28. package/core/wiki/tags/ViewTemplateBodyFilter.tid +1 -2
  29. package/editions/de-AT/tiddlers/external/tiddlywiki.files +1 -1
  30. package/editions/prerelease/tiddlers/{Release 5.3.1.tid → Release 5.3.2.tid } +30 -26
  31. package/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +1 -1
  32. package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
  33. package/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +1 -1
  34. package/editions/test/tiddlers/tests/data/functions/IndentedFunctions.tid +24 -0
  35. package/editions/test/tiddlers/tests/data/functions/WikifiedFunctions.tid +1 -1
  36. package/editions/test/tiddlers/tests/data/importvariables/WithSetWidgets.tid +23 -0
  37. package/editions/test/tiddlers/tests/data/importvariables/WithSetWidgets2.tid +22 -0
  38. package/editions/test/tiddlers/tests/data/importvariables/WithSetWidgetsAndMacros.tid +29 -0
  39. package/editions/test/tiddlers/tests/data/procedures/Nested-indented.tid +20 -0
  40. package/editions/test/tiddlers/tests/data/procedures/TrailingNewlines.tid +22 -0
  41. package/editions/test/tiddlers/tests/data/transclude/CustomWidget-Simple-Indented.tid +33 -0
  42. package/editions/test/tiddlers/tests/data/transclude/Parameterised-Shortcut-ParametersIndented.tid +20 -0
  43. package/editions/test/tiddlers/tests/data/transclude/Procedures-Double-Underscore.tid +26 -0
  44. package/editions/test/tiddlers/tests/data/widgets/SubstitutedAttributes.tid +5 -3
  45. package/editions/test/tiddlers/tests/test-filters.js +4 -4
  46. package/editions/tw5.com/tiddlers/community/resources/TiddlyWiki Posts.tid +3 -3
  47. package/editions/tw5.com/tiddlers/community/tutorials/GitHub Saver Tutorial by Mohammad.tid +5 -5
  48. package/editions/tw5.com/tiddlers/definitions/Git.tid +9 -0
  49. package/editions/tw5.com/tiddlers/definitions/GitHub.tid +6 -4
  50. package/editions/tw5.com/tiddlers/definitions/GitLab.tid +13 -0
  51. package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Fourth.tid +2 -0
  52. package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondThreeThree.tid +11 -1
  53. package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Third.tid +2 -0
  54. package/editions/tw5.com/tiddlers/filters/substitute Operator.tid +3 -3
  55. package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +1 -1
  56. package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
  57. package/editions/tw5.com/tiddlers/images/{New Release Banner.jpg.meta → New Release Banner.png.meta } +1 -1
  58. package/editions/tw5.com/tiddlers/macros/TagMacro.tid +3 -1
  59. package/editions/tw5.com/tiddlers/macros/examples/tag.tid +22 -1
  60. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +2 -2
  61. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-download-file.tid +3 -3
  62. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-edit-bitmap-operation.tid +3 -3
  63. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-edit-text-operation.tid +2 -2
  64. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-focus-selector.tid +2 -2
  65. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-http-request Example Random Dog.tid +90 -0
  66. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-http-request Example Zotero.tid +4 -3
  67. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-http-request.tid +4 -2
  68. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-modal.tid +2 -2
  69. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-new-tiddler.tid +3 -3
  70. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-notify.tid +3 -3
  71. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-external-window.tid +4 -3
  72. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-save-wiki.tid +3 -3
  73. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _procedure.tid +2 -2
  74. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _rules.tid +2 -2
  75. package/editions/tw5.com/tiddlers/pragmas/Pragmas.tid +3 -1
  76. package/editions/tw5.com/tiddlers/procedures/Procedure Definitions.tid +1 -1
  77. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.1.tid +80 -0
  78. package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +1 -1
  79. package/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid +1 -1
  80. package/editions/tw5.com/tiddlers/{Saving on Browser with TiddlyStow.tid → saving/Saving on Browser with TiddlyStow.tid } +2 -2
  81. package/editions/tw5.com/tiddlers/saving/Saving to a Git service.tid +5 -1
  82. package/editions/tw5.com/tiddlers/saving/Saving via a Minimal Web Server.tid +8 -11
  83. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_Macro.tid +1 -1
  84. package/editions/tw5.com/tiddlers/variables/Behaviour of invoked variables depends on how the variable was declared.tid +52 -0
  85. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter expression function call.tid +10 -0
  86. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter operator parameter.tid +11 -0
  87. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via normal wikitext.tid +11 -0
  88. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via widget attributes.tid +11 -0
  89. package/editions/tw5.com/tiddlers/variables/Variable Usage.tid +5 -49
  90. package/editions/tw5.com/tiddlers/widgets/ActionListopsWidget.tid +24 -2
  91. package/editions/tw5.com/tiddlers/widgets/ActionPopupWidget.tid +2 -2
  92. package/editions/tw5.com/tiddlers/widgets/ListWidget.tid +3 -1
  93. package/editions/tw5.com/tiddlers/widgets/SelectWidget.tid +1 -1
  94. package/editions/tw5.com/tiddlers/widgets/examples/ActionListopsWidget (Examples).tid +12 -1
  95. package/editions/tw5.com/tiddlers/wikitext/Anchor Links using HTML.tid +1 -1
  96. package/editions/tw5.com/tiddlers/wikitext/Styles and Classes in WikiText.tid +52 -19
  97. package/editions/tw5.com/tiddlers/wikitext/Variable Attribute Values.tid +5 -2
  98. package/editions/tw5.com/tiddlers/wikitext/Widget Attributes.tid +8 -3
  99. package/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +1 -0
  100. package/languages/pl-PL/Help/savewikifolder.tid +17 -4
  101. package/languages/zh-Hans/Help/savewikifolder.tid +5 -1
  102. package/languages/zh-Hant/Help/savewikifolder.tid +5 -1
  103. package/licenses/cla-individual.md +10 -0
  104. package/package.json +1 -1
  105. package/plugins/tiddlywiki/googleanalytics/googleanalytics.js +1 -1
  106. package/plugins/tiddlywiki/googleanalytics/settings.tid +1 -3
  107. package/plugins/tiddlywiki/jasmine/jasmine-plugin.js +9 -2
  108. package/plugins/tiddlywiki/jasmine/startup.js +2 -1
  109. package/readme.md +1 -1
  110. package/themes/tiddlywiki/vanilla/base.tid +8 -7
  111. package/editions/tw5.com/tiddlers/images/New Release Banner.jpg +0 -0
@@ -0,0 +1,11 @@
1
+ created: 20230726142925020
2
+ modified: 20230726150648189
3
+ tags: [[Variable Usage]]
4
+ title: Behaviour of variables invoked via normal wikitext
5
+ type: text/vnd.tiddlywiki
6
+
7
+ |tc-first-col-min-width|k
8
+ |!how declared|!behaviour|
9
+ |\define|All wikitext and variable substitution and textual substitution takes place|
10
+ |<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|All wikitext and variable substitution takes place|
11
+ |\function|Invoking a function in this way (`<<macro>>`) is a synonym for `<$text text={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded|
@@ -0,0 +1,11 @@
1
+ created: 20230726143332803
2
+ modified: 20230726150616232
3
+ tags: [[Variable Usage]]
4
+ title: Behaviour of variables invoked via widget attributes
5
+ type: text/vnd.tiddlywiki
6
+
7
+ |tc-first-col-min-width|k
8
+ |!how declared|!behaviour|
9
+ |\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the attribute's value|
10
+ |<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the attribute's value.|
11
+ |\function|When a function is invoked as `<div class=<<macro>>/>`, it is a synonym for `<div class={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded. That first result is used as the attribute's value. Note that functions are recursively processed even when invoked in this form. In other words a filter expression in a function can invoke another function and the processing will continue|
@@ -1,13 +1,9 @@
1
1
  created: 20230421020225031
2
- modified: 20230422144812613
2
+ modified: 20230726145912019
3
3
  tags:
4
4
  title: Variable Usage
5
5
  type: text/vnd.tiddlywiki
6
6
 
7
- \define m1(a1) $a1$ - <<__a1__>> - <<a1>>
8
- \procedure p1(a1) $a1$ - <<__a1__>> - <<a1>>
9
- \function f1(a1) "$a1$" "-" [<__a1__>] ="-" [<a1>] :and[join[ ]]
10
-
11
7
  !Ways to define variables and parameters
12
8
  |! how declared|! how parameters are defined|! accessing parameter values in the body|
13
9
  |\define|`()`|`$param$, <<__param__>>`|
@@ -100,50 +96,10 @@ These examples are meant to provide insight into the various ways of defining an
100
96
  </$let>
101
97
 
102
98
 
103
- !Behavior of invoked variables depends on how the variable was declared
104
-
105
- |!how invoked|!how declared|!behavior|
106
- |`<$transclude $variable=macro/>` or `<<macro>>` in normal wikitext context|\define|All wikitext and variable substitution and textual substitution takes place|
107
- |~|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|All wikitext and variable substitution takes place|
108
- |~|\function|Invoking a function in this way (`<<macro>>`) is a synonym for `<$text text={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded.|
109
- ||||
110
- |widget attribute: `<div class=<<macro>>/>`|\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the attribute's value|
111
- |~|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the attribute's value.|
112
- |~|\function|When a function is invoked as `<div class=<<macro>>/>`, it is a synonym for `<div class={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded. That first result is used as the attribute's value. Note that functions are recursively processed even when invoked in this form. In other words a filter expression in a function can invoke another function and the processing will continue|
113
- ||||
114
- |filter operator parameter: `[<macro>]`|\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the filter operator's parameter.|
115
- |~|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the filter operator's parameter.|
116
- |~|\function|The body text of the function is treated as a filter expression and evaluated. The first result is passed to the operator as a parameter. The remaining results are discarded|
117
- ||||
118
- |function call in a filter expression: `[function[macro]]`|\define, <<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Every function is a variable, but only variables defined using \function are invokable using the <<.olink function>> filter operator. Attempts to use a non-function variable is the same as if the function doesn't exist. The behavior in this case is like the identity function. All filter input is passed unchanged to the output.|
119
- |~|\function|The body text of the function is treated as a filter expression and evaluated. This filter expression can itself contain a function call. Filter expressions can be factored out into functions arbitrarily deep.|
120
-
121
- !! Examples
122
-
123
- Below is an example macro, procedure and function definition. All three forms of parameter substitution `$a1$`, `<<__a1__>>`, and `<<a1>>` are included in each definition. The output helps illustrate when each form of substitution will or will not have affect.
124
-
125
- ```
126
- \define m1(a1) $a1$ - <<__a1__>> - <<a1>>
127
- \procedure p1(a1) $a1$ - <<__a1__>> - <<a1>>
128
- \function f1(a1) $a1$ "-" [<__a1__>] ="-" [<a1>] :and[join[ ]]
129
- ```
130
-
131
- | !Variable transclusion|!output |
132
- | `<<m1 foo>>`|<<m1 foo>>|
133
- | `<<p1 foo>>`|<<p1 foo>>|
134
- | `<<f1 foo>>`|<<f1 foo>>|
135
- | !Widget attribute|!output |
136
- | `<$text text=<<m1 foo>>/>`|<$text text=<<m1 foo>>/>|
137
- | `<$text text=<<p1 foo>>/>`|<$text text=<<p1 foo>>/>|
138
- | `<$text text=<<f1 foo>>/>`|<$text text=<<f1 foo>>/>|
139
- | !Filter operator parameter|!output |
140
- | `[<m1 foo>]`|<$text text={{{[<m1 foo>]}}}/>|
141
- | `[<p1 foo>]`|<$text text={{{[<p1 foo>]}}}/>|
142
- | `[<f1 foo>]`|<$text text={{{[<f1 foo>]}}}/>|
143
- | !Function call in filter expression|!output |
144
- | `[function[m1],[foo]]`|<$text text={{{[function[m1],[foo]]}}}/>|
145
- | `[function[p1],[foo]]`|<$text text={{{[function[p1],[foo]]}}}/>|
146
- | `[function[f1],[foo]]`|<$text text={{{[function[f1],[foo]]}}}/>|
99
+ !Behaviour of invoked variables depends on how the variable was declared
100
+
101
+ {{Behaviour of invoked variables depends on how the variable was declared}}
102
+
147
103
 
148
104
  !Namespaces
149
105
 
@@ -1,6 +1,6 @@
1
1
  caption: action-listops
2
2
  created: 20141025120850184
3
- modified: 20230301183438774
3
+ modified: 20230805103548113
4
4
  myfield:
5
5
  tags: ActionWidgets Widgets
6
6
  title: ActionListopsWidget
@@ -22,6 +22,28 @@ The ''action-listops'' widget is invisible. Any content within it is ignored.
22
22
  |$subfilter |An optional subfilter expression, which takes the list being manipulated as input, and saves the modified list back to the field/index being manipulated |
23
23
  |$tags |An optional subfilter expression, which takes the <<.field tags>> field of the target tiddler as input, and saves the modified list of tags back to the <<.field tags>> field |
24
24
 
25
+ !! Note on subfilter expressions
26
+
27
+ If the manipulation depends on the current contents of the list, e.g. when using the <<.olink toggle>> operator to toggle the presence of an element, the [[Filter Run]] would be prefixed with the `+` / `:and` [[filter run prefix|Filter Expression]] so that it properly receives the list as input.
28
+
29
+ ```
30
+ <$action-listops $subfilter="+[toggle[List Item]]"/>
31
+ ```
32
+
33
+ The above widget will toggle the presence of the element <<.value "List Item">> in the field <<.field list>> of the current tiddler, removing or adding the element as necessary.
34
+
35
+ Similarly, if an element is to always be removed when it is present, the `-` / `:except` [[filter run prefix|Filter Expression]] can be used. Both of the following yield the same result:
36
+
37
+ ```
38
+ <$action-listops $subfilter="-[[List Item]]"/>
39
+ <$action-listops $subfilter="+[remove[List Item]]"/>
40
+ ```
41
+
42
+ Without any prefixes, the filter run output is simply [[dominantly appended|Dominant Append]] to the list.
43
+
44
+ See also the [[Examples|ActionListopsWidget (Examples)]].
45
+
46
+
25
47
  !! Using $filter or $subfilter
26
48
 
27
49
  Standalone use of the `$subfilter` attribute can be replaced by using a (more complicated) `$filter` attribute value.
@@ -103,4 +125,4 @@ Add 'abc' to 'myfield'
103
125
  The [[enlist Operator]] with `raw` suffix will enlist the list saved in <<.field myfield>> of the current tiddler without de-duplication, while e.g. the [[list Operator]] will always de-duplicate. The widget then adds the item <<.value abc>> -- whether or not it is already included in the list -- and replaces the original list in <<.field myfield>>.
104
126
 
105
127
 
106
- ! [[Examples|ActionListopsWidget (Examples)]]
128
+ ! [[Examples|ActionListopsWidget (Examples)]]
@@ -1,6 +1,6 @@
1
1
  caption: action-popup
2
2
  created: 20200303114556528
3
- modified: 20220815205132124
3
+ modified: 20230731193016105
4
4
  tags: Widgets ActionWidgets
5
5
  title: ActionPopupWidget
6
6
  type: text/vnd.tiddlywiki
@@ -30,6 +30,6 @@ Here is an example of button that triggers the "more" button in the sidebar "Too
30
30
  <$macrocall $name='wikitext-example-without-html'
31
31
  src='<$button>
32
32
  <$action-setfield $tiddler="$:/state/tab/sidebar--595412856" $value="$:/core/ui/SideBar/Tools"/>
33
- <$action-popup $state="$:/state/popup/more-2053862905" $coords="(0,20,0,0)"/>
33
+ <$action-popup $state="$:/state/popup/more--810643385" $coords="(0,20,0,0)"/>
34
34
  Click me!
35
35
  </$button>'/>
@@ -1,6 +1,6 @@
1
1
  caption: list
2
2
  created: 20131024141900000
3
- modified: 20220718120325494
3
+ modified: 20230725203601441
4
4
  tags: Widgets Lists
5
5
  title: ListWidget
6
6
  type: text/vnd.tiddlywiki
@@ -119,6 +119,8 @@ Displays as:
119
119
 
120
120
  Note that using the `counter` attribute can reduce performance when working with list items that dynamically reorder or update themselves. The best advice is only to use it when it is really necessary: to obtain a numeric index, or to detect the first or last entries in the list.
121
121
 
122
+ Setting `counter="transclusion"` is a handy way to make child elements for each list element be identified as unique. A common use case are multiple [[tag macros|tag Macro]] for the same tag generated by a list widget. Refer to [[tag macro examples|tag Macro (Examples)]] for more details.
123
+
122
124
  !! Edit mode
123
125
 
124
126
  The `<$list>` widget can optionally render draft tiddlers through a different template to handle editing, see DraftMechanism.
@@ -41,7 +41,7 @@ The content of the `<$select>` widget should be one or more HTML `<option>` or `
41
41
  |size |The number of rows to display in multiple selection mode |
42
42
  |actions |A string containing ActionWidgets to be triggered when the key combination is detected |
43
43
  |focus |<<.from-version "5.2.4">> Optional. Set to "yes" to automatically focus the HTML select element after creation |
44
-
44
+ |tabindex |<<.from-version "5.3.1">> Optional. Sets the `tabindex` attribute of the HTML select element to the given value |
45
45
  ! Examples
46
46
 
47
47
  !! Simple Lists
@@ -1,8 +1,9 @@
1
1
  created: 20230301174431218
2
2
  list: efg hlm pqr
3
- modified: 20230301174431218
3
+ modified: 20230805103601224
4
4
  myfield:
5
5
  revision: 0
6
+ tags: ActionListopsWidget
6
7
  title: ActionListopsWidget (Examples)
7
8
  type: text/vnd.tiddlywiki
8
9
 
@@ -47,6 +48,16 @@ Unmangle List
47
48
 
48
49
  </$list>"""/>
49
50
 
51
+ ---
52
+ The following example toggles the tag <<.value Examples>> for the current tiddler.
53
+
54
+ <$macrocall $name='wikitext-example-without-html'
55
+ src="""<$button>
56
+ <$action-listops $tags="+[toggle[Examples]]"/>
57
+ Toggle 'Examples' tag
58
+ </$button>
59
+ """/>
60
+
50
61
  ---
51
62
  In this example we shall append a few tags to the 'tags' field of this tiddler (the default). We shall then remove some of the appended tags.
52
63
 
@@ -46,7 +46,7 @@ That's it.
46
46
  <a id="#Bottom_of_tiddler"></a>
47
47
  ```
48
48
 
49
- *Add an <<.attr id>> attribute to any HTML5 tag and place a single `#` before the 'address' value. <a href="##Suggestions%0">Here are some suggestions of tags you can use.</a>
49
+ *Add an <<.attr id>> attribute to any HTML5 tag and place a single `#` before the 'address' value. <a href=<<qualify "##Suggestions-for-elements">>>Here are some suggestions of tags you can use.</a>
50
50
  * Place this code at the target location. E.g. at the bottom of the tiddler.
51
51
 
52
52
  ''Step 2: Create a link to the target anchor''
@@ -1,21 +1,23 @@
1
+ caption: Styles and Classes
1
2
  created: 20131205160532119
2
- modified: 20131205160549129
3
+ modified: 20230726105744098
3
4
  tags: WikiText [[How to apply custom styles]]
4
5
  title: Styles and Classes in WikiText
5
6
  type: text/vnd.tiddlywiki
6
- caption: Styles and Classes
7
7
 
8
- Content can be wrapped in `@@`double at signs`@@` to apply specified CSS styles or classes to it. There are multiple ways to use this syntax, as presented below.
8
+ CSS styles and classes can be applied to inline or block content wrapped in `@@double at signs@@`. Classes can be applied to certain block WikiText elements.
9
+
10
+ //Inline content// wrapped in `@@double at signs@@` without specifying style or class will be assigned the `tc-inline-style` class and displayed as highlighted text. The foreground and background colours of the highlighted text are defined as `highlight-background` and `highlight-foreground` in the current palette.
9
11
 
10
- Inline content wrapped in `@@`double at signs`@@` without specifying style or class will be assigned the `.tc-inline-style` and displayed as highlighted text. The foreground and background colours of the highlighted text are defined as `highlight-background` and `highlight-foreground` in the current palette.
12
+ <<wikitext-example src:"@@Highlighted text@@">>
11
13
 
12
- <<wikitext-example src:"@@some highlighted text@@">>
14
+ !! Styles
13
15
 
14
- Style attributes, e.g. `color`, each followed by `;` semicolon can be introduced immediately after the opening `@@`.
16
+ Multiple style attributes, e.g. `color`, each followed by `;` semicolon can be introduced immediately after the opening `@@`, without spaces in between.
15
17
 
16
- <<wikitext-example src:"@@color:steelblue;background-color:lightcyan;some styled text@@">>
18
+ <<wikitext-example src:"@@color:steelblue;background-color:lightcyan;Text with custom style@@">>
17
19
 
18
- Similarly a style can be applied to a multiline content:
20
+ Similarly, styles can be applied to //block content//. Wrapping block content in `@@` without specifying style or class has no effect.
19
21
 
20
22
  <<wikitext-example src:"@@background-color:lightcyan;
21
23
  * Item one
@@ -23,18 +25,49 @@ Similarly a style can be applied to a multiline content:
23
25
  @@
24
26
  ">>
25
27
 
26
- A class may be applied to a multiline content only:
28
+ !! Classes
27
29
 
28
- <<wikitext-example src:"@@.tc-double-spaced-list
29
- * Item one
30
- * Item two
30
+ The following `coloured-text` and `coloured-bg` classes are defined in this tiddler for demonstration purposes:
31
+
32
+
33
+ ```
34
+ .coloured-text {color: darkkhaki;}
35
+ .coloured-bg {background-color: cornsilk;}
36
+ ```
37
+
38
+ <style>
39
+ .coloured-text {color: darkkhaki;}
40
+ .coloured-bg {background-color: cornsilk;}
41
+ </style>
42
+
43
+ Multiple classes, each prefixed with `.`, can be introduced immediately after the opening `@@`, followed by a ` ` space. This works both for inline and block content:
44
+
45
+ <<wikitext-example src:"@@.coloured-text.coloured-bg Inline content with two assigned classes@@">>
46
+
47
+ <<wikitext-example src:"@@.coloured-bg
48
+ * Block content
49
+ * With one assigned class
31
50
  @@">>
32
51
 
33
- Multiple classes and styles can be used together:
52
+ Multiple classes and styles can be applied simultaneously. In case of inline content, the styles have to be defined first, followed by the classes.
34
53
 
35
- <<wikitext-example src:"@@.tc-double-spaced-list
36
- @@width:400px;background-color:lightcyan;
37
- * Item one
38
- * Item two
39
- @@
40
- ">>
54
+ <<wikitext-example src:"@@font-size:1.5em;.coloured-text.coloured-bg Text with custom style and classes@@">>
55
+
56
+ In case of block content, the styles and classes can be defined in a single line after the opening `@@` identically as for the inline content, or in separate lines, each beginning with `@@`:
57
+
58
+ <<wikitext-example src:"@@font-size:1.5em;
59
+ @@.coloured-text
60
+ @@.coloured-bg
61
+ * Block content
62
+ * With custom style and classes
63
+ @@">>
64
+
65
+ In a similar way classes, but not styles, can be applied to those block WikiText elements that are introduced through characters on the beginning of the line. The classes prefixed with `.` are specified immediately after the special characters, followed by a ` ` space.
66
+
67
+ <<wikitext-example src:"!!!.coloured-bg Heading with a custom background class.
68
+
69
+ * Standard list element.
70
+ *.coloured-bg List element with a custom background colour class.
71
+ *.coloured-text List element with a custom text colour class.
72
+ *.coloured-bg.coloured-text List element with both of the custom classes.
73
+ ">>
@@ -1,5 +1,5 @@
1
1
  created: 20230615045239825
2
- modified: 20230615045312961
2
+ modified: 20230726151053593
3
3
  tags: [[Widget Attributes]] WikiText
4
4
  title: Variable Attribute Values
5
5
  type: text/vnd.tiddlywiki
@@ -11,4 +11,7 @@ Variable attribute values are indicated with double angle brackets around a [[ma
11
11
  ...
12
12
  </div>
13
13
  ```
14
- <<.warning "The text from the definition of the macro will be retrieved and text substitution will be performed (i.e. <<.param $param$>> and <<.param &#36;(...)&#36;>> syntax). The value of the attribute value will be the resulting text. Any wiki syntax in that text (including further macro calls and variable references) will be left as-is.">>
14
+
15
+ The behaviour of variables invoked via widget attributes is not the same as when they are [[invoked via normal wikitext|Behaviour of variables invoked via normal wikitext]]. In addition, the behaviour depends on how the variable is declared:
16
+
17
+ {{Behaviour of variables invoked via widget attributes}}
@@ -1,14 +1,14 @@
1
1
  created: 20230615045526689
2
- modified: 20230615060059476
2
+ modified: 20230731210638956
3
3
  tags: WikiText
4
4
  title: Widget Attributes
5
5
  type: text/vnd.tiddlywiki
6
6
 
7
- Attributes of HTML elements and widgets can be specified in several different ways:
7
+ Attributes of [[HTML elements|HTML in WikiText]] and widgets can be specified in several different ways:
8
8
 
9
9
  * [[a literal string|Literal Attribute Values]]
10
10
  * [[a transclusion of a textReference|Transcluded Attribute Values]]
11
- * [[a transclusion of a macro/variable|Transcluded Attribute Values]]
11
+ * [[a transclusion of a macro/variable|Variable Attribute Values]]
12
12
  * [[as the result of a filter expression|Filtered Attribute Values]]
13
13
  * <<.from-version "5.3.0">> [[as the result of performing filter and variable substitutions on the given string|Substituted Attribute Values]]
14
14
 
@@ -19,3 +19,8 @@ Attributes of HTML elements and widgets can be specified in several different wa
19
19
  |filtered |triple curly braces around a filter expression|
20
20
  |substituted|single or triple backticks around the text to be processed for substitutions|
21
21
 
22
+
23
+ <$list filter="[[Literal Attribute Values]] [[Transcluded Attribute Values]] [[Variable Attribute Values]] [[Filtered Attribute Values]] [[Substituted Attribute Values]]">
24
+ <$link><h1><$text text=<<currentTiddler>>/></h1></$link>
25
+ <$transclude mode="block"/>
26
+ </$list>
@@ -20,6 +20,7 @@ Note that widgets inherit all the features of [[HTML in WikiText]]:
20
20
  ** Macro invocations (eg `attr=<<myMacro>>`)
21
21
  ** Transclusions (eg, `attr={{MyTiddler!!field}}`)
22
22
  ** Filtered transclusions (eg, `attr={{{ [filter[op]] }}}`)
23
+ ** <<.from-version "5.3.0">> [[Substituted Attribute Values]]
23
24
  * The content of a widget is [[parsed|WikiText Parser Modes]] in [[inline mode|Inline Mode WikiText]] unless the opening tag is followed by two linebreaks, which forces [[block mode|Block Mode WikiText]]
24
25
  ** [[inline mode|Inline Mode WikiText]] means that [[block mode|Block Mode WikiText]] parse rules like headings, tables and lists are not recognised
25
26
 
@@ -4,16 +4,29 @@ description: Zapisuje wiki do nowego folderu
4
4
  <<.from-version "5.1.20">> Zapisuje obecną wiki do nowego folderu wliczając tiddlery, wtyczki i konfigurację:
5
5
 
6
6
  ```
7
- --savewikifolder <wikifolderpath> [<filter>]
7
+ --savewikifolder <wikifolderpath> [<filter>] [ [<name>=<value>] ]
8
8
  ```
9
9
 
10
- * Docelowy folder musi być pusty lub nieistnieć
11
- * `filter` określa które tiddlery będą skopiowane, domyślnie to `[all[tiddlers]]`
10
+ * Docelowy folder musi być pusty lub nie istnieć
11
+ * Argument `filter` określa które tiddlery będą skopiowane, domyślnie to `[all[tiddlers]]`
12
12
  * Wtyczki z oficjalnej biblioteki wtyczek są zamieniane na odnośniki do tych wtyczek w pliku `tiddlywiki.info`
13
13
  * Własne wtyczki zostają wypakowane do osobnych folderów
14
14
 
15
+ Wspierane argumenty:
16
+
17
+ * ''filter'': wyrażenie filtra określające które tiddlery mają być uwzględnione w zapisanej wiki
18
+ * ''explodePlugins'': domyślna wartość to `yes`:
19
+ ** `yes` rozdzieli wtyczki na osobne pliki tiddlerów i zapisze je do podfolderu z wtyczkami
20
+ ** `no` każda wtyczka będzie zapisana jako jeden zbiorczy plik w formacie JSON w folderze z tiddlerami
21
+
15
22
  Typowe zastosowanie to konwersja pliku TiddlyWiki w formie pliku HTML do formatu folderu:
16
23
 
17
24
  ```
18
- tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder
25
+ tiddlywiki --load ./mojawiki.html --savewikifolder ./folderwiki
26
+ ```
27
+
28
+ Zapisanie wtyczek jako zwykłych tiddlerów:
29
+
19
30
  ```
31
+ tiddlywiki --load ./mojawiki.html --savewikifolder ./folderwiki explodePlugins=no
32
+ ```
@@ -15,7 +15,11 @@ description: 将维基保存到一个新的维基文件夹
15
15
  支持以下选项:
16
16
 
17
17
  * ''filter'':定义要包含在输出中的条目的筛选器操作符。
18
- * ''explodePlugins'':设置为 "no" 以将插件保存到目标维基文件夹的 tiddlers 目录中,以抑制破坏插件到其组成的影子条目中(默认为 "yes")。
18
+ * ''explodePlugins'': 默认为 "yes"
19
+ ** ''yes'' 将 "分解" 插件为单独的条目文件,并将其保存到维基文件夹内的插件目录中
20
+ ** ''no'' 将抑制分解插件到其组成的条目文件中。它将把插件保存为 tiddlers 文件夹中的单个 JSON 条目
21
+
22
+ 请注意,两个 ''explodePlugins'' 选项都会生成构建完全相同的原始维基的维基文件夹。区别在于插件在维基文件夹中的表示方式。
19
23
 
20
24
  常见的用法是将一个 TiddlyWiki HTML 文件转换成维基文件夹:
21
25
 
@@ -15,7 +15,11 @@ description: 將維基儲存到一個新的維基資料夾
15
15
  支援以下選項:
16
16
 
17
17
  * ''filter'':定義要包含在輸出中的條目的篩選器運算子。
18
- * ''explodePlugins'':設定為 "no" 以將插件儲存到目標維基資料夾的 tiddlers 目錄中,以抑制破壞插件到其組成的影子條目中(預設為 "yes")。
18
+ * ''explodePlugins'': 預設為 "yes"
19
+ ** ''yes'' 將 "分解" 插件為單獨的條目檔案,並將其儲存到維基資料夾內的插件目錄中
20
+ ** ''no'' 將抑制分解插件到其組成的條目檔案中。它將把插件儲存為 tiddlers 資料夾中的單個 JSON 條目
21
+
22
+ 請注意,兩個 ''explodePlugins'' 選項都會產生構建完全相同的原始維基的維基資料夾。區別在於插件在維基資料夾中的表示方式。
19
23
 
20
24
  常見的用法是將一個 TiddlyWiki HTML 檔案轉換成維基資料夾:
21
25
 
@@ -537,3 +537,13 @@ Tavin Cole, @tavin, 2023/05/25
537
537
  WhiteFall, @Zacharia2, 2023/06/04
538
538
 
539
539
  @oeyoews, 2023/06/30
540
+
541
+ Eric Haberstroh, @pille1842, 2023/07/23
542
+
543
+ @lilscribby, 2023-07-24
544
+
545
+ @TiddlyTweeter, 2023/07/25
546
+
547
+ @catter-fly, 2023/07/27
548
+
549
+ @cmo-pomerium, 2023/08/03
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tiddlywiki",
3
3
  "preferGlobal": "true",
4
- "version": "5.3.0",
4
+ "version": "5.3.1",
5
5
  "author": "Jeremy Ruston <jeremy@jermolene.com>",
6
6
  "description": "a non-linear personal web notebook",
7
7
  "contributors": [
@@ -3,7 +3,7 @@ title: $:/plugins/tiddlywiki/googleanalytics/googleanalytics.js
3
3
  type: application/javascript
4
4
  module-type: startup
5
5
 
6
- Runs Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`
6
+ Runs Google Analytics with the measurement ID in the tiddler `$:/GoogleAnalyticsMeasurementID`
7
7
 
8
8
  \*/
9
9
  (function(){
@@ -1,6 +1,4 @@
1
1
  title: $:/plugins/tiddlywiki/googleanalytics/settings
2
2
 
3
- You have only two value to set, only the first is mandatory:
4
-
5
- # ''[[Google Analytics Measurement ID|$:/GoogleAnalyticsMeasurementID]]'': (mandatory) a code of the form `G-XXXXXXXXXX` where X are digits or uppercase letters<br/><$edit-text tiddler="$:/GoogleAnalyticsMeasurementID" default="" tag="input"/>
3
+ ''[[Google Analytics Measurement ID|$:/GoogleAnalyticsMeasurementID]]'': (mandatory) a code of the form `G-XXXXXXXXXX` where X are digits or uppercase letters<br/><$edit-text tiddler="$:/GoogleAnalyticsMeasurementID" default="" tag="input"/>
6
4
 
@@ -94,7 +94,12 @@ exports.runTests = function(callback,specFilter) {
94
94
  if($tw.browser) {
95
95
  window.jasmineRequire = jasmineCore;
96
96
  $tw.modules.execute("$:/plugins/tiddlywiki/jasmine/jasmine-core/jasmine-core/jasmine-html.js");
97
+ // Prevent jasmine-core/boot.js from installing its own onload handler. We'll execute it explicitly when everything is ready
98
+ var previousOnloadHandler = window.onload;
99
+ window.onload = function() {};
97
100
  $tw.modules.execute("$:/plugins/tiddlywiki/jasmine/jasmine-core/jasmine-core/boot.js");
101
+ var jasmineOnloadHandler = window.onload;
102
+ window.onload = function() {};
98
103
  jasmine = window.jasmine;
99
104
  } else {
100
105
  // Add missing properties to `jasmineCore` in order to call the Jasmine
@@ -144,9 +149,11 @@ exports.runTests = function(callback,specFilter) {
144
149
  // Iterate through all the test modules
145
150
  var tests = $tw.wiki.filterTiddlers(TEST_TIDDLER_FILTER);
146
151
  $tw.utils.each(tests,evalInContext);
147
- // In a browser environment, jasmine-core/boot.js calls `execute()` for us.
152
+ // In a browser environment, we use jasmine-core/boot.js to call `execute()` for us.
148
153
  // In Node.js, we call it manually.
149
- if(!$tw.browser) {
154
+ if($tw.browser) {
155
+ jasmineOnloadHandler();
156
+ } else {
150
157
  nodeJasmineWrapper.execute(null,specFilter);
151
158
  }
152
159
  };
@@ -17,8 +17,9 @@ var jasmine = require("./jasmine-plugin.js");
17
17
  exports.name = "jasmine";
18
18
 
19
19
  if($tw.browser) {
20
- // Jasmine is run automatically on the browser, so always add it here.
21
20
  exports.startup = jasmine.runTests;
21
+ exports.before = ["render"];
22
+ exports.after = ["story"];
22
23
  } else {
23
24
  // However, if we're on node.js, the tests are explciitly run with the
24
25
  // --test command. This didn't used to be the case, so if they're
package/readme.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Join the Community</h1><p>
2
2
  <h2 class="">Official Forums</h2><p>The new official forum for talking about TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.</p><p><a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">https://talk.tiddlywiki.org/</a></p><p>Note that talk.tiddlywiki.org is a community run service that we host and maintain ourselves. The modest running costs are covered by community contributions.</p><p>For the convenience of existing users, we also continue to operate the original TiddlyWiki group (hosted on Google Groups since 2005):</p><p><a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWiki</a></p><h2 class="">Developer Forums</h2><p>There are several resources for developers to learn more about <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> and to discuss and contribute to its development.</p><ul><li><a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">tiddlywiki.com/dev</a> is the official developer documentation</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a><ul><li><a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">Discussions</a> are for Q&amp;A and open-ended discussion</li><li><a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/issues" rel="noopener noreferrer" target="_blank">Issues</a> are for raising bug reports and proposing specific, actionable new ideas</li></ul></li><li>The older TiddlyWikiDev Google Group is now closed in favour of <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> but remains a useful archive: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWikiDev</a><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><h2 class="">Other Forums</h2><ul><li><a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">TiddlyWiki Subreddit</a></li><li>Chat with Gitter at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</li><li>Chat on Discord at <a class="tc-tiddlylink-external" href="https://discord.gg/HFFZVQ8" rel="noopener noreferrer" target="_blank">https://discord.gg/HFFZVQ8</a></li></ul><h3 class="">Documentation</h3><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/tiddlywikidocs</a>
3
3
  </p>
4
- </p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>Linux: <blockquote><div><em>Debian/Ubuntu</em>:<br><code>apt install nodejs</code><br>May need to be followed up by:<br><code>apt install npm</code></div><div><em>Arch Linux</em><br><code>yay -S tiddlywiki</code> <br>(installs node and tiddlywiki)</div></blockquote></li><li>Mac<blockquote><div><code>brew install node</code></div></blockquote></li><li>Android<blockquote><div><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a></div></blockquote></li><li>Other <blockquote><div>See <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></div></blockquote></li></ul></li><li>Open a command line terminal and type:<blockquote><div><code>npm install -g tiddlywiki</code></div><div>If it fails with an error you may need to re-run the command as an administrator:</div><div><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</div></blockquote></li><li>Ensure TiddlyWiki is installed by typing:<blockquote><div><code>tiddlywiki --version</code></div></blockquote><ul><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.3.0". You may also see other debugging information reported.)</li></ul></li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <span class="doc-icon"><svg class="tc-image-save-button-dynamic tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
4
+ </p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>Linux: <blockquote><div><em>Debian/Ubuntu</em>:<br><code>apt install nodejs</code><br>May need to be followed up by:<br><code>apt install npm</code></div><div><em>Arch Linux</em><br><code>yay -S tiddlywiki</code> <br>(installs node and tiddlywiki)</div></blockquote></li><li>Mac<blockquote><div><code>brew install node</code></div></blockquote></li><li>Android<blockquote><div><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a></div></blockquote></li><li>Other <blockquote><div>See <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></div></blockquote></li></ul></li><li>Open a command line terminal and type:<blockquote><div><code>npm install -g tiddlywiki</code></div><div>If it fails with an error you may need to re-run the command as an administrator:</div><div><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</div></blockquote></li><li>Ensure TiddlyWiki is installed by typing:<blockquote><div><code>tiddlywiki --version</code></div></blockquote><ul><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.3.1". You may also see other debugging information reported.)</li></ul></li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <span class="doc-icon"><svg class="tc-image-save-button-dynamic tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
5
5
  <g class="tc-image-save-button-dynamic-clean">
6
6
  <path d="M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z" fill-rule="evenodd"></path>
7
7
  </g>
@@ -580,7 +580,7 @@ button svg, button img, label svg, label img {
580
580
  }
581
581
 
582
582
  button:disabled.tc-btn-invisible {
583
- cursor: default;
583
+ cursor: default;
584
584
  color: <<colour muted-foreground>>;
585
585
  }
586
586
 
@@ -1172,6 +1172,11 @@ button.tc-btn-invisible.tc-remove-tag-button {
1172
1172
  margin-right: .1em;
1173
1173
  }
1174
1174
 
1175
+ .tc-tiddler-title-icon svg {
1176
+ width: 0.9em;
1177
+ height: 0.9em;
1178
+ }
1179
+
1175
1180
  .tc-system-title-prefix {
1176
1181
  color: <<colour muted-foreground>>;
1177
1182
  }
@@ -2774,15 +2779,11 @@ input.tc-palette-manager-colour-input {
2774
2779
  white-space: nowrap;
2775
2780
  }
2776
2781
 
2777
- .tc-table-of-contents button {
2782
+ .tc-table-of-contents button,
2783
+ .tc-table-of-contents .toc-item-muted {
2778
2784
  color: <<colour sidebar-foreground>>;
2779
2785
  }
2780
2786
 
2781
- button + .tc-toc-caption,
2782
- button > .tc-toc-caption{
2783
- margin-left: .25em;
2784
- }
2785
-
2786
2787
  .tc-table-of-contents svg {
2787
2788
  width: 0.7em;
2788
2789
  height: 0.7em;