@dxos/react-ui-editor 0.8.4-main.5ad4a44 → 0.8.4-main.60689f5b1c

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 (438) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/index.mjs +1410 -8668
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/translations.mjs +39 -0
  7. package/dist/lib/browser/translations.mjs.map +7 -0
  8. package/dist/lib/node-esm/index.mjs +1410 -8667
  9. package/dist/lib/node-esm/index.mjs.map +4 -4
  10. package/dist/lib/node-esm/meta.json +1 -1
  11. package/dist/lib/node-esm/translations.mjs +41 -0
  12. package/dist/lib/node-esm/translations.mjs.map +7 -0
  13. package/dist/types/src/components/Editor/Editor.d.ts +53 -20
  14. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  15. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  16. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  17. package/dist/types/src/components/Editor/EditorView.d.ts +31 -0
  18. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  19. package/dist/types/src/components/Editor/controller.d.ts +10 -0
  20. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  22. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  24. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  26. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  28. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  30. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  32. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  34. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  36. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  38. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  40. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  42. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  44. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  46. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  48. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  50. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  52. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  53. package/dist/types/src/components/EditorToolbar/types.d.ts +6 -0
  54. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  55. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  56. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  57. package/dist/types/src/components/index.d.ts +2 -2
  58. package/dist/types/src/components/index.d.ts.map +1 -1
  59. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  60. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  61. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  62. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  63. package/dist/types/src/extensions/index.d.ts +1 -26
  64. package/dist/types/src/extensions/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/index.d.ts +1 -0
  66. package/dist/types/src/hooks/index.d.ts.map +1 -1
  67. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  68. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  69. package/dist/types/src/hooks/useTextEditor.d.ts +4 -8
  70. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  71. package/dist/types/src/index.d.ts +0 -9
  72. package/dist/types/src/index.d.ts.map +1 -1
  73. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  74. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  75. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  76. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/EditorToolbar.stories.d.ts +29 -27
  78. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Experimental.stories.d.ts +5 -4
  80. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  82. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Outliner.stories.d.ts +2 -2
  84. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  85. package/dist/types/src/stories/{CommandMenu.stories.d.ts → Popover.stories.d.ts} +6 -5
  86. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  87. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  88. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  89. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  90. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -4
  91. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  92. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  93. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  94. package/dist/types/src/stories/components/EditorStory.d.ts +11 -20
  95. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  96. package/dist/types/src/stories/components/util.d.ts +4 -3
  97. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  98. package/dist/types/src/translations.d.ts +26 -26
  99. package/dist/types/src/translations.d.ts.map +1 -1
  100. package/dist/types/src/util/index.d.ts +0 -5
  101. package/dist/types/src/util/index.d.ts.map +1 -1
  102. package/dist/types/src/util/react.d.ts +6 -5
  103. package/dist/types/src/util/react.d.ts.map +1 -1
  104. package/dist/types/tsconfig.tsbuildinfo +1 -1
  105. package/package.json +82 -77
  106. package/src/components/Editor/Editor.stories.tsx +89 -0
  107. package/src/components/Editor/Editor.tsx +166 -54
  108. package/src/components/Editor/EditorView.tsx +102 -0
  109. package/src/components/Editor/controller.ts +50 -0
  110. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  111. package/src/components/EditorMenuProvider/index.ts +10 -0
  112. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  113. package/src/components/EditorMenuProvider/menu.ts +70 -0
  114. package/src/components/EditorMenuProvider/popover.ts +287 -0
  115. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  116. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  117. package/src/components/EditorPreviewProvider/index.ts +5 -0
  118. package/src/components/EditorToolbar/EditorToolbar.tsx +90 -112
  119. package/src/components/EditorToolbar/blocks.ts +55 -47
  120. package/src/components/EditorToolbar/formatting.ts +44 -45
  121. package/src/components/EditorToolbar/headings.ts +47 -50
  122. package/src/components/EditorToolbar/image.ts +16 -14
  123. package/src/components/EditorToolbar/index.ts +2 -7
  124. package/src/components/EditorToolbar/lists.ts +42 -40
  125. package/src/components/EditorToolbar/search.ts +16 -14
  126. package/src/components/EditorToolbar/types.ts +8 -0
  127. package/src/components/EditorToolbar/view-mode.ts +37 -42
  128. package/src/components/index.ts +3 -2
  129. package/src/extensions/Assistant.stories.tsx +112 -0
  130. package/src/extensions/assistant-extension.tsx +223 -0
  131. package/src/extensions/index.ts +2 -27
  132. package/src/hooks/index.ts +1 -0
  133. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  134. package/src/hooks/useTextEditor.ts +33 -27
  135. package/src/index.ts +0 -13
  136. package/src/stories/Automerge.stories.tsx +177 -0
  137. package/src/stories/Comments.stories.tsx +49 -45
  138. package/src/stories/EditorToolbar.stories.tsx +42 -55
  139. package/src/stories/Experimental.stories.tsx +14 -16
  140. package/src/stories/Markdown.stories.tsx +16 -16
  141. package/src/stories/Outliner.stories.tsx +22 -24
  142. package/src/stories/Popover.stories.tsx +157 -0
  143. package/src/stories/Preview.stories.tsx +102 -84
  144. package/src/stories/Tags.stories.tsx +36 -13
  145. package/src/stories/TextEditor.stories.tsx +16 -48
  146. package/src/stories/Theme.stories.tsx +61 -0
  147. package/src/stories/components/EditorStory.tsx +46 -30
  148. package/src/stories/components/util.tsx +90 -59
  149. package/src/translations.ts +30 -25
  150. package/src/util/index.ts +1 -6
  151. package/src/util/react.tsx +8 -13
  152. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  153. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  154. package/dist/lib/browser/testing/index.mjs +0 -76
  155. package/dist/lib/browser/testing/index.mjs.map +0 -7
  156. package/dist/lib/browser/types/index.mjs +0 -13
  157. package/dist/lib/browser/types/index.mjs.map +0 -7
  158. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  159. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  160. package/dist/lib/node-esm/testing/index.mjs +0 -78
  161. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  162. package/dist/lib/node-esm/types/index.mjs +0 -14
  163. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  164. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts +0 -38
  165. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +0 -1
  166. package/dist/types/src/components/CommandMenu/index.d.ts +0 -2
  167. package/dist/types/src/components/CommandMenu/index.d.ts.map +0 -1
  168. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  169. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  170. package/dist/types/src/defaults.d.ts +0 -14
  171. package/dist/types/src/defaults.d.ts.map +0 -1
  172. package/dist/types/src/extensions/annotations.d.ts +0 -9
  173. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  174. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  175. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  177. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -47
  179. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  181. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  182. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  183. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  184. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  185. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  186. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  187. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  188. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  189. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  190. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  191. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  192. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  193. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  194. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  195. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  196. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  197. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  198. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  199. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  200. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  201. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  202. package/dist/types/src/extensions/blast.d.ts +0 -25
  203. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  204. package/dist/types/src/extensions/command-dialog/action.d.ts +0 -17
  205. package/dist/types/src/extensions/command-dialog/action.d.ts.map +0 -1
  206. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts +0 -6
  207. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +0 -1
  208. package/dist/types/src/extensions/command-dialog/hint.d.ts +0 -19
  209. package/dist/types/src/extensions/command-dialog/hint.d.ts.map +0 -1
  210. package/dist/types/src/extensions/command-dialog/index.d.ts +0 -4
  211. package/dist/types/src/extensions/command-dialog/index.d.ts.map +0 -1
  212. package/dist/types/src/extensions/command-dialog/state.d.ts +0 -16
  213. package/dist/types/src/extensions/command-dialog/state.d.ts.map +0 -1
  214. package/dist/types/src/extensions/command-dialog/typeahead.d.ts +0 -22
  215. package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +0 -1
  216. package/dist/types/src/extensions/command-menu/command-menu.d.ts +0 -20
  217. package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +0 -1
  218. package/dist/types/src/extensions/command-menu/index.d.ts +0 -3
  219. package/dist/types/src/extensions/command-menu/index.d.ts.map +0 -1
  220. package/dist/types/src/extensions/command-menu/placeholder.d.ts +0 -10
  221. package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +0 -1
  222. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +0 -24
  223. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +0 -1
  224. package/dist/types/src/extensions/comments.d.ts +0 -95
  225. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  226. package/dist/types/src/extensions/debug.d.ts +0 -3
  227. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  228. package/dist/types/src/extensions/dnd.d.ts +0 -9
  229. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  230. package/dist/types/src/extensions/factories.d.ts +0 -83
  231. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  232. package/dist/types/src/extensions/floating-menu.d.ts +0 -7
  233. package/dist/types/src/extensions/floating-menu.d.ts.map +0 -1
  234. package/dist/types/src/extensions/focus.d.ts +0 -7
  235. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  236. package/dist/types/src/extensions/folding.d.ts +0 -7
  237. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  238. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  239. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  240. package/dist/types/src/extensions/json.d.ts +0 -7
  241. package/dist/types/src/extensions/json.d.ts.map +0 -1
  242. package/dist/types/src/extensions/listener.d.ts +0 -11
  243. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  245. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  247. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  249. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  251. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  253. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  255. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  257. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  258. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  259. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  260. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  261. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  262. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  263. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  264. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  265. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  266. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  267. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  268. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  269. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  270. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  271. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  272. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  273. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  274. package/dist/types/src/extensions/mention.d.ts +0 -7
  275. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  276. package/dist/types/src/extensions/modes.d.ts +0 -10
  277. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  279. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  281. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  282. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  283. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  284. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  285. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  286. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  287. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  288. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  289. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  290. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  291. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  292. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  293. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  294. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  295. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  296. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  297. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  298. package/dist/types/src/extensions/preview/preview.d.ts +0 -29
  299. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  300. package/dist/types/src/extensions/selection.d.ts +0 -24
  301. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  302. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  303. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  304. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  305. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  306. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  307. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  308. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  309. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  310. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  311. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  312. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  313. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  314. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  315. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  316. package/dist/types/src/stories/CommandDialog.stories.d.ts +0 -14
  317. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +0 -1
  318. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  319. package/dist/types/src/styles/index.d.ts +0 -4
  320. package/dist/types/src/styles/index.d.ts.map +0 -1
  321. package/dist/types/src/styles/markdown.d.ts +0 -8
  322. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  323. package/dist/types/src/styles/theme.d.ts +0 -38
  324. package/dist/types/src/styles/theme.d.ts.map +0 -1
  325. package/dist/types/src/styles/tokens.d.ts +0 -3
  326. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  327. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  328. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  329. package/dist/types/src/testing/index.d.ts +0 -3
  330. package/dist/types/src/testing/index.d.ts.map +0 -1
  331. package/dist/types/src/testing/util.d.ts +0 -3
  332. package/dist/types/src/testing/util.d.ts.map +0 -1
  333. package/dist/types/src/types/index.d.ts +0 -2
  334. package/dist/types/src/types/index.d.ts.map +0 -1
  335. package/dist/types/src/types/types.d.ts +0 -21
  336. package/dist/types/src/types/types.d.ts.map +0 -1
  337. package/dist/types/src/util/cursor.d.ts +0 -31
  338. package/dist/types/src/util/cursor.d.ts.map +0 -1
  339. package/dist/types/src/util/debug.d.ts +0 -17
  340. package/dist/types/src/util/debug.d.ts.map +0 -1
  341. package/dist/types/src/util/decorations.d.ts +0 -4
  342. package/dist/types/src/util/decorations.d.ts.map +0 -1
  343. package/dist/types/src/util/dom.d.ts +0 -10
  344. package/dist/types/src/util/dom.d.ts.map +0 -1
  345. package/dist/types/src/util/facet.d.ts +0 -3
  346. package/dist/types/src/util/facet.d.ts.map +0 -1
  347. package/src/components/CommandMenu/CommandMenu.tsx +0 -348
  348. package/src/components/CommandMenu/index.ts +0 -5
  349. package/src/components/EditorToolbar/util.ts +0 -76
  350. package/src/defaults.ts +0 -52
  351. package/src/extensions/annotations.ts +0 -55
  352. package/src/extensions/autocomplete.ts +0 -219
  353. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  354. package/src/extensions/automerge/automerge.test.tsx +0 -78
  355. package/src/extensions/automerge/automerge.ts +0 -86
  356. package/src/extensions/automerge/cursor.ts +0 -28
  357. package/src/extensions/automerge/defs.ts +0 -31
  358. package/src/extensions/automerge/index.ts +0 -5
  359. package/src/extensions/automerge/sync.ts +0 -75
  360. package/src/extensions/automerge/update-automerge.ts +0 -50
  361. package/src/extensions/automerge/update-codemirror.ts +0 -115
  362. package/src/extensions/autoscroll.ts +0 -157
  363. package/src/extensions/awareness/awareness-provider.ts +0 -127
  364. package/src/extensions/awareness/awareness.ts +0 -315
  365. package/src/extensions/awareness/index.ts +0 -6
  366. package/src/extensions/blast.ts +0 -363
  367. package/src/extensions/command-dialog/action.ts +0 -55
  368. package/src/extensions/command-dialog/command-dialog.ts +0 -34
  369. package/src/extensions/command-dialog/hint.ts +0 -103
  370. package/src/extensions/command-dialog/index.ts +0 -7
  371. package/src/extensions/command-dialog/state.ts +0 -90
  372. package/src/extensions/command-dialog/typeahead.ts +0 -129
  373. package/src/extensions/command-menu/command-menu.ts +0 -210
  374. package/src/extensions/command-menu/index.ts +0 -6
  375. package/src/extensions/command-menu/placeholder.ts +0 -113
  376. package/src/extensions/command-menu/useCommandMenu.ts +0 -134
  377. package/src/extensions/comments.ts +0 -597
  378. package/src/extensions/debug.ts +0 -15
  379. package/src/extensions/dnd.ts +0 -37
  380. package/src/extensions/factories.ts +0 -284
  381. package/src/extensions/floating-menu.ts +0 -126
  382. package/src/extensions/focus.ts +0 -36
  383. package/src/extensions/folding.tsx +0 -44
  384. package/src/extensions/hashtag.tsx +0 -68
  385. package/src/extensions/json.ts +0 -57
  386. package/src/extensions/listener.ts +0 -38
  387. package/src/extensions/markdown/action.ts +0 -117
  388. package/src/extensions/markdown/bundle.ts +0 -93
  389. package/src/extensions/markdown/changes.test.ts +0 -26
  390. package/src/extensions/markdown/changes.ts +0 -149
  391. package/src/extensions/markdown/debug.ts +0 -44
  392. package/src/extensions/markdown/decorate.ts +0 -601
  393. package/src/extensions/markdown/formatting.test.ts +0 -498
  394. package/src/extensions/markdown/formatting.ts +0 -1267
  395. package/src/extensions/markdown/highlight.ts +0 -183
  396. package/src/extensions/markdown/image.ts +0 -118
  397. package/src/extensions/markdown/index.ts +0 -13
  398. package/src/extensions/markdown/link.ts +0 -50
  399. package/src/extensions/markdown/parser.test.ts +0 -75
  400. package/src/extensions/markdown/styles.ts +0 -135
  401. package/src/extensions/markdown/table.ts +0 -150
  402. package/src/extensions/mention.ts +0 -41
  403. package/src/extensions/modes.ts +0 -41
  404. package/src/extensions/outliner/commands.ts +0 -270
  405. package/src/extensions/outliner/editor.test.ts +0 -33
  406. package/src/extensions/outliner/editor.ts +0 -184
  407. package/src/extensions/outliner/index.ts +0 -7
  408. package/src/extensions/outliner/outliner.test.ts +0 -100
  409. package/src/extensions/outliner/outliner.ts +0 -167
  410. package/src/extensions/outliner/selection.ts +0 -50
  411. package/src/extensions/outliner/tree.test.ts +0 -168
  412. package/src/extensions/outliner/tree.ts +0 -317
  413. package/src/extensions/preview/index.ts +0 -5
  414. package/src/extensions/preview/preview.ts +0 -190
  415. package/src/extensions/selection.ts +0 -100
  416. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  417. package/src/extensions/tags/extended-markdown.ts +0 -78
  418. package/src/extensions/tags/index.ts +0 -7
  419. package/src/extensions/tags/streamer.ts +0 -243
  420. package/src/extensions/tags/xml-tags.ts +0 -393
  421. package/src/extensions/tags/xml-util.ts +0 -94
  422. package/src/extensions/typewriter.ts +0 -68
  423. package/src/stories/CommandDialog.stories.tsx +0 -89
  424. package/src/stories/CommandMenu.stories.tsx +0 -158
  425. package/src/styles/index.ts +0 -7
  426. package/src/styles/markdown.ts +0 -26
  427. package/src/styles/theme.ts +0 -268
  428. package/src/styles/tokens.ts +0 -17
  429. package/src/testing/PreviewPopover.tsx +0 -78
  430. package/src/testing/index.ts +0 -6
  431. package/src/testing/util.ts +0 -7
  432. package/src/types/index.ts +0 -5
  433. package/src/types/types.ts +0 -32
  434. package/src/util/cursor.ts +0 -56
  435. package/src/util/debug.ts +0 -64
  436. package/src/util/decorations.ts +0 -21
  437. package/src/util/dom.ts +0 -34
  438. package/src/util/facet.ts +0 -13
@@ -1,393 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { syntaxTree } from '@codemirror/language';
6
- import {
7
- type EditorState,
8
- type Extension,
9
- RangeSetBuilder,
10
- StateEffect,
11
- StateField,
12
- Transaction,
13
- } from '@codemirror/state';
14
- import { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';
15
- import { type ComponentType, type FC } from 'react';
16
-
17
- import { invariant } from '@dxos/invariant';
18
- import { log } from '@dxos/log';
19
-
20
- import { decorationSetToArray } from '../../util';
21
-
22
- import { nodeToJson } from './xml-util';
23
-
24
- export type StateDispatch<T> = T | ((state: T) => T);
25
-
26
- /**
27
- * Manages widget state.
28
- */
29
- export interface XmlWidgetStateManager {
30
- updateWidget<T>(id: string, props: StateDispatch<T>): void;
31
- }
32
-
33
- export type XmlEventHandler<TEvent = any> = (event: TEvent) => void;
34
-
35
- /**
36
- * Widget component.
37
- */
38
- export type XmlWidgetProps<TContext = any, TProps = any> = TProps & {
39
- _tag: string;
40
- context: TContext;
41
- onEvent?: XmlEventHandler;
42
- };
43
-
44
- /**
45
- * Factory for creating widgets.
46
- */
47
- export type XmlWidgetFactory = (props: XmlWidgetProps, onEvent?: XmlEventHandler) => WidgetType | null;
48
-
49
- /**
50
- * Widget registry definition.
51
- */
52
- export type XmlWidgetDef = {
53
- block?: boolean;
54
- /** Native widget. */
55
- factory?: XmlWidgetFactory;
56
- /** React widget. */
57
- Component?: FC<XmlWidgetProps>;
58
- };
59
-
60
- export type XmlWidgetRegistry = Record<string, XmlWidgetDef>;
61
-
62
- export const getXmlTextChild = (children: any[]): string | null => {
63
- const child = children?.[0];
64
- return typeof child === 'string' ? child : null;
65
- };
66
-
67
- /**
68
- * Update context.
69
- */
70
- export const xmlTagContextEffect = StateEffect.define<any>();
71
-
72
- /**
73
- * Update widget.
74
- */
75
- export const xmlTagUpdateEffect = StateEffect.define<{ id: string; value: any }>();
76
-
77
- /**
78
- * Reset all state.
79
- */
80
- export const xmlTagResetEffect = StateEffect.define();
81
-
82
- type WidgetDecorationSet = {
83
- from: number;
84
- decorations: DecorationSet;
85
- };
86
-
87
- type XmlWidgetStateMap = Record<string, any>;
88
-
89
- export type XmlWidgetState = {
90
- id: string;
91
- props: any;
92
- root: HTMLElement;
93
- Component: ComponentType<any>;
94
- };
95
-
96
- export interface XmlWidgetNotifier {
97
- mounted(widget: XmlWidgetState): void;
98
- unmounted(id: string): void;
99
- }
100
-
101
- export type XmlTagsOptions = {
102
- registry?: XmlWidgetRegistry;
103
- /**
104
- * Called when a widget is mounted or unmounted.
105
- */
106
- setWidgets?: (widgets: XmlWidgetState[]) => void;
107
- };
108
-
109
- /**
110
- * Extension that adds thread-related functionality including XML tag decorations.
111
- */
112
- export const xmlTags = (options: XmlTagsOptions = {}): Extension => {
113
- //
114
- // Context state.
115
- //
116
- const contextState = StateField.define<any>({
117
- create: () => undefined,
118
- update: (value, tr) => {
119
- for (const effect of tr.effects) {
120
- if (effect.is(xmlTagContextEffect)) {
121
- return effect.value;
122
- }
123
- }
124
-
125
- return value;
126
- },
127
- });
128
-
129
- //
130
- // Active widgets.
131
- //
132
- const widgets = new Map<string, XmlWidgetState>();
133
- const notifier = {
134
- mounted: (widget: XmlWidgetState) => {
135
- widgets.set(widget.id, widget);
136
- options.setWidgets?.([...widgets.values()]);
137
- },
138
- unmounted: (id: string) => {
139
- widgets.delete(id);
140
- options.setWidgets?.([...widgets.values()]);
141
- },
142
- } satisfies XmlWidgetNotifier;
143
-
144
- //
145
- // Widget decorations.
146
- //
147
- const decorationsState = StateField.define<WidgetDecorationSet>({
148
- create: (state) => {
149
- return buildDecorations(
150
- state,
151
- 0,
152
- state.doc.length,
153
- state.field(contextState),
154
- state.field(widgetState),
155
- options,
156
- notifier,
157
- );
158
- },
159
- update: ({ from, decorations }, tr) => {
160
- for (const effect of tr.effects) {
161
- if (effect.is(xmlTagResetEffect)) {
162
- return { from: 0, decorations: Decoration.none };
163
- }
164
- }
165
-
166
- // Check if user pressed Backspace or Delete and remove adjacent decorations if present.
167
- const userEvent = tr.annotation(Transaction.userEvent);
168
- if (userEvent === 'delete.backward' || userEvent === 'delete.forward') {
169
- const { state } = tr;
170
- const decorationArray = decorationSetToArray(decorations);
171
- const filteredDecorations = [];
172
-
173
- // Get cursor position after the change.
174
- const cursorPos = state.selection.main.head;
175
-
176
- for (const range of decorationArray) {
177
- let shouldKeep = true;
178
-
179
- // For Backspace (delete.backward), check if decoration is immediately after cursor.
180
- if (userEvent === 'delete.backward' && range.from === cursorPos) {
181
- shouldKeep = false;
182
- }
183
-
184
- // For Delete (delete.forward), check if decoration is immediately before cursor.
185
- if (userEvent === 'delete.forward' && range.to === cursorPos) {
186
- shouldKeep = false;
187
- }
188
-
189
- if (shouldKeep) {
190
- // Map the decoration position through the transaction changes.
191
- const mappedFrom = tr.changes.mapPos(range.from, -1);
192
- const mappedTo = tr.changes.mapPos(range.to, 1);
193
-
194
- // Only keep the decoration if mapping was successful and positions are valid.
195
- if (mappedFrom >= 0 && mappedTo >= mappedFrom && mappedTo <= state.doc.length) {
196
- filteredDecorations.push({
197
- from: mappedFrom,
198
- to: mappedTo,
199
- value: range.value,
200
- });
201
- }
202
- }
203
- }
204
-
205
- // Return updated decorations with adjacent ones removed and positions mapped.
206
- return {
207
- from,
208
- decorations: Decoration.set(filteredDecorations),
209
- };
210
- }
211
-
212
- if (tr.docChanged) {
213
- const { state } = tr;
214
-
215
- // Flag if the transaction has modified the head of the document.
216
- // (i.e., any changes that touch before the current `from` position).
217
- const reset = tr.changes.touchesRange(0, from);
218
-
219
- // Since append-only, rebuild decorations from after the last widget.
220
- const result = buildDecorations(
221
- state,
222
- reset ? 0 : from,
223
- state.doc.length,
224
- state.field(contextState),
225
- state.field(widgetState),
226
- options,
227
- notifier,
228
- );
229
-
230
- // Merge with existing decorations.
231
- return {
232
- from: result.from,
233
- decorations: decorations.update({ add: decorationSetToArray(result.decorations) }),
234
- };
235
- }
236
-
237
- // No document changes: avoid mapping decorations through an empty ChangeSet,
238
- // which can throw when the decoration set was created for a different base length.
239
- // Simply return the existing decorations unchanged.
240
- return { from, decorations };
241
- },
242
- provide: (field) => [
243
- EditorView.decorations.from(field, (v) => v.decorations),
244
- EditorView.atomicRanges.of((view) => view.state.field(field).decorations || Decoration.none),
245
- ],
246
- });
247
-
248
- //
249
- // Widget state management.
250
- //
251
- const widgetState = StateField.define<XmlWidgetStateMap>({
252
- create: () => ({}),
253
- update: (map, tr) => {
254
- for (const effect of tr.effects) {
255
- if (effect.is(xmlTagResetEffect)) {
256
- return {};
257
- }
258
-
259
- if (effect.is(xmlTagUpdateEffect)) {
260
- // Update accumulated widget props by id.
261
- const { id, value } = effect.value;
262
- const state = typeof value === 'function' ? value(map[id]) : value;
263
-
264
- // Find and render widget.
265
- const { decorations } = tr.state.field(decorationsState);
266
- for (const range of decorationSetToArray(decorations)) {
267
- const deco = range.value;
268
- const widget = deco?.spec?.widget;
269
- if (widget && widget instanceof PlaceholderWidget && widget.id === effect.value.id && widget.root) {
270
- const props = { ...widget.props, ...state };
271
- notifier.mounted({ id: widget.id, props, root: widget.root, Component: widget.Component });
272
- }
273
- }
274
-
275
- return { ...map, [id]: state };
276
- }
277
- }
278
-
279
- return map;
280
- },
281
- });
282
-
283
- return [contextState, decorationsState, widgetState];
284
- };
285
-
286
- /**
287
- * Creates widget decorations for XML tags in the document using the syntax tree.
288
- */
289
- const buildDecorations = (
290
- state: EditorState,
291
- from: number,
292
- to: number,
293
- context: any,
294
- widgetState: XmlWidgetStateMap,
295
- options: XmlTagsOptions,
296
- notifier: XmlWidgetNotifier,
297
- ): WidgetDecorationSet => {
298
- const builder = new RangeSetBuilder<Decoration>();
299
- const tree = syntaxTree(state);
300
- if (!tree || (tree.type.name === 'Program' && tree.length === 0)) {
301
- return { from, decorations: Decoration.none };
302
- }
303
-
304
- tree.iterate({
305
- from,
306
- to,
307
- enter: (node) => {
308
- switch (node.type.name) {
309
- // XML Element.
310
- case 'Element': {
311
- try {
312
- if (options.registry) {
313
- const props = nodeToJson(state, node.node);
314
- if (props) {
315
- const def = options.registry[props._tag];
316
- if (def) {
317
- const { block, factory, Component } = def;
318
- const state = props.id ? widgetState[props.id] : undefined;
319
- const args = { context, ...props, ...state };
320
- const widget: WidgetType | undefined = factory
321
- ? factory(args)
322
- : Component
323
- ? props.id && new PlaceholderWidget(props.id, Component, args, notifier)
324
- : undefined;
325
-
326
- if (widget) {
327
- from = node.node.to;
328
- builder.add(
329
- node.node.from,
330
- node.node.to,
331
- Decoration.replace({
332
- widget,
333
- block,
334
- atomic: true,
335
- inclusive: true,
336
- }),
337
- );
338
- }
339
- }
340
- }
341
- }
342
- } catch (err) {
343
- log.catch(err);
344
- }
345
-
346
- return false; // Don't descend into children.
347
- }
348
- }
349
- },
350
- });
351
-
352
- return { from, decorations: builder.finish() };
353
- };
354
-
355
- /**
356
- * Placeholder for React widgets.
357
- */
358
- class PlaceholderWidget<TProps = {}> extends WidgetType {
359
- private _root: HTMLElement | null = null;
360
-
361
- constructor(
362
- public readonly id: string,
363
- public readonly Component: FC<TProps>,
364
- public readonly props: TProps,
365
- private readonly notifier: XmlWidgetNotifier,
366
- ) {
367
- super();
368
- invariant(id);
369
- }
370
-
371
- get root() {
372
- return this._root;
373
- }
374
-
375
- override eq(other: WidgetType): boolean {
376
- return other instanceof PlaceholderWidget && this.id === other.id;
377
- }
378
-
379
- override ignoreEvent() {
380
- return true;
381
- }
382
-
383
- override toDOM(_view: EditorView): HTMLElement {
384
- this._root = document.createElement('span');
385
- this.notifier.mounted({ id: this.id, props: this.props, root: this._root, Component: this.Component });
386
- return this._root;
387
- }
388
-
389
- override destroy(_dom: HTMLElement): void {
390
- this.notifier.unmounted(this.id);
391
- this._root = null;
392
- }
393
- }
@@ -1,94 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type EditorState } from '@codemirror/state';
6
- import { type SyntaxNode } from '@lezer/common';
7
-
8
- import { invariant } from '@dxos/invariant';
9
-
10
- export type Tag = Record<string, any> & {
11
- _tag: string;
12
- };
13
-
14
- /**
15
- * Parse XML Element.
16
- */
17
- export const nodeToJson = (state: EditorState, node: SyntaxNode): Tag | undefined => {
18
- invariant(node.type.name === 'Element', 'Node is not an Element');
19
-
20
- // Find the opening tag.
21
- const openTag = node.node.getChild('OpenTag') || node.node.getChild('SelfClosingTag');
22
- if (openTag) {
23
- // Extract tag name.
24
- const tagName = openTag.getChild('TagName');
25
- if (!tagName) {
26
- return;
27
- }
28
-
29
- const tag: Tag = {
30
- _tag: state.doc.sliceString(tagName.from, tagName.to),
31
- };
32
-
33
- // Extract attributes.
34
- let attributeNode = openTag.getChild('Attribute');
35
- while (attributeNode) {
36
- const attrName = attributeNode.getChild('AttributeName');
37
- const attrValue = attributeNode.getChild('AttributeValue');
38
- if (attrName) {
39
- const attr = state.doc.sliceString(attrName.from, attrName.to);
40
-
41
- // Default for attributes without values.
42
- let value: string | boolean = true;
43
-
44
- if (attrValue) {
45
- const rawValue = state.doc.sliceString(attrValue.from, attrValue.to);
46
- // Remove quotes if present.
47
- if (
48
- (rawValue.startsWith('"') && rawValue.endsWith('"')) ||
49
- (rawValue.startsWith("'") && rawValue.endsWith("'"))
50
- ) {
51
- value = rawValue.slice(1, -1);
52
- } else {
53
- value = rawValue;
54
- }
55
- }
56
-
57
- tag[attr] = value;
58
- }
59
-
60
- // Get next sibling attribute.
61
- attributeNode = attributeNode.nextSibling;
62
- }
63
-
64
- // Extract children for non-self-closing tags.
65
- if (node.type.name === 'Element' && openTag.type.name !== 'SelfClosingTag') {
66
- const children: any[] = [];
67
- let child = node.node.firstChild;
68
-
69
- while (child) {
70
- // Skip the opening and closing tags.
71
- if (child.type.name !== 'OpenTag' && child.type.name !== 'CloseTag') {
72
- if (child.type.name === 'Text') {
73
- const text = state.doc.sliceString(child.from, child.to).trim();
74
- if (text) {
75
- children.push(text);
76
- }
77
- } else if (child.type.name === 'Element') {
78
- const data = nodeToJson(state, child);
79
- if (data) {
80
- children.push(data);
81
- }
82
- }
83
- }
84
- child = child.nextSibling;
85
- }
86
-
87
- if (children.length > 0) {
88
- tag.children = children;
89
- }
90
- }
91
-
92
- return tag;
93
- }
94
- };
@@ -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
- };
@@ -1,89 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type Meta, type StoryObj } from '@storybook/react-vite';
6
- import React, { type KeyboardEvent, useState } from 'react';
7
-
8
- import { Button, Icon, Input } from '@dxos/react-ui';
9
- import { withTheme } from '@dxos/react-ui/testing';
10
- import { mx } from '@dxos/react-ui-theme';
11
-
12
- import { editorWidth } from '../defaults';
13
- import { type Action, commandDialog } from '../extensions';
14
- import { str } from '../testing';
15
- import { createRenderer } from '../util';
16
-
17
- import { EditorStory } from './components';
18
-
19
- const CommandDialog = ({ onAction }: { onAction: (action?: Action) => void }) => {
20
- const [text, setText] = useState('');
21
-
22
- const handleInsert = () => {
23
- // TODO(burdon): Use queue ref.
24
- const link = `![${text}](dxn:queue:data:123)`;
25
- onAction(text.length ? { type: 'insert', text: link } : undefined);
26
- };
27
-
28
- const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
29
- switch (event.key) {
30
- case 'Enter': {
31
- handleInsert();
32
- break;
33
- }
34
- case 'Escape': {
35
- onAction();
36
- break;
37
- }
38
- }
39
- };
40
-
41
- return (
42
- <div className='flex is-full justify-center'>
43
- <div
44
- className={mx(
45
- 'flex is-full p-2 gap-2 items-center bg-modalSurface border border-separator rounded-md',
46
- editorWidth,
47
- )}
48
- >
49
- <Input.Root>
50
- <Input.TextInput
51
- autoFocus={true}
52
- placeholder='Ask a question...'
53
- value={text}
54
- onChange={(ev) => setText(ev.target.value)}
55
- onKeyDown={handleKeyDown}
56
- />
57
- </Input.Root>
58
- <Button variant='ghost' classNames='pli-0' onClick={() => onAction({ type: 'cancel' })}>
59
- <Icon icon='ph--x--regular' size={5} />
60
- </Button>
61
- </div>
62
- </div>
63
- );
64
- };
65
-
66
- const meta = {
67
- title: 'ui/react-ui-editor/CommandDialog',
68
- render: () => (
69
- <EditorStory
70
- text={str('# Command', '', '', '')}
71
- extensions={[
72
- commandDialog({
73
- renderDialog: createRenderer(CommandDialog),
74
- onHint: () => "Press '?' to ask a question",
75
- }),
76
- ]}
77
- />
78
- ),
79
- decorators: [withTheme],
80
- parameters: {
81
- layout: 'fullscreen',
82
- },
83
- } satisfies Meta<typeof Button>;
84
-
85
- export default meta;
86
-
87
- type Story = StoryObj<typeof meta>;
88
-
89
- export const Default: Story = {};