tiddlywiki 5.3.0 → 5.3.2

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 (448) hide show
  1. package/.github/workflows/ci.yml +9 -2
  2. package/bin/build-site.sh +25 -5
  3. package/bin/ci-test.sh +16 -0
  4. package/boot/boot.js +18 -7
  5. package/core/images/new-journal-button.tid +1 -3
  6. package/core/language/en-GB/Exporters.multids +1 -1
  7. package/core/language/en-GB/Help/commands.tid +1 -1
  8. package/core/language/en-GB/Help/savewikifolder.tid +2 -2
  9. package/core/language/en-GB/Help/server.tid +1 -1
  10. package/core/language/en-GB/Types/image_svg_xml.tid +1 -1
  11. package/core/language/en-GB/Types/image_x-icon.tid +1 -1
  12. package/core/modules/commands/savetiddlers.js +1 -1
  13. package/core/modules/editor/engines/framed.js +1 -1
  14. package/core/modules/editor/engines/simple.js +1 -1
  15. package/core/modules/filters/all.js +5 -5
  16. package/core/modules/filters/encodings.js +6 -2
  17. package/core/modules/filters/json-ops.js +95 -1
  18. package/core/modules/filters/listops.js +1 -0
  19. package/core/modules/parsers/textparser.js +5 -4
  20. package/core/modules/parsers/wikiparser/rules/conditional.js +120 -0
  21. package/core/modules/parsers/wikiparser/rules/fnprocdef.js +2 -2
  22. package/core/modules/parsers/wikiparser/rules/parameters.js +1 -1
  23. package/core/modules/parsers/wikiparser/wikiparser.js +31 -8
  24. package/core/modules/savers/github.js +1 -1
  25. package/core/modules/startup/rootwidget.js +1 -0
  26. package/core/modules/startup/startup.js +5 -0
  27. package/core/modules/startup/windows.js +2 -1
  28. package/core/modules/syncer.js +160 -122
  29. package/core/modules/utils/dom/dom.js +3 -3
  30. package/core/modules/utils/dom/dragndrop.js +4 -2
  31. package/core/modules/utils/dom/http.js +19 -3
  32. package/core/modules/utils/fakedom.js +5 -1
  33. package/core/modules/utils/utils.js +27 -4
  34. package/core/modules/widgets/browse.js +10 -0
  35. package/core/modules/widgets/button.js +15 -3
  36. package/core/modules/widgets/checkbox.js +14 -1
  37. package/core/modules/widgets/draggable.js +16 -5
  38. package/core/modules/widgets/droppable.js +14 -2
  39. package/core/modules/widgets/image.js +19 -14
  40. package/core/modules/widgets/importvariables.js +1 -1
  41. package/core/modules/widgets/link.js +12 -2
  42. package/core/modules/widgets/list.js +176 -19
  43. package/core/modules/widgets/radio.js +4 -0
  44. package/core/modules/widgets/range.js +4 -0
  45. package/core/modules/widgets/scrollable.js +66 -1
  46. package/core/modules/widgets/select.js +35 -23
  47. package/core/modules/widgets/transclude.js +88 -45
  48. package/core/modules/widgets/widget.js +42 -47
  49. package/core/modules/wiki.js +3 -3
  50. package/core/templates/html-json-skinny-tiddler.tid +0 -1
  51. package/core/templates/html-json-tiddler.tid +1 -1
  52. package/core/templates/store.area.template.html.tid +4 -4
  53. package/core/ui/AlertTemplate.tid +1 -0
  54. package/core/ui/ControlPanel/Basics.tid +2 -2
  55. package/core/ui/EditTemplate/body/default.tid +12 -8
  56. package/core/ui/EditTemplate/fields.tid +2 -2
  57. package/core/ui/EditTemplate/type.tid +1 -1
  58. package/core/ui/EditTemplate.tid +1 -0
  59. package/core/ui/EditorToolbar/preview.tid +6 -0
  60. package/core/ui/ImportPreviews/Text.tid +1 -0
  61. package/core/ui/PageStylesheet.tid +1 -0
  62. package/core/ui/PageTemplate.tid +2 -1
  63. package/core/ui/RootTemplate.tid +1 -0
  64. package/core/ui/StoryTiddlerTemplate.tid +1 -0
  65. package/core/ui/ViewTemplate/body/default.tid +1 -0
  66. package/core/ui/ViewTemplate/subtitle.tid +2 -5
  67. package/core/ui/ViewTemplate.tid +1 -0
  68. package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
  69. package/core/wiki/config/ViewTemplateBodyFilters.multids +2 -1
  70. package/core/wiki/macros/colour-picker.tid +6 -6
  71. package/core/wiki/macros/image-picker.tid +5 -5
  72. package/core/wiki/macros/list.tid +95 -78
  73. package/core/wiki/macros/tabs.tid +9 -1
  74. package/core/wiki/macros/tag-picker.tid +2 -2
  75. package/core/wiki/macros/tag.tid +2 -1
  76. package/core/wiki/macros/toc.tid +3 -3
  77. package/core/wiki/tags/ViewTemplateBodyFilter.tid +1 -2
  78. package/editions/de-AT/tiddlers/HelloThere.tid +2 -2
  79. package/editions/de-AT/tiddlers/community/Fur_Entwickler.tid +1 -1
  80. package/editions/de-AT/tiddlers/external/tiddlywiki.files +1 -1
  81. package/editions/de-AT-server/tiddlers/system/favicon.png +0 -0
  82. package/editions/{es-ES-server/tiddlers/system/favicon.ico.meta → de-AT-server/tiddlers/system/favicon.png.meta} +1 -1
  83. package/editions/dev/tiddlers/images/favicon.png +0 -0
  84. package/editions/{de-AT-server/tiddlers/system/favicon.ico.meta → dev/tiddlers/images/favicon.png.meta} +1 -1
  85. package/editions/dev/tiddlers/new/HookMechanism.tid +28 -3
  86. package/editions/empty/tiddlywiki.info +5 -2
  87. package/editions/es-ES/tiddlers/Forums.tid +4 -5
  88. package/editions/es-ES/tiddlers/HelloThere.tid +2 -2
  89. package/editions/es-ES/tiddlers/Typography.tid +1 -1
  90. package/editions/es-ES/tiddlers/images/favicon.png +0 -0
  91. package/editions/{dev/tiddlers/images/favicon.ico.meta → es-ES/tiddlers/images/favicon.png.meta} +1 -1
  92. package/editions/es-ES/tiddlers/images/green_favicon.png +0 -0
  93. package/editions/es-ES/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  94. package/editions/es-ES-server/tiddlers/system/favicon.png +0 -0
  95. package/editions/{es-ES/tiddlers/images/favicon.ico.meta → es-ES-server/tiddlers/system/favicon.png.meta} +1 -1
  96. package/editions/fr-FR/tiddlers/images/favicon.png +0 -0
  97. package/editions/fr-FR/tiddlers/images/favicon.png.meta +2 -0
  98. package/editions/fr-FR/tiddlers/images/green_favicon.png +0 -0
  99. package/editions/fr-FR/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  100. package/editions/fr-FR-server/tiddlers/system/favicon.png +0 -0
  101. package/editions/fr-FR-server/tiddlers/system/favicon.png.meta +2 -0
  102. package/editions/highlightdemo/tiddlywiki.info +1 -1
  103. package/editions/ja-JP/tiddlers/images/favicon.png +0 -0
  104. package/editions/ja-JP/tiddlers/images/favicon.png.meta +2 -0
  105. package/editions/ja-JP/tiddlers/images/green_favicon.png +0 -0
  106. package/editions/ja-JP/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  107. package/editions/katexdemo/tiddlywiki.info +1 -1
  108. package/editions/ko-KR/tiddlers/images/favicon.png +0 -0
  109. package/editions/ko-KR/tiddlers/images/favicon.png.meta +2 -0
  110. package/editions/ko-KR/tiddlers/images/green_favicon.png +0 -0
  111. package/editions/ko-KR/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  112. package/editions/ko-KR-server/tiddlers/system/favicon.png +0 -0
  113. package/editions/ko-KR-server/tiddlers/system/favicon.png.meta +2 -0
  114. package/editions/pluginlibrary/tiddlywiki.info +2 -2
  115. package/editions/prerelease/tiddlers/{Release 5.3.1.tid → Release 5.3.3.tid } +23 -21
  116. package/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +1 -1
  117. package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
  118. package/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +1 -1
  119. package/editions/prerelease/tiddlers/system/favicon.png +0 -0
  120. package/editions/prerelease/tiddlers/system/favicon.png.meta +2 -0
  121. package/editions/prerelease/tiddlers/system/temp-my-scroll-position.tid +3 -0
  122. package/editions/resumebuilder/tiddlywiki.info +1 -1
  123. package/editions/server/tiddlywiki.info +1 -1
  124. package/editions/server-external-js/tiddlywiki.info +1 -1
  125. package/editions/test/playwright.spec.js +25 -0
  126. package/editions/test/tiddlers/tests/data/conditionals/Basic.tid +26 -0
  127. package/editions/test/tiddlers/tests/data/conditionals/BlockMode.tid +37 -0
  128. package/editions/test/tiddlers/tests/data/conditionals/Else.tid +26 -0
  129. package/editions/test/tiddlers/tests/data/conditionals/Elseif.tid +32 -0
  130. package/editions/test/tiddlers/tests/data/conditionals/MissingEndIf.tid +26 -0
  131. package/editions/test/tiddlers/tests/data/conditionals/MultipleResults.tid +12 -0
  132. package/editions/test/tiddlers/tests/data/conditionals/Nested.tid +38 -0
  133. package/editions/test/tiddlers/tests/data/conditionals/NestedElseif.tid +60 -0
  134. package/editions/test/tiddlers/tests/data/functions/IndentedFunctions.tid +24 -0
  135. package/editions/test/tiddlers/tests/data/functions/WikifiedFunctions.tid +1 -1
  136. package/editions/test/tiddlers/tests/data/importvariables/WithSetWidgets.tid +23 -0
  137. package/editions/test/tiddlers/tests/data/importvariables/WithSetWidgets2.tid +22 -0
  138. package/editions/test/tiddlers/tests/data/importvariables/WithSetWidgetsAndMacros.tid +29 -0
  139. package/editions/test/tiddlers/tests/data/list-widget/WithExplicitTemplates.tid +29 -0
  140. package/editions/test/tiddlers/tests/data/list-widget/WithExplicitTemplatesInBlockMode.tid +32 -0
  141. package/editions/test/tiddlers/tests/data/list-widget/WithExplicitTemplatesOverriddenByAttributes.tid +33 -0
  142. package/editions/test/tiddlers/tests/data/list-widget/WithJoinTemplate.tid +30 -0
  143. package/editions/test/tiddlers/tests/data/list-widget/WithJoinTemplateInBlockMode.tid +32 -0
  144. package/editions/test/tiddlers/tests/data/list-widget/WithLimit.tid +25 -0
  145. package/editions/test/tiddlers/tests/data/list-widget/WithMissingTemplate.tid +26 -0
  146. package/editions/test/tiddlers/tests/data/procedures/Nested-indented.tid +20 -0
  147. package/editions/test/tiddlers/tests/data/procedures/TrailingNewlines.tid +22 -0
  148. package/editions/test/tiddlers/tests/data/transclude/CustomWidget-CodeblockOverride-TextParser.tid +20 -0
  149. package/editions/test/tiddlers/tests/data/transclude/CustomWidget-Simple-Indented.tid +33 -0
  150. package/editions/test/tiddlers/tests/data/transclude/Parameterised-Shortcut-ParametersIndented.tid +20 -0
  151. package/editions/test/tiddlers/tests/data/transclude/Procedures-Double-Underscore.tid +26 -0
  152. package/editions/test/tiddlers/tests/data/transclude/Variable-Refreshing.tid +27 -0
  153. package/editions/test/tiddlers/tests/data/transclude/Variable-Static.tid +15 -0
  154. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/ButtonWidget-DataAttributes.tid +27 -0
  155. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/CheckboxWidget-DataAttributes.tid +22 -0
  156. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/DraggableWidget-DataAttributes.tid +27 -0
  157. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/DroppableWidget-DataAttributes.tid +27 -0
  158. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/LinkWidget-DataAttributes.tid +27 -0
  159. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/OrderedStyleAttributes.tid +15 -0
  160. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/SelectWidget-DataAttributes.tid +27 -0
  161. package/editions/test/tiddlers/tests/data/widgets/ElementWidgetEventAttributes.tid +15 -0
  162. package/editions/test/tiddlers/tests/data/widgets/ElementWidgetStyleAttributes.tid +15 -0
  163. package/editions/test/tiddlers/tests/data/widgets/SubstitutedAttributes.tid +5 -3
  164. package/editions/test/tiddlers/tests/test-filters.js +5 -4
  165. package/editions/test/tiddlers/tests/test-json-filters.js +40 -0
  166. package/editions/test/tiddlers/tests/test-utils.js +23 -0
  167. package/editions/test/tiddlers/tests/test-widget.js +62 -0
  168. package/editions/tw.org/tiddlers/$__favicon.ico.png +0 -0
  169. package/editions/tw.org/tiddlywiki.info +1 -1
  170. package/editions/tw5.com/tiddlers/_tw_shared/favicons/classic.tiddlywiki.com.png +0 -0
  171. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{classic.tiddlywiki.com.ico.meta → classic.tiddlywiki.com.png.meta} +1 -1
  172. package/editions/tw5.com/tiddlers/_tw_shared/favicons/links.tiddlywiki.org.png +0 -0
  173. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{links.tiddlywiki.org.ico.meta → links.tiddlywiki.org.png.meta} +1 -1
  174. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.dev.png +0 -0
  175. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.dev.ico.meta → tiddlywiki.com.dev.png.meta} +1 -1
  176. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.png +0 -0
  177. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.ico.meta → tiddlywiki.com.png.meta} +1 -1
  178. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.prerelease.png +0 -0
  179. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.prerelease.ico.meta → tiddlywiki.com.prerelease.png.meta} +1 -1
  180. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.upgrade.png +0 -0
  181. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.upgrade.ico.meta → tiddlywiki.com.upgrade.png.meta} +1 -1
  182. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.org.png +0 -0
  183. package/editions/tw5.com/tiddlers/about/Archive.tid +82 -0
  184. package/editions/tw5.com/tiddlers/community/Chinese Community.tid +20 -0
  185. package/editions/tw5.com/tiddlers/community/editions/Tidme by oflg.tid +16 -0
  186. package/editions/tw5.com/tiddlers/community/plugins/FSRS4TW by oflg.tid +10 -0
  187. package/editions/tw5.com/tiddlers/community/resources/TiddlyWiki Posts.tid +3 -3
  188. package/editions/tw5.com/tiddlers/community/resources/_Timimi_ Extension and executable by Riz.tid +3 -1
  189. package/editions/tw5.com/tiddlers/community/tutorials/GitHub Saver Tutorial by Mohammad.tid +5 -5
  190. package/editions/tw5.com/tiddlers/concepts/Macros.tid +7 -3
  191. package/editions/tw5.com/tiddlers/concepts/Title List.tid +5 -1
  192. package/editions/tw5.com/tiddlers/definitions/Git.tid +9 -0
  193. package/editions/tw5.com/tiddlers/definitions/GitHub.tid +6 -4
  194. package/editions/tw5.com/tiddlers/definitions/GitLab.tid +13 -0
  195. package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Fourth.tid +2 -0
  196. package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondThreeThree.tid +11 -1
  197. package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Third.tid +2 -0
  198. package/editions/tw5.com/tiddlers/filters/decodebase64 Operator.tid +6 -1
  199. package/editions/tw5.com/tiddlers/filters/encodebase64 Operator.tid +6 -1
  200. package/editions/tw5.com/tiddlers/filters/examples/jsonset.tid +59 -0
  201. package/editions/tw5.com/tiddlers/filters/examples/jsonstringify Operator (Examples).tid +7 -5
  202. package/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid +5 -3
  203. package/editions/tw5.com/tiddlers/filters/jsonextract.tid +8 -0
  204. package/editions/tw5.com/tiddlers/filters/jsonget.tid +8 -0
  205. package/editions/tw5.com/tiddlers/filters/jsonset.tid +64 -0
  206. package/editions/tw5.com/tiddlers/filters/jsonstringify Operator.tid +14 -15
  207. package/editions/tw5.com/tiddlers/filters/jsontype.tid +8 -0
  208. package/editions/tw5.com/tiddlers/filters/stringify_Operator.tid +12 -15
  209. package/editions/tw5.com/tiddlers/filters/substitute Operator.tid +3 -3
  210. package/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid +1 -1
  211. package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +6 -1
  212. package/editions/tw5.com/tiddlers/howtos/Constructing JSON tiddlers.tid +3 -3
  213. package/editions/tw5.com/tiddlers/images/Favicon template.svg +296 -0
  214. package/editions/tw5.com/tiddlers/images/Favicon template.svg.meta +3 -0
  215. package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
  216. package/editions/tw5.com/tiddlers/images/{New Release Banner.jpg.meta → New Release Banner.png.meta } +1 -1
  217. package/editions/tw5.com/tiddlers/images/favicon.png +0 -0
  218. package/editions/tw5.com/tiddlers/images/favicon.png.meta +2 -0
  219. package/editions/tw5.com/tiddlers/images/green_favicon.png +0 -0
  220. package/editions/tw5.com/tiddlers/images/green_favicon.png.meta +2 -0
  221. package/editions/tw5.com/tiddlers/macros/CoreMacros.tid +1 -1
  222. package/editions/tw5.com/tiddlers/macros/TagMacro.tid +3 -1
  223. package/editions/tw5.com/tiddlers/macros/examples/tag.tid +22 -1
  224. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +2 -2
  225. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-download-file.tid +3 -3
  226. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-edit-bitmap-operation.tid +3 -3
  227. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-edit-text-operation.tid +2 -2
  228. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-focus-selector.tid +2 -2
  229. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-http-request Example Random Dog.tid +90 -0
  230. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-http-request Example Zotero.tid +4 -3
  231. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-http-request.tid +4 -2
  232. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-modal.tid +2 -2
  233. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-new-tiddler.tid +3 -3
  234. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-notify.tid +3 -3
  235. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-external-window.tid +4 -3
  236. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +12 -5
  237. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-permalink.tid +1 -1
  238. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-save-wiki.tid +3 -3
  239. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _procedure.tid +2 -2
  240. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _rules.tid +2 -2
  241. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _whitespace.tid +7 -3
  242. package/editions/tw5.com/tiddlers/pragmas/Pragmas.tid +3 -1
  243. package/editions/tw5.com/tiddlers/procedures/Procedure Definitions.tid +4 -2
  244. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.0.tid +1 -0
  245. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.1.tid +1 -0
  246. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid +1 -0
  247. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.11.tid +1 -0
  248. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.12.tid +1 -0
  249. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.13.tid +1 -0
  250. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid +1 -0
  251. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.15.tid +1 -0
  252. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid +1 -0
  253. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +1 -0
  254. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.18.tid +1 -0
  255. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.19.tid +1 -0
  256. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.2.tid +1 -0
  257. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.20.tid +1 -0
  258. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid +1 -0
  259. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.22.tid +1 -0
  260. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.23.tid +1 -0
  261. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.3.tid +1 -0
  262. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.4.tid +1 -0
  263. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.5.tid +1 -0
  264. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.6.tid +1 -0
  265. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.7.tid +1 -0
  266. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.8.tid +1 -0
  267. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid +1 -0
  268. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.0.tid +1 -0
  269. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +1 -0
  270. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.2.tid +1 -0
  271. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.3.tid +1 -0
  272. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.4.tid +1 -0
  273. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.5.tid +1 -0
  274. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.6.tid +1 -0
  275. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.7.tid +1 -0
  276. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.0.tid +1 -0
  277. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.1.tid +87 -0
  278. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.2.tid +184 -0
  279. package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +4 -2
  280. package/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid +1 -1
  281. package/editions/tw5.com/tiddlers/{Saving on Browser with TiddlyStow.tid → saving/Saving on Browser with TiddlyStow.tid } +2 -2
  282. package/editions/tw5.com/tiddlers/saving/Saving to a Git service.tid +5 -1
  283. package/editions/tw5.com/tiddlers/saving/Saving via a Minimal Web Server.tid +8 -11
  284. package/editions/tw5.com/tiddlers/system/tw5.com-styles.tid +5 -0
  285. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_Macro.tid +1 -1
  286. package/editions/tw5.com/tiddlers/variables/Behaviour of invoked variables depends on how the variable was declared.tid +52 -0
  287. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter expression function call.tid +10 -0
  288. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter operator parameter.tid +11 -0
  289. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via normal wikitext.tid +11 -0
  290. package/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via widget attributes.tid +11 -0
  291. package/editions/tw5.com/tiddlers/variables/Variable Usage.tid +5 -49
  292. package/editions/tw5.com/tiddlers/widgets/ActionListopsWidget.tid +24 -2
  293. package/editions/tw5.com/tiddlers/widgets/ActionPopupWidget.tid +2 -2
  294. package/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid +3 -1
  295. package/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +3 -1
  296. package/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +3 -1
  297. package/editions/tw5.com/tiddlers/widgets/Custom Widgets.tid +3 -1
  298. package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +3 -2
  299. package/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid +3 -1
  300. package/editions/tw5.com/tiddlers/widgets/GenesisWidget.tid +1 -1
  301. package/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +2 -1
  302. package/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +3 -1
  303. package/editions/tw5.com/tiddlers/widgets/ListWidget.tid +27 -2
  304. package/editions/tw5.com/tiddlers/widgets/RadioWidget.tid +3 -1
  305. package/editions/tw5.com/tiddlers/widgets/RangeWidget.tid +3 -1
  306. package/editions/tw5.com/tiddlers/widgets/ScrollableWidget.tid +27 -2
  307. package/editions/tw5.com/tiddlers/widgets/SelectWidget.tid +4 -1
  308. package/editions/tw5.com/tiddlers/widgets/SetWidget.tid +17 -1
  309. package/editions/tw5.com/tiddlers/widgets/TranscludeWidget.tid +2 -2
  310. package/editions/tw5.com/tiddlers/widgets/examples/ActionListopsWidget (Examples).tid +12 -1
  311. package/editions/tw5.com/tiddlers/wikitext/Anchor Links using HTML.tid +1 -1
  312. package/editions/tw5.com/tiddlers/wikitext/Conditional Shortcut Syntax.tid +62 -0
  313. package/editions/tw5.com/tiddlers/wikitext/Styles and Classes in WikiText.tid +52 -19
  314. package/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid +3 -3
  315. package/editions/tw5.com/tiddlers/wikitext/Variable Attribute Values.tid +5 -2
  316. package/editions/tw5.com/tiddlers/wikitext/Widget Attributes.tid +8 -3
  317. package/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +1 -0
  318. package/editions/tw5.com/tiddlywiki.info +9 -3
  319. package/editions/tw5.com-server/tiddlers/system/tiddlywiki.com.server.png +0 -0
  320. package/editions/tw5.com-server/tiddlers/system/tiddlywiki.com.server.png.meta +2 -0
  321. package/editions/zh-Hans/tiddlers/images/favicon.png +0 -0
  322. package/editions/zh-Hans/tiddlers/images/favicon.png.meta +2 -0
  323. package/editions/zh-Hans/tiddlers/images/green_favicon.png +0 -0
  324. package/editions/zh-Hans/tiddlers/images/green_favicon.png.meta +2 -0
  325. package/editions/zh-Hant/tiddlers/images/favicon.png +0 -0
  326. package/editions/zh-Hant/tiddlers/images/favicon.png.meta +2 -0
  327. package/editions/zh-Hant/tiddlers/images/green_favicon.png +0 -0
  328. package/editions/zh-Hant/tiddlers/images/green_favicon.png.meta +2 -0
  329. package/languages/de-DE/Exporters.multids +1 -1
  330. package/languages/de-DE/Help/commands.tid +2 -2
  331. package/languages/de-DE/Help/server.tid +1 -1
  332. package/languages/de-DE/Types/image_x-icon.tid +1 -1
  333. package/languages/es-ES/Buttons.multids +2 -0
  334. package/languages/es-ES/Fields.multids +4 -0
  335. package/languages/es-ES/Help/listen.tid +1 -1
  336. package/languages/es-ES/Help/savewikifolder.tid +16 -1
  337. package/languages/es-ES/Help/server.tid +1 -1
  338. package/languages/es-ES/Misc.multids +3 -0
  339. package/languages/es-ES/SiteTitle.tid +1 -1
  340. package/languages/pl-PL/Exporters.multids +1 -1
  341. package/languages/pl-PL/Help/commands.tid +1 -1
  342. package/languages/pl-PL/Help/savewikifolder.tid +19 -4
  343. package/languages/pl-PL/Help/server.tid +1 -1
  344. package/languages/zh-Hans/Exporters.multids +1 -1
  345. package/languages/zh-Hans/Help/commands.tid +1 -1
  346. package/languages/zh-Hans/Help/savewikifolder.tid +5 -1
  347. package/languages/zh-Hans/Help/server.tid +1 -1
  348. package/languages/zh-Hans/Types/image_svg_xml.tid +1 -1
  349. package/languages/zh-Hans/Types/image_x-icon.tid +1 -1
  350. package/languages/zh-Hant/Exporters.multids +1 -1
  351. package/languages/zh-Hant/Help/commands.tid +1 -1
  352. package/languages/zh-Hant/Help/savewikifolder.tid +5 -1
  353. package/languages/zh-Hant/Help/server.tid +1 -1
  354. package/languages/zh-Hant/Types/image_svg_xml.tid +1 -1
  355. package/languages/zh-Hant/Types/image_x-icon.tid +1 -1
  356. package/licenses/cla-individual.md +20 -0
  357. package/package.json +4 -1
  358. package/playwright.config.js +46 -0
  359. package/plugins/tiddlywiki/codemirror/styles.tid +5 -0
  360. package/plugins/tiddlywiki/comments/styles.tid +8 -8
  361. package/plugins/tiddlywiki/dynannotate/docs/readme.tid +1 -0
  362. package/plugins/tiddlywiki/dynannotate/modules/dynannotate.js +28 -27
  363. package/plugins/tiddlywiki/evernote/modules/enex-deserializer.js +82 -23
  364. package/plugins/tiddlywiki/evernote/readme.tid +1 -0
  365. package/plugins/tiddlywiki/evernote/samples/sample-enex-with-image.xml.enex +2 -2
  366. package/plugins/tiddlywiki/googleanalytics/googleanalytics.js +1 -1
  367. package/plugins/tiddlywiki/googleanalytics/settings.tid +1 -3
  368. package/plugins/tiddlywiki/jasmine/jasmine-plugin.js +9 -2
  369. package/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js +1 -1
  370. package/plugins/tiddlywiki/jasmine/startup.js +2 -1
  371. package/plugins/tiddlywiki/qrcode/barcodereader.js +90 -0
  372. package/plugins/tiddlywiki/qrcode/docs/barcodereader.tid +44 -0
  373. package/plugins/tiddlywiki/qrcode/{doc/usage.tid → docs/makeqr.tid} +4 -4
  374. package/plugins/tiddlywiki/qrcode/docs.tid +3 -0
  375. package/plugins/tiddlywiki/qrcode/{MakeContactQR.tid → examples/make/MakeContactQR.tid} +1 -1
  376. package/plugins/tiddlywiki/qrcode/{MakeGenericQR.tid → examples/make/MakeGenericQR.tid} +1 -1
  377. package/plugins/tiddlywiki/qrcode/{MakeWifiQR.tid → examples/make/MakeWifiQR.tid} +1 -1
  378. package/plugins/tiddlywiki/qrcode/examples/make/make.tid +5 -0
  379. package/plugins/tiddlywiki/qrcode/examples/read/BarCodeReader.tid +17 -0
  380. package/plugins/tiddlywiki/qrcode/examples/read/read.tid +5 -0
  381. package/plugins/tiddlywiki/qrcode/examples.tid +3 -0
  382. package/plugins/tiddlywiki/qrcode/files/html5-qrcode/LICENSE +201 -0
  383. package/plugins/tiddlywiki/qrcode/files/html5-qrcode/README.md +398 -0
  384. package/plugins/tiddlywiki/qrcode/files/html5-qrcode/html5-qrcode.min.js +1 -0
  385. package/plugins/tiddlywiki/qrcode/files/tiddlywiki.files +20 -4
  386. package/plugins/tiddlywiki/qrcode/makeqr.js +1 -1
  387. package/plugins/tiddlywiki/qrcode/plugin.info +1 -1
  388. package/plugins/tiddlywiki/qrcode/readme.tid +15 -0
  389. package/plugins/tiddlywiki/tiddlyweb/html-json-skinny-tiddler.tid +0 -1
  390. package/plugins/tiddlywiki/tiddlyweb/html-json-tiddler.tid +1 -2
  391. package/plugins/tiddlywiki/upgrade/UpgradeWizard.tid +2 -2
  392. package/plugins/tiddlywiki/upgrade/favicon.png +0 -0
  393. package/plugins/tiddlywiki/upgrade/favicon.png.meta +2 -0
  394. package/readme.md +1 -1
  395. package/themes/tiddlywiki/vanilla/base.tid +45 -14
  396. package/themes/tiddlywiki/vanilla/settings.multids +1 -1
  397. package/editions/de-AT-server/tiddlers/system/favicon.ico +0 -0
  398. package/editions/dev/tiddlers/images/favicon.ico +0 -0
  399. package/editions/es-ES/tiddlers/images/favicon.ico +0 -0
  400. package/editions/es-ES/tiddlers/images/green_favicon.ico +0 -0
  401. package/editions/es-ES-server/tiddlers/system/favicon.ico +0 -0
  402. package/editions/fr-FR/tiddlers/images/favicon.ico +0 -0
  403. package/editions/fr-FR/tiddlers/images/favicon.ico.meta +0 -2
  404. package/editions/fr-FR/tiddlers/images/green_favicon.ico +0 -0
  405. package/editions/fr-FR-server/tiddlers/system/favicon.ico +0 -0
  406. package/editions/fr-FR-server/tiddlers/system/favicon.ico.meta +0 -2
  407. package/editions/ja-JP/tiddlers/images/favicon.ico +0 -0
  408. package/editions/ja-JP/tiddlers/images/favicon.ico.meta +0 -2
  409. package/editions/ja-JP/tiddlers/images/green_favicon.ico +0 -0
  410. package/editions/ko-KR/tiddlers/images/favicon.ico +0 -0
  411. package/editions/ko-KR/tiddlers/images/favicon.ico.meta +0 -2
  412. package/editions/ko-KR/tiddlers/images/green_favicon.ico +0 -0
  413. package/editions/ko-KR-server/tiddlers/system/favicon.ico +0 -0
  414. package/editions/ko-KR-server/tiddlers/system/favicon.ico.meta +0 -2
  415. package/editions/prerelease/tiddlers/system/favicon.ico +0 -0
  416. package/editions/prerelease/tiddlers/system/favicon.ico.meta +0 -2
  417. package/editions/tw5.com/tiddlers/_tw_shared/favicons/classic.tiddlywiki.com.ico +0 -0
  418. package/editions/tw5.com/tiddlers/_tw_shared/favicons/links.tiddlywiki.org.ico +0 -0
  419. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.dev.ico +0 -0
  420. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.ico +0 -0
  421. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.prerelease.ico +0 -0
  422. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.upgrade.ico +0 -0
  423. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.org.ico +0 -0
  424. package/editions/tw5.com/tiddlers/community/editions/TiddlyMemo by oflg.tid +0 -16
  425. package/editions/tw5.com/tiddlers/community/tutorials/Install and run TiddlyWiki on a CentOS 6 VPS using Nginx.tid +0 -16
  426. package/editions/tw5.com/tiddlers/images/New Release Banner.jpg +0 -0
  427. package/editions/tw5.com/tiddlers/images/favicon.ico +0 -0
  428. package/editions/tw5.com/tiddlers/images/favicon.ico.meta +0 -2
  429. package/editions/tw5.com/tiddlers/images/green_favicon.ico +0 -0
  430. package/editions/tw5.com/tiddlers/images/green_favicon.ico.meta +0 -2
  431. package/editions/tw5.com-server/tiddlers/system/favicon.ico +0 -0
  432. package/editions/tw5.com-server/tiddlers/system/favicon.ico.meta +0 -2
  433. package/editions/zh-Hans/tiddlers/images/favicon.ico +0 -0
  434. package/editions/zh-Hans/tiddlers/images/favicon.ico.meta +0 -2
  435. package/editions/zh-Hans/tiddlers/images/green_favicon.ico +0 -0
  436. package/editions/zh-Hans/tiddlers/images/green_favicon.ico.meta +0 -2
  437. package/editions/zh-Hant/tiddlers/images/favicon.ico +0 -0
  438. package/editions/zh-Hant/tiddlers/images/favicon.ico.meta +0 -2
  439. package/editions/zh-Hant/tiddlers/images/green_favicon.ico +0 -0
  440. package/editions/zh-Hant/tiddlers/images/green_favicon.ico.meta +0 -2
  441. package/plugins/tiddlywiki/qrcode/doc/examples.tid +0 -3
  442. package/plugins/tiddlywiki/qrcode/doc/readme.tid +0 -13
  443. package/plugins/tiddlywiki/upgrade/favicon.ico +0 -0
  444. package/plugins/tiddlywiki/upgrade/favicon.ico.meta +0 -2
  445. /package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.org.ico.meta → tiddlywiki.org.png.meta} +0 -0
  446. /package/plugins/tiddlywiki/qrcode/files/{LICENSE → qrcode/LICENSE} +0 -0
  447. /package/plugins/tiddlywiki/qrcode/files/{README.md → qrcode/README.md} +0 -0
  448. /package/plugins/tiddlywiki/qrcode/files/{qrcode.js → qrcode/qrcode.js} +0 -0
@@ -40,6 +40,10 @@ RadioWidget.prototype.render = function(parent,nextSibling) {
40
40
  );
41
41
  this.inputDomNode = this.document.createElement("input");
42
42
  this.inputDomNode.setAttribute("type","radio");
43
+ this.assignAttributes(this.inputDomNode,{
44
+ sourcePrefix: "data-",
45
+ destPrefix: "data-"
46
+ });
43
47
  if(isChecked) {
44
48
  this.inputDomNode.checked = true;
45
49
  }
@@ -50,6 +50,10 @@ RangeWidget.prototype.render = function(parent,nextSibling) {
50
50
  this.inputDomNode.setAttribute("disabled",true);
51
51
  }
52
52
  this.inputDomNode.value = this.getValue();
53
+ this.assignAttributes(this.inputDomNode,{
54
+ sourcePrefix: "data-",
55
+ destPrefix: "data-"
56
+ });
53
57
  // Add a click event handler
54
58
  $tw.utils.addEventListeners(this.inputDomNode,[
55
59
  {name:"mousedown", handlerObject:this, handlerMethod:"handleMouseDownEvent"},
@@ -12,6 +12,8 @@ Scrollable widget
12
12
  /*global $tw: false */
13
13
  "use strict";
14
14
 
15
+ var DEBOUNCE_INTERVAL = 100; // Delay after last scroll event before updating the bound tiddler
16
+
15
17
  var Widget = require("$:/core/modules/widgets/widget.js").widget;
16
18
 
17
19
  var ScrollableWidget = function(parseTreeNode,options) {
@@ -171,6 +173,53 @@ ScrollableWidget.prototype.render = function(parent,nextSibling) {
171
173
  parent.insertBefore(this.outerDomNode,nextSibling);
172
174
  this.renderChildren(this.innerDomNode,null);
173
175
  this.domNodes.push(this.outerDomNode);
176
+ // If the scroll position is bound to a tiddler
177
+ if(this.scrollableBind) {
178
+ // After a delay for rendering, scroll to the bound position
179
+ this.updateScrollPositionFromBoundTiddler();
180
+ // Set up event listener
181
+ this.currentListener = this.listenerFunction.bind(this);
182
+ this.outerDomNode.addEventListener("scroll", this.currentListener);
183
+ }
184
+ };
185
+
186
+ ScrollableWidget.prototype.listenerFunction = function(event) {
187
+ self = this;
188
+ clearTimeout(this.timeout);
189
+ this.timeout = setTimeout(function() {
190
+ var existingTiddler = self.wiki.getTiddler(self.scrollableBind),
191
+ newTiddlerFields = {
192
+ title: self.scrollableBind,
193
+ "scroll-left": self.outerDomNode.scrollLeft.toString(),
194
+ "scroll-top": self.outerDomNode.scrollTop.toString()
195
+ };
196
+ if(!existingTiddler || (existingTiddler.fields["title"] !== newTiddlerFields["title"]) || (existingTiddler.fields["scroll-left"] !== newTiddlerFields["scroll-left"] || existingTiddler.fields["scroll-top"] !== newTiddlerFields["scroll-top"])) {
197
+ self.wiki.addTiddler(new $tw.Tiddler(existingTiddler,newTiddlerFields));
198
+ }
199
+ }, DEBOUNCE_INTERVAL);
200
+ }
201
+
202
+ ScrollableWidget.prototype.updateScrollPositionFromBoundTiddler = function() {
203
+ // Bail if we're running on the fakedom
204
+ if(!this.outerDomNode.scrollTo) {
205
+ return;
206
+ }
207
+ var tiddler = this.wiki.getTiddler(this.scrollableBind);
208
+ if(tiddler) {
209
+ var scrollLeftTo = this.outerDomNode.scrollLeft;
210
+ if(parseFloat(tiddler.fields["scroll-left"]).toString() === tiddler.fields["scroll-left"]) {
211
+ scrollLeftTo = parseFloat(tiddler.fields["scroll-left"]);
212
+ }
213
+ var scrollTopTo = this.outerDomNode.scrollTop;
214
+ if(parseFloat(tiddler.fields["scroll-top"]).toString() === tiddler.fields["scroll-top"]) {
215
+ scrollTopTo = parseFloat(tiddler.fields["scroll-top"]);
216
+ }
217
+ this.outerDomNode.scrollTo({
218
+ top: scrollTopTo,
219
+ left: scrollLeftTo,
220
+ behavior: "instant"
221
+ })
222
+ }
174
223
  };
175
224
 
176
225
  /*
@@ -178,6 +227,7 @@ Compute the internal state of the widget
178
227
  */
179
228
  ScrollableWidget.prototype.execute = function() {
180
229
  // Get attributes
230
+ this.scrollableBind = this.getAttribute("bind");
181
231
  this.fallthrough = this.getAttribute("fallthrough","yes");
182
232
  this["class"] = this.getAttribute("class");
183
233
  // Make child widgets
@@ -193,7 +243,22 @@ ScrollableWidget.prototype.refresh = function(changedTiddlers) {
193
243
  this.refreshSelf();
194
244
  return true;
195
245
  }
196
- return this.refreshChildren(changedTiddlers);
246
+ // If the bound tiddler has changed, update the eventListener and update scroll position
247
+ if(changedAttributes["bind"]) {
248
+ if(this.currentListener) {
249
+ this.outerDomNode.removeEventListener("scroll", this.currentListener, false);
250
+ }
251
+ this.scrollableBind = this.getAttribute("bind");
252
+ this.currentListener = this.listenerFunction.bind(this);
253
+ this.outerDomNode.addEventListener("scroll", this.currentListener);
254
+ }
255
+ // Refresh children
256
+ var result = this.refreshChildren(changedTiddlers);
257
+ // If the bound tiddler has changed, update scroll position
258
+ if(changedAttributes["bind"] || changedTiddlers[this.getAttribute("bind")]) {
259
+ this.updateScrollPositionFromBoundTiddler();
260
+ }
261
+ return result;
197
262
  };
198
263
 
199
264
  exports.scrollable = ScrollableWidget;
@@ -40,7 +40,31 @@ SelectWidget.prototype.render = function(parent,nextSibling) {
40
40
  this.parentDomNode = parent;
41
41
  this.computeAttributes();
42
42
  this.execute();
43
- this.renderChildren(parent,nextSibling);
43
+ //Create element
44
+ var domNode = this.document.createElement("select");
45
+ if(this.selectClass) {
46
+ domNode.classname = this.selectClass;
47
+ }
48
+ // Assign data- attributes
49
+ this.assignAttributes(domNode,{
50
+ sourcePrefix: "data-",
51
+ destPrefix: "data-"
52
+ });
53
+ if(this.selectMultiple) {
54
+ domNode.setAttribute("multiple","multiple");
55
+ }
56
+ if(this.selectSize) {
57
+ domNode.setAttribute("size",this.selectSize);
58
+ }
59
+ if(this.selectTabindex) {
60
+ domNode.setAttribute("tabindex",this.selectTabindex);
61
+ }
62
+ if(this.selectTooltip) {
63
+ domNode.setAttribute("title",this.selectTooltip);
64
+ }
65
+ this.renderChildren(domNode,nextSibling);
66
+ this.parentDomNode.insertBefore(domNode,nextSibling);
67
+ this.domNodes.push(domNode);
44
68
  this.setSelectValue();
45
69
  if(this.selectFocus == "yes") {
46
70
  this.getSelectDomNode().focus();
@@ -113,7 +137,7 @@ SelectWidget.prototype.setSelectValue = function() {
113
137
  Get the DOM node of the select element
114
138
  */
115
139
  SelectWidget.prototype.getSelectDomNode = function() {
116
- return this.children[0].domNodes[0];
140
+ return this.domNodes[0];
117
141
  };
118
142
 
119
143
  // Return an array of the selected opion values
@@ -145,27 +169,11 @@ SelectWidget.prototype.execute = function() {
145
169
  this.selectDefault = this.getAttribute("default");
146
170
  this.selectMultiple = this.getAttribute("multiple", false);
147
171
  this.selectSize = this.getAttribute("size");
172
+ this.selectTabindex = this.getAttribute("tabindex");
148
173
  this.selectTooltip = this.getAttribute("tooltip");
149
174
  this.selectFocus = this.getAttribute("focus");
150
175
  // Make the child widgets
151
- var selectNode = {
152
- type: "element",
153
- tag: "select",
154
- children: this.parseTreeNode.children
155
- };
156
- if(this.selectClass) {
157
- $tw.utils.addAttributeToParseTreeNode(selectNode,"class",this.selectClass);
158
- }
159
- if(this.selectMultiple) {
160
- $tw.utils.addAttributeToParseTreeNode(selectNode,"multiple","multiple");
161
- }
162
- if(this.selectSize) {
163
- $tw.utils.addAttributeToParseTreeNode(selectNode,"size",this.selectSize);
164
- }
165
- if(this.selectTooltip) {
166
- $tw.utils.addAttributeToParseTreeNode(selectNode,"title",this.selectTooltip);
167
- }
168
- this.makeChildWidgets([selectNode]);
176
+ this.makeChildWidgets();
169
177
  };
170
178
 
171
179
  /*
@@ -174,17 +182,21 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
174
182
  SelectWidget.prototype.refresh = function(changedTiddlers) {
175
183
  var changedAttributes = this.computeAttributes();
176
184
  // If we're using a different tiddler/field/index then completely refresh ourselves
177
- if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tooltip) {
185
+ if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tooltip || changedAttributes.tabindex) {
178
186
  this.refreshSelf();
179
187
  return true;
180
- // If the target tiddler value has changed, just update setting and refresh the children
181
188
  } else {
182
189
  if(changedAttributes.class) {
183
190
  this.selectClass = this.getAttribute("class");
184
191
  this.getSelectDomNode().setAttribute("class",this.selectClass);
185
192
  }
186
-
193
+ this.assignAttributes(this.getSelectDomNode(),{
194
+ changedAttributes: changedAttributes,
195
+ sourcePrefix: "data-",
196
+ destPrefix: "data-"
197
+ });
187
198
  var childrenRefreshed = this.refreshChildren(changedTiddlers);
199
+ // If the target tiddler value has changed, just update setting and refresh the children
188
200
  if(changedTiddlers[this.selectTitle] || childrenRefreshed) {
189
201
  this.setSelectValue();
190
202
  }
@@ -41,27 +41,43 @@ TranscludeWidget.prototype.execute = function() {
41
41
  this.collectAttributes();
42
42
  this.collectStringParameters();
43
43
  this.collectSlotFillParameters();
44
- // Get the parse tree nodes that we are transcluding
45
- var target = this.getTransclusionTarget(),
46
- parseTreeNodes = target.parseTreeNodes;
47
- this.sourceText = target.text;
48
- this.parserType = target.type;
49
- this.parseAsInline = target.parseAsInline;
44
+ // Determine whether we're being used in inline or block mode
45
+ var parseAsInline = !this.parseTreeNode.isBlock;
46
+ if(this.transcludeMode === "inline") {
47
+ parseAsInline = true;
48
+ } else if(this.transcludeMode === "block") {
49
+ parseAsInline = false;
50
+ }
51
+ // Set 'thisTiddler'
52
+ this.setVariable("thisTiddler",this.transcludeTitle);
53
+ var parseTreeNodes, target;
50
54
  // Process the transclusion according to the output type
51
55
  switch(this.transcludeOutput || "text/html") {
52
56
  case "text/html":
53
- // No further processing required
57
+ // Return the parse tree nodes of the target
58
+ target = this.parseTransclusionTarget(parseAsInline);
59
+ this.parseAsInline = target.parseAsInline;
60
+ parseTreeNodes = target.parseTreeNodes;
54
61
  break;
55
62
  case "text/raw":
56
63
  // Just return the raw text
57
- parseTreeNodes = [{type: "text", text: this.sourceText}];
64
+ target = this.getTransclusionTarget();
65
+ parseTreeNodes = [{type: "text", text: target.text}];
58
66
  break;
59
67
  default:
60
- // text/plain
61
- var plainText = this.wiki.renderText("text/plain",this.parserType,this.sourceText,{parentWidget: this});
62
- parseTreeNodes = [{type: "text", text: plainText}];
68
+ // "text/plain" is the plain text result of wikifying the text
69
+ target = this.parseTransclusionTarget(parseAsInline);
70
+ var widgetNode = this.wiki.makeWidget(target.parser,{
71
+ parentWidget: this,
72
+ document: $tw.fakeDocument
73
+ });
74
+ var container = $tw.fakeDocument.createElement("div");
75
+ widgetNode.render(container,null);
76
+ parseTreeNodes = [{type: "text", text: container.textContent}];
63
77
  break;
64
78
  }
79
+ this.sourceText = target.text;
80
+ this.parserType = target.type;
65
81
  // Set the legacy transclusion context variables only if we're not transcluding a variable
66
82
  if(!this.transcludeVariable) {
67
83
  var recursionMarker = this.makeRecursionMarker();
@@ -93,6 +109,7 @@ TranscludeWidget.prototype.collectAttributes = function() {
93
109
  this.recursionMarker = this.getAttribute("recursionMarker","yes");
94
110
  } else {
95
111
  this.transcludeVariable = this.getAttribute("$variable");
112
+ this.transcludeVariableIsFunction = false;
96
113
  this.transcludeType = this.getAttribute("$type");
97
114
  this.transcludeOutput = this.getAttribute("$output","text/html");
98
115
  this.transcludeTitle = this.getAttribute("$tiddler",this.getVariable("currentTiddler"));
@@ -158,17 +175,46 @@ TranscludeWidget.prototype.collectSlotFillParameters = function() {
158
175
  };
159
176
 
160
177
  /*
161
- Get transcluded parse tree nodes as an object {parser:,text:,type:}
178
+ Get transcluded details as an object {text:,type:}
162
179
  */
163
180
  TranscludeWidget.prototype.getTransclusionTarget = function() {
164
181
  var self = this;
165
- // Determine whether we're being used in inline or block mode
166
- var parseAsInline = !this.parseTreeNode.isBlock;
167
- if(this.transcludeMode === "inline") {
168
- parseAsInline = true;
169
- } else if(this.transcludeMode === "block") {
170
- parseAsInline = false;
182
+ var text;
183
+ // Return the text and type of the target
184
+ if(this.hasAttribute("$variable")) {
185
+ if(this.transcludeVariable) {
186
+ // Transcluding a variable
187
+ var variableInfo = this.getVariableInfo(this.transcludeVariable,{params: this.getOrderedTransclusionParameters()});
188
+ this.transcludeVariableIsFunction = variableInfo.srcVariable && variableInfo.srcVariable.isFunctionDefinition;
189
+ text = variableInfo.text;
190
+ this.transcludeFunctionResult = text;
191
+ return {
192
+ text: variableInfo.text,
193
+ type: this.transcludeType
194
+ };
195
+ }
196
+ } else {
197
+ // Transcluding a text reference
198
+ var parserInfo = this.wiki.getTextReferenceParserInfo(
199
+ this.transcludeTitle,
200
+ this.transcludeField,
201
+ this.transcludeIndex,
202
+ {
203
+ subTiddler: this.transcludeSubTiddler,
204
+ defaultType: this.transcludeType
205
+ });
206
+ return {
207
+ text: parserInfo.text,
208
+ type: parserInfo.type
209
+ };
171
210
  }
211
+ };
212
+
213
+ /*
214
+ Get transcluded parse tree nodes as an object {text:,type:,parseTreeNodes:,parseAsInline:}
215
+ */
216
+ TranscludeWidget.prototype.parseTransclusionTarget = function(parseAsInline) {
217
+ var self = this;
172
218
  var parser;
173
219
  // Get the parse tree
174
220
  if(this.hasAttribute("$variable")) {
@@ -176,21 +222,24 @@ TranscludeWidget.prototype.getTransclusionTarget = function() {
176
222
  // Transcluding a variable
177
223
  var variableInfo = this.getVariableInfo(this.transcludeVariable,{params: this.getOrderedTransclusionParameters()}),
178
224
  srcVariable = variableInfo && variableInfo.srcVariable;
225
+ if(srcVariable && srcVariable.isFunctionDefinition) {
226
+ this.transcludeVariableIsFunction = true;
227
+ this.transcludeFunctionResult = (variableInfo.resultList ? variableInfo.resultList[0] : variableInfo.text) || "";
228
+ }
179
229
  if(variableInfo.text) {
180
230
  if(srcVariable && srcVariable.isFunctionDefinition) {
181
- var result = (variableInfo.resultList ? variableInfo.resultList[0] : variableInfo.text) || "";
182
231
  parser = {
183
232
  tree: [{
184
233
  type: "text",
185
- text: result
234
+ text: this.transcludeFunctionResult
186
235
  }],
187
- source: result,
236
+ source: this.transcludeFunctionResult,
188
237
  type: "text/vnd.tiddlywiki"
189
238
  };
190
239
  if(parseAsInline) {
191
240
  parser.tree[0] = {
192
241
  type: "text",
193
- text: result
242
+ text: this.transcludeFunctionResult
194
243
  };
195
244
  } else {
196
245
  parser.tree[0] = {
@@ -198,7 +247,7 @@ TranscludeWidget.prototype.getTransclusionTarget = function() {
198
247
  tag: "p",
199
248
  children: [{
200
249
  type: "text",
201
- text: result
250
+ text: this.transcludeFunctionResult
202
251
  }]
203
252
  }
204
253
  }
@@ -234,7 +283,7 @@ TranscludeWidget.prototype.getTransclusionTarget = function() {
234
283
  }
235
284
  $tw.utils.addAttributeToParseTreeNode(parser.tree[0],name,param["default"])
236
285
  });
237
- } else if(srcVariable && (srcVariable.isMacroDefinition || !srcVariable.isFunctionDefinition)) {
286
+ } else if(srcVariable && !srcVariable.isFunctionDefinition) {
238
287
  // For macros and ordinary variables, wrap the parse tree in a vars widget assigning the parameters to variables named "__paramname__"
239
288
  parser = {
240
289
  tree: [
@@ -265,27 +314,14 @@ TranscludeWidget.prototype.getTransclusionTarget = function() {
265
314
  defaultType: this.transcludeType
266
315
  });
267
316
  }
268
- // Set 'thisTiddler'
269
- this.setVariable("thisTiddler",this.transcludeTitle);
270
317
  // Return the parse tree
271
- if(parser) {
272
- return {
273
- parser: parser,
274
- parseTreeNodes: parser.tree,
275
- parseAsInline: parseAsInline,
276
- text: parser.source,
277
- type: parser.type
278
- };
279
- } else {
280
- // If there's no parse tree then return the missing slot value
281
- return {
282
- parser: null,
283
- parseTreeNodes: (this.slotFillParseTrees["ts-missing"] || []),
284
- parseAsInline: parseAsInline,
285
- text: null,
286
- type: null
287
- };
288
- }
318
+ return {
319
+ parser: parser,
320
+ parseTreeNodes: parser ? parser.tree : (this.slotFillParseTrees["ts-missing"] || []),
321
+ parseAsInline: parseAsInline,
322
+ text: parser && parser.source,
323
+ type: parser && parser.type
324
+ };
289
325
  };
290
326
 
291
327
  /*
@@ -400,12 +436,19 @@ TranscludeWidget.prototype.parserNeedsRefresh = function() {
400
436
  return (this.sourceText === undefined || parserInfo.sourceText !== this.sourceText || parserInfo.parserType !== this.parserType)
401
437
  };
402
438
 
439
+ TranscludeWidget.prototype.functionNeedsRefresh = function() {
440
+ var oldResult = this.transcludeFunctionResult;
441
+ var variableInfo = this.getVariableInfo(this.transcludeVariable,{params: this.getOrderedTransclusionParameters()});
442
+ var newResult = (variableInfo.resultList ? variableInfo.resultList[0] : variableInfo.text) || "";
443
+ return oldResult !== newResult;
444
+ }
445
+
403
446
  /*
404
447
  Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
405
448
  */
406
449
  TranscludeWidget.prototype.refresh = function(changedTiddlers) {
407
450
  var changedAttributes = this.computeAttributes();
408
- if(($tw.utils.count(changedAttributes) > 0) || (!this.transcludeVariable && changedTiddlers[this.transcludeTitle] && this.parserNeedsRefresh())) {
451
+ if(($tw.utils.count(changedAttributes) > 0) || (this.transcludeVariableIsFunction && this.functionNeedsRefresh()) || (!this.transcludeVariable && changedTiddlers[this.transcludeTitle] && this.parserNeedsRefresh())) {
409
452
  this.refreshSelf();
410
453
  return true;
411
454
  } else {
@@ -413,16 +413,34 @@ Widget.prototype.getAttribute = function(name,defaultText) {
413
413
  };
414
414
 
415
415
  /*
416
- Assign the computed attributes of the widget to a domNode
416
+ Assign the common attributes of the widget to a domNode
417
417
  options include:
418
- excludeEventAttributes: ignores attributes whose name begins with "on"
418
+ sourcePrefix: prefix of attributes that are to be directly assigned (defaults to the empty string meaning all attributes)
419
+ destPrefix: prefix to be applied to attribute names that are to be directly assigned (defaults to the emtpy string which means no prefix is added)
420
+ changedAttributes: hashmap by attribute name of attributes to process (if missing, process all attributes)
421
+ excludeEventAttributes: ignores attributes whose name would begin with "on"
419
422
  */
420
423
  Widget.prototype.assignAttributes = function(domNode,options) {
421
424
  options = options || {};
422
- var self = this;
425
+ var self = this,
426
+ changedAttributes = options.changedAttributes || this.attributes,
427
+ sourcePrefix = options.sourcePrefix || "",
428
+ destPrefix = options.destPrefix || "",
429
+ EVENT_ATTRIBUTE_PREFIX = "on";
423
430
  var assignAttribute = function(name,value) {
431
+ // Process any style attributes before considering sourcePrefix and destPrefix
432
+ if(name.substr(0,6) === "style." && name.length > 6) {
433
+ domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;
434
+ return;
435
+ }
436
+ // Check if the sourcePrefix is a match
437
+ if(name.substr(0,sourcePrefix.length) === sourcePrefix) {
438
+ name = destPrefix + name.substr(sourcePrefix.length);
439
+ } else {
440
+ value = undefined;
441
+ }
424
442
  // Check for excluded attribute names
425
- if(options.excludeEventAttributes && name.substr(0,2) === "on") {
443
+ if(options.excludeEventAttributes && name.substr(0,2).toLowerCase() === EVENT_ATTRIBUTE_PREFIX) {
426
444
  value = undefined;
427
445
  }
428
446
  if(value !== undefined) {
@@ -432,26 +450,24 @@ Widget.prototype.assignAttributes = function(domNode,options) {
432
450
  namespace = "http://www.w3.org/1999/xlink";
433
451
  name = name.substr(6);
434
452
  }
435
- // Handle styles
436
- if(name.substr(0,6) === "style." && name.length > 6) {
437
- domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;
438
- } else {
439
- // Setting certain attributes can cause a DOM error (eg xmlns on the svg element)
440
- try {
441
- domNode.setAttributeNS(namespace,name,value);
442
- } catch(e) {
443
- }
453
+ // Setting certain attributes can cause a DOM error (eg xmlns on the svg element)
454
+ try {
455
+ domNode.setAttributeNS(namespace,name,value);
456
+ } catch(e) {
444
457
  }
445
458
  }
446
- }
447
- // Not all parse tree nodes have the orderedAttributes property
459
+ };
460
+ // If the parse tree node has the orderedAttributes property then use that order
448
461
  if(this.parseTreeNode.orderedAttributes) {
449
462
  $tw.utils.each(this.parseTreeNode.orderedAttributes,function(attribute,index) {
450
- assignAttribute(attribute.name,self.attributes[attribute.name]);
451
- });
463
+ if(attribute.name in changedAttributes) {
464
+ assignAttribute(attribute.name,self.getAttribute(attribute.name));
465
+ }
466
+ });
467
+ // Otherwise update each changed attribute irrespective of order
452
468
  } else {
453
- $tw.utils.each(Object.keys(self.attributes).sort(),function(name) {
454
- assignAttribute(name,self.attributes[name]);
469
+ $tw.utils.each(changedAttributes,function(value,name) {
470
+ assignAttribute(name,self.getAttribute(name));
455
471
  });
456
472
  }
457
473
  };
@@ -719,44 +735,23 @@ Widget.prototype.findFirstDomNode = function() {
719
735
  };
720
736
 
721
737
  /*
722
- Entry into destroy procedure
723
- */
724
- Widget.prototype.destroyChildren = function() {
725
- $tw.utils.each(this.children,function(childWidget) {
726
- childWidget.destroy();
727
- });
728
- };
729
- /*
730
- Legacy entry into destroy procedure
738
+ Remove any DOM nodes created by this widget or its children
731
739
  */
732
740
  Widget.prototype.removeChildDomNodes = function() {
733
- this.destroy();
734
- };
735
- /*
736
- Default destroy
737
- */
738
- Widget.prototype.destroy = function() {
739
- // call children to remove their resources
740
- this.destroyChildren();
741
- // remove our resources
742
- this.children = [];
743
- this.removeLocalDomNodes();
744
- };
745
-
746
- /*
747
- Remove any DOM nodes created by this widget
748
- */
749
- Widget.prototype.removeLocalDomNodes = function() {
750
- // If this widget has directly created DOM nodes, delete them and exit.
741
+ // If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case
751
742
  if(this.domNodes.length > 0) {
752
743
  $tw.utils.each(this.domNodes,function(domNode) {
753
744
  domNode.parentNode.removeChild(domNode);
754
745
  });
755
746
  this.domNodes = [];
747
+ } else {
748
+ // Otherwise, ask the child widgets to delete their DOM nodes
749
+ $tw.utils.each(this.children,function(childWidget) {
750
+ childWidget.removeChildDomNodes();
751
+ });
756
752
  }
757
753
  };
758
754
 
759
-
760
755
  /*
761
756
  Invoke the action widgets that are descendents of the current widget.
762
757
  */
@@ -1086,7 +1086,7 @@ exports.getSubstitutedText = function(text,widget,options) {
1086
1086
  output = $tw.utils.replaceString(output,new RegExp("\\$" + $tw.utils.escapeRegExp(substitute.name) + "\\$","mg"),substitute.value);
1087
1087
  });
1088
1088
  // Substitute any variable references with their values
1089
- return output.replace(/\$\((\w+)\)\$/g, function(match,varname) {
1089
+ return output.replace(/\$\(([^\)\$]+)\)\$/g, function(match,varname) {
1090
1090
  return widget.getVariable(varname,{defaultValue: ""})
1091
1091
  });
1092
1092
  };
@@ -1287,7 +1287,7 @@ exports.search = function(text,options) {
1287
1287
  console.log("Regexp error parsing /(" + text + ")/" + flags + ": ",e);
1288
1288
  }
1289
1289
  } else if(options.some) {
1290
- terms = text.trim().split(/ +/);
1290
+ terms = text.trim().split(/[^\S\xA0]+/);
1291
1291
  if(terms.length === 1 && terms[0] === "") {
1292
1292
  searchTermsRegExps = null;
1293
1293
  } else {
@@ -1298,7 +1298,7 @@ exports.search = function(text,options) {
1298
1298
  searchTermsRegExps.push(new RegExp("(" + regExpStr + ")",flags));
1299
1299
  }
1300
1300
  } else { // default: words
1301
- terms = text.split(/ +/);
1301
+ terms = text.split(/[^\S\xA0]+/);
1302
1302
  if(terms.length === 1 && terms[0] === "") {
1303
1303
  searchTermsRegExps = null;
1304
1304
  } else {
@@ -1,4 +1,3 @@
1
1
  title: $:/core/templates/html-json-skinny-tiddler
2
2
 
3
- <$list filter="[<numTiddlers>compare:number:gteq[1]] ~[<counter>!match[1]]">`,`<$text text=<<newline>>/></$list>
4
3
  <$jsontiddler tiddler=<<currentTiddler>> exclude="text" escapeUnsafeScriptChars="yes"/>
@@ -1,3 +1,3 @@
1
1
  title: $:/core/templates/html-json-tiddler
2
2
 
3
- <$list filter="[<counter>!match[1]]">`,`<$text text=<<newline>>/></$list><$jsontiddler tiddler=<<currentTiddler>> escapeUnsafeScriptChars="yes"/>
3
+ <$jsontiddler tiddler=<<currentTiddler>> escapeUnsafeScriptChars="yes"/>
@@ -6,14 +6,14 @@ title: $:/core/templates/store.area.template.html
6
6
  <$list filter="[[storeAreaFormat]is[variable]getvariable[]else[json]match[json]]">
7
7
  <!-- New-style JSON store area, with an old-style store area for compatibility with v5.1.x tooling -->
8
8
  `<script class="tiddlywiki-tiddler-store" type="application/json">[`
9
- <$vars newline={{{ [charcode[10]] }}}>
9
+ <$let newline={{{ [charcode[10]] }}} join=`,$(newline)$`>
10
10
  <$text text=<<newline>>/>
11
- <$list filter=<<saveTiddlerFilter>> counter="counter" template="$:/core/templates/html-json-tiddler"/>
11
+ <$list filter=<<saveTiddlerFilter>> join=<<join>> template="$:/core/templates/html-json-tiddler"/>
12
12
  <$vars numTiddlers={{{ [subfilter<saveTiddlerFilter>count[]] }}}>
13
- <$list filter={{{ [<skinnySaveTiddlerFilter>] }}} counter="counter" template="$:/core/templates/html-json-skinny-tiddler"/>
13
+ <$list filter={{{ [<skinnySaveTiddlerFilter>] }}} join=<<join>> template="$:/core/templates/html-json-skinny-tiddler"/>
14
14
  </$vars>
15
15
  <$text text=<<newline>>/>
16
- </$vars>
16
+ </$let>
17
17
  `]</script>`
18
18
  `<div id="storeArea" style="display:none;">`
19
19
  `</div>`
@@ -1,3 +1,4 @@
1
+ code-body: yes
1
2
  title: $:/core/ui/AlertTemplate
2
3
 
3
4
  \whitespace trim
@@ -26,10 +26,10 @@ caption: {{$:/language/ControlPanel/Basics/Caption}}
26
26
  |<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
27
27
  |<$link to="$:/status/UserName"><<lingo Username/Prompt>></$link> |<$edit-text tiddler="$:/status/UserName" default="" tag="input"/> |
28
28
  |<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input"/> |
29
- |<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit class="tc-edit-texteditor" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
29
+ |<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit class="tc-edit-texteditor" tiddler="$:/DefaultTiddlers" autoHeight="yes"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
30
30
  |<$link to="$:/language/DefaultNewTiddlerTitle"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler="$:/language/DefaultNewTiddlerTitle" default="" tag="input"/> |
31
31
  |<$link to="$:/config/NewJournal/Title"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Title" default="" tag="input"/> |
32
- |<$link to="$:/config/NewJournal/Text"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler="$:/config/NewJournal/Text" class="tc-edit-texteditor" default=""/> |
32
+ |<$link to="$:/config/NewJournal/Text"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler="$:/config/NewJournal/Text" class="tc-edit-texteditor" default="" autoHeight="yes"/> |
33
33
  |<$link to="$:/config/NewTiddler/Tags"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler="$:/config/NewTiddler/Tags" tagField="text">{{||$:/core/ui/EditTemplate/tags}}<$list filter="[<currentTiddler>tags[]] +[limit[1]]" variable="ignore"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field="text" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=""/></$button></$list></$vars> |
34
34
  |<$link to="$:/config/NewJournal/Tags"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler="$:/config/NewJournal/Tags" tagField="text">{{||$:/core/ui/EditTemplate/tags}}<$list filter="[<currentTiddler>tags[]] +[limit[1]]" variable="ignore"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field="text" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=""/></$button></$list></$vars> |
35
35
  |<$link to="$:/config/AutoFocus"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |