tiddlywiki 5.2.3 → 5.2.4

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 (396) hide show
  1. package/bin/build-site.sh +11 -2
  2. package/bin/test.sh +1 -0
  3. package/boot/boot.js +9 -6
  4. package/core/images/layout-button.tid +4 -0
  5. package/core/images/mastodon.tid +6 -0
  6. package/core/language/en-GB/Buttons.multids +4 -0
  7. package/core/language/en-GB/ControlPanel.multids +3 -3
  8. package/core/language/en-GB/Fields.multids +2 -2
  9. package/core/language/en-GB/GettingStarted.tid +4 -3
  10. package/core/language/en-GB/Help/commands.tid +18 -0
  11. package/core/language/en-GB/Misc.multids +1 -0
  12. package/core/modules/commands/commands.js +42 -0
  13. package/core/modules/editor/engines/framed.js +12 -1
  14. package/core/modules/editor/factory.js +2 -2
  15. package/core/modules/filters/format/json.js +35 -0
  16. package/core/modules/filters/is/variable.js +2 -2
  17. package/core/modules/filters/json-ops.js +186 -0
  18. package/core/modules/filters/variables.js +9 -3
  19. package/core/modules/filters.js +15 -6
  20. package/core/modules/keyboard.js +13 -1
  21. package/core/modules/parsers/csvparser.js +25 -17
  22. package/core/modules/parsers/wikiparser/rules/macrodef.js +1 -1
  23. package/core/modules/parsers/wikiparser/rules/parsermode.js +68 -0
  24. package/core/modules/parsers/wikiparser/rules/styleinline.js +3 -3
  25. package/core/modules/parsers/wikiparser/wikiparser.js +4 -2
  26. package/core/modules/server/routes/put-tiddler.js +10 -0
  27. package/core/modules/startup/startup.js +5 -1
  28. package/core/modules/utils/csv.js +101 -23
  29. package/core/modules/utils/dom/dom.js +17 -2
  30. package/core/modules/utils/dom/modal.js +6 -0
  31. package/core/modules/utils/dom/popup.js +69 -6
  32. package/core/modules/utils/fakedom.js +2 -2
  33. package/core/modules/utils/linked-list.js +79 -75
  34. package/core/modules/utils/logger.js +3 -1
  35. package/core/modules/utils/parsetree.js +20 -10
  36. package/core/modules/utils/utils.js +3 -0
  37. package/core/modules/widgets/action-deletefield.js +2 -2
  38. package/core/modules/widgets/action-popup.js +10 -8
  39. package/core/modules/widgets/button.js +7 -2
  40. package/core/modules/widgets/checkbox.js +12 -5
  41. package/core/modules/widgets/error.js +63 -0
  42. package/core/modules/widgets/genesis.js +108 -0
  43. package/core/modules/widgets/importvariables.js +4 -1
  44. package/core/modules/widgets/keyboard.js +4 -0
  45. package/core/modules/widgets/let.js +3 -5
  46. package/core/modules/widgets/reveal.js +11 -10
  47. package/core/modules/widgets/select.js +9 -0
  48. package/core/modules/widgets/transclude.js +3 -5
  49. package/core/modules/widgets/widget.js +44 -18
  50. package/core/palettes/Blanca.tid +2 -0
  51. package/core/palettes/Blue.tid +2 -0
  52. package/core/palettes/BrightMute.tid +2 -0
  53. package/core/palettes/ContrastDark.tid +2 -0
  54. package/core/palettes/ContrastLight.tid +2 -0
  55. package/core/palettes/CupertinoDark.tid +2 -0
  56. package/core/palettes/DarkPhotos.tid +2 -0
  57. package/core/palettes/DesertSand.tid +2 -0
  58. package/core/palettes/GruvBoxDark.tid +2 -0
  59. package/core/palettes/Nord.tid +2 -0
  60. package/core/palettes/Rocker.tid +2 -0
  61. package/core/palettes/SolarFlare.tid +2 -0
  62. package/core/palettes/SolarizedDark.tid +2 -0
  63. package/core/palettes/SolarizedLight.tid +2 -0
  64. package/core/palettes/SpartanDay.tid +2 -0
  65. package/core/palettes/SpartanNight.tid +2 -0
  66. package/core/palettes/Twilight.tid +2 -0
  67. package/core/palettes/Vanilla.tid +2 -0
  68. package/core/templates/external-js/save-all-external-js.tid +4 -2
  69. package/core/templates/external-js/save-offline-external-js.tid +4 -2
  70. package/core/templates/single.tiddler.window.tid +1 -1
  71. package/core/ui/Actions/new-image.tid +1 -7
  72. package/core/ui/AdvancedSearch/FilterButtons/delete.tid +3 -3
  73. package/core/ui/AdvancedSearch/FilterButtons/dropdown.tid +2 -2
  74. package/core/ui/ControlPanel/Basics/retain-story-ordering-button.tid +3 -0
  75. package/core/ui/ControlPanel/Basics.tid +3 -2
  76. package/core/ui/EditTemplate/Preview/output.tid +1 -1
  77. package/core/ui/EditTemplate/body/default.tid +1 -1
  78. package/core/ui/EditTemplate/fields.tid +12 -2
  79. package/core/ui/EditTemplate.tid +7 -2
  80. package/core/ui/ImportListing.tid +5 -5
  81. package/core/ui/KeyboardShortcuts/advanced-search.tid +1 -1
  82. package/core/ui/PageControls/layout.tid +15 -0
  83. package/core/ui/PageTemplate.tid +1 -4
  84. package/core/ui/SideBar/More.tid +2 -2
  85. package/core/ui/SwitcherModal.tid +1 -0
  86. package/core/ui/TagManager.tid +75 -63
  87. package/core/ui/ViewTemplate/unfold.tid +6 -2
  88. package/core/ui/ViewTemplate.tid +1 -1
  89. package/core/wiki/config/DefaultTiddlersRetainStory.tid +3 -0
  90. package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
  91. package/core/wiki/config/PageControlButtons.multids +1 -0
  92. package/core/wiki/macros/list.tid +7 -7
  93. package/core/wiki/macros/timeline.tid +6 -9
  94. package/core/wiki/macros/toc.tid +12 -8
  95. package/core/wiki/tags/PageControls.tid +1 -1
  96. package/editions/de-AT/tiddlywiki.info +0 -1
  97. package/editions/de-AT-server/tiddlywiki.info +0 -1
  98. package/editions/de-DE/tiddlywiki.info +0 -1
  99. package/editions/dev/tiddlers/HelloThere.tid +2 -1
  100. package/editions/dev/tiddlers/How to run a local plugin library for testing.tid +42 -0
  101. package/editions/dev/tiddlers/javascript-widget-tutorial/Child widgets tutorial.tid +140 -0
  102. package/editions/dev/tiddlers/javascript-widget-tutorial/Do nothing widget demo.tid +22 -0
  103. package/editions/dev/tiddlers/javascript-widget-tutorial/Do nothing widget tutorial.tid +25 -0
  104. package/editions/dev/tiddlers/javascript-widget-tutorial/Hello World demo.tid +23 -0
  105. package/editions/dev/tiddlers/javascript-widget-tutorial/Hello World widget tutorial.tid +18 -0
  106. package/editions/dev/tiddlers/javascript-widget-tutorial/Javascript Widget Tutorial.tid +37 -0
  107. package/editions/dev/tiddlers/javascript-widget-tutorial/Undefined widget demo.tid +18 -0
  108. package/editions/dev/tiddlers/javascript-widget-tutorial/Undefined widget tutorial.tid +11 -0
  109. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget attributes demo I.tid +48 -0
  110. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget attributes demo II.tid +48 -0
  111. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget attributes tutorial part I.tid +50 -0
  112. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget attributes tutorial part II.tid +33 -0
  113. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget refresh demo I.tid +44 -0
  114. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget refresh demo II.tid +40 -0
  115. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget refresh demo III.tid +50 -0
  116. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget refresh tutorial part I.tid +47 -0
  117. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget refresh tutorial part II.tid +37 -0
  118. package/editions/dev/tiddlers/javascript-widget-tutorial/Widget refresh tutorial part III.tid +26 -0
  119. package/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js +47 -0
  120. package/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js.meta +6 -0
  121. package/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js +16 -0
  122. package/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js.meta +6 -0
  123. package/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute-optimized.js +51 -0
  124. package/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute-optimized.js.meta +6 -0
  125. package/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute.js +47 -0
  126. package/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute.js.meta +6 -0
  127. package/editions/dev/tiddlers/javascript-widget-tutorial/hello.js +35 -0
  128. package/editions/dev/tiddlers/javascript-widget-tutorial/hello.js.meta +6 -0
  129. package/editions/dev/tiddlers/javascript-widget-tutorial/refreshcount.js +43 -0
  130. package/editions/dev/tiddlers/javascript-widget-tutorial/refreshcount.js.meta +6 -0
  131. package/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield-norefresh.js +36 -0
  132. package/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield-norefresh.js.meta +6 -0
  133. package/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield.js +46 -0
  134. package/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield.js.meta +6 -0
  135. package/editions/dev/tiddlywiki.info +2 -1
  136. package/editions/fr-FR/tiddlers/$__editions_tw5.com_doc-macros.tid +1 -1
  137. package/editions/fr-FR/tiddlers/system/$__core_macros_list.tid +113 -0
  138. package/editions/fr-FR/tiddlers/system/$__core_macros_tag.tid +39 -0
  139. package/editions/fr-FR/tiddlers/system/$__core_ui_TagPickerTagTemplate.tid +25 -0
  140. package/editions/full/tiddlywiki.info +0 -1
  141. package/editions/introduction/tiddlywiki.info +0 -1
  142. package/editions/pluginlibrary/tiddlers/GettingStarted.tid +45 -0
  143. package/editions/pluginlibrary/tiddlers/PrereleaseLocalPluginLibrary.tid +6 -0
  144. package/editions/pluginlibrary/tiddlers/meta/SiteSubtitle.tid +3 -0
  145. package/editions/pluginlibrary/tiddlers/meta/SiteTitle.tid +3 -0
  146. package/editions/pluginlibrary/tiddlers/system/$__themes_tiddlywiki_vanilla_options_sidebarlayout.tid +3 -0
  147. package/editions/pluginlibrary/tiddlywiki.info +7 -0
  148. package/editions/prerelease/tiddlers/{Release 5.2.4.tid → Release 5.2.5.tid } +8 -17
  149. package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
  150. package/editions/prerelease/tiddlers/system/TiddlyWiki Pre-release.tid +5 -1
  151. package/editions/test/tiddlers/tests/data/csv-cases.tid +282 -0
  152. package/editions/test/tiddlers/tests/data/filters/Recursion.tid +15 -0
  153. package/editions/test/tiddlers/tests/data/filters/fake-variables.tid +27 -0
  154. package/editions/test/tiddlers/tests/data/genesis-widget/DollarSigns.tid +14 -0
  155. package/editions/test/tiddlers/tests/data/genesis-widget/MultipleAttributes.tid +14 -0
  156. package/editions/test/tiddlers/tests/data/genesis-widget/Simple.tid +14 -0
  157. package/editions/test/tiddlers/tests/data/macros/NestedMacros.tid +36 -0
  158. package/editions/test/tiddlers/tests/data/pragmas/Parsermode.tid +36 -0
  159. package/editions/test/tiddlers/tests/data/transclude/Recursion.tid +13 -0
  160. package/editions/test/tiddlers/tests/modules/utils/test-csv.js +33 -0
  161. package/editions/test/tiddlers/tests/test-checkbox-widget.js +35 -1
  162. package/editions/test/tiddlers/tests/test-json-filters.js +112 -0
  163. package/editions/test/tiddlers/tests/test-linked-list.js +42 -2
  164. package/editions/test/tiddlers/tests/test-popup.js +63 -0
  165. package/editions/test/tiddlers/tests/test-utils.js +1 -0
  166. package/editions/test/tiddlers/tests/test-wikitext.js +16 -0
  167. package/editions/test/tiddlywiki.info +2 -1
  168. package/editions/translators/tiddlers/system/PageControlButtonsVisibility.multids +1 -0
  169. package/editions/translators/tiddlywiki.info +0 -1
  170. package/editions/tw.org/tiddlers/Code of Conduct.tid +4 -1
  171. package/editions/tw.org/tiddlers/Fundraising.tid +2 -2
  172. package/editions/tw5.com/tiddlers/Tables in WikiText CSS Utility Classes.tid +81 -0
  173. package/editions/tw5.com/tiddlers/_tw_shared/favicons/markplace.png +0 -0
  174. package/editions/tw5.com/tiddlers/_tw_shared/favicons/markplace.png.meta +3 -0
  175. package/editions/tw5.com/tiddlers/_tw_shared/sites/marketplace.tid +6 -0
  176. package/editions/tw5.com/tiddlers/_tw_shared/tags-TiddlyWikiSites.tid +1 -1
  177. package/editions/tw5.com/tiddlers/about/Funding TiddlyWiki.tid +19 -0
  178. package/editions/tw5.com/tiddlers/about/Open Collective.tid +14 -0
  179. package/editions/tw5.com/tiddlers/commands/CommandsCommand.tid +8 -0
  180. package/editions/tw5.com/tiddlers/commands/RenderTiddlerCommand.tid +2 -0
  181. package/editions/tw5.com/tiddlers/commands/RenderTiddlersCommand.tid +2 -0
  182. package/editions/tw5.com/tiddlers/commands/SaveTiddlerCommand.tid +2 -0
  183. package/editions/tw5.com/tiddlers/commands/SaveTiddlersCommand.tid +2 -0
  184. package/editions/tw5.com/tiddlers/community/plugins/GSD5.tid +2 -2
  185. package/editions/tw5.com/tiddlers/community/plugins/_JD Mobile Layout plugin_ by JD.tid +0 -1
  186. package/editions/tw5.com/tiddlers/community/resources/_Dropboard_ by Reid Gould.tid +0 -1
  187. package/editions/tw5.com/tiddlers/community/resources/_Hacks_ by Thomas Elmiger.tid +0 -2
  188. package/editions/tw5.com/tiddlers/community/resources/_MathCell_ by Ste Wilson.tid +0 -1
  189. package/editions/tw5.com/tiddlers/community/resources/_TiddlyServer_ by Matt Lauber.tid +0 -1
  190. package/editions/tw5.com/tiddlers/community/resources/_X3DOM for TiddlyWiki 5_ by Jamal Wills.tid +0 -1
  191. package/editions/tw5.com/tiddlers/concepts/CoordinateSystems.tid +42 -0
  192. package/editions/tw5.com/tiddlers/concepts/KeyboardShortcutTiddler.tid +2 -0
  193. package/editions/tw5.com/tiddlers/definitions/Federatial.tid +13 -1
  194. package/editions/tw5.com/tiddlers/definitions/HTML Block Elements.tid +9 -0
  195. package/editions/tw5.com/tiddlers/definitions/TiddlyWikiClassic.tid +3 -1
  196. package/editions/tw5.com/tiddlers/demonstrations/TableOfContentsMacro Selective Expandable Example custom icons.tid +16 -0
  197. package/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid +1 -1
  198. package/editions/tw5.com/tiddlers/features/DateFormat.tid +27 -3
  199. package/editions/tw5.com/tiddlers/features/JSON in TiddlyWiki.tid +1 -1
  200. package/editions/tw5.com/tiddlers/features/Modals.tid +3 -0
  201. package/editions/tw5.com/tiddlers/filters/examples/format Operator (Examples).tid +5 -2
  202. package/editions/tw5.com/tiddlers/filters/format.tid +5 -4
  203. package/editions/tw5.com/tiddlers/filters/jsonextract.tid +66 -0
  204. package/editions/tw5.com/tiddlers/filters/jsonget.tid +93 -0
  205. package/editions/tw5.com/tiddlers/filters/jsonindexes.tid +65 -0
  206. package/editions/tw5.com/tiddlers/filters/jsontype.tid +74 -0
  207. package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted.tid +3 -7
  208. package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +23 -22
  209. package/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid +1 -1
  210. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Funding.tid +10 -0
  211. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Grok TiddlyWiki.tid +2 -0
  212. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Introduction Video.tid +2 -0
  213. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Latest Version.tid +9 -1
  214. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Marketplace.tid +10 -0
  215. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyWikiLinks.tid +3 -1
  216. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail_-_Federatial.tid +11 -0
  217. package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting Default Story Ordering.tid +4 -0
  218. package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting Sync System Tiddlers From Server.tid +13 -0
  219. package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncLogging.tid +13 -0
  220. package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting_ More Tabs Horizontal.tid +7 -0
  221. package/editions/tw5.com/tiddlers/howtos/How to create keyboard shortcuts.tid +2 -0
  222. package/editions/tw5.com/tiddlers/howtos/Reading data from JSON tiddlers.tid +10 -1
  223. package/editions/tw5.com/tiddlers/images/Federatial.png +0 -0
  224. package/editions/tw5.com/tiddlers/images/Federatial.png.meta +3 -0
  225. package/editions/tw5.com/tiddlers/images/Funding.png +0 -0
  226. package/editions/tw5.com/tiddlers/images/{TiddlyMap.png.meta → Funding.png.meta} +1 -1
  227. package/editions/tw5.com/tiddlers/images/Marketplace Banner.png +0 -0
  228. package/editions/tw5.com/tiddlers/images/Marketplace Banner.png.meta +3 -0
  229. package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
  230. package/editions/tw5.com/tiddlers/macros/ListMacro.tid +3 -1
  231. package/editions/tw5.com/tiddlers/macros/TableOfContentsMacro.tid +36 -2
  232. package/editions/tw5.com/tiddlers/marketplace/TiddlyWiki Marketplace.tid +18 -0
  233. package/editions/tw5.com/tiddlers/mechanisms/PopupMechanism.tid +1 -0
  234. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-modal.tid +4 -2
  235. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-new-tiddler.tid +1 -1
  236. package/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +2 -2
  237. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _parsermode.tid +17 -0
  238. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.4.tid +140 -0
  239. package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +1 -1
  240. package/editions/tw5.com/tiddlers/saving/Emergency Tiddler Export.tid +1 -1
  241. package/editions/tw5.com/tiddlers/saving/Saving on TiddlyHost.tid +1 -1
  242. package/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid +0 -1
  243. package/editions/tw5.com/tiddlers/saving/Saving with Polly.tid +1 -0
  244. package/editions/tw5.com/tiddlers/saving/Saving.tid +12 -5
  245. package/editions/tw5.com/tiddlers/saving/TiddlyBucket - Save to AWS or Google Storage.tid +15 -0
  246. package/editions/tw5.com/tiddlers/system/doc-macros.tid +1 -1
  247. package/editions/tw5.com/tiddlers/system/tw5.com-card-template.tid +1 -16
  248. package/editions/tw5.com/tiddlers/system/tw5.com-styles.tid +168 -40
  249. package/editions/tw5.com/tiddlers/system/version-macros.tid +3 -4
  250. package/editions/tw5.com/tiddlers/system/wikitext-macros.tid +43 -15
  251. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_ClassFilters_PageTemplate.tid +9 -0
  252. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_ClassFilters_TiddlerTemplate.tid +9 -0
  253. package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_Filter.tid +2 -2
  254. package/editions/tw5.com/tiddlers/testimonials/Testimonials - Joe Armstrong.tid +8 -0
  255. package/editions/tw5.com/tiddlers/testimonials/Testimonials - Network World.tid +8 -0
  256. package/editions/tw5.com/tiddlers/testimonials/Testimonials - Product Hunt.tid +6 -0
  257. package/editions/tw5.com/tiddlers/webserver/Using the external JavaScript template.tid +10 -10
  258. package/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid +3 -1
  259. package/editions/tw5.com/tiddlers/widgets/ActionPopupWidget.tid +4 -3
  260. package/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +2 -1
  261. package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +2 -1
  262. package/editions/tw5.com/tiddlers/widgets/ErrorWidget.tid +17 -0
  263. package/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +4 -3
  264. package/editions/tw5.com/tiddlers/widgets/GenesisWidget.tid +41 -0
  265. package/editions/tw5.com/tiddlers/widgets/LetWidget.tid +4 -1
  266. package/editions/tw5.com/tiddlers/widgets/ScrollableWidget.tid +1 -1
  267. package/editions/tw5.com/tiddlers/widgets/SelectWidget.tid +1 -0
  268. package/editions/tw5.com/tiddlers/wikitext/Macro Definitions in WikiText.tid +27 -4
  269. package/editions/tw5.com/tiddlers/wikitext/Styles and Classes in WikiText.tid +1 -1
  270. package/editions/tw5.com/tiddlers/wikitext/Table Classes Captions Headers and Footers.tid +20 -0
  271. package/editions/tw5.com/tiddlers/wikitext/Tables in WikiText.tid +3 -13
  272. package/editions/tw5.com/tiddlers/wikitext/Utility Classes.tid +20 -0
  273. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText Parser Modes.tid +1 -1
  274. package/editions/twitter-archivist/tiddlers/DefaultTiddlers.tid +4 -0
  275. package/editions/twitter-archivist/tiddlers/HelloThere.tid +9 -0
  276. package/editions/twitter-archivist/tiddlers/SiteSubtitle.tid +3 -0
  277. package/editions/twitter-archivist/tiddlers/SiteTitle.tid +3 -0
  278. package/editions/twitter-archivist/tiddlywiki.info +16 -0
  279. package/languages/ar-PS/ControlPanel.multids +1 -1
  280. package/languages/ca-ES/ControlPanel.multids +1 -1
  281. package/languages/cs-CZ/ControlPanel.multids +1 -1
  282. package/languages/da-DK/ControlPanel.multids +1 -1
  283. package/languages/de-DE/Buttons.multids +5 -1
  284. package/languages/de-DE/ControlPanel.multids +1 -1
  285. package/languages/de-DE/Help/commands.tid +14 -0
  286. package/languages/de-DE/Misc.multids +1 -0
  287. package/languages/el-GR/ControlPanel.multids +1 -1
  288. package/languages/es-ES/Buttons.multids +89 -87
  289. package/languages/es-ES/ControlPanel.multids +18 -1
  290. package/languages/es-ES/Docs/PaletteColours.multids +2 -2
  291. package/languages/es-ES/EditTemplate.multids +3 -0
  292. package/languages/es-ES/Fields.multids +4 -3
  293. package/languages/es-ES/GettingStarted.tid +4 -3
  294. package/languages/es-ES/Help/default.tid +4 -1
  295. package/languages/es-ES/Help/listen.tid +0 -1
  296. package/languages/es-ES/Help/render.tid +2 -2
  297. package/languages/es-ES/Import.multids +1 -1
  298. package/languages/es-ES/Misc.multids +2 -1
  299. package/languages/es-ES/SideBar.multids +1 -0
  300. package/languages/es-ES/Snippets/ListByTag.tid +1 -1
  301. package/languages/fa-IR/ControlPanel.multids +1 -1
  302. package/languages/fr-FR/Buttons.multids +2 -0
  303. package/languages/fr-FR/ControlPanel.multids +4 -4
  304. package/languages/fr-FR/Misc.multids +3 -2
  305. package/languages/hi-IN/ControlPanel.multids +1 -1
  306. package/languages/ia-IA/ControlPanel.multids +1 -1
  307. package/languages/it-IT/ControlPanel.multids +1 -1
  308. package/languages/ja-JP/ControlPanel.multids +9 -9
  309. package/languages/ko-KR/ControlPanel.multids +1 -1
  310. package/languages/nl-NL/ControlPanel.multids +1 -1
  311. package/languages/pl-PL/Buttons.multids +7 -3
  312. package/languages/pl-PL/ControlPanel.multids +26 -24
  313. package/languages/pl-PL/GettingStarted.tid +4 -3
  314. package/languages/pl-PL/Help/commands.tid +18 -0
  315. package/languages/pl-PL/Help/render.tid +2 -2
  316. package/languages/pl-PL/Misc.multids +1 -0
  317. package/languages/pl-PL/ThemeTweaks.multids +3 -3
  318. package/languages/pt-BR/ControlPanel.multids +1 -1
  319. package/languages/pt-PT/ControlPanel.multids +1 -1
  320. package/languages/ru-RU/ControlPanel.multids +1 -1
  321. package/languages/sk-SK/ControlPanel.multids +1 -1
  322. package/languages/sl-SI/ControlPanel.multids +1 -1
  323. package/languages/sv-SE/ControlPanel.multids +1 -1
  324. package/languages/zh-Hans/Buttons.multids +36 -32
  325. package/languages/zh-Hans/ControlPanel.multids +19 -19
  326. package/languages/zh-Hans/CoreReadMe.tid +1 -1
  327. package/languages/zh-Hans/Docs/ModuleTypes.multids +2 -2
  328. package/languages/zh-Hans/Docs/PaletteColours.multids +8 -8
  329. package/languages/zh-Hans/Fields.multids +7 -7
  330. package/languages/zh-Hans/Filters.multids +1 -1
  331. package/languages/zh-Hans/GettingStarted.tid +8 -6
  332. package/languages/zh-Hans/Help/commands.tid +18 -0
  333. package/languages/zh-Hans/Help/fetch.tid +6 -6
  334. package/languages/zh-Hans/Help/init.tid +1 -1
  335. package/languages/zh-Hans/Help/listen.tid +5 -5
  336. package/languages/zh-Hans/Help/makelibrary.tid +1 -1
  337. package/languages/zh-Hans/Help/savetiddlers.tid +1 -1
  338. package/languages/zh-Hans/Help/server.tid +6 -6
  339. package/languages/zh-Hans/Help/setfield.tid +3 -3
  340. package/languages/zh-Hans/Import.multids +1 -1
  341. package/languages/zh-Hans/Misc.multids +12 -11
  342. package/languages/zh-Hans/Search.multids +6 -6
  343. package/languages/zh-Hans/SiteSubtitle.tid +1 -1
  344. package/languages/zh-Hans/Snippets/ListByTag.tid +1 -1
  345. package/languages/zh-Hans/ThemeTweaks.multids +7 -7
  346. package/languages/zh-Hans/TiddlerInfo.multids +2 -2
  347. package/languages/zh-Hant/Buttons.multids +4 -0
  348. package/languages/zh-Hant/ControlPanel.multids +2 -2
  349. package/languages/zh-Hant/Fields.multids +2 -2
  350. package/languages/zh-Hant/GettingStarted.tid +4 -3
  351. package/languages/zh-Hant/Help/commands.tid +18 -0
  352. package/languages/zh-Hant/Misc.multids +1 -0
  353. package/licenses/cla-individual.md +4 -0
  354. package/package.json +1 -1
  355. package/plugins/tiddlywiki/codemirror/engine.js +4 -0
  356. package/plugins/tiddlywiki/dynannotate/docs/readme.tid +2 -2
  357. package/plugins/tiddlywiki/dynannotate/modules/dynannotate.js +4 -2
  358. package/plugins/tiddlywiki/help/tabs/Support.tid +6 -2
  359. package/plugins/tiddlywiki/jasmine/command.js +33 -0
  360. package/plugins/tiddlywiki/jasmine/help.tid +24 -0
  361. package/plugins/tiddlywiki/jasmine/jasmine-plugin.js +24 -18
  362. package/plugins/tiddlywiki/jasmine/readme.tid +31 -1
  363. package/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js +93 -0
  364. package/plugins/tiddlywiki/jasmine/startup.js +37 -0
  365. package/plugins/tiddlywiki/translators/macros/translatableStringEditor.tid +6 -0
  366. package/plugins/tiddlywiki/translators/system/styles.tid +5 -0
  367. package/plugins/tiddlywiki/twitter-archivist/Twitter Archives.tid +5 -0
  368. package/plugins/tiddlywiki/twitter-archivist/archivist.js +319 -0
  369. package/plugins/tiddlywiki/twitter-archivist/configTiddlerInfoMode.tid +2 -0
  370. package/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js +53 -0
  371. package/plugins/tiddlywiki/twitter-archivist/macros.tid +222 -0
  372. package/plugins/tiddlywiki/twitter-archivist/plugin.info +6 -0
  373. package/plugins/tiddlywiki/twitter-archivist/readme.tid +33 -0
  374. package/plugins/tiddlywiki/twitter-archivist/spec.tid +62 -0
  375. package/plugins/tiddlywiki/twitter-archivist/startup.js +38 -0
  376. package/plugins/tiddlywiki/twitter-archivist/styles.tid +47 -0
  377. package/plugins/tiddlywiki/twitter-archivist/template-archive.tid +3 -0
  378. package/plugins/tiddlywiki/twitter-archivist/template-hashtag.tid +3 -0
  379. package/plugins/tiddlywiki/twitter-archivist/template-tweet.tid +3 -0
  380. package/plugins/tiddlywiki/twitter-archivist/template-tweeter.tid +3 -0
  381. package/plugins/tiddlywiki/twitter-archivist/todo.tid +15 -0
  382. package/plugins/tiddlywiki/twitter-archivist/usage.tid +18 -0
  383. package/plugins/tiddlywiki/twitter-archivist/view-template-body-cascade.tid +8 -0
  384. package/plugins/tiddlywiki/upgrade/UpgradeWizard.tid +3 -3
  385. package/readme.md +1 -1
  386. package/themes/tiddlywiki/vanilla/base.tid +131 -10
  387. package/editions/fr-FR/tiddlers/$__core_ui_TagTemplate.tid +0 -33
  388. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Classic.tid +0 -6
  389. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Developers.tid +0 -7
  390. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Gentle Guide.tid +0 -11
  391. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - HelpingTiddlyWiki.tid +0 -7
  392. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TWEUM2017.tid +0 -8
  393. package/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid +0 -6
  394. package/editions/tw5.com/tiddlers/images/Dev Thumbnail.jpg +0 -0
  395. package/editions/tw5.com/tiddlers/images/Dev Thumbnail.jpg.meta +0 -3
  396. package/editions/tw5.com/tiddlers/images/TiddlyMap.png +0 -0
package/bin/build-site.sh CHANGED
@@ -5,7 +5,7 @@
5
5
  # Default to the current version number for building the plugin library
6
6
 
7
7
  if [ -z "$TW5_BUILD_VERSION" ]; then
8
- TW5_BUILD_VERSION=v5.2.3
8
+ TW5_BUILD_VERSION=v5.2.4
9
9
  fi
10
10
 
11
11
  echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
@@ -233,6 +233,15 @@ node $TW5_BUILD_TIDDLYWIKI \
233
233
  --build index \
234
234
  || exit 1
235
235
 
236
+ # /editions/twitter-archivist/index.html Twitter Archivist edition
237
+ node $TW5_BUILD_TIDDLYWIKI \
238
+ ./editions/twitter-archivist \
239
+ --verbose \
240
+ --load $TW5_BUILD_OUTPUT/build.tid \
241
+ --output $TW5_BUILD_OUTPUT/editions/twitter-archivist/ \
242
+ --build index \
243
+ || exit 1
244
+
236
245
  ######################################################
237
246
  #
238
247
  # Plugin demos
@@ -450,7 +459,7 @@ node $TW5_BUILD_TIDDLYWIKI \
450
459
  --verbose \
451
460
  --load $TW5_BUILD_OUTPUT/build.tid \
452
461
  --output $TW5_BUILD_OUTPUT/library/$TW5_BUILD_VERSION \
453
- --build \
462
+ --build library\
454
463
  || exit 1
455
464
 
456
465
  # Delete the temporary build tiddler
package/bin/test.sh CHANGED
@@ -9,6 +9,7 @@ node ./tiddlywiki.js \
9
9
  --verbose \
10
10
  --version \
11
11
  --rendertiddler $:/core/save/all test.html text/plain \
12
+ --test \
12
13
  || exit 1
13
14
 
14
15
  echo To run the tests in a browser, open "editions/test/output/test.html"
package/boot/boot.js CHANGED
@@ -1230,13 +1230,16 @@ $tw.Wiki = function(options) {
1230
1230
  this.getTiddler = function(title) {
1231
1231
  if(title) {
1232
1232
  var t = tiddlers[title];
1233
- if(t instanceof $tw.Tiddler) {
1233
+ if(t !== undefined) {
1234
1234
  return t;
1235
- } else if(title !== undefined && shadowTiddlers[title]) {
1236
- return shadowTiddlers[title].tiddler;
1235
+ } else {
1236
+ var s = shadowTiddlers[title];
1237
+ if(s !== undefined) {
1238
+ return s.tiddler;
1239
+ }
1237
1240
  }
1238
- return undefined;
1239
1241
  }
1242
+ return undefined;
1240
1243
  };
1241
1244
 
1242
1245
  // Get an array of all tiddler titles
@@ -2400,11 +2403,11 @@ $tw.boot.initStartup = function(options) {
2400
2403
  $tw.utils.registerFileType("application/x-font-ttf","base64",".woff");
2401
2404
  $tw.utils.registerFileType("application/font-woff2","base64",".woff2");
2402
2405
  $tw.utils.registerFileType("audio/ogg","base64",".ogg");
2406
+ $tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]);
2403
2407
  $tw.utils.registerFileType("video/ogg","base64",[".ogm",".ogv",".ogg"]);
2404
2408
  $tw.utils.registerFileType("video/webm","base64",".webm");
2405
2409
  $tw.utils.registerFileType("video/mp4","base64",".mp4");
2406
2410
  $tw.utils.registerFileType("audio/mp3","base64",".mp3");
2407
- $tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]);
2408
2411
  $tw.utils.registerFileType("text/markdown","utf8",[".md",".markdown"],{deserializerType:"text/x-markdown"});
2409
2412
  $tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]);
2410
2413
  $tw.utils.registerFileType("application/enex+xml","utf8",".enex");
@@ -2416,7 +2419,7 @@ $tw.boot.initStartup = function(options) {
2416
2419
  $tw.utils.registerFileType("application/epub+zip","base64",".epub");
2417
2420
  $tw.utils.registerFileType("application/octet-stream","base64",".octet-stream");
2418
2421
  // Create the wiki store for the app
2419
- $tw.wiki = new $tw.Wiki();
2422
+ $tw.wiki = new $tw.Wiki($tw.safeMode && {enableIndexers: []});
2420
2423
  // Install built in tiddler fields modules
2421
2424
  $tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap("tiddlerfield");
2422
2425
  // Install the tiddler deserializer modules
@@ -0,0 +1,4 @@
1
+ title: $:/core/images/layout-button
2
+ tags: $:/tags/Image
3
+
4
+ <svg width="22pt" height="22pt" class="tc-image-layout-button tc-image-button" viewBox="0 0 24 24" stroke-width="1" stroke="none"><path d="M0 0h24v24H0z" fill="none"/><rect x="2" y="2" width="7" height="7" rx="2"/><rect x="2" y="13" width="7" height="9" rx="2"/><rect x="12" y="2" width="10" height="20" rx="2"/></svg>
@@ -0,0 +1,6 @@
1
+ title: $:/core/images/mastodon
2
+ tags: $:/tags/Image
3
+
4
+ <svg width="22pt" height="22pt" class="tc-image-mastodon tc-image-button" viewBox="0 0 128 128">
5
+ <path d="M112.716,76.735C111.231,85.764 99.411,95.646 85.836,97.561C78.757,98.559 71.787,99.476 64.355,99.073C52.201,98.415 42.61,95.646 42.61,95.646C42.61,97.044 42.683,98.374 42.829,99.619C44.409,113.79 54.723,114.639 64.493,115.035C74.354,115.434 83.134,112.163 83.134,112.163L83.539,122.695C83.539,122.695 76.642,127.071 64.355,127.875C57.58,128.315 49.167,127.674 39.369,124.61C18.118,117.965 14.463,91.202 13.904,64.048C13.733,55.985 13.839,48.383 13.839,42.024C13.839,14.257 29.238,6.118 29.238,6.118C37.002,1.905 50.326,0.134 64.177,-0L64.517,-0C78.369,0.134 91.701,1.905 99.465,6.118C99.465,6.118 114.864,14.257 114.864,42.024C114.864,42.024 115.057,62.511 112.716,76.735ZM96.7,44.179C96.7,37.307 95.219,31.847 92.245,27.807C89.177,23.767 85.16,21.696 80.174,21.696C74.403,21.696 70.034,24.316 67.146,29.556L64.337,35.118L61.529,29.556C58.64,24.316 54.271,21.696 48.501,21.696C43.514,21.696 39.497,23.767 36.43,27.807C33.455,31.847 31.974,37.307 31.974,44.179L31.974,77.8L43.249,77.8L43.249,45.167C43.249,38.288 45.699,34.796 50.599,34.796C56.017,34.796 58.733,38.938 58.733,47.128L58.733,64.99L69.941,64.99L69.941,47.128C69.941,38.938 72.657,34.796 78.075,34.796C82.975,34.796 85.425,38.288 85.425,45.167L85.425,77.8L96.7,77.8L96.7,44.179Z"/>
6
+ </svg>
@@ -18,6 +18,8 @@ CopyToClipboard/Caption: copy to clipboard
18
18
  CopyToClipboard/Hint: Copy this text to the clipboard
19
19
  Delete/Caption: delete
20
20
  Delete/Hint: Delete this tiddler
21
+ DeleteTiddlers/Caption: delete tiddlers
22
+ DeleteTiddlers/Hint: Delete tiddlers
21
23
  Edit/Caption: edit
22
24
  Edit/Hint: Edit this tiddler
23
25
  Encryption/Caption: encryption
@@ -57,6 +59,8 @@ Home/Caption: home
57
59
  Home/Hint: Open the default tiddlers
58
60
  Language/Caption: language
59
61
  Language/Hint: Choose the user interface language
62
+ LayoutSwitcher/Hint: Open layout switcher
63
+ LayoutSwitcher/Caption: layout
60
64
  Manager/Caption: tiddler manager
61
65
  Manager/Hint: Open tiddler manager
62
66
  More/Caption: more
@@ -7,7 +7,7 @@ Appearance/Hint: Ways to customise the appearance of your TiddlyWiki.
7
7
  Basics/AnimDuration/Prompt: Animation duration
8
8
  Basics/AutoFocus/Prompt: Default focus field for new tiddlers
9
9
  Basics/Caption: Basics
10
- Basics/DefaultTiddlers/BottomHint: Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">retain story ordering</$button>
10
+ Basics/DefaultTiddlers/BottomHint: Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to {{retain story ordering||$:/snippets/retain-story-ordering-button}}
11
11
  Basics/DefaultTiddlers/Prompt: Default tiddlers
12
12
  Basics/DefaultTiddlers/TopHint: Choose which tiddlers are displayed at startup
13
13
  Basics/Language/Prompt: Hello! Current language:
@@ -90,8 +90,8 @@ Plugins/Languages/Caption: Languages
90
90
  Plugins/Languages/Hint: Language pack plugins
91
91
  Plugins/NoInfoFound/Hint: No ''"<$text text=<<currentTab>>/>"'' found
92
92
  Plugins/NotInstalled/Hint: This plugin is not currently installed
93
- Plugins/OpenPluginLibrary: open plugin library
94
- Plugins/ClosePluginLibrary: close plugin library
93
+ Plugins/OpenPluginLibrary: Open plugin library
94
+ Plugins/ClosePluginLibrary: Close plugin library
95
95
  Plugins/PluginWillRequireReload: (requires reload)
96
96
  Plugins/Plugins/Caption: Plugins
97
97
  Plugins/Plugins/Hint: Plugins
@@ -13,7 +13,7 @@ dependents: For a plugin, lists the dependent plugin titles
13
13
  description: The descriptive text for a plugin, or a modal dialogue
14
14
  draft.of: For draft tiddlers, contains the title of the tiddler of which this is a draft
15
15
  draft.title: For draft tiddlers, contains the proposed new title of the tiddler
16
- footer: The footer text for a wizard
16
+ footer: The footer text for a modal
17
17
  hide-body: The view template will hide bodies of tiddlers if set to ''yes''
18
18
  icon: The title of the tiddler containing the icon associated with a tiddler
19
19
  library: Indicates that a tiddler should be saved as a JavaScript library if set to ''yes''
@@ -28,7 +28,7 @@ plugin-type: The type of plugin in a plugin tiddler
28
28
  revision: The revision of the tiddler held at the server
29
29
  released: Date of a TiddlyWiki release
30
30
  source: The source URL associated with a tiddler
31
- subtitle: The subtitle text for a wizard
31
+ subtitle: The subtitle text for a modal
32
32
  tags: A list of tags associated with a tiddler
33
33
  text: The body text of a tiddler
34
34
  throttle.refresh: If present, throttles refreshes of this tiddler
@@ -9,9 +9,10 @@ Before you start storing important information in ~TiddlyWiki it is vital to mak
9
9
 
10
10
  <div class="tc-control-panel">
11
11
 
12
- |<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
13
- |<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
14
- |<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
12
+ |tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k
13
+ | <$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link>|<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
14
+ | <$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link>|<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
15
+ |^ <$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link><br><<lingo DefaultTiddlers/TopHint>>|<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
15
16
  </div>
16
17
 
17
18
  See the [[control panel|$:/ControlPanel]] for more options.
@@ -0,0 +1,18 @@
1
+ title: $:/language/Help/commands
2
+ description: Run commands returned from a filter
3
+
4
+ Sequentially run the command tokens returned from a filter
5
+
6
+ ```
7
+ --commands <filter>
8
+ ```
9
+
10
+ Examples
11
+
12
+ ```
13
+ --commands "[enlist{$:/build-commands-as-text}]"
14
+ ```
15
+
16
+ ```
17
+ --commands "[{$:/build-commands-as-json}jsonindexes[]] :map[{$:/build-commands-as-json}jsonget<currentTiddler>]"
18
+ ```
@@ -8,6 +8,7 @@ CloseAll/Button: close all
8
8
  ColourPicker/Recent: Recent:
9
9
  ConfirmCancelTiddler: Do you wish to discard changes to the tiddler "<$text text=<<title>>/>"?
10
10
  ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<<title>>/>"?
11
+ ConfirmDeleteTiddlers: Are you sure you wish to delete <<resultCount>> tiddler(s)?
11
12
  ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<<title>>/>"?
12
13
  ConfirmEditShadowTiddler: You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit "<$text text=<<title>>/>"?
13
14
  ConfirmAction: Do you wish to proceed?
@@ -0,0 +1,42 @@
1
+ /*\
2
+ title: $:/core/modules/commands/commands.js
3
+ type: application/javascript
4
+ module-type: command
5
+
6
+ Runs the commands returned from a filter
7
+
8
+ \*/
9
+
10
+ (function() {
11
+
12
+ /*jslint node: true, browser: true */
13
+ /*global $tw: false */
14
+ "use strict";
15
+
16
+ exports.info = {
17
+ name: "commands",
18
+ synchronous: true
19
+ };
20
+
21
+ var Command = function(params, commander) {
22
+ this.params = params;
23
+ this.commander = commander;
24
+ };
25
+
26
+ Command.prototype.execute = function() {
27
+ // Parse the filter
28
+ var filter = this.params[0];
29
+ if(!filter) {
30
+ return "No filter specified";
31
+ }
32
+ var commands = this.commander.wiki.filterTiddlers(filter)
33
+ if(commands.length === 0) {
34
+ return "No tiddlers found for filter '" + filter + "'";
35
+ }
36
+ this.commander.addCommandTokens(commands);
37
+ return null;
38
+ };
39
+
40
+ exports.Command = Command;
41
+
42
+ })();
@@ -87,7 +87,7 @@ function FramedEngine(options) {
87
87
  $tw.utils.addEventListeners(this.domNode,[
88
88
  {name: "click",handlerObject: this,handlerMethod: "handleClickEvent"},
89
89
  {name: "input",handlerObject: this,handlerMethod: "handleInputEvent"},
90
- {name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"},
90
+ {name: "keydown",handlerObject: this,handlerMethod: "handleKeydownEvent"},
91
91
  {name: "focus",handlerObject: this,handlerMethod: "handleFocusEvent"}
92
92
  ]);
93
93
  // Add drag and drop event listeners if fileDrop is enabled
@@ -192,6 +192,17 @@ FramedEngine.prototype.handleFocusEvent = function(event) {
192
192
  }
193
193
  };
194
194
 
195
+ /*
196
+ Handle a keydown event
197
+ */
198
+ FramedEngine.prototype.handleKeydownEvent = function(event) {
199
+ if ($tw.keyboardManager.handleKeydownEvent(event, {onlyPriority: true})) {
200
+ return true;
201
+ }
202
+
203
+ return this.widget.handleKeydownEvent(event);
204
+ };
205
+
195
206
  /*
196
207
  Handle a click
197
208
  */
@@ -115,7 +115,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
115
115
  // Otherwise, we need to construct a default value for the editor
116
116
  switch(this.editField) {
117
117
  case "text":
118
- value = "Type the text for the tiddler '" + this.editTitle + "'";
118
+ value = "";
119
119
  type = "text/vnd.tiddlywiki";
120
120
  break;
121
121
  case "title":
@@ -298,7 +298,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
298
298
  Propogate keydown events to our container for the keyboard widgets benefit
299
299
  */
300
300
  EditTextWidget.prototype.propogateKeydownEvent = function(event) {
301
- var newEvent = this.cloneEvent(event,["keyCode","which","metaKey","ctrlKey","altKey","shiftKey"]);
301
+ var newEvent = this.cloneEvent(event,["keyCode","code","which","key","metaKey","ctrlKey","altKey","shiftKey"]);
302
302
  return !this.parentDomNode.dispatchEvent(newEvent);
303
303
  };
304
304
 
@@ -0,0 +1,35 @@
1
+ /*\
2
+ title: $:/core/modules/filters/format/json.js
3
+ type: application/javascript
4
+ module-type: formatfilteroperator
5
+ \*/
6
+ (function(){
7
+
8
+ /*jslint node: true, browser: true */
9
+ /*global $tw: false */
10
+ "use strict";
11
+
12
+ /*
13
+ Export our filter function
14
+ */
15
+ exports.json = function(source,operand,options) {
16
+ var results = [],
17
+ spaces = null;
18
+ if(operand) {
19
+ spaces = /^\d+$/.test(operand) ? parseInt(operand,10) : operand;
20
+ }
21
+ source(function(tiddler,title) {
22
+ var data = $tw.utils.parseJSONSafe(title);
23
+ try {
24
+ data = JSON.parse(title);
25
+ } catch(e) {
26
+ data = undefined;
27
+ }
28
+ if(data !== undefined) {
29
+ results.push(JSON.stringify(data,null,spaces));
30
+ }
31
+ });
32
+ return results;
33
+ };
34
+
35
+ })();
@@ -19,13 +19,13 @@ exports.variable = function(source,prefix,options) {
19
19
  var results = [];
20
20
  if(prefix === "!") {
21
21
  source(function(tiddler,title) {
22
- if(!(title in options.widget.variables)) {
22
+ if(options.widget.getVariable(title) === undefined) {
23
23
  results.push(title);
24
24
  }
25
25
  });
26
26
  } else {
27
27
  source(function(tiddler,title) {
28
- if(title in options.widget.variables) {
28
+ if(options.widget.getVariable(title) !== undefined) {
29
29
  results.push(title);
30
30
  }
31
31
  });
@@ -0,0 +1,186 @@
1
+ /*\
2
+ title: $:/core/modules/filters/json-ops.js
3
+ type: application/javascript
4
+ module-type: filteroperator
5
+
6
+ Filter operators for JSON operations
7
+
8
+ \*/
9
+ (function(){
10
+
11
+ /*jslint node: true, browser: true */
12
+ /*global $tw: false */
13
+ "use strict";
14
+
15
+ exports["jsonget"] = function(source,operator,options) {
16
+ var results = [];
17
+ source(function(tiddler,title) {
18
+ var data = $tw.utils.parseJSONSafe(title,title);
19
+ if(data) {
20
+ var items = getDataItemValueAsStrings(data,operator.operands);
21
+ if(items !== undefined) {
22
+ results.push.apply(results,items);
23
+ }
24
+ }
25
+ });
26
+ return results;
27
+ };
28
+
29
+ exports["jsonextract"] = function(source,operator,options) {
30
+ var results = [];
31
+ source(function(tiddler,title) {
32
+ var data = $tw.utils.parseJSONSafe(title,title);
33
+ if(data) {
34
+ var item = getDataItem(data,operator.operands);
35
+ if(item !== undefined) {
36
+ results.push(JSON.stringify(item));
37
+ }
38
+ }
39
+ });
40
+ return results;
41
+ };
42
+
43
+ exports["jsonindexes"] = function(source,operator,options) {
44
+ var results = [];
45
+ source(function(tiddler,title) {
46
+ var data = $tw.utils.parseJSONSafe(title,title);
47
+ if(data) {
48
+ var items = getDataItemKeysAsStrings(data,operator.operands);
49
+ if(items !== undefined) {
50
+ results.push.apply(results,items);
51
+ }
52
+ }
53
+ });
54
+ return results;
55
+ };
56
+
57
+ exports["jsontype"] = function(source,operator,options) {
58
+ var results = [];
59
+ source(function(tiddler,title) {
60
+ var data = $tw.utils.parseJSONSafe(title,title);
61
+ if(data) {
62
+ var item = getDataItemType(data,operator.operands);
63
+ if(item !== undefined) {
64
+ results.push(item);
65
+ }
66
+ }
67
+ });
68
+ return results;
69
+ };
70
+
71
+ /*
72
+ Given a JSON data structure and an array of index strings, return an array of the string representation of the values at the end of the index chain, or "undefined" if any of the index strings are invalid
73
+ */
74
+ function getDataItemValueAsStrings(data,indexes) {
75
+ // Get the item
76
+ var item = getDataItem(data,indexes);
77
+ // Return the item as a string list
78
+ return convertDataItemValueToStrings(item);
79
+ }
80
+
81
+ /*
82
+ Given a JSON data structure and an array of index strings, return an array of the string representation of the keys of the item at the end of the index chain, or "undefined" if any of the index strings are invalid
83
+ */
84
+ function getDataItemKeysAsStrings(data,indexes) {
85
+ // Get the item
86
+ var item = getDataItem(data,indexes);
87
+ // Return the item keys as a string
88
+ return convertDataItemKeysToStrings(item);
89
+ }
90
+
91
+ /*
92
+ Return an array of the string representation of the values of a data item, or "undefined" if the item is undefined
93
+ */
94
+ function convertDataItemValueToStrings(item) {
95
+ // Return the item as a string
96
+ if(item === undefined) {
97
+ return undefined;
98
+ } else if(item === null) {
99
+ return ["null"]
100
+ } else if(typeof item === "object") {
101
+ var results = [],i,t;
102
+ if($tw.utils.isArray(item)) {
103
+ // Return all the items in arrays recursively
104
+ for(i=0; i<item.length; i++) {
105
+ t = convertDataItemValueToStrings(item[i])
106
+ if(t !== undefined) {
107
+ results.push.apply(results,t);
108
+ }
109
+ }
110
+ } else {
111
+ // Return all the values in objects recursively
112
+ $tw.utils.each(Object.keys(item).sort(),function(key) {
113
+ t = convertDataItemValueToStrings(item[key]);
114
+ if(t !== undefined) {
115
+ results.push.apply(results,t);
116
+ }
117
+ });
118
+ }
119
+ return results;
120
+ }
121
+ return [item.toString()];
122
+ }
123
+
124
+ /*
125
+ Return an array of the string representation of the keys of a data item, or "undefined" if the item is undefined
126
+ */
127
+ function convertDataItemKeysToStrings(item) {
128
+ // Return the item as a string
129
+ if(item === undefined) {
130
+ return item;
131
+ } else if(typeof item === "object") {
132
+ if(item === null) {
133
+ return [];
134
+ }
135
+ var results = [];
136
+ if($tw.utils.isArray(item)) {
137
+ for(var i=0; i<item.length; i++) {
138
+ results.push(i.toString());
139
+ }
140
+ return results;
141
+ } else {
142
+ $tw.utils.each(Object.keys(item).sort(),function(key) {
143
+ results.push(key);
144
+ });
145
+ return results;
146
+ }
147
+ }
148
+ return [];
149
+ }
150
+
151
+ function getDataItemType(data,indexes) {
152
+ // Get the item
153
+ var item = getDataItem(data,indexes);
154
+ // Return the item type
155
+ if(item === undefined) {
156
+ return item;
157
+ } else if(item === null) {
158
+ return "null";
159
+ } else if($tw.utils.isArray(item)) {
160
+ return "array";
161
+ } else if(typeof item === "object") {
162
+ return "object";
163
+ } else {
164
+ return typeof item;
165
+ }
166
+ }
167
+
168
+ /*
169
+ Given a JSON data structure and an array of index strings, return the value at the end of the index chain, or "undefined" if any of the index strings are invalid
170
+ */
171
+ function getDataItem(data,indexes) {
172
+ if(indexes.length === 0 || (indexes.length === 1 && indexes[0] === "")) {
173
+ return data;
174
+ }
175
+ // Get the item
176
+ var item = data;
177
+ for(var i=0; i<indexes.length; i++) {
178
+ if(item !== undefined) {
179
+ item = item[indexes[i]];
180
+ }
181
+ }
182
+ return item;
183
+ }
184
+
185
+ })();
186
+
@@ -16,9 +16,15 @@ Filter operator for returning the names of the active variables
16
16
  Export our filter function
17
17
  */
18
18
  exports.variables = function(source,operator,options) {
19
- var names = [];
20
- for(var variable in options.widget.variables) {
21
- names.push(variable);
19
+ var names = [],
20
+ widget = options.widget;
21
+ while(widget && !widget.hasOwnProperty("variables")) {
22
+ widget = widget.parentWidget;
23
+ }
24
+ if(widget && widget.variables) {
25
+ for(var variable in widget.variables) {
26
+ names.push(variable);
27
+ }
22
28
  }
23
29
  return names.sort();
24
30
  };
@@ -12,6 +12,9 @@ Adds tiddler filtering methods to the $tw.Wiki object.
12
12
  /*global $tw: false */
13
13
  "use strict";
14
14
 
15
+ /* Maximum permitted filter recursion depth */
16
+ var MAX_FILTER_DEPTH = 300;
17
+
15
18
  /*
16
19
  Parses an operation (i.e. a run) within a filter string
17
20
  operators: Array of array of operator nodes into which results should be inserted
@@ -328,7 +331,7 @@ exports.compileFilter = function(filterString) {
328
331
  })());
329
332
  });
330
333
  // Return a function that applies the operations to a source iterator of tiddler titles
331
- var compiled = $tw.perf.measure("filter: " + filterString,function filterFunction(source,widget) {
334
+ var fnMeasured = $tw.perf.measure("filter: " + filterString,function filterFunction(source,widget) {
332
335
  if(!source) {
333
336
  source = self.each;
334
337
  } else if(typeof source === "object") { // Array or hashmap
@@ -338,9 +341,15 @@ exports.compileFilter = function(filterString) {
338
341
  widget = $tw.rootWidget;
339
342
  }
340
343
  var results = new $tw.utils.LinkedList();
341
- $tw.utils.each(operationFunctions,function(operationFunction) {
342
- operationFunction(results,source,widget);
343
- });
344
+ self.filterRecursionCount = (self.filterRecursionCount || 0) + 1;
345
+ if(self.filterRecursionCount < MAX_FILTER_DEPTH) {
346
+ $tw.utils.each(operationFunctions,function(operationFunction) {
347
+ operationFunction(results,source,widget);
348
+ });
349
+ } else {
350
+ results.push("/**-- Excessive filter recursion --**/");
351
+ }
352
+ self.filterRecursionCount = self.filterRecursionCount - 1;
344
353
  return results.toArray();
345
354
  });
346
355
  if(this.filterCacheCount >= 2000) {
@@ -350,9 +359,9 @@ exports.compileFilter = function(filterString) {
350
359
  this.filterCache = Object.create(null);
351
360
  this.filterCacheCount = 0;
352
361
  }
353
- this.filterCache[filterString] = compiled;
362
+ this.filterCache[filterString] = fnMeasured;
354
363
  this.filterCacheCount++;
355
- return compiled;
364
+ return fnMeasured;
356
365
  };
357
366
 
358
367
  })();
@@ -141,6 +141,7 @@ function KeyboardManager(options) {
141
141
  this.shortcutKeysList = [], // Stores the shortcut-key descriptors
142
142
  this.shortcutActionList = [], // Stores the corresponding action strings
143
143
  this.shortcutParsedList = []; // Stores the parsed key descriptors
144
+ this.shortcutPriorityList = []; // Stores the parsed shortcut priority
144
145
  this.lookupNames = ["shortcuts"];
145
146
  this.lookupNames.push($tw.platform.isMac ? "shortcuts-mac" : "shortcuts-not-mac")
146
147
  this.lookupNames.push($tw.platform.isWindows ? "shortcuts-windows" : "shortcuts-not-windows");
@@ -318,12 +319,23 @@ KeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {
318
319
  this.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;
319
320
  this.shortcutActionList[i] = tiddlerFields.text;
320
321
  this.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;
322
+ this.shortcutPriorityList[i] = tiddlerFields.priority === "yes" ? true : false;
321
323
  }
322
324
  };
323
325
 
324
- KeyboardManager.prototype.handleKeydownEvent = function(event) {
326
+ /*
327
+ event: the keyboard event object
328
+ options:
329
+ onlyPriority: true if only priority global shortcuts should be invoked
330
+ */
331
+ KeyboardManager.prototype.handleKeydownEvent = function(event, options) {
332
+ options = options || {};
325
333
  var key, action;
326
334
  for(var i=0; i<this.shortcutTiddlers.length; i++) {
335
+ if(options.onlyPriority && this.shortcutPriorityList[i] !== true) {
336
+ continue;
337
+ }
338
+
327
339
  if(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {
328
340
  key = this.shortcutParsedList[i];
329
341
  action = this.shortcutActionList[i];