@dxos/react-ui-editor 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33

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 (414) hide show
  1. package/dist/lib/browser/index.mjs +1407 -7549
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/translations.mjs +39 -0
  5. package/dist/lib/browser/translations.mjs.map +7 -0
  6. package/dist/lib/node-esm/index.mjs +1407 -7548
  7. package/dist/lib/node-esm/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/lib/node-esm/translations.mjs +41 -0
  10. package/dist/lib/node-esm/translations.mjs.map +7 -0
  11. package/dist/types/src/components/Editor/Editor.d.ts +54 -15
  12. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  13. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  14. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  15. package/dist/types/src/components/Editor/EditorView.d.ts +31 -0
  16. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  17. package/dist/types/src/components/Editor/controller.d.ts +10 -0
  18. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  20. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  22. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  26. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  28. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  30. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  32. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  34. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  36. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  48. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  50. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/types.d.ts +6 -0
  52. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  53. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  54. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  55. package/dist/types/src/components/index.d.ts +2 -2
  56. package/dist/types/src/components/index.d.ts.map +1 -1
  57. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  58. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  59. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  60. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  61. package/dist/types/src/extensions/index.d.ts +1 -22
  62. package/dist/types/src/extensions/index.d.ts.map +1 -1
  63. package/dist/types/src/hooks/index.d.ts +1 -0
  64. package/dist/types/src/hooks/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  66. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  67. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  68. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  69. package/dist/types/src/index.d.ts +0 -9
  70. package/dist/types/src/index.d.ts.map +1 -1
  71. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  72. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  73. package/dist/types/src/stories/Comments.stories.d.ts +22 -10
  74. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/EditorToolbar.stories.d.ts +42 -4
  76. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Experimental.stories.d.ts +23 -13
  78. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Markdown.stories.d.ts +33 -43
  80. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Outliner.stories.d.ts +16 -22
  82. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  84. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  85. package/dist/types/src/stories/Preview.stories.d.ts +23 -7
  86. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  87. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  88. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  89. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  90. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  91. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  92. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  93. package/dist/types/src/stories/components/EditorStory.d.ts +11 -23
  94. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  95. package/dist/types/src/stories/components/util.d.ts +4 -3
  96. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  97. package/dist/types/src/translations.d.ts +26 -26
  98. package/dist/types/src/translations.d.ts.map +1 -1
  99. package/dist/types/src/util/index.d.ts +0 -4
  100. package/dist/types/src/util/index.d.ts.map +1 -1
  101. package/dist/types/src/util/react.d.ts +7 -6
  102. package/dist/types/src/util/react.d.ts.map +1 -1
  103. package/dist/types/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +95 -82
  105. package/src/components/Editor/Editor.stories.tsx +89 -0
  106. package/src/components/Editor/Editor.tsx +175 -24
  107. package/src/components/Editor/EditorView.tsx +84 -0
  108. package/src/components/Editor/controller.ts +50 -0
  109. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  110. package/src/components/EditorMenuProvider/index.ts +10 -0
  111. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  112. package/src/components/EditorMenuProvider/menu.ts +70 -0
  113. package/src/components/EditorMenuProvider/popover.ts +286 -0
  114. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  115. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  116. package/src/components/EditorPreviewProvider/index.ts +5 -0
  117. package/src/components/EditorToolbar/EditorToolbar.tsx +92 -103
  118. package/src/components/EditorToolbar/blocks.ts +53 -48
  119. package/src/components/EditorToolbar/formatting.ts +42 -46
  120. package/src/components/EditorToolbar/headings.ts +47 -45
  121. package/src/components/EditorToolbar/image.ts +16 -10
  122. package/src/components/EditorToolbar/index.ts +2 -7
  123. package/src/components/EditorToolbar/lists.ts +40 -41
  124. package/src/components/EditorToolbar/search.ts +16 -10
  125. package/src/components/EditorToolbar/types.ts +8 -0
  126. package/src/components/EditorToolbar/view-mode.ts +40 -40
  127. package/src/components/index.ts +3 -2
  128. package/src/extensions/Assistant.stories.tsx +112 -0
  129. package/src/extensions/assistant-extension.tsx +223 -0
  130. package/src/extensions/index.ts +2 -23
  131. package/src/hooks/index.ts +1 -0
  132. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  133. package/src/hooks/useTextEditor.ts +39 -45
  134. package/src/index.ts +0 -13
  135. package/src/stories/Automerge.stories.tsx +174 -0
  136. package/src/stories/Comments.stories.tsx +59 -51
  137. package/src/stories/EditorToolbar.stories.tsx +50 -62
  138. package/src/stories/Experimental.stories.tsx +24 -22
  139. package/src/stories/Markdown.stories.tsx +37 -33
  140. package/src/stories/Outliner.stories.tsx +54 -44
  141. package/src/stories/Popover.stories.tsx +157 -0
  142. package/src/stories/Preview.stories.tsx +114 -95
  143. package/src/stories/Tags.stories.tsx +104 -0
  144. package/src/stories/TextEditor.stories.tsx +50 -75
  145. package/src/stories/Theme.stories.tsx +61 -0
  146. package/src/stories/components/EditorStory.tsx +50 -35
  147. package/src/stories/components/util.tsx +90 -59
  148. package/src/translations.ts +30 -25
  149. package/src/util/index.ts +1 -5
  150. package/src/util/react.tsx +9 -14
  151. package/dist/lib/browser/chunk-22UMM3QJ.mjs +0 -22
  152. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  153. package/dist/lib/browser/testing/index.mjs +0 -6
  154. package/dist/lib/browser/testing/index.mjs.map +0 -7
  155. package/dist/lib/browser/types/index.mjs +0 -13
  156. package/dist/lib/browser/types/index.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +0 -24
  158. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  159. package/dist/lib/node-esm/testing/index.mjs +0 -8
  160. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  161. package/dist/lib/node-esm/types/index.mjs +0 -14
  162. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  163. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  164. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  165. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  166. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  167. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  168. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  169. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  170. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  171. package/dist/types/src/components/Popover/index.d.ts +0 -4
  172. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  173. package/dist/types/src/defaults.d.ts +0 -14
  174. package/dist/types/src/defaults.d.ts.map +0 -1
  175. package/dist/types/src/extensions/annotations.d.ts +0 -9
  176. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  177. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  178. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  179. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  180. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  181. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -56
  182. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  183. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  184. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  185. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  186. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  187. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  188. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  189. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  190. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  191. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  192. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  193. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  194. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  195. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  196. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  197. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  198. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  199. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  200. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  201. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  202. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  203. package/dist/types/src/extensions/blast.d.ts +0 -25
  204. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  205. package/dist/types/src/extensions/command/action.d.ts +0 -17
  206. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  207. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  208. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  209. package/dist/types/src/extensions/command/command.d.ts +0 -6
  210. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  211. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  212. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  213. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  214. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  215. package/dist/types/src/extensions/command/index.d.ts +0 -7
  216. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  217. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  218. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  219. package/dist/types/src/extensions/command/state.d.ts +0 -16
  220. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  221. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  222. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  223. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  224. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  225. package/dist/types/src/extensions/comments.d.ts +0 -95
  226. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  227. package/dist/types/src/extensions/debug.d.ts +0 -3
  228. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  229. package/dist/types/src/extensions/dnd.d.ts +0 -9
  230. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  231. package/dist/types/src/extensions/factories.d.ts +0 -82
  232. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  233. package/dist/types/src/extensions/focus.d.ts +0 -7
  234. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  235. package/dist/types/src/extensions/folding.d.ts +0 -7
  236. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  237. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  238. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  239. package/dist/types/src/extensions/json.d.ts +0 -7
  240. package/dist/types/src/extensions/json.d.ts.map +0 -1
  241. package/dist/types/src/extensions/listener.d.ts +0 -11
  242. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  243. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  244. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  245. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -16
  246. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  247. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  248. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  249. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  250. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  251. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  252. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  253. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -17
  254. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  255. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  256. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  257. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  258. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  259. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  260. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  261. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  262. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  263. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  264. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  265. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  266. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  267. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  268. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  269. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  270. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  271. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  272. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  273. package/dist/types/src/extensions/mention.d.ts +0 -7
  274. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  275. package/dist/types/src/extensions/modes.d.ts +0 -10
  276. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  277. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  278. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  279. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  280. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  281. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  282. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  283. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  284. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  285. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  286. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  287. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  288. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  289. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  290. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  291. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  292. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  293. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  294. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  295. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  296. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  297. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  298. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  299. package/dist/types/src/extensions/selection.d.ts +0 -24
  300. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  301. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  302. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  303. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  304. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  305. package/dist/types/src/stories/CommandMenu.stories.d.ts +0 -13
  306. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  307. package/dist/types/src/styles/index.d.ts +0 -4
  308. package/dist/types/src/styles/index.d.ts.map +0 -1
  309. package/dist/types/src/styles/markdown.d.ts +0 -8
  310. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  311. package/dist/types/src/styles/theme.d.ts +0 -38
  312. package/dist/types/src/styles/theme.d.ts.map +0 -1
  313. package/dist/types/src/styles/tokens.d.ts +0 -3
  314. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  315. package/dist/types/src/testing/index.d.ts +0 -2
  316. package/dist/types/src/testing/index.d.ts.map +0 -1
  317. package/dist/types/src/testing/util.d.ts +0 -2
  318. package/dist/types/src/testing/util.d.ts.map +0 -1
  319. package/dist/types/src/types/index.d.ts +0 -2
  320. package/dist/types/src/types/index.d.ts.map +0 -1
  321. package/dist/types/src/types/types.d.ts +0 -21
  322. package/dist/types/src/types/types.d.ts.map +0 -1
  323. package/dist/types/src/util/cursor.d.ts +0 -31
  324. package/dist/types/src/util/cursor.d.ts.map +0 -1
  325. package/dist/types/src/util/debug.d.ts +0 -17
  326. package/dist/types/src/util/debug.d.ts.map +0 -1
  327. package/dist/types/src/util/dom.d.ts +0 -20
  328. package/dist/types/src/util/dom.d.ts.map +0 -1
  329. package/dist/types/src/util/facet.d.ts +0 -3
  330. package/dist/types/src/util/facet.d.ts.map +0 -1
  331. package/src/components/EditorToolbar/util.ts +0 -65
  332. package/src/components/Popover/CommandMenu.tsx +0 -279
  333. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  334. package/src/components/Popover/RefPopover.tsx +0 -99
  335. package/src/components/Popover/index.ts +0 -7
  336. package/src/defaults.ts +0 -49
  337. package/src/extensions/annotations.ts +0 -55
  338. package/src/extensions/autocomplete.ts +0 -69
  339. package/src/extensions/automerge/automerge.stories.tsx +0 -142
  340. package/src/extensions/automerge/automerge.test.tsx +0 -78
  341. package/src/extensions/automerge/automerge.ts +0 -85
  342. package/src/extensions/automerge/cursor.ts +0 -28
  343. package/src/extensions/automerge/defs.ts +0 -31
  344. package/src/extensions/automerge/index.ts +0 -5
  345. package/src/extensions/automerge/sync.ts +0 -75
  346. package/src/extensions/automerge/update-automerge.ts +0 -50
  347. package/src/extensions/automerge/update-codemirror.ts +0 -115
  348. package/src/extensions/awareness/awareness-provider.ts +0 -127
  349. package/src/extensions/awareness/awareness.ts +0 -315
  350. package/src/extensions/awareness/index.ts +0 -6
  351. package/src/extensions/blast.ts +0 -363
  352. package/src/extensions/command/action.ts +0 -56
  353. package/src/extensions/command/command-menu.ts +0 -210
  354. package/src/extensions/command/command.ts +0 -34
  355. package/src/extensions/command/floating-menu.ts +0 -133
  356. package/src/extensions/command/hint.ts +0 -102
  357. package/src/extensions/command/index.ts +0 -10
  358. package/src/extensions/command/placeholder.ts +0 -113
  359. package/src/extensions/command/state.ts +0 -89
  360. package/src/extensions/command/typeahead.ts +0 -129
  361. package/src/extensions/command/useCommandMenu.ts +0 -118
  362. package/src/extensions/comments.ts +0 -592
  363. package/src/extensions/debug.ts +0 -15
  364. package/src/extensions/dnd.ts +0 -37
  365. package/src/extensions/factories.ts +0 -259
  366. package/src/extensions/focus.ts +0 -35
  367. package/src/extensions/folding.tsx +0 -46
  368. package/src/extensions/hashtag.tsx +0 -68
  369. package/src/extensions/json.ts +0 -57
  370. package/src/extensions/listener.ts +0 -38
  371. package/src/extensions/markdown/action.ts +0 -116
  372. package/src/extensions/markdown/bundle.ts +0 -71
  373. package/src/extensions/markdown/changes.test.ts +0 -26
  374. package/src/extensions/markdown/changes.ts +0 -149
  375. package/src/extensions/markdown/debug.ts +0 -44
  376. package/src/extensions/markdown/decorate.ts +0 -591
  377. package/src/extensions/markdown/formatting.test.ts +0 -498
  378. package/src/extensions/markdown/formatting.ts +0 -1267
  379. package/src/extensions/markdown/highlight.ts +0 -183
  380. package/src/extensions/markdown/image.ts +0 -119
  381. package/src/extensions/markdown/index.ts +0 -13
  382. package/src/extensions/markdown/link.ts +0 -47
  383. package/src/extensions/markdown/parser.test.ts +0 -75
  384. package/src/extensions/markdown/styles.ts +0 -135
  385. package/src/extensions/markdown/table.ts +0 -144
  386. package/src/extensions/mention.ts +0 -41
  387. package/src/extensions/modes.ts +0 -41
  388. package/src/extensions/outliner/commands.ts +0 -270
  389. package/src/extensions/outliner/editor.test.ts +0 -33
  390. package/src/extensions/outliner/editor.ts +0 -184
  391. package/src/extensions/outliner/index.ts +0 -7
  392. package/src/extensions/outliner/outliner.test.ts +0 -99
  393. package/src/extensions/outliner/outliner.ts +0 -166
  394. package/src/extensions/outliner/selection.ts +0 -50
  395. package/src/extensions/outliner/tree.test.ts +0 -167
  396. package/src/extensions/outliner/tree.ts +0 -317
  397. package/src/extensions/preview/index.ts +0 -5
  398. package/src/extensions/preview/preview.ts +0 -193
  399. package/src/extensions/selection.ts +0 -100
  400. package/src/extensions/typewriter.ts +0 -68
  401. package/src/stories/Command.stories.tsx +0 -97
  402. package/src/stories/CommandMenu.stories.tsx +0 -159
  403. package/src/styles/index.ts +0 -7
  404. package/src/styles/markdown.ts +0 -26
  405. package/src/styles/theme.ts +0 -266
  406. package/src/styles/tokens.ts +0 -17
  407. package/src/testing/index.ts +0 -5
  408. package/src/testing/util.ts +0 -5
  409. package/src/types/index.ts +0 -5
  410. package/src/types/types.ts +0 -32
  411. package/src/util/cursor.ts +0 -55
  412. package/src/util/debug.ts +0 -64
  413. package/src/util/dom.ts +0 -56
  414. package/src/util/facet.ts +0 -13
@@ -1,317 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { syntaxTree } from '@codemirror/language';
6
- import { StateField, type Transaction, type Extension, type EditorState } from '@codemirror/state';
7
- import { Facet } from '@codemirror/state';
8
- import { type SyntaxNode } from '@lezer/common';
9
-
10
- import { invariant } from '@dxos/invariant';
11
-
12
- import { type Range } from '../../types';
13
-
14
- /**
15
- * Represents a single item in the tree.
16
- */
17
- export interface Item {
18
- type: 'root' | 'bullet' | 'task' | 'unknown';
19
- index: number;
20
- level: number;
21
- node: SyntaxNode;
22
- parent?: Item;
23
- nextSibling?: Item;
24
- prevSibling?: Item;
25
- children: Item[];
26
- /**
27
- * Actual range.
28
- * Starts at the start of the line containing the item and ends at the end of the line before the
29
- * first child or next sibling.
30
- */
31
- lineRange: Range;
32
- /**
33
- * Range of the editable content.
34
- * This doesn't include the list or task marker or indentation.
35
- */
36
- contentRange: Range;
37
- }
38
-
39
- export const itemToJSON = ({ type, index, level, lineRange, contentRange, children }: Item): any => {
40
- return { type, index, level, lineRange, contentRange, children: children.map(itemToJSON) };
41
- };
42
-
43
- /**
44
- * Tree assumes the entire document is a single contiguous well-formed hierarchy of markdown LiteItem nodes.
45
- */
46
- export class Tree implements Item {
47
- type: Item['type'] = 'root';
48
- index = -1;
49
- level = -1;
50
- node: Item['node'];
51
- lineRange: Item['lineRange'];
52
- contentRange: Item['contentRange'];
53
- children: Item['children'] = [];
54
-
55
- constructor(node: SyntaxNode) {
56
- this.node = node;
57
- this.lineRange = { from: node.from, to: node.to };
58
- this.contentRange = this.lineRange;
59
- }
60
-
61
- toJSON() {
62
- return itemToJSON(this);
63
- }
64
-
65
- get root(): Item {
66
- return this;
67
- }
68
-
69
- traverse<T = any>(cb: (item: Item, level: number) => T | void): T | undefined;
70
- traverse<T = any>(item: Item, cb: (item: Item, level: number) => T | void): T | undefined;
71
- traverse<T = any>(
72
- itemOrCb: Item | ((item: Item, level: number) => T | undefined | void),
73
- maybeCb?: (item: Item, level: number) => T | undefined | void,
74
- ): T | undefined {
75
- if (typeof itemOrCb === 'function') {
76
- return traverse<T>(this, itemOrCb);
77
- } else {
78
- return traverse<T>(itemOrCb, maybeCb!);
79
- }
80
- }
81
-
82
- /**
83
- * Return the closest item.
84
- */
85
- find(pos: number): Item | undefined {
86
- return this.traverse<Item>((item) => (item.lineRange.from <= pos && item.lineRange.to >= pos ? item : undefined));
87
- }
88
-
89
- /**
90
- * Return the first child, next sibling, or parent's next sibling.
91
- */
92
- next(item: Item, enter = true): Item | undefined {
93
- if (enter && item.children.length > 0) {
94
- return item.children[0];
95
- }
96
-
97
- if (item.nextSibling) {
98
- return item.nextSibling;
99
- }
100
-
101
- if (item.parent) {
102
- return this.next(item.parent, false);
103
- }
104
-
105
- return undefined;
106
- }
107
-
108
- /**
109
- * Return the previous sibling, or parent.
110
- */
111
- prev(item: Item): Item | undefined {
112
- if (item.prevSibling) {
113
- return this.lastDescendant(item.prevSibling);
114
- }
115
-
116
- return item.parent?.type === 'root' ? undefined : item.parent;
117
- }
118
-
119
- /**
120
- * Return the last descendant of the item, or the item itself if it has no children.
121
- */
122
- lastDescendant(item: Item): Item {
123
- return item.children.length > 0 ? this.lastDescendant(item.children.at(-1)!) : item;
124
- }
125
- }
126
-
127
- export const getRange = (tree: Tree, item: Item): [number, number] => {
128
- const lastDescendant = tree.lastDescendant(item);
129
- return [item.lineRange.from, lastDescendant.lineRange.to];
130
- };
131
-
132
- /**
133
- * Traverse the tree, calling the callback for each item.
134
- * If the callback returns a value, the traversal is stopped and the value is returned.
135
- */
136
- export const traverse = <T = any>(root: Item, cb: (item: Item, level: number) => T | void): T | undefined => {
137
- const t = (item: Item, level: number): T | undefined => {
138
- if (item.type !== 'root') {
139
- const value = cb(item, level);
140
- if (value != null) {
141
- return value;
142
- }
143
- }
144
-
145
- for (const child of item.children) {
146
- const value = t(child, level + 1);
147
- if (value != null) {
148
- return value;
149
- }
150
- }
151
-
152
- return undefined;
153
- };
154
-
155
- return t(root, root.type === 'root' ? -1 : 0);
156
- };
157
-
158
- export const getListItemContent = (state: EditorState, item: Item): string => {
159
- return state.doc.sliceString(item.contentRange.from, item.contentRange.to);
160
- };
161
-
162
- export const listItemToString = (item: Item, level = 0) => {
163
- const indent = ' '.repeat(level);
164
- const data = {
165
- i: item.index,
166
- n: item.nextSibling?.index ?? '∅',
167
- p: item.prevSibling?.index ?? '∅',
168
- level: item.level,
169
- node: format([item.node.from, item.node.to]),
170
- line: format([item.lineRange.from, item.lineRange.to]),
171
- content: format([item.contentRange.from, item.contentRange.to]),
172
- };
173
-
174
- return `${indent}${item.type[0].toUpperCase()}(${Object.entries(data)
175
- .map(([k, v]) => `${k}=${v}`)
176
- .join(', ')})`;
177
- };
178
-
179
- const format = (value: any) =>
180
- JSON.stringify(value, (key: string, value: any) => {
181
- if (typeof value === 'number') {
182
- return value.toString().padStart(3, ' ');
183
- }
184
- return value;
185
- }).replaceAll('"', '');
186
-
187
- export const treeFacet = Facet.define<Tree, Tree>({
188
- combine: (values) => values[0],
189
- });
190
-
191
- export type TreeOptions = {};
192
-
193
- /**
194
- * Creates a shadow tree of `ListItem` nodes whenever the document changes.
195
- * This adds overhead relative to the markdown AST, but allows for efficient traversal of the list items.
196
- * NOTE: Requires markdown parser to be enabled.
197
- */
198
- export const outlinerTree = (options: TreeOptions = {}): Extension => {
199
- const buildTree = (state: EditorState): Tree => {
200
- let tree: Tree | undefined;
201
- let parent: Item | undefined;
202
- let current: Item | undefined;
203
- let prev: Item | undefined;
204
- let level = -1;
205
- let index = -1;
206
-
207
- // Array to track previous siblings at each level.
208
- const prevSiblings: (Item | undefined)[] = [];
209
-
210
- syntaxTree(state).iterate({
211
- enter: (node) => {
212
- switch (node.name) {
213
- case 'Document': {
214
- tree = new Tree(node.node);
215
- current = tree;
216
- break;
217
- }
218
- case 'BulletList': {
219
- invariant(current);
220
- parent = current;
221
- if (current) {
222
- current.lineRange.to = current.node.from;
223
- }
224
- prevSiblings[++level] = undefined;
225
- break;
226
- }
227
- case 'ListItem': {
228
- invariant(parent);
229
-
230
- // Include all content up to the next sibling or the end of the document.
231
- const nextSibling = node.node.nextSibling ?? node.node.parent?.nextSibling;
232
- const docRange: Range = {
233
- from: state.doc.lineAt(node.from).from,
234
- to: nextSibling ? nextSibling.from - 1 : state.doc.length,
235
- };
236
-
237
- current = {
238
- type: 'unknown',
239
- index: ++index,
240
- level,
241
- node: node.node,
242
- lineRange: docRange,
243
- contentRange: { ...docRange },
244
- parent,
245
- prevSibling: prevSiblings[level],
246
- children: [],
247
- };
248
-
249
- // Update sibling refs.
250
- if (current.prevSibling) {
251
- current.prevSibling.nextSibling = current;
252
- }
253
-
254
- // Update previous siblings array at current level.
255
- prevSiblings[level] = current;
256
-
257
- // Update previous item (not sibling).
258
- if (prev) {
259
- prev.lineRange.to = prev.contentRange.to = current.lineRange.from - 1;
260
- }
261
- prev = current;
262
-
263
- // Update parent.
264
- parent.children.push(current);
265
- if (parent.lineRange.to === parent.node.from) {
266
- parent.lineRange.to = parent.contentRange.to = current.lineRange.from - 1;
267
- }
268
-
269
- break;
270
- }
271
- case 'ListMark': {
272
- invariant(current);
273
- current.type = 'bullet';
274
- current.contentRange.from = node.from + '- '.length;
275
- break;
276
- }
277
- case 'Task': {
278
- invariant(current);
279
- current.type = 'task';
280
- break;
281
- }
282
- case 'TaskMarker': {
283
- invariant(current);
284
- current.contentRange.from = node.from + '[ ] '.length;
285
- break;
286
- }
287
- }
288
- },
289
- leave: (node) => {
290
- if (node.name === 'BulletList') {
291
- invariant(parent);
292
- prevSiblings[level--] = undefined;
293
- parent = parent.parent;
294
- }
295
- },
296
- });
297
-
298
- invariant(tree);
299
- return tree;
300
- };
301
-
302
- return [
303
- StateField.define<Tree | undefined>({
304
- create: (state) => {
305
- return buildTree(state);
306
- },
307
- update: (value: Tree | undefined, tr: Transaction) => {
308
- if (!tr.docChanged) {
309
- return value;
310
- }
311
-
312
- return buildTree(tr.state);
313
- },
314
- provide: (field) => treeFacet.from(field),
315
- }),
316
- ];
317
- };
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './preview';
@@ -1,193 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import '@dxos/lit-ui/dx-ref-tag.pcss';
6
-
7
- import { syntaxTree } from '@codemirror/language';
8
- import {
9
- type EditorState,
10
- type Extension,
11
- type RangeSet,
12
- RangeSetBuilder,
13
- StateField,
14
- type Transaction,
15
- } from '@codemirror/state';
16
- import { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';
17
- import { type SyntaxNode } from '@lezer/common';
18
-
19
- export type PreviewLinkRef = {
20
- suggest?: boolean;
21
- block?: boolean;
22
- label: string;
23
- ref: string;
24
- };
25
-
26
- export type PreviewLinkTarget = {
27
- label: string;
28
- text?: string;
29
- object?: any;
30
- };
31
-
32
- // TODO(wittjosiah): Remove.
33
- // TODO(burdon): Handle error.
34
- export type PreviewLookup = (link: PreviewLinkRef) => Promise<PreviewLinkTarget | null | undefined>;
35
-
36
- export type PreviewOptions = {
37
- addBlockContainer?: (link: PreviewLinkRef, el: HTMLElement) => void;
38
- removeBlockContainer?: (link: PreviewLinkRef) => void;
39
- };
40
-
41
- /**
42
- * Create preview decorations.
43
- */
44
- export const preview = (options: PreviewOptions = {}): Extension => {
45
- return [
46
- // NOTE: Atomic block decorations must be created from a state field, now a widget, otherwise it results in the following error:
47
- // "Block decorations may not be specified via plugins"
48
- StateField.define<DecorationSet>({
49
- create: (state) => buildDecorations(state, options),
50
- update: (_: RangeSet<Decoration>, tr: Transaction) => buildDecorations(tr.state, options),
51
- provide: (field) => [
52
- EditorView.decorations.from(field),
53
- EditorView.atomicRanges.of((view) => view.state.field(field)),
54
- ],
55
- }),
56
- ];
57
- };
58
-
59
- /**
60
- * Link references.
61
- *
62
- * [Label][dxn:echo:123] Inline reference
63
- * ![Label][dxn:echo:123] Block reference
64
- * ![Label][?dxn:echo:123] Suggestion
65
- */
66
- export const getLinkRef = (state: EditorState, node: SyntaxNode): PreviewLinkRef | undefined => {
67
- const mark = node.getChild('LinkMark');
68
- const label = node.getChild('LinkLabel');
69
- if (mark && label) {
70
- const ref = state.sliceDoc(label.from + 1, label.to - 1);
71
- return {
72
- suggest: ref.startsWith('?'),
73
- block: state.sliceDoc(mark.from, mark.from + 1) === '!',
74
- label: state.sliceDoc(mark.to, label.from - 1),
75
- ref: ref.startsWith('?') ? ref.slice(1) : ref,
76
- };
77
- }
78
- };
79
-
80
- /**
81
- * Echo references are represented as markdown reference links.
82
- * https://www.markdownguide.org/basic-syntax/#reference-style-links
83
- * [Label|block][dxn:echo:123]
84
- * [Label|inline][dxn:echo:123]
85
- */
86
- const buildDecorations = (state: EditorState, options: PreviewOptions) => {
87
- const builder = new RangeSetBuilder<Decoration>();
88
-
89
- syntaxTree(state).iterate({
90
- enter: (node) => {
91
- switch (node.name) {
92
- //
93
- // Decoration.
94
- // [Label][dxn:echo:123]
95
- //
96
- case 'Link': {
97
- const link = getLinkRef(state, node.node);
98
- if (link) {
99
- builder.add(
100
- node.from,
101
- node.to,
102
- Decoration.replace({
103
- widget: new PreviewInlineWidget(options, link),
104
- }),
105
- );
106
- }
107
- break;
108
- }
109
- //
110
- // Block widget.
111
- // ![Label][dxn:echo:123]
112
- //
113
- case 'Image': {
114
- const link = getLinkRef(state, node.node);
115
- if (options.addBlockContainer && options.removeBlockContainer && link) {
116
- builder.add(
117
- node.from,
118
- node.to,
119
- Decoration.replace({
120
- block: true,
121
- // atomic: true,
122
- widget: new PreviewBlockWidget(options, link),
123
- }),
124
- );
125
- }
126
- break;
127
- }
128
- }
129
- },
130
- });
131
-
132
- return builder.finish();
133
- };
134
-
135
- /**
136
- * Inline widget.
137
- * [Label][dxn:echo:123]
138
- */
139
- class PreviewInlineWidget extends WidgetType {
140
- constructor(
141
- readonly _options: PreviewOptions,
142
- readonly _link: PreviewLinkRef,
143
- ) {
144
- super();
145
- }
146
-
147
- // override ignoreEvent() {
148
- // return false;
149
- // }
150
-
151
- override eq(other: this): boolean {
152
- return this._link.ref === other._link.ref && this._link.label === other._link.label;
153
- }
154
-
155
- override toDOM(view: EditorView): HTMLElement {
156
- const root = document.createElement('dx-ref-tag');
157
- root.textContent = this._link.label;
158
- root.setAttribute('refId', this._link.ref);
159
- return root;
160
- }
161
- }
162
-
163
- /**
164
- * Block widget.
165
- * ![Label][dxn:echo:123]
166
- */
167
- class PreviewBlockWidget extends WidgetType {
168
- constructor(
169
- readonly _options: PreviewOptions,
170
- readonly _link: PreviewLinkRef,
171
- ) {
172
- super();
173
- }
174
-
175
- // override ignoreEvent() {
176
- // return true;
177
- // }
178
-
179
- override eq(other: this): boolean {
180
- return this._link.ref === other._link.ref;
181
- }
182
-
183
- override toDOM(view: EditorView): HTMLDivElement {
184
- const root = document.createElement('div');
185
- root.classList.add('cm-preview-block', 'density-coarse');
186
- this._options.addBlockContainer?.(this._link, root);
187
- return root;
188
- }
189
-
190
- override destroy() {
191
- this._options.removeBlockContainer?.(this._link);
192
- }
193
- }
@@ -1,100 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type Extension, Transaction, type TransactionSpec } from '@codemirror/state';
6
- import { EditorView, keymap } from '@codemirror/view';
7
-
8
- import { debounce } from '@dxos/async';
9
- import { invariant } from '@dxos/invariant';
10
- import { isNotFalsy } from '@dxos/util';
11
-
12
- import { singleValueFacet } from '../util';
13
-
14
- /**
15
- * Currently edited document id as FQ string.
16
- */
17
- export const documentId = singleValueFacet<string>();
18
-
19
- export type EditorSelection = {
20
- anchor: number;
21
- head?: number;
22
- };
23
-
24
- export type EditorSelectionState = {
25
- scrollTo?: number;
26
- selection?: EditorSelection;
27
- };
28
-
29
- export type EditorStateStore = {
30
- setState: (id: string, state: EditorSelectionState) => void;
31
- getState: (id: string) => EditorSelectionState | undefined;
32
- };
33
-
34
- const stateRestoreAnnotation = 'dxos.org/cm/state-restore';
35
-
36
- export const createEditorStateTransaction = ({ scrollTo, selection }: EditorSelectionState): TransactionSpec => {
37
- return {
38
- selection,
39
- scrollIntoView: !scrollTo,
40
- effects: scrollTo ? EditorView.scrollIntoView(scrollTo, { yMargin: 96 }) : undefined,
41
- annotations: Transaction.userEvent.of(stateRestoreAnnotation),
42
- };
43
- };
44
-
45
- export const createEditorStateStore = (keyPrefix: string): EditorStateStore => ({
46
- getState: (id) => {
47
- invariant(id);
48
- const state = localStorage.getItem(`${keyPrefix}/${id}`);
49
- return state ? JSON.parse(state) : undefined;
50
- },
51
-
52
- setState: (id, state) => {
53
- invariant(id);
54
- localStorage.setItem(`${keyPrefix}/${id}`, JSON.stringify(state));
55
- },
56
- });
57
-
58
- /**
59
- * Track scrolling and selection state to be restored when switching to document.
60
- */
61
- export const selectionState = ({ getState, setState }: Partial<EditorStateStore> = {}): Extension => {
62
- const setStateDebounced = debounce(setState!, 1_000);
63
-
64
- return [
65
- // TODO(burdon): Track scrolling (currently only updates when cursor moves).
66
- // EditorView.domEventHandlers({
67
- // scroll: (event) => {
68
- // setStateDebounced(id, {});
69
- // },
70
- // }),
71
- EditorView.updateListener.of(({ view, transactions }) => {
72
- const id = view.state.facet(documentId);
73
- if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
74
- return;
75
- }
76
-
77
- if (setState) {
78
- const { scrollTop } = view.scrollDOM;
79
- const pos = view.posAtCoords({ x: 0, y: scrollTop });
80
- if (pos !== null) {
81
- const { anchor, head } = view.state.selection.main;
82
- setStateDebounced(id, { scrollTo: pos, selection: { anchor, head } });
83
- }
84
- }
85
- }),
86
- getState &&
87
- keymap.of([
88
- {
89
- key: 'ctrl-r', // TODO(burdon): Setting to jump back to selection.
90
- run: (view) => {
91
- const state = getState(view.state.facet(documentId));
92
- if (state) {
93
- view.dispatch(createEditorStateTransaction(state));
94
- }
95
- return true;
96
- },
97
- },
98
- ]),
99
- ].filter(isNotFalsy);
100
- };
@@ -1,68 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type Extension } from '@codemirror/state';
6
- import { keymap } from '@codemirror/view';
7
-
8
- // TODO(burdon): Review https://github.com/sergeche/codemirror-movie?tab=readme-ov-file
9
-
10
- export type DemoOptions = {
11
- delay?: number;
12
- items?: string[];
13
- };
14
-
15
- const defaultItems = ['hello world!', 'this is a test.', 'this is [DXOS](https://dxos.org)'];
16
-
17
- /**
18
- * Configurable plugin that let's user cycle through pre-configured input script.
19
- */
20
- export const typewriter = ({ delay = 75, items = defaultItems }: DemoOptions = {}): Extension => {
21
- let t: any;
22
- let idx = 0; // TODO(burdon): Make global.
23
-
24
- return [
25
- keymap.of([
26
- {
27
- // Reset.
28
- key: "alt-meta-'",
29
- run: (view) => {
30
- clearTimeout(t);
31
- idx = 0;
32
- return true;
33
- },
34
- },
35
- {
36
- // Next prompt.
37
- // TODO(burdon): Press 1-9 to select prompt?
38
- key: "shift-meta-'",
39
- run: (view) => {
40
- clearTimeout(t);
41
- // TODO(burdon): Add space if needed.
42
- const text = items[idx++];
43
- if (idx === items?.length) {
44
- idx = 0;
45
- }
46
-
47
- let i = 0;
48
- const insert = (d = 0) => {
49
- t = setTimeout(() => {
50
- const pos = view.state.selection.main.head;
51
- view.dispatch({
52
- changes: { from: pos, insert: text[i++] },
53
- selection: { anchor: pos + 1 },
54
- });
55
-
56
- if (i < text.length) {
57
- insert(Math.random() * delay * (text[i] === ' ' ? 2 : 1));
58
- }
59
- }, d);
60
- };
61
-
62
- insert();
63
- return true;
64
- },
65
- },
66
- ]),
67
- ];
68
- };