tiddlywiki 5.2.2 → 5.2.3

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 (631) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.yml +67 -0
  2. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +8 -0
  4. package/bin/build-site.sh +1 -1
  5. package/boot/boot.js +1 -1
  6. package/contributing.md +1 -1
  7. package/core/language/en-GB/EditTemplate.multids +1 -0
  8. package/core/language/en-GB/Help/default.tid +4 -1
  9. package/core/language/en-GB/Help/render.tid +2 -2
  10. package/core/language/en-GB/SideBar.multids +1 -0
  11. package/core/modules/commands/render.js +1 -1
  12. package/core/modules/commands/rendertiddler.js +1 -0
  13. package/core/modules/commands/rendertiddlers.js +1 -1
  14. package/core/modules/commands/save.js +56 -42
  15. package/core/modules/editor/engines/framed.js +3 -1
  16. package/core/modules/editor/operations/text/prefix-lines.js +2 -2
  17. package/core/modules/editor/operations/text/wrap-lines.js +27 -10
  18. package/core/modules/filterrunprefixes/map.js +10 -2
  19. package/core/modules/filters/insertafter.js +46 -0
  20. package/core/modules/filters/insertbefore.js +6 -1
  21. package/core/modules/filters.js +19 -1
  22. package/core/modules/savers/put.js +11 -7
  23. package/core/modules/savers/upload.js +1 -1
  24. package/core/modules/server/server.js +3 -2
  25. package/core/modules/startup/browser-messaging.js +4 -2
  26. package/core/modules/startup/story.js +3 -1
  27. package/core/modules/utils/dom/dom.js +51 -0
  28. package/core/modules/utils/dom/dragndrop.js +24 -14
  29. package/core/modules/utils/dom/notifier.js +2 -1
  30. package/core/modules/utils/parsetree.js +48 -11
  31. package/core/modules/utils/utils.js +15 -1
  32. package/core/modules/widgets/action-setfield.js +12 -14
  33. package/core/modules/widgets/button.js +6 -1
  34. package/core/modules/widgets/checkbox.js +124 -15
  35. package/core/modules/widgets/draggable.js +37 -14
  36. package/core/modules/widgets/element.js +9 -3
  37. package/core/modules/widgets/eventcatcher.js +1 -27
  38. package/core/modules/widgets/image.js +4 -0
  39. package/core/modules/widgets/let.js +1 -1
  40. package/core/modules/widgets/scrollable.js +2 -0
  41. package/core/modules/widgets/widget.js +8 -1
  42. package/core/modules/wiki.js +1 -1
  43. package/core/palettes/CupertinoDark.tid +3 -3
  44. package/core/palettes/GruvBoxDark.tid +2 -2
  45. package/core/palettes/Nord.tid +2 -2
  46. package/core/templates/save-lazy-all.tid +2 -2
  47. package/core/templates/server/static.sidebar.wikitext.tid +1 -1
  48. package/core/templates/server/static.tiddler.html.tid +2 -2
  49. package/core/ui/Actions/new-image.tid +1 -0
  50. package/core/ui/Actions/new-journal.tid +2 -1
  51. package/core/ui/Actions/new-tiddler.tid +1 -0
  52. package/core/ui/AdvancedSearch/Filter.tid +50 -10
  53. package/core/ui/AdvancedSearch/FilterButtons/clear.tid +1 -0
  54. package/core/ui/AdvancedSearch/FilterButtons/delete.tid +1 -0
  55. package/core/ui/AdvancedSearch/FilterButtons/dropdown.tid +5 -2
  56. package/core/ui/AdvancedSearch/FilterButtons/export.tid +1 -0
  57. package/core/ui/AdvancedSearch/Shadows.tid +54 -12
  58. package/core/ui/AdvancedSearch/Standard.tid +36 -19
  59. package/core/ui/AdvancedSearch/System.tid +54 -12
  60. package/core/ui/AdvancedSearch.tid +1 -0
  61. package/core/ui/AlertTemplate.tid +10 -1
  62. package/core/ui/Components/tag-link.tid +1 -0
  63. package/core/ui/ControlPanel/Advanced.tid +1 -0
  64. package/core/ui/ControlPanel/Appearance.tid +1 -0
  65. package/core/ui/ControlPanel/Basics.tid +3 -0
  66. package/core/ui/ControlPanel/Cascades.tid +1 -0
  67. package/core/ui/ControlPanel/EditorTypes.tid +1 -0
  68. package/core/ui/ControlPanel/Info.tid +1 -0
  69. package/core/ui/ControlPanel/KeyboardShortcuts.tid +18 -7
  70. package/core/ui/ControlPanel/Modals/AddPlugins.tid +26 -9
  71. package/core/ui/ControlPanel/Parsing.tid +3 -0
  72. package/core/ui/ControlPanel/Plugins/Add/Updates.tid +5 -1
  73. package/core/ui/ControlPanel/Plugins/AddPlugins.tid +4 -1
  74. package/core/ui/ControlPanel/Plugins.tid +1 -0
  75. package/core/ui/ControlPanel/Saving/TiddlySpot.tid +2 -1
  76. package/core/ui/ControlPanel/Saving.tid +1 -0
  77. package/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab.tid +1 -0
  78. package/core/ui/ControlPanel/Settings/DefaultSidebarTab.tid +1 -0
  79. package/core/ui/ControlPanel/Settings/LinkToBehaviour.tid +1 -0
  80. package/core/ui/ControlPanel/Settings/ToolbarButtonStyle.tid +1 -0
  81. package/core/ui/ControlPanel/Toolbars/EditorItemTemplate.tid +8 -1
  82. package/core/ui/ControlPanel/Toolbars/ItemTemplate.tid +11 -1
  83. package/core/ui/ControlPanel/Toolbars.tid +1 -0
  84. package/core/ui/ControlPanel.tid +1 -0
  85. package/core/ui/DefaultSearchResultList.tid +1 -0
  86. package/core/ui/EditTemplate/Preview/output.tid +1 -1
  87. package/core/ui/EditTemplate/body/default.tid +8 -5
  88. package/core/ui/EditTemplate/body-editor.tid +2 -0
  89. package/core/ui/EditTemplate/controls.tid +1 -0
  90. package/core/ui/EditTemplate/fieldEditor-default.tid +1 -1
  91. package/core/ui/EditTemplate/fields.tid +17 -10
  92. package/core/ui/EditTemplate/shadow.tid +2 -0
  93. package/core/ui/EditTemplate/title.tid +10 -5
  94. package/core/ui/EditTemplate.tid +28 -4
  95. package/core/ui/EditorToolbar/editor-height.tid +1 -0
  96. package/core/ui/EditorToolbar/excise-dropdown.tid +5 -4
  97. package/core/ui/EditorToolbar/file-import.tid +4 -0
  98. package/core/ui/EditorToolbar/link-dropdown.tid +10 -5
  99. package/core/ui/EditorToolbar/more-dropdown.tid +5 -1
  100. package/core/ui/EditorToolbar/paint.tid +1 -0
  101. package/core/ui/EditorToolbar/preview.tid +1 -0
  102. package/core/ui/EditorToolbar/size-dropdown.tid +6 -1
  103. package/core/ui/ExportTiddlyWikiCore.tid +15 -5
  104. package/core/ui/ImportListing.tid +23 -5
  105. package/core/ui/ImportPreviews/Fields.tid +1 -0
  106. package/core/ui/KeyboardShortcuts/advanced-search.tid +1 -0
  107. package/core/ui/KeyboardShortcuts/change-sidebar-layout.tid +4 -2
  108. package/core/ui/KeyboardShortcuts/new-image.tid +1 -0
  109. package/core/ui/KeyboardShortcuts/new-journal.tid +1 -0
  110. package/core/ui/KeyboardShortcuts/new-tiddler.tid +1 -0
  111. package/core/ui/KeyboardShortcuts/save-wiki.tid +1 -0
  112. package/core/ui/KeyboardShortcuts/toggle-sidebar.tid +4 -3
  113. package/core/ui/LayoutSwitcher.tid +16 -4
  114. package/core/ui/ListItemTemplate.tid +1 -3
  115. package/core/ui/ListTaggedCascade.tid +1 -0
  116. package/core/ui/Manager/ItemMainFields.tid +1 -0
  117. package/core/ui/Manager/ItemSidebarColour.tid +4 -1
  118. package/core/ui/Manager/ItemSidebarIcon.tid +4 -4
  119. package/core/ui/Manager/ItemSidebarTools.tid +7 -2
  120. package/core/ui/Manager.tid +11 -6
  121. package/core/ui/MissingTemplate.tid +1 -0
  122. package/core/ui/MoreSideBar/Types.tid +1 -0
  123. package/core/ui/PageControls/controlpanel.tid +1 -1
  124. package/core/ui/PageStylesheet.tid +1 -0
  125. package/core/ui/PageTemplate/story.tid +1 -1
  126. package/core/ui/PaletteManager.tid +11 -10
  127. package/core/ui/PluginInfo.tid +1 -0
  128. package/core/ui/PluginInfoDefaultContents.tid +1 -0
  129. package/core/ui/SearchResults.tid +8 -6
  130. package/core/ui/SideBar/More.tid +1 -0
  131. package/core/ui/SideBar/Open.tid +2 -2
  132. package/core/ui/SideBarSegments/search.tid +2 -0
  133. package/core/ui/SideBarSegments/tabs.tid +1 -1
  134. package/core/ui/TiddlerFieldTemplate.tid +1 -0
  135. package/core/ui/TiddlerFields.tid +1 -0
  136. package/core/ui/TiddlerInfo/Advanced/PluginInfo.tid +1 -0
  137. package/core/ui/TiddlerInfo/Advanced/ShadowInfo.tid +1 -0
  138. package/core/ui/TiddlerInfo/Advanced.tid +1 -0
  139. package/core/ui/TiddlerInfo.tid +1 -0
  140. package/core/ui/TopRightBar/menu.tid +1 -0
  141. package/core/ui/UntaggedTemplate.tid +1 -0
  142. package/core/ui/ViewTemplate/body/import.tid +6 -1
  143. package/core/ui/ViewTemplate/body/plugin.tid +1 -0
  144. package/core/ui/ViewTemplate/body/rendered-plain-text.tid +7 -0
  145. package/core/ui/ViewTemplate/body.tid +2 -0
  146. package/core/ui/ViewTemplate/classic.tid +1 -0
  147. package/core/ui/ViewTemplate/subtitle/modified.tid +4 -0
  148. package/core/ui/ViewTemplate/subtitle/modifier.tid +4 -0
  149. package/core/ui/ViewTemplate/subtitle.tid +6 -2
  150. package/core/ui/ViewTemplate/tags.tid +1 -0
  151. package/core/ui/ViewTemplate/title.tid +2 -0
  152. package/core/ui/ViewTemplate/unfold.tid +1 -0
  153. package/core/ui/ViewTemplate.tid +1 -1
  154. package/core/ui/ViewToolbar/new-here.tid +1 -0
  155. package/core/wiki/allfields.tid +8 -2
  156. package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
  157. package/core/wiki/config/ViewTemplateBodyFilters.multids +2 -1
  158. package/core/wiki/currpalettepreview.tid +7 -2
  159. package/core/wiki/debugstylesheets.tid +1 -0
  160. package/core/wiki/download-wiki-button.tid +2 -1
  161. package/core/wiki/languageswitcher.tid +2 -0
  162. package/core/wiki/macros/colour-picker.tid +9 -2
  163. package/core/wiki/macros/copy-to-clipboard.tid +5 -2
  164. package/core/wiki/macros/diff.tid +4 -3
  165. package/core/wiki/macros/dumpvariables.tid +1 -0
  166. package/core/wiki/macros/image-picker.tid +5 -4
  167. package/core/wiki/macros/keyboard-driven-input.tid +22 -12
  168. package/core/wiki/macros/list.tid +7 -2
  169. package/core/wiki/macros/tabs.tid +55 -30
  170. package/core/wiki/macros/tag-picker.tid +14 -13
  171. package/core/wiki/macros/tag.tid +10 -5
  172. package/core/wiki/macros/thumbnails.tid +21 -9
  173. package/core/wiki/macros/timeline.tid +1 -0
  174. package/core/wiki/macros/toc.tid +19 -8
  175. package/core/wiki/macros/translink.tid +1 -0
  176. package/core/wiki/macros/tree.tid +8 -3
  177. package/core/wiki/minifocusswitcher.tid +1 -0
  178. package/core/wiki/minilanguageswitcher.tid +1 -0
  179. package/core/wiki/minithemeswitcher.tid +2 -1
  180. package/core/wiki/modules.tid +1 -0
  181. package/core/wiki/palettepreview.tid +1 -0
  182. package/core/wiki/paletteswitcher.tid +13 -2
  183. package/core/wiki/peek-stylesheets.tid +1 -5
  184. package/core/wiki/tags/ViewTemplateBodyFilter.tid +1 -1
  185. package/core/wiki/tags/ViewTemplateSubtitle.tid +2 -0
  186. package/core/wiki/themeswitcher.tid +10 -1
  187. package/core/wiki/title.tid +2 -1
  188. package/core/wiki/viewswitcher.tid +1 -0
  189. package/editions/de-AT/tiddlers/howto/TiddlyWiki und TiddlyDesktop.tid +1 -1
  190. package/editions/dev/tiddlers/_tw_shared/tiddlywiki.files +5 -0
  191. package/editions/dev/tiddlers/system/github-fork-ribbon.tid +1 -1
  192. package/editions/dev/tiddlywiki.info +1 -1
  193. package/editions/es-ES/tiddlers/TiddlyDesktop.tid +2 -2
  194. package/editions/fr-FR/tiddlers/Community Links Aggregator.tid +4 -4
  195. package/editions/fr-FR/tiddlers/Glossaire en-GB -_ fr-FR.tid +2 -1
  196. package/editions/fr-FR/tiddlers/community/editions/_Noteself_ by Danielo Rodr/303/255guez.tid" +34 -0
  197. package/editions/fr-FR/tiddlers/community/resources/TW5-firebase_ TiddlyWiki5 for Google Firebase by Peter Neumark.tid +28 -0
  198. package/editions/fr-FR/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid +24 -0
  199. package/editions/fr-FR/tiddlers/community/resources/TiddlyServer by Arlen Beiler.tid +35 -0
  200. package/editions/fr-FR/tiddlers/community/resources/Twexe_ Single File Tiddlywiki5 executable.tid +30 -0
  201. package/editions/fr-FR/tiddlers/community/resources/_Timimi_ Extension and executable by Riz.tid +33 -0
  202. package/editions/fr-FR/tiddlers/community/resources/_file-backups_ Extension for Firefox by pmario.tid +19 -0
  203. package/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid +17 -0
  204. package/editions/fr-FR/tiddlers/concepts/Pragma.tid +23 -0
  205. package/editions/fr-FR/tiddlers/{WikiText.tid → concepts/WikiText.tid} +6 -4
  206. package/editions/fr-FR/tiddlers/definitions/TiddlyDesktop.tid +19 -0
  207. package/editions/fr-FR/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid +11 -0
  208. package/editions/fr-FR/tiddlers/gettingstarted/GettingStarted - Safari.tid +12 -0
  209. package/editions/fr-FR/tiddlers/{A_Gentle_Guide_to_TiddlyWiki.tid → hellothere/A Gentle Guide to TiddlyWiki.tid } +6 -4
  210. package/editions/fr-FR/tiddlers/howtos/How to Customize TiddlyDesktop.tid +33 -0
  211. package/editions/fr-FR/tiddlers/howtos/Windows HTA Hack.tid +17 -0
  212. package/editions/fr-FR/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +49 -0
  213. package/editions/fr-FR/tiddlers/nodejs/Serving TW5 from Android.tid +47 -0
  214. package/editions/fr-FR/tiddlers/nodejs/TiddlyWiki on Node.js.tid +18 -0
  215. package/editions/fr-FR/tiddlers/saving/Emergency Tiddler Export.tid +28 -0
  216. package/editions/fr-FR/tiddlers/saving/Example config-tiddlyweb-host for IIS.tid +9 -0
  217. package/editions/fr-FR/tiddlers/saving/Example package.json for IIS.tid +15 -0
  218. package/editions/fr-FR/tiddlers/saving/Example tiddlywiki.info for IIS.tid +18 -0
  219. package/editions/fr-FR/tiddlers/saving/Example web.config for IIS.tid +32 -0
  220. package/editions/fr-FR/tiddlers/saving/Installing TiddlyWiki on Microsoft Internet Information Server.tid +69 -0
  221. package/editions/fr-FR/tiddlers/saving/Saving on Android.tid +36 -0
  222. package/editions/fr-FR/tiddlers/saving/Saving on Beaker Browser.tid +35 -0
  223. package/editions/fr-FR/tiddlers/saving/Saving on Browser with File System Access API.tid +20 -0
  224. package/editions/fr-FR/tiddlers/saving/Saving on TidGi Desktop.tid +28 -0
  225. package/editions/fr-FR/tiddlers/saving/Saving on TiddlyDesktop.tid +20 -0
  226. package/editions/fr-FR/tiddlers/saving/Saving on TiddlyHost.tid +18 -0
  227. package/editions/fr-FR/tiddlers/{Saving on TiddlySpot.tid → saving/Saving on TiddlySpot.tid } +14 -3
  228. package/editions/fr-FR/tiddlers/saving/Saving on a PHP Server.tid +45 -0
  229. package/editions/fr-FR/tiddlers/saving/Saving on iPad_iPhone.tid +30 -0
  230. package/editions/fr-FR/tiddlers/saving/Saving to a Git service.tid +26 -0
  231. package/editions/fr-FR/tiddlers/saving/Saving via WebDAV.tid +88 -0
  232. package/editions/fr-FR/tiddlers/saving/Saving via a Minimal Ruby Server.tid +20 -0
  233. package/editions/fr-FR/tiddlers/saving/Saving with Polly.tid +30 -0
  234. package/editions/fr-FR/tiddlers/saving/Saving with TW Receiver.tid +16 -0
  235. package/editions/fr-FR/tiddlers/{Saving with TiddlyFox on Android.tid → saving/Saving with TiddlyFox on Android.tid } +5 -5
  236. package/editions/fr-FR/tiddlers/saving/Saving with TiddlyFox.tid +31 -0
  237. package/editions/fr-FR/tiddlers/saving/Saving with TiddlyIE.tid +25 -0
  238. package/editions/fr-FR/tiddlers/{Saving with the HTML5 fallback saver.tid → saving/Saving with the HTML5 fallback saver.tid } +11 -6
  239. package/editions/fr-FR/tiddlers/{Saving.tid → saving/Saving.tid} +8 -10
  240. package/editions/fr-FR/tiddlers/saving/TiddlyWiki Cloud.tid +17 -0
  241. package/editions/fr-FR/tiddlers/system/$__core_ui_SideBar_Open.tid +40 -0
  242. package/editions/fr-FR/tiddlers/{$__editions_fr-FR_util-macros.tid → system/$__editions_fr-FR_util-macros.tid} +4 -4
  243. package/editions/fr-FR/tiddlers/{$__editions_tw5.com_wikitext-macros.tid → system/$__editions_tw5.com_wikitext-macros.tid} +24 -3
  244. package/editions/fr-FR/tiddlers/system/tw5.com-card-template.tid +17 -0
  245. package/editions/fr-FR/tiddlers/tiddlydesktop/TiddlyDesktop_Releases.tid +9 -0
  246. package/editions/fr-FR/tiddlers/widgets/TranscludeWidget.tid +72 -0
  247. package/editions/fr-FR/tiddlers/{Block_Quotes_in_WikiText.tid → wikitext/Block Quotes in WikiText.tid } +3 -2
  248. package/editions/fr-FR/tiddlers/{Code Blocks in WikiText.tid → wikitext/Code Blocks in WikiText.tid } +3 -3
  249. package/editions/fr-FR/tiddlers/{Dashes in WikiText.tid → wikitext/Dashes in WikiText.tid } +3 -3
  250. package/editions/fr-FR/tiddlers/{Definitions_in_WikiText.tid → wikitext/Definitions in WikiText.tid } +2 -2
  251. package/editions/fr-FR/tiddlers/{Formatting in WikiText.tid → wikitext/Formatting in WikiText.tid } +5 -6
  252. package/editions/fr-FR/tiddlers/{Hard Linebreaks in WikiText.tid → wikitext/Hard Linebreaks in WikiText.tid } +6 -5
  253. package/editions/fr-FR/tiddlers/{Headings in WikiText.tid → wikitext/Headings in WikiText.tid } +4 -4
  254. package/editions/fr-FR/tiddlers/wikitext/Horizontal Rules in WikiText.tid +17 -0
  255. package/editions/fr-FR/tiddlers/{Lists_in_WikiText.tid → wikitext/Lists in WikiText.tid } +19 -19
  256. package/editions/fr-FR/tiddlers/wikitext/Macro Calls in WikiText.tid +27 -0
  257. package/editions/fr-FR/tiddlers/{Paragraphs in WikiText.tid → wikitext/Paragraphs in WikiText.tid } +8 -7
  258. package/editions/fr-FR/tiddlers/wikitext/Tables in WikiText.tid +69 -0
  259. package/editions/fr-FR/tiddlers/wikitext/Transclusion and Substitution.tid +61 -0
  260. package/editions/fr-FR/tiddlers/{Transclusion_in_WikiText.tid → wikitext/Transclusion in WikiText.tid } +14 -13
  261. package/editions/fr-FR/tiddlers/{Transclusion_with_Templates.tid → wikitext/Transclusion with Templates.tid } +2 -1
  262. package/editions/fr-FR/tiddlers/{Typed_Blocks_in_WikiText.tid → wikitext/Typed Blocks in WikiText.tid } +16 -11
  263. package/editions/fr-FR/tiddlers/{Variables_in_WikiText.tid → wikitext/Variables in WikiText.tid } +7 -8
  264. package/editions/fr-FR/tiddlers/wikitext/Widgets in WikiText.tid +30 -0
  265. package/editions/fr-FR/tiddlers/wikitext/parser/Block Mode WikiText (Examples).tid +52 -0
  266. package/editions/fr-FR/tiddlers/wikitext/parser/Block Mode WikiText.tid +37 -0
  267. package/editions/fr-FR/tiddlers/wikitext/parser/Inline Mode WikiText.tid +28 -0
  268. package/editions/fr-FR/tiddlers/wikitext/parser/Places where the parser ignores WikiText.tid +14 -0
  269. package/editions/fr-FR/tiddlers/wikitext/parser/WikiText Parser Modes.tid +17 -0
  270. package/editions/fr-FR/tiddlers/wikitext/parser/WikiText parser mode HTML examples.tid +73 -0
  271. package/editions/fr-FR/tiddlers/wikitext/parser/WikiText parser mode transitions.tid +59 -0
  272. package/editions/fr-FR/tiddlers/wikitext/parser/WikiText parser mode_ macro examples.tid +56 -0
  273. package/editions/fr-FR/tiddlers/wikitext/parser/WikiText parser mode_ transclusion examples.tid +56 -0
  274. package/editions/fr-FR/tiddlers/wikitext/parser/table-example.tid +8 -0
  275. package/editions/katexdemo/tiddlers/$__DefaultTiddlers.tid +8 -0
  276. package/editions/katexdemo/tiddlers/HelloThere.tid +4 -1
  277. package/editions/katexdemo/tiddlers/LaTeX.tid +8 -0
  278. package/editions/katexdemo/tiddlers/TiddlyWiki.tid +8 -0
  279. package/editions/katexdemo/tiddlers/TiddlyWiki5.tid +6 -0
  280. package/editions/prerelease/tiddlers/{Release 5.2.3.tid → Release 5.2.4.tid } +16 -15
  281. package/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +1 -1
  282. package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
  283. package/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +4 -1
  284. package/editions/prerelease/tiddlywiki.info +0 -2
  285. package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal-all.tid +1 -29
  286. package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal.tid +1 -39
  287. package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-vertical.tid +1 -39
  288. package/editions/test/tiddlers/tests/test-action-widgets.js +43 -0
  289. package/editions/test/tiddlers/tests/test-checkbox-widget.js +507 -0
  290. package/editions/test/tiddlers/tests/test-filters.js +49 -2
  291. package/editions/test/tiddlers/tests/test-prefixes-filter.js +2 -0
  292. package/editions/test/tiddlers/tests/test-utils.js +6 -0
  293. package/editions/test/tiddlers/tests/test-widget.js +2 -1
  294. package/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js +8 -7
  295. package/editions/test/tiddlers/tests/test-wikitext.js +8 -1
  296. package/editions/translators/tiddlywiki.info +7 -1
  297. package/editions/tw.org/tiddlers/$__config_DefaultSidebarTab.tid +6 -0
  298. package/editions/tw.org/tiddlers/$__core_templates_static.content.tid +18 -0
  299. package/editions/tw.org/tiddlers/Code of Conduct.tid +30 -0
  300. package/editions/tw.org/tiddlers/Fundraising.tid +23 -0
  301. package/editions/tw.org/tiddlers/HelloThere.tid +3 -2
  302. package/editions/tw.org/tiddlers/Table of Contents.tid +2 -1
  303. package/editions/tw.org/tiddlers/_tw_shared/tiddlywiki.files +5 -0
  304. package/editions/tw5.com/tiddlers/$__StoryList.tid +3 -3
  305. package/editions/tw5.com/tiddlers/Brackets.tid +14 -0
  306. package/editions/tw5.com/tiddlers/{images → _tw_shared}/Motovun Jack.svg +0 -0
  307. package/editions/tw5.com/tiddlers/{images → _tw_shared}/Motovun Jack.svg.meta +1 -1
  308. package/editions/tw5.com/tiddlers/_tw_shared/favicons/classic.tiddlywiki.com.ico +0 -0
  309. package/editions/tw5.com/tiddlers/_tw_shared/favicons/classic.tiddlywiki.com.ico.meta +3 -0
  310. package/editions/tw5.com/tiddlers/_tw_shared/favicons/links.tiddlywiki.org.ico +0 -0
  311. package/editions/tw5.com/tiddlers/_tw_shared/favicons/links.tiddlywiki.org.ico.meta +3 -0
  312. package/editions/tw5.com/tiddlers/_tw_shared/favicons/talk.tiddlywiki.org.svg +6 -0
  313. package/editions/tw5.com/tiddlers/_tw_shared/favicons/talk.tiddlywiki.org.svg.meta +3 -0
  314. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.dev.ico +0 -0
  315. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.dev.ico.meta +3 -0
  316. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.ico +0 -0
  317. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.ico.meta +3 -0
  318. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.prerelease.ico +0 -0
  319. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.prerelease.ico.meta +3 -0
  320. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.upgrade.ico +0 -0
  321. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.upgrade.ico.meta +3 -0
  322. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.org.ico +0 -0
  323. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.org.ico.meta +3 -0
  324. package/editions/tw5.com/tiddlers/_tw_shared/sites/classic.tiddlywiki.com.tid +6 -0
  325. package/editions/tw5.com/tiddlers/_tw_shared/sites/links.tiddlywiki.org.tid +6 -0
  326. package/editions/tw5.com/tiddlers/_tw_shared/sites/talk.tiddlywiki.org.tid +6 -0
  327. package/editions/tw5.com/tiddlers/_tw_shared/sites/tiddlywiki.com.dev.tid +6 -0
  328. package/editions/tw5.com/tiddlers/_tw_shared/sites/tiddlywiki.com.prerelease.tid +6 -0
  329. package/editions/tw5.com/tiddlers/_tw_shared/sites/tiddlywiki.com.tid +6 -0
  330. package/editions/tw5.com/tiddlers/_tw_shared/sites/tiddlywiki.com.upgrade.tid +6 -0
  331. package/editions/tw5.com/tiddlers/_tw_shared/sites/tiddlywiki.org.tid +6 -0
  332. package/editions/tw5.com/tiddlers/_tw_shared/sites.tid +32 -0
  333. package/editions/tw5.com/tiddlers/_tw_shared/styles.tid +48 -0
  334. package/editions/tw5.com/tiddlers/_tw_shared/tags-TiddlyWikiSites.tid +3 -0
  335. package/editions/tw5.com/tiddlers/community/Community Links Aggregator.tid +1 -1
  336. package/editions/tw5.com/tiddlers/community/Contributing.tid +2 -1
  337. package/editions/tw5.com/tiddlers/community/editions/TiddlyMemo by oflg.tid +16 -0
  338. package/editions/tw5.com/tiddlers/community/resources/Projectify by Nicolas Petton.tid +6 -4
  339. package/editions/tw5.com/tiddlers/concepts/Customizing EditTemplate Field Rendering.tid +23 -7
  340. package/editions/tw5.com/tiddlers/concepts/DataTiddlers.tid +4 -21
  341. package/editions/tw5.com/tiddlers/concepts/DictionaryTiddlers.tid +3 -2
  342. package/editions/tw5.com/tiddlers/concepts/JSONTiddlers.tid +4 -3
  343. package/editions/tw5.com/tiddlers/concepts/KeyboardShortcutTiddler.tid +7 -0
  344. package/editions/tw5.com/tiddlers/concepts/Macros.tid +6 -2
  345. package/editions/tw5.com/tiddlers/concepts/Order of Tagged Tiddlers.tid +3 -1
  346. package/editions/tw5.com/tiddlers/concepts/SystemTags.tid +1 -1
  347. package/editions/tw5.com/tiddlers/concepts/TiddlyWiki5.tid +4 -2
  348. package/editions/tw5.com/tiddlers/concepts/Title List.tid +4 -1
  349. package/editions/tw5.com/tiddlers/customising/Customising TiddlyWiki's user interface.tid +2 -2
  350. package/editions/tw5.com/tiddlers/definitions/JavaScript Object Notation.tid +2 -6
  351. package/editions/tw5.com/tiddlers/definitions/Node.js.tid +5 -3
  352. package/editions/tw5.com/tiddlers/definitions/TiddlyDesktop.tid +1 -1
  353. package/editions/tw5.com/tiddlers/definitions/TiddlyWeb.tid +1 -0
  354. package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Styles.tid +0 -1
  355. package/editions/tw5.com/tiddlers/features/JSON in TiddlyWiki.tid +69 -0
  356. package/editions/tw5.com/tiddlers/filters/Mathematics Operators.tid +23 -3
  357. package/editions/tw5.com/tiddlers/filters/examples/insertafter Operator (Examples).tid +28 -0
  358. package/editions/tw5.com/tiddlers/filters/format.tid +3 -1
  359. package/editions/tw5.com/tiddlers/filters/insertafter Operator.tid +35 -0
  360. package/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid +9 -3
  361. package/editions/tw5.com/tiddlers/filters/syntax/Map Filter Run Prefix (Examples).tid +20 -2
  362. package/editions/tw5.com/tiddlers/filters/syntax/Map Filter Run Prefix.tid +3 -2
  363. package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid +6 -0
  364. package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +1 -1
  365. package/editions/tw5.com/tiddlers/howtos/Constructing JSON tiddlers.tid +16 -0
  366. package/editions/tw5.com/tiddlers/howtos/Creating a splash screen.tid +1 -1
  367. package/editions/tw5.com/tiddlers/howtos/How to apply custom styles by tag.tid +2 -2
  368. package/editions/tw5.com/tiddlers/howtos/How to customize TiddlyDesktop.tid +1 -1
  369. package/editions/tw5.com/tiddlers/howtos/How to update TiddlyWiki to the latest version.tid +7 -0
  370. package/editions/tw5.com/tiddlers/howtos/Modifying JSON tiddlers.tid +18 -0
  371. package/editions/tw5.com/tiddlers/howtos/Reading data from JSON tiddlers.tid +25 -0
  372. package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
  373. package/editions/tw5.com/tiddlers/macros/JsonTiddlersMacro.tid +3 -3
  374. package/editions/tw5.com/tiddlers/macros/TagMacro.tid +1 -1
  375. package/editions/tw5.com/tiddlers/macros/jsontiddler Macro.tid +2 -2
  376. package/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +2 -0
  377. package/editions/tw5.com/tiddlers/mechanisms/InfoMechanism.tid +1 -0
  378. package/editions/tw5.com/tiddlers/mechanisms/PluginMechanism.tid +1 -1
  379. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +3 -1
  380. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-new-tiddler.tid +11 -2
  381. package/editions/tw5.com/tiddlers/nodejs/Environment Variables on Node.js.tid +5 -5
  382. package/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +5 -10
  383. package/editions/tw5.com/tiddlers/nodejs/Installing custom plugins on Node.js.tid +11 -19
  384. package/editions/tw5.com/tiddlers/nodejs/Installing official plugins on Node.js.tid +40 -0
  385. package/editions/tw5.com/tiddlers/nodejs/PluginsCS.tid +9 -0
  386. package/editions/tw5.com/tiddlers/nodejs/TiddlyWiki on Node.js.tid +7 -2
  387. package/editions/tw5.com/tiddlers/nodejs/Uninstalling a plugin with Node.js.tid +31 -0
  388. package/editions/tw5.com/tiddlers/nodejs/Using TiddlyWiki on Node.js.tid +4 -4
  389. package/editions/tw5.com/tiddlers/platforms/TiddlyWiki in the Sky for TiddlyWeb.tid +2 -1
  390. package/editions/tw5.com/tiddlers/plugins/Installing a plugin from the plugin library.tid +22 -35
  391. package/editions/tw5.com/tiddlers/plugins/Manually installing a plugin.tid +19 -4
  392. package/editions/tw5.com/tiddlers/plugins/OfficialPlugins.tid +3 -1
  393. package/editions/tw5.com/tiddlers/plugins/Plugin Ordering.tid +47 -0
  394. package/editions/tw5.com/tiddlers/plugins/PluginFolders.tid +27 -1
  395. package/editions/tw5.com/tiddlers/plugins/Plugins.tid +19 -7
  396. package/editions/tw5.com/tiddlers/plugins/Uninstalling a plugin.tid +15 -25
  397. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.23.tid +32 -34
  398. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.0.tid +36 -38
  399. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +16 -18
  400. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.2.tid +26 -28
  401. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.3.tid +152 -0
  402. package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +1 -1
  403. package/editions/tw5.com/tiddlers/saving/Saving on Android.tid +1 -1
  404. package/editions/tw5.com/tiddlers/saving/Saving on TidGi.tid +1 -1
  405. package/editions/tw5.com/tiddlers/saving/Saving on TiddlyDesktop.tid +3 -3
  406. package/editions/tw5.com/tiddlers/saving/Saving on iPad_iPhone.tid +1 -1
  407. package/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +5 -3
  408. package/editions/tw5.com/tiddlers/saving/Saving.tid +9 -11
  409. package/editions/tw5.com/tiddlers/system/Deprecated.tid +4 -4
  410. package/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid +2 -6
  411. package/editions/tw5.com/tiddlers/system/doc-macros.tid +11 -1
  412. package/editions/tw5.com/tiddlers/system/doc-styles.tid +34 -4
  413. package/editions/tw5.com/tiddlers/system/download-empty-button.tid +1 -1
  414. package/editions/tw5.com/tiddlers/system/systemtag-template.tid +21 -0
  415. package/editions/tw5.com/tiddlers/system/tw5.com-card-template.tid +12 -8
  416. package/editions/tw5.com/tiddlers/system/tw5.com-styles.tid +5 -6
  417. package/editions/tw5.com/tiddlers/system/version-macros.tid +3 -3
  418. package/editions/tw5.com/tiddlers/system/wikitext-macros.tid +38 -3
  419. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_Macro_View_Body.tid +9 -0
  420. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_ViewTemplate.tid +2 -2
  421. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_ViewTemplateSubtitle.tid +9 -0
  422. package/editions/tw5.com/tiddlers/tiddlydesktop/TiddlyDesktop_Releases.tid +1 -1
  423. package/editions/tw5.com/tiddlers/variables/modifier Variable.tid +2 -2
  424. package/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +77 -3
  425. package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +19 -3
  426. package/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +3 -1
  427. package/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +5 -3
  428. package/editions/tw5.com/tiddlers/widgets/JSONTiddlerWidget.tid +5 -4
  429. package/editions/tw5.com/tiddlers/widgets/ListWidget.tid +2 -2
  430. package/editions/tw5.com/tiddlers/widgets/ScrollableWidget.tid +3 -3
  431. package/editions/tw5.com/tiddlers/widgets/SetWidget.tid +3 -1
  432. package/editions/tw5.com/tiddlers/widgets/TranscludeWidget.tid +2 -5
  433. package/editions/tw5.com/tiddlers/wikitext/Code Blocks in WikiText.tid +4 -7
  434. package/editions/tw5.com/tiddlers/wikitext/Dashes in WikiText.tid +7 -3
  435. package/editions/tw5.com/tiddlers/wikitext/Formatting in WikiText.tid +7 -7
  436. package/editions/tw5.com/tiddlers/wikitext/Headings in WikiText.tid +3 -3
  437. package/editions/tw5.com/tiddlers/wikitext/Horizontal Rules in WikiText.tid +3 -5
  438. package/editions/tw5.com/tiddlers/wikitext/Tables in WikiText.tid +13 -37
  439. package/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +4 -4
  440. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText Parser Modes.tid +1 -1
  441. package/languages/de-DE/EditTemplate.multids +1 -0
  442. package/languages/de-DE/Help/render.tid +2 -1
  443. package/languages/de-DE/SideBar.multids +1 -0
  444. package/languages/fr-FR/ControlPanel.multids +18 -0
  445. package/languages/fr-FR/EditTemplate.multids +1 -0
  446. package/languages/fr-FR/Fields.multids +4 -2
  447. package/languages/fr-FR/Help/default.tid +4 -1
  448. package/languages/fr-FR/Help/render.tid +2 -1
  449. package/languages/fr-FR/Misc.multids +1 -1
  450. package/languages/fr-FR/SideBar.multids +1 -0
  451. package/languages/ja-JP/Buttons.multids +147 -30
  452. package/languages/ja-JP/ControlPanel.multids +175 -37
  453. package/languages/ja-JP/CoreReadMe.tid +2 -2
  454. package/languages/ja-JP/Dates.multids +24 -24
  455. package/languages/ja-JP/Docs/ModuleTypes.multids +3 -3
  456. package/languages/ja-JP/Docs/PaletteColours.multids +18 -18
  457. package/languages/ja-JP/EditTemplate.multids +23 -7
  458. package/languages/ja-JP/Exporters.multids +1 -1
  459. package/languages/ja-JP/Fields.multids +28 -23
  460. package/languages/ja-JP/Filters.multids +12 -9
  461. package/languages/ja-JP/GettingStarted.tid +6 -6
  462. package/languages/ja-JP/Help/build.tid +2 -2
  463. package/languages/ja-JP/Help/editions.tid +6 -2
  464. package/languages/ja-JP/Help/help.tid +1 -1
  465. package/languages/ja-JP/Help/init.tid +2 -2
  466. package/languages/ja-JP/Help/load.tid +2 -2
  467. package/languages/ja-JP/Help/makelibrary.tid +3 -3
  468. package/languages/ja-JP/Help/output.tid +2 -2
  469. package/languages/ja-JP/Help/rendertiddler.tid +2 -2
  470. package/languages/ja-JP/Help/rendertiddlers.tid +2 -2
  471. package/languages/ja-JP/Help/savetiddler.tid +2 -2
  472. package/languages/ja-JP/Help/savetiddlers.tid +12 -2
  473. package/languages/ja-JP/Help/server.tid +6 -6
  474. package/languages/ja-JP/Help/setfield.tid +7 -7
  475. package/languages/ja-JP/Help/unpackplugin.tid +2 -2
  476. package/languages/ja-JP/Help/verbose.tid +6 -2
  477. package/languages/ja-JP/Help/version.tid +2 -2
  478. package/languages/ja-JP/Import.multids +27 -8
  479. package/languages/ja-JP/Misc.multids +98 -11
  480. package/languages/ja-JP/Modals/Download.tid +2 -2
  481. package/languages/ja-JP/Notifications.multids +2 -2
  482. package/languages/ja-JP/Search.multids +8 -4
  483. package/languages/ja-JP/SideBar.multids +6 -4
  484. package/languages/ja-JP/SiteSubtitle.tid +1 -1
  485. package/languages/ja-JP/SiteTitle.tid +1 -1
  486. package/languages/ja-JP/TiddlerInfo.multids +10 -10
  487. package/languages/ja-JP/Types/application%2Fjavascript.tid +1 -1
  488. package/languages/ja-JP/Types/image%2Fgif.tid +1 -1
  489. package/languages/ja-JP/Types/image%2Fjpeg.tid +1 -1
  490. package/languages/ja-JP/Types/image%2Fpng.tid +1 -1
  491. package/languages/ja-JP/Types/image%2Fsvg%2Bxml.tid +1 -1
  492. package/languages/ja-JP/Types/image%2Fx-icon.tid +1 -1
  493. package/languages/ja-JP/Types/text%2Fcss.tid +1 -1
  494. package/languages/ja-JP/Types/text%2Fvnd.tiddlywiki.tid +1 -1
  495. package/languages/ja-JP/plugin.info +1 -1
  496. package/languages/pl-PL/ControlPanel.multids +3 -1
  497. package/languages/pl-PL/EditTemplate.multids +1 -0
  498. package/languages/pl-PL/Fields.multids +3 -3
  499. package/languages/pl-PL/Help/default.tid +4 -1
  500. package/languages/pl-PL/Import.multids +3 -3
  501. package/languages/pl-PL/SideBar.multids +1 -0
  502. package/languages/zh-Hans/EditTemplate.multids +1 -0
  503. package/languages/zh-Hans/Help/default.tid +4 -1
  504. package/languages/zh-Hans/Help/render.tid +1 -0
  505. package/languages/zh-Hans/SideBar.multids +1 -0
  506. package/languages/zh-Hant/EditTemplate.multids +1 -0
  507. package/languages/zh-Hant/Help/default.tid +4 -1
  508. package/languages/zh-Hant/Help/render.tid +1 -0
  509. package/languages/zh-Hant/SideBar.multids +1 -0
  510. package/licenses/cla-individual.md +10 -0
  511. package/package.json +1 -1
  512. package/plugins/tiddlywiki/browser-sniff/browser.js +5 -1
  513. package/plugins/tiddlywiki/browser-sniff/usage.tid +1 -0
  514. package/plugins/tiddlywiki/browser-storage/rawmarkup.js +18 -1
  515. package/plugins/tiddlywiki/browser-storage/readme.tid +0 -1
  516. package/plugins/tiddlywiki/browser-storage/settings.tid +5 -1
  517. package/plugins/tiddlywiki/browser-storage/startup.js +14 -9
  518. package/plugins/tiddlywiki/dynannotate/docs/readme.tid +72 -8
  519. package/plugins/tiddlywiki/dynannotate/modules/dynannotate.js +10 -1
  520. package/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js +104 -0
  521. package/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js +144 -89
  522. package/plugins/tiddlywiki/dynannotate/modules/startup.js +40 -0
  523. package/{editions/katexdemo/tiddlers → plugins/tiddlywiki/katex}/ImplementationNotes.tid +3 -3
  524. package/plugins/tiddlywiki/katex/developer.tid +58 -0
  525. package/plugins/tiddlywiki/katex/files/contrib/mhchem.min.js +1 -0
  526. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff +0 -0
  527. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  528. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  529. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  530. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  531. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff +0 -0
  532. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  533. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff +0 -0
  534. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff +0 -0
  535. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  536. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff +0 -0
  537. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  538. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  539. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  540. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff +0 -0
  541. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff +0 -0
  542. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff +0 -0
  543. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff +0 -0
  544. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff +0 -0
  545. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  546. package/plugins/tiddlywiki/katex/files/katex.min.css +1 -1
  547. package/plugins/tiddlywiki/katex/files/katex.min.js +1 -1
  548. package/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css +1 -1
  549. package/plugins/tiddlywiki/katex/files/tiddlywiki.files +2 -2
  550. package/plugins/tiddlywiki/katex/plugin.info +1 -1
  551. package/plugins/tiddlywiki/katex/readme.tid +1 -1
  552. package/plugins/tiddlywiki/katex/snippets/logo.tid +4 -0
  553. package/plugins/tiddlywiki/katex/snippets/math.tid +8 -0
  554. package/plugins/tiddlywiki/katex/styles.tid +7 -0
  555. package/plugins/tiddlywiki/katex/usage.tid +18 -2
  556. package/plugins/tiddlywiki/markdown/EditorToolbar/link-dropdown.tid +73 -0
  557. package/plugins/tiddlywiki/markdown/EditorToolbar/link.tid +11 -0
  558. package/plugins/tiddlywiki/markdown/EditorToolbar/linkify.tid +15 -0
  559. package/plugins/tiddlywiki/markdown/EditorToolbar/mono-block.tid +17 -0
  560. package/plugins/tiddlywiki/markdown/KeyboardShortcuts/new-markdown-tiddler.tid +8 -0
  561. package/plugins/tiddlywiki/markdown/config.multids +5 -0
  562. package/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js +37 -0
  563. package/plugins/tiddlywiki/markdown/images/markdown-linkify.tid +6 -0
  564. package/plugins/tiddlywiki/menubar/items/search.tid +2 -0
  565. package/plugins/tiddlywiki/tiddlyweb/save-wiki-button.tid +1 -1
  566. package/readme.md +5 -3
  567. package/themes/tiddlywiki/vanilla/base.tid +21 -3
  568. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -43
  569. package/editions/fr-FR/tiddlers/$__core_ui_SideBar_Open.tid +0 -15
  570. package/editions/fr-FR/tiddlers/Horizontal Rules in WikiText.tid +0 -17
  571. package/editions/fr-FR/tiddlers/Installing TiddlyWiki on Node.js.tid +0 -23
  572. package/editions/fr-FR/tiddlers/Macro_Calls_in_WikiText.tid +0 -22
  573. package/editions/fr-FR/tiddlers/Pragma.tid +0 -17
  574. package/editions/fr-FR/tiddlers/Saving on Android.tid +0 -10
  575. package/editions/fr-FR/tiddlers/Saving on InternetExplorer.tid +0 -11
  576. package/editions/fr-FR/tiddlers/Saving on Safari.tid +0 -24
  577. package/editions/fr-FR/tiddlers/Saving on iPad_iPhone.tid +0 -23
  578. package/editions/fr-FR/tiddlers/Saving with TiddlyFox.tid +0 -24
  579. package/editions/fr-FR/tiddlers/Saving with TiddlyIE.tid +0 -19
  580. package/editions/fr-FR/tiddlers/Saving_on_a_PHP_Server.tid +0 -30
  581. package/editions/fr-FR/tiddlers/Tables_in_WikiText.tid +0 -102
  582. package/editions/fr-FR/tiddlers/TiddlyDesktop.tid +0 -23
  583. package/editions/fr-FR/tiddlers/TiddlyDesktop_Releases.tid +0 -9
  584. package/editions/fr-FR/tiddlers/TiddlyWiki on Node.js.tid +0 -18
  585. package/editions/fr-FR/tiddlers/TranscludeWidget.tid +0 -73
  586. package/editions/fr-FR/tiddlers/Widgets_in_WikiText.tid +0 -30
  587. package/editions/katexdemo/tiddlers/DefaultTiddlers.tid +0 -5
  588. package/plugins/tiddlywiki/katex/files/README.md +0 -119
  589. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.ttf +0 -0
  590. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  591. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  592. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  593. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  594. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  595. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  596. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  597. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  598. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  599. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.ttf +0 -0
  600. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 +0 -0
  601. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  602. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  603. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.ttf +0 -0
  604. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 +0 -0
  605. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.ttf +0 -0
  606. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 +0 -0
  607. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  608. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  609. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.ttf +0 -0
  610. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 +0 -0
  611. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  612. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  613. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  614. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  615. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  616. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  617. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.ttf +0 -0
  618. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 +0 -0
  619. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.ttf +0 -0
  620. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  621. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.ttf +0 -0
  622. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  623. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.ttf +0 -0
  624. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  625. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.ttf +0 -0
  626. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  627. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  628. package/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  629. package/plugins/tiddlywiki/katex/files/katex.css +0 -1079
  630. package/plugins/tiddlywiki/katex/files/katex.js +0 -18183
  631. package/plugins/tiddlywiki/katex/files/mhchem.min.js +0 -1
@@ -54,7 +54,9 @@ exports.startup = function() {
54
54
  var hash = $tw.utils.getLocationHash();
55
55
  if(hash !== $tw.locationHash) {
56
56
  $tw.locationHash = hash;
57
- openStartupTiddlers({defaultToCurrentStory: true});
57
+ if(hash !== "#") {
58
+ openStartupTiddlers({defaultToCurrentStory: true});
59
+ }
58
60
  }
59
61
  },false);
60
62
  // Listen for the tm-browser-refresh message
@@ -281,5 +281,56 @@ exports.getLocationPath = function() {
281
281
  return window.location.toString().split("#")[0];
282
282
  };
283
283
 
284
+ /*
285
+ Collect DOM variables
286
+ */
287
+ exports.collectDOMVariables = function(selectedNode,domNode,event) {
288
+ var variables = {},
289
+ selectedNodeRect,
290
+ domNodeRect;
291
+ if(selectedNode) {
292
+ $tw.utils.each(selectedNode.attributes,function(attribute) {
293
+ variables["dom-" + attribute.name] = attribute.value.toString();
294
+ });
295
+
296
+ if(selectedNode.offsetLeft) {
297
+ // Add a variable with a popup coordinate string for the selected node
298
+ variables["tv-popup-coords"] = "(" + selectedNode.offsetLeft + "," + selectedNode.offsetTop +"," + selectedNode.offsetWidth + "," + selectedNode.offsetHeight + ")";
299
+
300
+ // Add variables for offset of selected node
301
+ variables["tv-selectednode-posx"] = selectedNode.offsetLeft.toString();
302
+ variables["tv-selectednode-posy"] = selectedNode.offsetTop.toString();
303
+ variables["tv-selectednode-width"] = selectedNode.offsetWidth.toString();
304
+ variables["tv-selectednode-height"] = selectedNode.offsetHeight.toString();
305
+ }
306
+ }
307
+
308
+ if(domNode && domNode.offsetWidth) {
309
+ variables["tv-widgetnode-width"] = domNode.offsetWidth.toString();
310
+ variables["tv-widgetnode-height"] = domNode.offsetHeight.toString();
311
+ }
312
+
313
+ if(event && event.clientX && event.clientY) {
314
+ if(selectedNode) {
315
+ // Add variables for event X and Y position relative to selected node
316
+ selectedNodeRect = selectedNode.getBoundingClientRect();
317
+ variables["event-fromselected-posx"] = (event.clientX - selectedNodeRect.left).toString();
318
+ variables["event-fromselected-posy"] = (event.clientY - selectedNodeRect.top).toString();
319
+ }
320
+
321
+ if(domNode) {
322
+ // Add variables for event X and Y position relative to event catcher node
323
+ domNodeRect = domNode.getBoundingClientRect();
324
+ variables["event-fromcatcher-posx"] = (event.clientX - domNodeRect.left).toString();
325
+ variables["event-fromcatcher-posy"] = (event.clientY - domNodeRect.top).toString();
326
+ }
327
+
328
+ // Add variables for event X and Y position relative to the viewport
329
+ variables["event-fromviewport-posx"] = event.clientX.toString();
330
+ variables["event-fromviewport-posy"] = event.clientY.toString();
331
+ }
332
+ return variables;
333
+ };
334
+
284
335
 
285
336
  })();
@@ -25,14 +25,13 @@ widget: widget to use as the context for the filter
25
25
  exports.makeDraggable = function(options) {
26
26
  var dragImageType = options.dragImageType || "dom",
27
27
  dragImage,
28
- domNode = options.domNode,
29
- dragHandle = options.selector && domNode.querySelector(options.selector) || domNode;
28
+ domNode = options.domNode;
30
29
  // Make the dom node draggable (not necessary for anchor tags)
31
- if((domNode.tagName || "").toLowerCase() !== "a") {
32
- dragHandle.setAttribute("draggable","true");
30
+ if(!options.selector && ((domNode.tagName || "").toLowerCase() !== "a")) {
31
+ domNode.setAttribute("draggable","true");
33
32
  }
34
33
  // Add event handlers
35
- $tw.utils.addEventListeners(dragHandle,[
34
+ $tw.utils.addEventListeners(domNode,[
36
35
  {name: "dragstart", handlerFunction: function(event) {
37
36
  if(event.dataTransfer === undefined) {
38
37
  return false;
@@ -41,20 +40,26 @@ exports.makeDraggable = function(options) {
41
40
  var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),
42
41
  dragFilter = options.dragFilterFn && options.dragFilterFn(),
43
42
  titles = dragTiddler ? [dragTiddler] : [],
44
- startActions = options.startActions;
43
+ startActions = options.startActions,
44
+ variables,
45
+ domNodeRect;
45
46
  if(dragFilter) {
46
47
  titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));
47
48
  }
48
49
  var titleString = $tw.utils.stringifyList(titles);
49
50
  // Check that we've something to drag
50
- if(titles.length > 0 && event.target === dragHandle) {
51
+ if(titles.length > 0 && (options.selector && $tw.utils.domMatchesSelector(event.target,options.selector) || event.target === domNode)) {
51
52
  // Mark the drag in progress
52
53
  $tw.dragInProgress = domNode;
53
54
  // Set the dragging class on the element being dragged
54
- $tw.utils.addClass(event.target,"tc-dragging");
55
+ $tw.utils.addClass(domNode,"tc-dragging");
55
56
  // Invoke drag-start actions if given
56
57
  if(startActions !== undefined) {
57
- options.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});
58
+ // Collect our variables
59
+ variables = $tw.utils.collectDOMVariables(domNode,null,event);
60
+ variables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
61
+ variables["actionTiddler"] = titleString;
62
+ options.widget.invokeActionString(startActions,options.widget,event,variables);
58
63
  }
59
64
  // Create the drag image elements
60
65
  dragImage = options.widget.document.createElement("div");
@@ -101,20 +106,22 @@ exports.makeDraggable = function(options) {
101
106
  dataTransfer.setData("text/vnd.tiddler",jsonData);
102
107
  dataTransfer.setData("text/plain",titleString);
103
108
  dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURIComponent(jsonData));
109
+ } else {
110
+ dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData));
104
111
  }
105
- dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData));
106
112
  dataTransfer.setData("Text",titleString);
107
113
  event.stopPropagation();
108
114
  }
109
115
  return false;
110
116
  }},
111
117
  {name: "dragend", handlerFunction: function(event) {
112
- if(event.target === domNode) {
118
+ if((options.selector && $tw.utils.domMatchesSelector(event.target,options.selector)) || event.target === domNode) {
113
119
  // Collect the tiddlers being dragged
114
120
  var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),
115
121
  dragFilter = options.dragFilterFn && options.dragFilterFn(),
116
122
  titles = dragTiddler ? [dragTiddler] : [],
117
- endActions = options.endActions;
123
+ endActions = options.endActions,
124
+ variables;
118
125
  if(dragFilter) {
119
126
  titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));
120
127
  }
@@ -122,10 +129,13 @@ exports.makeDraggable = function(options) {
122
129
  $tw.dragInProgress = null;
123
130
  // Invoke drag-end actions if given
124
131
  if(endActions !== undefined) {
125
- options.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});
132
+ variables = $tw.utils.collectDOMVariables(domNode,null,event);
133
+ variables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
134
+ variables["actionTiddler"] = titleString;
135
+ options.widget.invokeActionString(endActions,options.widget,event,variables);
126
136
  }
127
137
  // Remove the dragging class on the element being dragged
128
- $tw.utils.removeClass(event.target,"tc-dragging");
138
+ $tw.utils.removeClass(domNode,"tc-dragging");
129
139
  // Delete the drag image element
130
140
  if(dragImage) {
131
141
  dragImage.parentNode.removeChild(dragImage);
@@ -36,8 +36,9 @@ Notifier.prototype.display = function(title,options) {
36
36
  if(!tiddler) {
37
37
  return;
38
38
  }
39
- // Add classes
39
+ // Add classes and roles
40
40
  $tw.utils.addClass(notification,"tc-notification");
41
+ notification.setAttribute("role","alert");
41
42
  // Create the variables
42
43
  var variables = $tw.utils.extend({currentTiddler: title},options.variables);
43
44
  // Render the body of the notification
@@ -13,8 +13,26 @@ Parse tree utility functions.
13
13
  "use strict";
14
14
 
15
15
  exports.addAttributeToParseTreeNode = function(node,name,value) {
16
+ var attribute = {name: name, type: "string", value: value};
16
17
  node.attributes = node.attributes || {};
17
- node.attributes[name] = {type: "string", value: value};
18
+ node.attributes[name] = attribute;
19
+ if(node.orderedAttributes) {
20
+ node.orderedAttributes.push(attribute);
21
+ }
22
+ };
23
+
24
+ exports.getOrderedAttributesFromParseTreeNode = function(node) {
25
+ if(node.orderedAttributes) {
26
+ return node.orderedAttributes;
27
+ } else {
28
+ var attributes = [];
29
+ $tw.utils.each(node.attributes,function(attribute) {
30
+ attributes.push(attribute);
31
+ });
32
+ return attributes.sort(function(a,b) {
33
+ return a.name < b.name ? -1 : (a.name > b.name ? 1 : 0);
34
+ });
35
+ }
18
36
  };
19
37
 
20
38
  exports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {
@@ -25,26 +43,45 @@ exports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {
25
43
  };
26
44
 
27
45
  exports.addClassToParseTreeNode = function(node,classString) {
28
- var classes = [];
46
+ var classes = [],
47
+ attribute;
29
48
  node.attributes = node.attributes || {};
30
- node.attributes["class"] = node.attributes["class"] || {type: "string", value: ""};
31
- if(node.attributes["class"].type === "string") {
32
- if(node.attributes["class"].value !== "") {
33
- classes = node.attributes["class"].value.split(" ");
49
+ attribute = node.attributes["class"];
50
+ if(!attribute) {
51
+ // If the class attribute does not exist, we must create it first.
52
+ attribute = {name: "class", type: "string", value: ""};
53
+ node.attributes["class"] = attribute;
54
+ if(node.orderedAttributes) {
55
+ // If there are orderedAttributes, we've got to add them there too.
56
+ node.orderedAttributes.push(attribute);
57
+ }
58
+ }
59
+ if(attribute.type === "string") {
60
+ if(attribute.value !== "") {
61
+ classes = attribute.value.split(" ");
34
62
  }
35
63
  if(classString !== "") {
36
64
  $tw.utils.pushTop(classes,classString.split(" "));
37
65
  }
38
- node.attributes["class"].value = classes.join(" ");
66
+ attribute.value = classes.join(" ");
39
67
  }
40
68
  };
41
69
 
42
70
  exports.addStyleToParseTreeNode = function(node,name,value) {
43
- node.attributes = node.attributes || {};
44
- node.attributes.style = node.attributes.style || {type: "string", value: ""};
45
- if(node.attributes.style.type === "string") {
46
- node.attributes.style.value += name + ":" + value + ";";
71
+ var attribute;
72
+ node.attributes = node.attributes || {};
73
+ attribute = node.attributes.style;
74
+ if(!attribute) {
75
+ attribute = {name: "style", type: "string", value: ""};
76
+ node.attributes.style = attribute;
77
+ if(node.orderedAttributes) {
78
+ // If there are orderedAttributes, we've got to add them there too.
79
+ node.orderedAttributes.push(attribute);
47
80
  }
81
+ }
82
+ if(attribute.type === "string") {
83
+ attribute.value += name + ":" + value + ";";
84
+ }
48
85
  };
49
86
 
50
87
  exports.findParseTreeNode = function(nodeArray,search) {
@@ -95,6 +95,20 @@ exports.repeat = function(str,count) {
95
95
  return result;
96
96
  };
97
97
 
98
+ /*
99
+ Check if a string starts with another string
100
+ */
101
+ exports.startsWith = function(str,search) {
102
+ return str.substring(0, search.length) === search;
103
+ };
104
+
105
+ /*
106
+ Check if a string ends with another string
107
+ */
108
+ exports.endsWith = function(str,search) {
109
+ return str.substring(str.length - search.length) === search;
110
+ };
111
+
98
112
  /*
99
113
  Trim whitespace from the start and end of a string
100
114
  Thanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript
@@ -448,7 +462,7 @@ exports.formatDateString = function(date,template) {
448
462
  // 'return raw UTC (tiddlywiki style) date string.'
449
463
  if(t.indexOf("[UTC]") == 0 ) {
450
464
  if(t == "[UTC]YYYY0MM0DD0hh0mm0ssXXX")
451
- return $tw.utils.stringifyDate(new Date());
465
+ return $tw.utils.stringifyDate(date || new Date());
452
466
  var offset = date.getTimezoneOffset() ; // in minutes
453
467
  date = new Date(date.getTime()+offset*60*1000) ;
454
468
  t = t.substr(5) ;
@@ -35,7 +35,7 @@ SetFieldWidget.prototype.render = function(parent,nextSibling) {
35
35
  Compute the internal state of the widget
36
36
  */
37
37
  SetFieldWidget.prototype.execute = function() {
38
- this.actionTiddler = this.getAttribute("$tiddler",this.getVariable("currentTiddler"));
38
+ this.actionTiddler = this.getAttribute("$tiddler") || (!this.hasParseTreeNodeAttribute("$tiddler") && this.getVariable("currentTiddler"));
39
39
  this.actionField = this.getAttribute("$field");
40
40
  this.actionIndex = this.getAttribute("$index");
41
41
  this.actionValue = this.getAttribute("$value");
@@ -46,11 +46,7 @@ SetFieldWidget.prototype.execute = function() {
46
46
  Refresh the widget by ensuring our attributes are up to date
47
47
  */
48
48
  SetFieldWidget.prototype.refresh = function(changedTiddlers) {
49
- var changedAttributes = this.computeAttributes();
50
- if(changedAttributes["$tiddler"] || changedAttributes["$field"] || changedAttributes["$index"] || changedAttributes["$value"]) {
51
- this.refreshSelf();
52
- return true;
53
- }
49
+ // Nothing to refresh
54
50
  return this.refreshChildren(changedTiddlers);
55
51
  };
56
52
 
@@ -60,15 +56,17 @@ Invoke the action associated with this widget
60
56
  SetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {
61
57
  var self = this,
62
58
  options = {};
63
- options.suppressTimestamp = !this.actionTimestamp;
64
- if((typeof this.actionField == "string") || (typeof this.actionIndex == "string") || (typeof this.actionValue == "string")) {
65
- this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);
66
- }
67
- $tw.utils.each(this.attributes,function(attribute,name) {
68
- if(name.charAt(0) !== "$") {
69
- self.wiki.setText(self.actionTiddler,name,undefined,attribute,options);
59
+ if(this.actionTiddler) {
60
+ options.suppressTimestamp = !this.actionTimestamp;
61
+ if((typeof this.actionField == "string") || (typeof this.actionIndex == "string") || (typeof this.actionValue == "string")) {
62
+ this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);
70
63
  }
71
- });
64
+ $tw.utils.each(this.attributes,function(attribute,name) {
65
+ if(name.charAt(0) !== "$") {
66
+ self.wiki.setText(self.actionTiddler,name,undefined,attribute,options);
67
+ }
68
+ });
69
+ }
72
70
  return true; // Action was invoked
73
71
  };
74
72
 
@@ -46,7 +46,8 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
46
46
  isPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();
47
47
  if(this.selectedClass) {
48
48
  if((this.set || this.setTitle) && this.setTo && this.isSelected()) {
49
- $tw.utils.pushTop(classes,this.selectedClass.split(" "));
49
+ $tw.utils.pushTop(classes, this.selectedClass.split(" "));
50
+ domNode.setAttribute("aria-checked", "true");
50
51
  }
51
52
  if(isPoppedUp) {
52
53
  $tw.utils.pushTop(classes,this.selectedClass.split(" "));
@@ -66,6 +67,9 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
66
67
  if(this["aria-label"]) {
67
68
  domNode.setAttribute("aria-label",this["aria-label"]);
68
69
  }
70
+ if (this.role) {
71
+ domNode.setAttribute("role", this.role);
72
+ }
69
73
  if(this.popup || this.popupTitle) {
70
74
  domNode.setAttribute("aria-expanded",isPoppedUp ? "true" : "false");
71
75
  }
@@ -206,6 +210,7 @@ ButtonWidget.prototype.execute = function() {
206
210
  this.popup = this.getAttribute("popup");
207
211
  this.hover = this.getAttribute("hover");
208
212
  this["aria-label"] = this.getAttribute("aria-label");
213
+ this.role = this.getAttribute("role");
209
214
  this.tooltip = this.getAttribute("tooltip");
210
215
  this.style = this.getAttribute("style");
211
216
  this["class"] = this.getAttribute("class","");
@@ -27,6 +27,7 @@ CheckboxWidget.prototype = new Widget();
27
27
  Render this widget into the DOM
28
28
  */
29
29
  CheckboxWidget.prototype.render = function(parent,nextSibling) {
30
+ var isChecked;
30
31
  // Save the parent dom node
31
32
  this.parentDomNode = parent;
32
33
  // Compute our attributes
@@ -35,11 +36,16 @@ CheckboxWidget.prototype.render = function(parent,nextSibling) {
35
36
  this.execute();
36
37
  // Create our elements
37
38
  this.labelDomNode = this.document.createElement("label");
38
- this.labelDomNode.setAttribute("class",this.checkboxClass);
39
+ this.labelDomNode.setAttribute("class","tc-checkbox " + this.checkboxClass);
39
40
  this.inputDomNode = this.document.createElement("input");
40
41
  this.inputDomNode.setAttribute("type","checkbox");
41
- if(this.getValue()) {
42
+ isChecked = this.getValue();
43
+ if(isChecked) {
42
44
  this.inputDomNode.setAttribute("checked","true");
45
+ $tw.utils.addClass(this.labelDomNode,"tc-checkbox-checked");
46
+ }
47
+ if(isChecked === undefined && this.checkboxIndeterminate === "yes") {
48
+ this.inputDomNode.indeterminate = true;
43
49
  }
44
50
  if(this.isDisabled === "yes") {
45
51
  this.inputDomNode.setAttribute("disabled",true);
@@ -59,20 +65,25 @@ CheckboxWidget.prototype.render = function(parent,nextSibling) {
59
65
 
60
66
  CheckboxWidget.prototype.getValue = function() {
61
67
  var tiddler = this.wiki.getTiddler(this.checkboxTitle);
62
- if(tiddler) {
68
+ if(tiddler || this.checkboxFilter) {
63
69
  if(this.checkboxTag) {
64
- if(this.checkboxInvertTag) {
70
+ if(this.checkboxInvertTag === "yes") {
65
71
  return !tiddler.hasTag(this.checkboxTag);
66
72
  } else {
67
73
  return tiddler.hasTag(this.checkboxTag);
68
74
  }
69
75
  }
70
- if(this.checkboxField) {
76
+ if(this.checkboxField || this.checkboxIndex) {
77
+ // Same logic applies to fields and indexes
71
78
  var value;
72
- if($tw.utils.hop(tiddler.fields,this.checkboxField)) {
73
- value = tiddler.fields[this.checkboxField] || "";
79
+ if(this.checkboxField) {
80
+ if($tw.utils.hop(tiddler.fields,this.checkboxField)) {
81
+ value = tiddler.fields[this.checkboxField] || "";
82
+ } else {
83
+ value = this.checkboxDefault || "";
84
+ }
74
85
  } else {
75
- value = this.checkboxDefault || "";
86
+ value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || "");
76
87
  }
77
88
  if(value === this.checkboxChecked) {
78
89
  return true;
@@ -80,15 +91,59 @@ CheckboxWidget.prototype.getValue = function() {
80
91
  if(value === this.checkboxUnchecked) {
81
92
  return false;
82
93
  }
94
+ // Neither value found: were both specified?
95
+ if(this.checkboxChecked && !this.checkboxUnchecked) {
96
+ return false; // Absence of checked value
97
+ }
98
+ if(this.checkboxUnchecked && !this.checkboxChecked) {
99
+ return true; // Absence of unchecked value
100
+ }
101
+ if(this.checkboxChecked && this.checkboxUnchecked) {
102
+ // Both specified but neither found: indeterminate or false, depending
103
+ if(this.checkboxIndeterminate === "yes") {
104
+ return undefined;
105
+ } else {
106
+ return false;
107
+ }
108
+ }
83
109
  }
84
- if(this.checkboxIndex) {
85
- var value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || "");
86
- if(value === this.checkboxChecked) {
110
+ if(this.checkboxListField || this.checkboxListIndex || this.checkboxFilter) {
111
+ // Same logic applies to lists and filters
112
+ var list;
113
+ if(this.checkboxListField) {
114
+ if($tw.utils.hop(tiddler.fields,this.checkboxListField)) {
115
+ list = tiddler.getFieldList(this.checkboxListField);
116
+ } else {
117
+ list = $tw.utils.parseStringArray(this.checkboxDefault || "") || [];
118
+ }
119
+ } else if (this.checkboxListIndex) {
120
+ list = $tw.utils.parseStringArray(this.wiki.extractTiddlerDataItem(tiddler,this.checkboxListIndex,this.checkboxDefault || "")) || [];
121
+ } else {
122
+ list = this.wiki.filterTiddlers(this.checkboxFilter,this) || [];
123
+ }
124
+ if(list.indexOf(this.checkboxChecked) !== -1) {
87
125
  return true;
88
126
  }
89
- if(value === this.checkboxUnchecked) {
127
+ if(list.indexOf(this.checkboxUnchecked) !== -1) {
90
128
  return false;
91
129
  }
130
+ // Neither one present
131
+ if(this.checkboxChecked && !this.checkboxUnchecked) {
132
+ return false; // Absence of checked value
133
+ }
134
+ if(this.checkboxUnchecked && !this.checkboxChecked) {
135
+ return true; // Absence of unchecked value
136
+ }
137
+ if(this.checkboxChecked && this.checkboxUnchecked) {
138
+ // Both specified but neither found: indeterminate or false, depending
139
+ if(this.checkboxIndeterminate === "yes") {
140
+ return undefined;
141
+ } else {
142
+ return false;
143
+ }
144
+ }
145
+ // Neither specified, so empty list is false, non-empty is true
146
+ return !!list.length;
92
147
  }
93
148
  } else {
94
149
  if(this.checkboxTag) {
@@ -114,7 +169,8 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) {
114
169
  hasChanged = false,
115
170
  tagCheck = false,
116
171
  hasTag = tiddler && tiddler.hasTag(this.checkboxTag),
117
- value = checked ? this.checkboxChecked : this.checkboxUnchecked;
172
+ value = checked ? this.checkboxChecked : this.checkboxUnchecked,
173
+ notValue = checked ? this.checkboxUnchecked : this.checkboxChecked;
118
174
  if(this.checkboxTag && this.checkboxInvertTag === "yes") {
119
175
  tagCheck = hasTag === checked;
120
176
  } else {
@@ -148,9 +204,51 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) {
148
204
  hasChanged = true;
149
205
  }
150
206
  }
207
+ // Set the list field (or index) if specified
208
+ if(this.checkboxListField || this.checkboxListIndex) {
209
+ var listContents, oldPos, newPos;
210
+ if(this.checkboxListField) {
211
+ listContents = tiddler.getFieldList(this.checkboxListField);
212
+ } else {
213
+ listContents = $tw.utils.parseStringArray(this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxListIndex) || "") || [];
214
+ }
215
+ oldPos = notValue ? listContents.indexOf(notValue) : -1;
216
+ newPos = value ? listContents.indexOf(value) : -1;
217
+ if(oldPos === -1 && newPos !== -1) {
218
+ // old value absent, new value present: no change needed
219
+ } else if(oldPos === -1) {
220
+ // neither one was present
221
+ if(value) {
222
+ listContents.push(value);
223
+ hasChanged = true;
224
+ } else {
225
+ // value unspecified? then leave list unchanged
226
+ }
227
+ } else if(newPos === -1) {
228
+ // old value present, new value absent
229
+ if(value) {
230
+ listContents[oldPos] = value;
231
+ hasChanged = true;
232
+ } else {
233
+ listContents.splice(oldPos, 1)
234
+ hasChanged = true;
235
+ }
236
+ } else {
237
+ // both were present: just remove the old one, leave new alone
238
+ listContents.splice(oldPos, 1)
239
+ hasChanged = true;
240
+ }
241
+ if(this.checkboxListField) {
242
+ newFields[this.checkboxListField] = $tw.utils.stringifyList(listContents);
243
+ }
244
+ // The listIndex case will be handled in the if(hasChanged) block below
245
+ }
151
246
  if(hasChanged) {
152
247
  if(this.checkboxIndex) {
153
248
  this.wiki.setText(this.checkboxTitle,"",this.checkboxIndex,value);
249
+ } else if(this.checkboxListIndex) {
250
+ var listIndexValue = (listContents && listContents.length) ? $tw.utils.stringifyList(listContents) : undefined;
251
+ this.wiki.setText(this.checkboxTitle,"",this.checkboxListIndex,listIndexValue);
154
252
  } else {
155
253
  this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));
156
254
  }
@@ -179,9 +277,13 @@ CheckboxWidget.prototype.execute = function() {
179
277
  this.checkboxTag = this.getAttribute("tag");
180
278
  this.checkboxField = this.getAttribute("field");
181
279
  this.checkboxIndex = this.getAttribute("index");
280
+ this.checkboxListField = this.getAttribute("listField");
281
+ this.checkboxListIndex = this.getAttribute("listIndex");
282
+ this.checkboxFilter = this.getAttribute("filter");
182
283
  this.checkboxChecked = this.getAttribute("checked");
183
284
  this.checkboxUnchecked = this.getAttribute("unchecked");
184
285
  this.checkboxDefault = this.getAttribute("default");
286
+ this.checkboxIndeterminate = this.getAttribute("indeterminate","no");
185
287
  this.checkboxClass = this.getAttribute("class","");
186
288
  this.checkboxInvertTag = this.getAttribute("invertTag","");
187
289
  this.isDisabled = this.getAttribute("disabled","no");
@@ -194,14 +296,21 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
194
296
  */
195
297
  CheckboxWidget.prototype.refresh = function(changedTiddlers) {
196
298
  var changedAttributes = this.computeAttributes();
197
- if(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.disabled) {
299
+ if(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.listField || changedAttributes.listIndex || changedAttributes.filter || changedAttributes.checked || changedAttributes.unchecked || changedAttributes["default"] || changedAttributes.indeterminate || changedAttributes["class"] || changedAttributes.disabled) {
198
300
  this.refreshSelf();
199
301
  return true;
200
302
  } else {
201
303
  var refreshed = false;
202
304
  if(changedTiddlers[this.checkboxTitle]) {
203
- this.inputDomNode.checked = this.getValue();
305
+ var isChecked = this.getValue();
306
+ this.inputDomNode.checked = !!isChecked;
307
+ this.inputDomNode.indeterminate = (isChecked === undefined);
204
308
  refreshed = true;
309
+ if(isChecked) {
310
+ $tw.utils.addClass(this.labelDomNode,"tc-checkbox-checked");
311
+ } else {
312
+ $tw.utils.removeClass(this.labelDomNode,"tc-checkbox-checked");
313
+ }
205
314
  }
206
315
  return this.refreshChildren(changedTiddlers) || refreshed;
207
316
  }
@@ -48,7 +48,7 @@ DraggableWidget.prototype.render = function(parent,nextSibling) {
48
48
  if(this.draggableClasses) {
49
49
  classes.push(this.draggableClasses);
50
50
  }
51
- if(!this.dragHandleSelector) {
51
+ if(!this.dragHandleSelector && this.dragEnable) {
52
52
  classes.push("tc-draggable");
53
53
  }
54
54
  domNode.setAttribute("class",classes.join(" "));
@@ -56,16 +56,18 @@ DraggableWidget.prototype.render = function(parent,nextSibling) {
56
56
  parent.insertBefore(domNode,nextSibling);
57
57
  this.renderChildren(domNode,null);
58
58
  // Add event handlers
59
- $tw.utils.makeDraggable({
60
- domNode: domNode,
61
- dragTiddlerFn: function() {return self.getAttribute("tiddler");},
62
- dragFilterFn: function() {return self.getAttribute("filter");},
63
- startActions: self.startActions,
64
- endActions: self.endActions,
65
- dragImageType: self.dragImageType,
66
- widget: this,
67
- selector: self.dragHandleSelector
68
- });
59
+ if(this.dragEnable) {
60
+ $tw.utils.makeDraggable({
61
+ domNode: domNode,
62
+ dragTiddlerFn: function() {return self.getAttribute("tiddler");},
63
+ dragFilterFn: function() {return self.getAttribute("filter");},
64
+ startActions: self.startActions,
65
+ endActions: self.endActions,
66
+ dragImageType: self.dragImageType,
67
+ widget: this,
68
+ selector: self.dragHandleSelector
69
+ });
70
+ }
69
71
  this.domNodes.push(domNode);
70
72
  };
71
73
 
@@ -80,16 +82,37 @@ DraggableWidget.prototype.execute = function() {
80
82
  this.endActions = this.getAttribute("endactions");
81
83
  this.dragImageType = this.getAttribute("dragimagetype");
82
84
  this.dragHandleSelector = this.getAttribute("selector");
85
+ this.dragEnable = this.getAttribute("enable","yes") === "yes";
83
86
  // Make the child widgets
84
87
  this.makeChildWidgets();
85
88
  };
86
89
 
90
+
91
+ DraggableWidget.prototype.updateDomNodeClasses = function() {
92
+ var domNodeClasses = this.domNodes[0].className.split(" "),
93
+ oldClasses = this.draggableClasses.split(" ");
94
+ this.draggableClasses = this.getAttribute("class");
95
+ //Remove classes assigned from the old value of class attribute
96
+ $tw.utils.each(oldClasses,function(oldClass){
97
+ var i = domNodeClasses.indexOf(oldClass);
98
+ if(i !== -1) {
99
+ domNodeClasses.splice(i,1);
100
+ }
101
+ });
102
+ //Add new classes from updated class attribute.
103
+ $tw.utils.pushTop(domNodeClasses,this.draggableClasses);
104
+ this.domNodes[0].setAttribute("class",domNodeClasses.join(" "))
105
+ }
106
+
87
107
  /*
88
108
  Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
89
109
  */
90
110
  DraggableWidget.prototype.refresh = function(changedTiddlers) {
91
- var changedAttributes = this.computeAttributes();
92
- if(changedAttributes.tag || changedAttributes["class"]) {
111
+ var changedAttributes = this.computeAttributes(),
112
+ changedAttributesCount = $tw.utils.count(changedAttributes);
113
+ if(changedAttributesCount === 1 && changedAttributes["class"]) {
114
+ this.updateDomNodeClasses();
115
+ } else if(changedAttributesCount > 0) {
93
116
  this.refreshSelf();
94
117
  return true;
95
118
  }
@@ -98,4 +121,4 @@ DraggableWidget.prototype.refresh = function(changedTiddlers) {
98
121
 
99
122
  exports.draggable = DraggableWidget;
100
123
 
101
- })();
124
+ })();