@dxos/react-ui-editor 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (416) hide show
  1. package/dist/lib/browser/index.mjs +1103 -8137
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1103 -8136
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Editor/Editor.d.ts +43 -30
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +16 -20
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/EditorContent/EditorContent.d.ts +31 -0
  12. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  13. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  14. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  16. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  17. package/dist/types/src/{extensions/popover/PopoverMenuProvider.d.ts → components/EditorMenuProvider/EditorMenuProvider.d.ts} +6 -6
  18. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  20. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  25. package/dist/types/src/{extensions/popover → components/EditorMenuProvider}/popover.d.ts +1 -2
  26. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  28. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  30. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  32. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +14 -3
  34. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/actions.d.ts +24 -0
  36. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +8 -7
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +8 -7
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +8 -7
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +4 -11
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/search.d.ts +4 -11
  48. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  50. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  51. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +9 -8
  52. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +4 -1
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +2 -2
  56. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +0 -8
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/{extensions/automerge/automerge.stories.d.ts → stories/Automerge.stories.d.ts} +5 -9
  60. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  61. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  63. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  64. package/dist/types/src/stories/EditorToolbar.stories.d.ts +4 -4
  65. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  66. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  67. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  68. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  69. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  70. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/Popover.stories.d.ts +2 -2
  72. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  74. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  76. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -3
  77. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  79. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  80. package/dist/types/src/stories/components/EditorStory.d.ts +10 -19
  81. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  82. package/dist/types/src/stories/components/util.d.ts +3 -3
  83. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +5 -5
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/util/index.d.ts +0 -5
  87. package/dist/types/src/util/index.d.ts.map +1 -1
  88. package/dist/types/src/util/react.d.ts +5 -1
  89. package/dist/types/src/util/react.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +63 -69
  92. package/src/components/Editor/Editor.stories.tsx +76 -50
  93. package/src/components/Editor/Editor.tsx +160 -63
  94. package/src/components/EditorContent/EditorContent.tsx +83 -0
  95. package/src/components/EditorContent/controller.ts +50 -0
  96. package/src/components/EditorContent/index.ts +6 -0
  97. package/src/{extensions/popover/PopoverMenuProvider.tsx → components/EditorMenuProvider/EditorMenuProvider.tsx} +27 -14
  98. package/src/components/EditorMenuProvider/index.ts +10 -0
  99. package/src/{extensions/popover → components/EditorMenuProvider}/menu-presets.ts +19 -19
  100. package/src/{extensions/popover → components/EditorMenuProvider}/menu.ts +21 -18
  101. package/src/{extensions/popover → components/EditorMenuProvider}/popover.ts +3 -7
  102. package/src/{extensions/popover/usePopoverMenu.ts → components/EditorMenuProvider/useEditorMenu.ts} +21 -21
  103. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +81 -0
  104. package/src/components/EditorPreviewProvider/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +30 -17
  106. package/src/components/EditorToolbar/{lists.ts → actions.ts} +48 -17
  107. package/src/components/EditorToolbar/blocks.ts +5 -5
  108. package/src/components/EditorToolbar/formatting.ts +5 -5
  109. package/src/components/EditorToolbar/headings.ts +5 -4
  110. package/src/components/EditorToolbar/image.ts +9 -2
  111. package/src/components/EditorToolbar/index.ts +3 -7
  112. package/src/components/EditorToolbar/search.ts +9 -2
  113. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  114. package/src/components/EditorToolbar/view-mode.ts +5 -4
  115. package/src/components/index.ts +6 -1
  116. package/src/hooks/useTextEditor.ts +13 -7
  117. package/src/index.ts +0 -10
  118. package/src/stories/Automerge.stories.tsx +175 -0
  119. package/src/stories/CommandDialog.stories.tsx +12 -9
  120. package/src/stories/Comments.stories.tsx +47 -43
  121. package/src/stories/EditorToolbar.stories.tsx +31 -15
  122. package/src/stories/Experimental.stories.tsx +4 -6
  123. package/src/stories/Markdown.stories.tsx +14 -14
  124. package/src/stories/Outliner.stories.tsx +16 -24
  125. package/src/stories/Popover.stories.tsx +40 -45
  126. package/src/stories/Preview.stories.tsx +76 -74
  127. package/src/stories/Tags.stories.tsx +32 -9
  128. package/src/stories/TextEditor.stories.tsx +11 -17
  129. package/src/stories/Theme.stories.tsx +61 -0
  130. package/src/stories/components/EditorStory.tsx +34 -27
  131. package/src/stories/components/util.tsx +43 -11
  132. package/src/translations.ts +4 -4
  133. package/src/util/index.ts +1 -6
  134. package/src/util/react.tsx +6 -2
  135. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  136. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  137. package/dist/lib/browser/testing/index.mjs +0 -76
  138. package/dist/lib/browser/testing/index.mjs.map +0 -7
  139. package/dist/lib/browser/types/index.mjs +0 -13
  140. package/dist/lib/browser/types/index.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  142. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  143. package/dist/lib/node-esm/testing/index.mjs +0 -78
  144. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  145. package/dist/lib/node-esm/types/index.mjs +0 -14
  146. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  147. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  148. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  149. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -37
  150. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  151. package/dist/types/src/defaults.d.ts +0 -14
  152. package/dist/types/src/defaults.d.ts.map +0 -1
  153. package/dist/types/src/extensions/annotations.d.ts +0 -9
  154. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  155. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +0 -26
  156. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
  157. package/dist/types/src/extensions/autocomplete/index.d.ts +0 -5
  158. package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
  159. package/dist/types/src/extensions/autocomplete/match.d.ts +0 -13
  160. package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
  161. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +0 -20
  162. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
  163. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +0 -10
  164. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
  165. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  166. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  167. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  169. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  171. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  173. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  175. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  177. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  179. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  181. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  182. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  183. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  184. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  185. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  186. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  187. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  188. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  189. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  190. package/dist/types/src/extensions/blast.d.ts +0 -25
  191. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  192. package/dist/types/src/extensions/comments.d.ts +0 -95
  193. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  194. package/dist/types/src/extensions/debug.d.ts +0 -3
  195. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  196. package/dist/types/src/extensions/dnd.d.ts +0 -9
  197. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  198. package/dist/types/src/extensions/factories.d.ts +0 -83
  199. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  200. package/dist/types/src/extensions/focus.d.ts +0 -7
  201. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  202. package/dist/types/src/extensions/folding.d.ts +0 -7
  203. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  204. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  205. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  206. package/dist/types/src/extensions/index.d.ts +0 -26
  207. package/dist/types/src/extensions/index.d.ts.map +0 -1
  208. package/dist/types/src/extensions/json.d.ts +0 -7
  209. package/dist/types/src/extensions/json.d.ts.map +0 -1
  210. package/dist/types/src/extensions/listener.d.ts +0 -13
  211. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  212. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  213. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  214. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  215. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  216. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  217. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  218. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  219. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  220. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  221. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  222. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  223. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  224. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -62
  225. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  226. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  227. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  228. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  229. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  231. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  233. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  235. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  237. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  239. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  241. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  242. package/dist/types/src/extensions/mention.d.ts +0 -7
  243. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  244. package/dist/types/src/extensions/modes.d.ts +0 -10
  245. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  246. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  247. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  248. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  249. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  250. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  251. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  252. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  253. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  254. package/dist/types/src/extensions/outliner/menu.d.ts +0 -8
  255. package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
  256. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  257. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  258. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  259. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  260. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  261. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  262. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  263. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  265. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  266. package/dist/types/src/extensions/popover/PopoverMenuProvider.d.ts.map +0 -1
  267. package/dist/types/src/extensions/popover/index.d.ts +0 -8
  268. package/dist/types/src/extensions/popover/index.d.ts.map +0 -1
  269. package/dist/types/src/extensions/popover/menu-presets.d.ts +0 -4
  270. package/dist/types/src/extensions/popover/menu-presets.d.ts.map +0 -1
  271. package/dist/types/src/extensions/popover/menu.d.ts +0 -24
  272. package/dist/types/src/extensions/popover/menu.d.ts.map +0 -1
  273. package/dist/types/src/extensions/popover/modal.d.ts +0 -7
  274. package/dist/types/src/extensions/popover/modal.d.ts.map +0 -1
  275. package/dist/types/src/extensions/popover/popover.d.ts.map +0 -1
  276. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts +0 -34
  277. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts.map +0 -1
  278. package/dist/types/src/extensions/popover/util.d.ts +0 -8
  279. package/dist/types/src/extensions/popover/util.d.ts.map +0 -1
  280. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  281. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  282. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  283. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  284. package/dist/types/src/extensions/selection.d.ts +0 -24
  285. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  286. package/dist/types/src/extensions/state.d.ts +0 -2
  287. package/dist/types/src/extensions/state.d.ts.map +0 -1
  288. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  289. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  290. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  291. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  292. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  293. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  294. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  295. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  296. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  297. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  298. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  299. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  300. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  301. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  302. package/dist/types/src/styles/index.d.ts +0 -4
  303. package/dist/types/src/styles/index.d.ts.map +0 -1
  304. package/dist/types/src/styles/markdown.d.ts +0 -8
  305. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  306. package/dist/types/src/styles/theme.d.ts +0 -38
  307. package/dist/types/src/styles/theme.d.ts.map +0 -1
  308. package/dist/types/src/styles/tokens.d.ts +0 -3
  309. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  310. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  311. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  312. package/dist/types/src/testing/index.d.ts +0 -3
  313. package/dist/types/src/testing/index.d.ts.map +0 -1
  314. package/dist/types/src/testing/util.d.ts +0 -3
  315. package/dist/types/src/testing/util.d.ts.map +0 -1
  316. package/dist/types/src/types/index.d.ts +0 -2
  317. package/dist/types/src/types/index.d.ts.map +0 -1
  318. package/dist/types/src/types/types.d.ts +0 -21
  319. package/dist/types/src/types/types.d.ts.map +0 -1
  320. package/dist/types/src/util/cursor.d.ts +0 -31
  321. package/dist/types/src/util/cursor.d.ts.map +0 -1
  322. package/dist/types/src/util/debug.d.ts +0 -17
  323. package/dist/types/src/util/debug.d.ts.map +0 -1
  324. package/dist/types/src/util/decorations.d.ts +0 -4
  325. package/dist/types/src/util/decorations.d.ts.map +0 -1
  326. package/dist/types/src/util/dom.d.ts +0 -10
  327. package/dist/types/src/util/dom.d.ts.map +0 -1
  328. package/dist/types/src/util/facet.d.ts +0 -3
  329. package/dist/types/src/util/facet.d.ts.map +0 -1
  330. package/src/components/EditorToolbar/util.ts +0 -60
  331. package/src/defaults.ts +0 -52
  332. package/src/extensions/annotations.ts +0 -55
  333. package/src/extensions/autocomplete/autocomplete.ts +0 -220
  334. package/src/extensions/autocomplete/index.ts +0 -8
  335. package/src/extensions/autocomplete/match.ts +0 -46
  336. package/src/extensions/autocomplete/placeholder.ts +0 -117
  337. package/src/extensions/autocomplete/typeahead.ts +0 -87
  338. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  339. package/src/extensions/automerge/automerge.test.tsx +0 -78
  340. package/src/extensions/automerge/automerge.ts +0 -105
  341. package/src/extensions/automerge/cursor.ts +0 -28
  342. package/src/extensions/automerge/defs.ts +0 -31
  343. package/src/extensions/automerge/index.ts +0 -5
  344. package/src/extensions/automerge/sync.ts +0 -79
  345. package/src/extensions/automerge/update-automerge.ts +0 -50
  346. package/src/extensions/automerge/update-codemirror.ts +0 -115
  347. package/src/extensions/autoscroll.ts +0 -157
  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/comments.ts +0 -597
  353. package/src/extensions/debug.ts +0 -15
  354. package/src/extensions/dnd.ts +0 -37
  355. package/src/extensions/factories.ts +0 -277
  356. package/src/extensions/focus.ts +0 -36
  357. package/src/extensions/folding.tsx +0 -44
  358. package/src/extensions/hashtag.tsx +0 -68
  359. package/src/extensions/index.ts +0 -29
  360. package/src/extensions/json.ts +0 -57
  361. package/src/extensions/listener.ts +0 -32
  362. package/src/extensions/markdown/action.ts +0 -117
  363. package/src/extensions/markdown/bundle.ts +0 -105
  364. package/src/extensions/markdown/changes.test.ts +0 -26
  365. package/src/extensions/markdown/changes.ts +0 -149
  366. package/src/extensions/markdown/debug.ts +0 -44
  367. package/src/extensions/markdown/decorate.ts +0 -601
  368. package/src/extensions/markdown/formatting.test.ts +0 -498
  369. package/src/extensions/markdown/formatting.ts +0 -1267
  370. package/src/extensions/markdown/highlight.ts +0 -183
  371. package/src/extensions/markdown/image.ts +0 -118
  372. package/src/extensions/markdown/index.ts +0 -13
  373. package/src/extensions/markdown/link.ts +0 -50
  374. package/src/extensions/markdown/parser.test.ts +0 -75
  375. package/src/extensions/markdown/styles.ts +0 -135
  376. package/src/extensions/markdown/table.ts +0 -150
  377. package/src/extensions/mention.ts +0 -41
  378. package/src/extensions/modes.ts +0 -41
  379. package/src/extensions/outliner/commands.ts +0 -270
  380. package/src/extensions/outliner/editor.test.ts +0 -33
  381. package/src/extensions/outliner/editor.ts +0 -184
  382. package/src/extensions/outliner/index.ts +0 -7
  383. package/src/extensions/outliner/menu.ts +0 -128
  384. package/src/extensions/outliner/outliner.test.ts +0 -100
  385. package/src/extensions/outliner/outliner.ts +0 -167
  386. package/src/extensions/outliner/selection.ts +0 -50
  387. package/src/extensions/outliner/tree.test.ts +0 -168
  388. package/src/extensions/outliner/tree.ts +0 -317
  389. package/src/extensions/popover/index.ts +0 -12
  390. package/src/extensions/popover/modal.ts +0 -24
  391. package/src/extensions/popover/util.ts +0 -29
  392. package/src/extensions/preview/index.ts +0 -5
  393. package/src/extensions/preview/preview.ts +0 -193
  394. package/src/extensions/selection.ts +0 -100
  395. package/src/extensions/state.ts +0 -7
  396. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  397. package/src/extensions/tags/extended-markdown.ts +0 -78
  398. package/src/extensions/tags/index.ts +0 -7
  399. package/src/extensions/tags/streamer.ts +0 -243
  400. package/src/extensions/tags/xml-tags.ts +0 -393
  401. package/src/extensions/tags/xml-util.ts +0 -94
  402. package/src/extensions/typewriter.ts +0 -68
  403. package/src/styles/index.ts +0 -7
  404. package/src/styles/markdown.ts +0 -26
  405. package/src/styles/theme.ts +0 -269
  406. package/src/styles/tokens.ts +0 -17
  407. package/src/testing/PreviewPopover.tsx +0 -80
  408. package/src/testing/index.ts +0 -6
  409. package/src/testing/util.ts +0 -7
  410. package/src/types/index.ts +0 -5
  411. package/src/types/types.ts +0 -32
  412. package/src/util/cursor.ts +0 -56
  413. package/src/util/debug.ts +0 -64
  414. package/src/util/decorations.ts +0 -21
  415. package/src/util/dom.ts +0 -34
  416. package/src/util/facet.ts +0 -13
@@ -2,71 +2,66 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type EditorView } from '@codemirror/view';
6
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React, { useCallback, useState } from 'react';
8
7
 
9
8
  import { Obj, Query } from '@dxos/echo';
10
9
  import { faker } from '@dxos/random';
11
- import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
12
- import { Domino } from '@dxos/react-ui';
10
+ import { useClientStory, withClientProvider } from '@dxos/react-client/testing';
13
11
  import { withTheme } from '@dxos/react-ui/testing';
14
- import { Testing, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
12
+ import { TestSchema, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
13
+ import { Domino, mx } from '@dxos/ui';
14
+ import { insertAtCursor, insertAtLineStart, join } from '@dxos/ui-editor';
15
15
 
16
16
  import {
17
- type PopoverMenuGroup,
18
- type PopoverMenuItem,
19
- PopoverMenuProvider,
20
- type UsePopoverMenuProps,
17
+ type EditorController,
18
+ type EditorMenuGroup,
19
+ type EditorMenuItem,
20
+ EditorMenuProvider,
21
+ type UseEditorMenuProps,
21
22
  createMenuGroup,
22
23
  filterMenuGroups,
23
24
  formattingCommands,
24
- insertAtCursor,
25
- insertAtLineStart,
26
25
  linkSlashCommands,
27
- usePopoverMenu,
28
- } from '../extensions';
29
- import { str } from '../testing';
26
+ useEditorMenu,
27
+ } from '../components';
30
28
 
31
29
  import { EditorStory } from './components';
32
30
 
33
31
  const generator: ValueGenerator = faker as any;
34
32
 
35
- const customCompletions: PopoverMenuGroup = createMenuGroup({
33
+ const customCompletions: EditorMenuGroup = createMenuGroup({
36
34
  id: 'test',
37
35
  items: ['Hello world!', 'Hello DXOS', 'Hello Composer', 'https://dxos.org'],
38
36
  });
39
37
 
40
- const placeholder = (trigger: string[]) =>
41
- Domino.of('div')
42
- .children(
43
- Domino.of('span').text('Press'),
44
- ...trigger.map((trigger) =>
45
- Domino.of('span')
46
- .text(trigger)
47
- .classNames('border border-separator rounded-sm mx-1 pis-1 pie-1 pbs-[2px] pbe-[3px]'),
48
- ),
49
- Domino.of('span').text('for commands'),
50
- )
51
- .build();
52
-
53
- type StoryProps = Omit<UsePopoverMenuProps, 'viewRef'> & { text: string };
38
+ const placeholder = (trigger: string[]) => {
39
+ const pressEl = Domino.of('span').text('Press');
40
+ const triggerEls = trigger.map((trigger) =>
41
+ Domino.of('span').classNames(mx('border border-separator rounded-sm mx-1 pli-1 pbs-[2px] pbe-[3px]')).text(trigger),
42
+ );
43
+ const forCommandsEl = Domino.of('span').text('for commands');
44
+ return Domino.of('div').children(pressEl, ...triggerEls, forCommandsEl).root;
45
+ };
46
+
47
+ type StoryProps = Omit<UseEditorMenuProps, 'viewRef'> & { text: string };
54
48
 
55
49
  const DefaultStory = ({ text, ...props }: StoryProps) => {
56
- const [view, setView] = useState<EditorView | null>(null);
57
- const { groupsRef, extension, ...menuProps } = usePopoverMenu(props);
50
+ const [controller, setController] = useState<EditorController | null>(null);
51
+ const { groupsRef, extension, ...menuProps } = useEditorMenu(props);
58
52
 
59
53
  return (
60
- <PopoverMenuProvider view={view} groups={groupsRef.current} {...menuProps}>
61
- <EditorStory ref={setView} text={text} extensions={extension} />
62
- </PopoverMenuProvider>
54
+ <EditorMenuProvider view={controller?.view} groups={groupsRef.current} {...menuProps}>
55
+ <EditorStory ref={setController} text={text} extensions={extension} />
56
+ </EditorMenuProvider>
63
57
  );
64
58
  };
65
59
 
66
60
  const LinkStory = (args: StoryProps) => {
67
- const { space } = useClientProvider();
68
- const getMenu = useCallback<NonNullable<UsePopoverMenuProps['getMenu']>>(
69
- async ({ text, trigger }): Promise<PopoverMenuGroup[]> => {
61
+ const { space } = useClientStory();
62
+
63
+ const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(
64
+ async ({ text, trigger }): Promise<EditorMenuGroup[]> => {
70
65
  if (trigger === '/') {
71
66
  return filterMenuGroups([linkSlashCommands], (item) =>
72
67
  text ? (item.label as string).toLowerCase().includes(text.toLowerCase()) : true,
@@ -78,15 +73,15 @@ const LinkStory = (args: StoryProps) => {
78
73
  }
79
74
 
80
75
  const name = text?.startsWith('@') ? text.slice(1).toLowerCase() : (text?.toLowerCase() ?? '');
81
- const result = await space?.db.query(Query.type(Testing.Contact)).run();
82
- const items = result.objects
76
+ const result = await space?.db.query(Query.type(TestSchema.Person)).run();
77
+ const items = result
83
78
  .filter((object) => object.name.toLowerCase().includes(name))
84
79
  .map(
85
- (object): PopoverMenuItem => ({
80
+ (object): EditorMenuItem => ({
86
81
  id: object.id,
87
82
  label: object.name,
88
83
  icon: 'ph--user--regular',
89
- onSelect: (view, head) => {
84
+ onSelect: ({ view, head }) => {
90
85
  const link = `[${object.name}](${Obj.getDXN(object)})`;
91
86
  if (text?.startsWith('@')) {
92
87
  insertAtLineStart(view, head, `!${link}\n`);
@@ -120,7 +115,7 @@ type Story = StoryObj<typeof meta>;
120
115
 
121
116
  export const Default: Story = {
122
117
  args: {
123
- text: str('# Autocomplete', '', ''),
118
+ text: join('# Autocomplete', '', ''),
124
119
  triggerKey: 'Ctrl-Space',
125
120
  filter: true,
126
121
  getMenu: () => [customCompletions],
@@ -129,7 +124,7 @@ export const Default: Story = {
129
124
 
130
125
  export const Formatting: Story = {
131
126
  args: {
132
- text: str('# Slash command', '', ''),
127
+ text: join('# Slash command', '', ''),
133
128
  trigger: '/',
134
129
  placeholder: {
135
130
  content: () => placeholder(['/']),
@@ -144,17 +139,17 @@ export const Link: Story = {
144
139
  withClientProvider({
145
140
  createSpace: true,
146
141
  onInitialized: async (client) => {
147
- client.addTypes([Testing.Contact]);
142
+ await client.addTypes([TestSchema.Person]);
148
143
  },
149
144
  onCreateSpace: async ({ space }) => {
150
145
  const createObjects = createObjectFactory(space.db, generator);
151
- await createObjects([{ type: Testing.Contact, count: 10 }]);
146
+ await createObjects([{ type: TestSchema.Person, count: 10 }]);
152
147
  await space.db.flush({ indexes: true });
153
148
  },
154
149
  }),
155
150
  ],
156
151
  args: {
157
- text: str('# Links', '', ''),
152
+ text: join('# Links', '', ''),
158
153
  trigger: ['/', '@'],
159
154
  placeholder: {
160
155
  content: () => placeholder(['/', '@']),
@@ -12,10 +12,7 @@ import { invariant } from '@dxos/invariant';
12
12
  import { faker } from '@dxos/random';
13
13
  import { Popover } from '@dxos/react-ui';
14
14
  import { withTheme } from '@dxos/react-ui/testing';
15
- import { Card } from '@dxos/react-ui-stack';
16
- import { hoverableControlItem, hoverableControlItemTransition, hoverableControls } from '@dxos/react-ui-theme';
17
- import { trim } from '@dxos/util';
18
-
15
+ import { Card } from '@dxos/react-ui-mosaic';
19
16
  import {
20
17
  type PreviewBlock,
21
18
  type PreviewLinkRef,
@@ -23,8 +20,11 @@ import {
23
20
  getLinkRef,
24
21
  image,
25
22
  preview,
26
- } from '../extensions';
27
- import { PreviewPopoverProvider, usePreviewPopover } from '../testing';
23
+ } from '@dxos/ui-editor';
24
+ import { hoverableControls } from '@dxos/ui-theme';
25
+ import { isTruthy, trim } from '@dxos/util';
26
+
27
+ import { type EditorController, EditorPreviewProvider, useEditorPreview } from '../components';
28
28
 
29
29
  import { EditorStory } from './components';
30
30
 
@@ -50,15 +50,26 @@ const useRefTarget = (link: PreviewLinkRef): PreviewLinkTarget | undefined => {
50
50
  };
51
51
 
52
52
  const PreviewCard = () => {
53
- const { target } = usePreviewPopover('PreviewCard');
53
+ const { target } = useEditorPreview('PreviewCard');
54
+
54
55
  return (
55
56
  <Popover.Portal>
56
57
  <Popover.Content onOpenAutoFocus={(event) => event.preventDefault()}>
57
- <Popover.Viewport>
58
- <Card.SurfaceRoot role='card--popover'>
59
- <Card.Heading>{target?.label}</Card.Heading>
60
- {target && <Card.Text classNames='line-clamp-3'>{target.text}</Card.Text>}
61
- </Card.SurfaceRoot>
58
+ <Popover.Viewport classNames='popover-card-width'>
59
+ <Card.Root border={false}>
60
+ <Card.Toolbar>
61
+ <Card.Icon toolbar icon='ph--file-text--regular' />
62
+ <Card.Title>{target?.label}</Card.Title>
63
+ <Popover.Close asChild>
64
+ <Card.Close />
65
+ </Popover.Close>
66
+ </Card.Toolbar>
67
+ {target && (
68
+ <Card.Row>
69
+ <Card.Text variant='description'>{target.text}</Card.Text>
70
+ </Card.Row>
71
+ )}
72
+ </Card.Root>
62
73
  </Popover.Viewport>
63
74
  <Popover.Arrow />
64
75
  </Popover.Content>
@@ -133,40 +144,35 @@ const PreviewBlockComponent = ({ link, el, view }: { link: PreviewLinkRef; el: H
133
144
  }, [handleAction, link, target]);
134
145
 
135
146
  return createPortal(
136
- <Card.StaticRoot classNames={hoverableControls}>
137
- <div className='flex items-start'>
138
- {!view?.state.readOnly && (
139
- <Card.Toolbar classNames='is-min p-[--dx-cardSpacingInline]'>
140
- {(link.suggest && (
141
- <>
142
- <Card.ToolbarIconButton label='Discard' icon='ph--x--regular' onClick={handleDelete} />
143
- {target && (
144
- <Card.ToolbarIconButton
145
- classNames='bg-successSurface text-successSurfaceText'
146
- label='Apply'
147
- icon='ph--check--regular'
148
- onClick={handleInsert}
149
- />
150
- )}
151
- </>
152
- )) || (
153
- <Card.ToolbarIconButton
154
- iconOnly
155
- label='Delete'
156
- icon='ph--x--regular'
157
- classNames={[hoverableControlItem, hoverableControlItemTransition]}
158
- onClick={handleDelete}
159
- />
160
- )}
161
- </Card.Toolbar>
162
- )}
163
- <Card.Heading classNames='grow order-first mie-0'>
164
- {/* <span className='text-xs text-subdued mie-2'>Prompt</span> */}
165
- {link.label}
166
- </Card.Heading>
167
- </div>
168
- {target && <Card.Text classNames='line-clamp-3 mbs-0'>{target.text}</Card.Text>}
169
- </Card.StaticRoot>,
147
+ <Card.Root classNames={hoverableControls}>
148
+ {!view?.state.readOnly && (
149
+ <Card.Toolbar>
150
+ <Card.Icon toolbar icon='ph--bookmark--regular' />
151
+ <Card.Title>{link.label}</Card.Title>
152
+ <Card.Menu
153
+ items={[
154
+ {
155
+ id: 'delete',
156
+ label: link.suggest ? 'Discard' : 'Delete',
157
+ icon: 'ph--x--regular',
158
+ onClick: handleDelete,
159
+ },
160
+ target && {
161
+ id: 'apply',
162
+ label: 'Apply',
163
+ icon: 'ph--check--regular',
164
+ onClick: handleInsert,
165
+ },
166
+ ].filter(isTruthy)}
167
+ />
168
+ </Card.Toolbar>
169
+ )}
170
+ {target && (
171
+ <Card.Row>
172
+ <Card.Text className='text-description'>{target.text}</Card.Text>
173
+ </Card.Row>
174
+ )}
175
+ </Card.Root>,
170
176
  el,
171
177
  );
172
178
  };
@@ -184,9 +190,24 @@ export default meta;
184
190
 
185
191
  type Story = StoryObj<typeof meta>;
186
192
 
193
+ const text = trim`
194
+ # Preview
195
+
196
+ This project is part of the [DXOS](dxn:queue:data:123) SDK.
197
+
198
+ ![DXOS](dxn:queue:data:123)
199
+
200
+ It consists of [ECHO](dxn:queue:data:echo), [HALO](dxn:queue:data:halo), and [MESH](dxn:queue:data:mesh).
201
+
202
+ ## Deep dive
203
+
204
+ ![ECHO](dxn:queue:data:echo)
205
+
206
+ `;
207
+
187
208
  export const Default: Story = {
188
209
  render: () => {
189
- const [view, setView] = useState<EditorView>();
210
+ const [controller, setController] = useState<EditorController | null>(null);
190
211
  const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);
191
212
  const extensions = useMemo(() => {
192
213
  return [
@@ -202,35 +223,16 @@ export const Default: Story = {
202
223
  ];
203
224
  }, []);
204
225
 
205
- const handleViewRef = useCallback((instance?: EditorView | null) => {
206
- setView(instance ?? undefined);
207
- }, []);
208
-
226
+ // TODO(burdon): Migrate to Editor.Root.
209
227
  return (
210
- <PreviewPopoverProvider onLookup={handlePreviewLookup}>
211
- <EditorStory
212
- ref={handleViewRef}
213
- text={trim`
214
- # Preview
215
-
216
- This project is part of the [DXOS](dxn:queue:data:123) SDK.
217
-
218
- ![DXOS](dxn:queue:data:123)
219
-
220
- It consists of [ECHO](dxn:queue:data:echo), [HALO](dxn:queue:data:halo), and [MESH](dxn:queue:data:mesh).
221
-
222
- ## Deep dive
223
-
224
- ![ECHO](dxn:queue:data:echo)
225
-
226
- `}
227
- extensions={extensions}
228
- />
228
+ <EditorPreviewProvider onLookup={handlePreviewLookup}>
229
+ <EditorStory ref={setController} text={text} extensions={extensions} />
229
230
  <PreviewCard />
230
- {previewBlocks.map(({ link, el }) => (
231
- <PreviewBlockComponent key={link.ref} link={link} el={el} view={view} />
232
- ))}
233
- </PreviewPopoverProvider>
231
+ {controller?.view &&
232
+ previewBlocks.map(({ link, el }) => (
233
+ <PreviewBlockComponent key={link.ref} link={link} el={el} view={controller.view!} />
234
+ ))}
235
+ </EditorPreviewProvider>
234
236
  );
235
237
  },
236
238
  };
@@ -3,13 +3,11 @@
3
3
  //
4
4
 
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
- import React, { useState } from 'react';
6
+ import React, { useEffect, useState } from 'react';
7
7
  import { createPortal } from 'react-dom';
8
8
 
9
9
  import { useThemeContext } from '@dxos/react-ui';
10
10
  import { withTheme } from '@dxos/react-ui/testing';
11
- import { trim } from '@dxos/util';
12
-
13
11
  import {
14
12
  type XmlWidgetRegistry,
15
13
  type XmlWidgetState,
@@ -18,14 +16,35 @@ import {
18
16
  decorateMarkdown,
19
17
  extendedMarkdown,
20
18
  xmlTags,
21
- } from '../extensions';
19
+ } from '@dxos/ui-editor';
20
+ import { safeParseInt, trim } from '@dxos/util';
21
+
22
22
  import { useTextEditor } from '../hooks';
23
23
 
24
24
  const registry = {
25
- // <test/>
25
+ /**
26
+ * Custom tag: <test/>
27
+ */
26
28
  ['test' as const]: {
27
29
  block: true,
28
- Component: () => <div className='p-2 border border-separator rounded'>Test</div>,
30
+ Component: ({ start = '0' }) => {
31
+ const [count, setCount] = useState<number>(safeParseInt(start, 0));
32
+ useEffect(() => {
33
+ const interval = setInterval(() => {
34
+ setCount((prev) => {
35
+ if (prev >= 200) {
36
+ clearInterval(interval);
37
+ return prev;
38
+ }
39
+
40
+ return prev + 1;
41
+ });
42
+ }, 100);
43
+ return () => clearInterval(interval);
44
+ }, []);
45
+
46
+ return <div className='p-2 border border-separator rounded'>Test {count}</div>;
47
+ },
29
48
  },
30
49
  } satisfies XmlWidgetRegistry;
31
50
 
@@ -36,7 +55,7 @@ const DefaultStory = ({ text }: { text?: string }) => {
36
55
  initialValue: text,
37
56
  extensions: [
38
57
  createThemeExtensions({ themeMode }),
39
- createBasicExtensions({ lineWrapping: true, readOnly: true }),
58
+ createBasicExtensions({ lineWrapping: true }),
40
59
  decorateMarkdown(),
41
60
  extendedMarkdown({ registry }),
42
61
  xmlTags({ registry, setWidgets }),
@@ -46,7 +65,7 @@ const DefaultStory = ({ text }: { text?: string }) => {
46
65
  return (
47
66
  <>
48
67
  <div ref={parentRef} className='is-full p-4' />
49
- {widgets.map(({ Component, root, id, ...props }) => (
68
+ {widgets.map(({ id, root, Component, props }) => (
50
69
  <div key={id}>{createPortal(<Component {...props} />, root)}</div>
51
70
  ))}
52
71
  </>
@@ -56,7 +75,11 @@ const DefaultStory = ({ text }: { text?: string }) => {
56
75
  const text = trim`
57
76
  # Tags
58
77
 
59
- <test id="123" />
78
+ React widget below.
79
+
80
+ <test id="t-1" />
81
+
82
+ <test id="t-2" start="100" />
60
83
 
61
84
  React widget above.
62
85
  `;
@@ -9,20 +9,18 @@ import React from 'react';
9
9
 
10
10
  import { log } from '@dxos/log';
11
11
  import { withTheme } from '@dxos/react-ui/testing';
12
-
13
- import { editorMonospace } from '../defaults';
14
12
  import {
15
13
  InputModeExtensions,
16
14
  decorateMarkdown,
17
15
  folding,
18
16
  image,
17
+ join,
19
18
  listener,
20
19
  mention,
21
20
  selectionState,
22
21
  staticCompletion,
23
22
  typeahead,
24
- } from '../extensions';
25
- import { str } from '../testing';
23
+ } from '@dxos/ui-editor';
26
24
 
27
25
  import {
28
26
  EditorStory,
@@ -97,7 +95,7 @@ export const NoExtensions: Story = {
97
95
  export const Vim: Story = {
98
96
  render: () => (
99
97
  <EditorStory
100
- text={str('# Vim Mode', '', 'The distant future. The year 2000.', '', content.paragraphs)}
98
+ text={join('# Vim Mode', '', 'The distant future. The year 2000.', '', content.paragraphs)}
101
99
  extensions={[defaultExtensions, InputModeExtensions.vim]}
102
100
  />
103
101
  ),
@@ -110,7 +108,7 @@ export const Vim: Story = {
110
108
  export const Listener: Story = {
111
109
  render: () => (
112
110
  <EditorStory
113
- text={str('# Listener', '', content.footer)}
111
+ text={join('# Listener', '', content.footer)}
114
112
  extensions={[
115
113
  listener({
116
114
  onFocus: ({ focusing }) => {
@@ -140,7 +138,7 @@ export const Folding: Story = {
140
138
  export const Scrolling: Story = {
141
139
  render: () => (
142
140
  <EditorStory
143
- text={str('# Large Document', '', longText)}
141
+ text={join('# Large Document', '', longText)}
144
142
  extensions={selectionState({
145
143
  setState: (id, state) => global.set(id, state),
146
144
  getState: (id) => global.get(id),
@@ -151,7 +149,7 @@ export const Scrolling: Story = {
151
149
 
152
150
  export const ScrollingWithImages: Story = {
153
151
  render: () => (
154
- <EditorStory text={str('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
152
+ <EditorStory text={join('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
155
153
  ),
156
154
  };
157
155
 
@@ -159,7 +157,7 @@ export const ScrollTo: Story = {
159
157
  render: () => {
160
158
  // NOTE: Selection won't appear if text is reformatted.
161
159
  const word = 'Scroll to here...';
162
- const text = str('# Scroll To', longText, '', word, '', longText);
160
+ const text = join('# Scroll To', longText, '', word, '', longText);
163
161
  const idx = text.indexOf(word);
164
162
  return (
165
163
  <EditorStory
@@ -178,11 +176,7 @@ export const ScrollTo: Story = {
178
176
 
179
177
  export const Typescript: Story = {
180
178
  render: () => (
181
- <EditorStory
182
- text={content.typescript}
183
- lineNumbers
184
- extensions={[editorMonospace, javascript({ typescript: true })]}
185
- />
179
+ <EditorStory text={content.typescript} lineNumbers monospace extensions={javascript({ typescript: true })} />
186
180
  ),
187
181
  };
188
182
 
@@ -195,7 +189,7 @@ const completions = ['hello world!', 'dxos.org'];
195
189
  export const Typeahead: Story = {
196
190
  render: () => (
197
191
  <EditorStory
198
- text={str('# Typeahead', '')}
192
+ text={join('# Typeahead', '')}
199
193
  extensions={[
200
194
  typeahead({
201
195
  onComplete: staticCompletion(completions, { minLength: 2 }),
@@ -212,7 +206,7 @@ export const Typeahead: Story = {
212
206
  export const Mention: Story = {
213
207
  render: () => (
214
208
  <EditorStory
215
- text={str('# Mention', '', 'Type @...', content.footer)}
209
+ text={join('# Mention', '', 'Type @...', content.footer)}
216
210
  extensions={[
217
211
  mention({
218
212
  onSearch: (text) => names.filter((name) => name.toLowerCase().startsWith(text.toLowerCase())),
@@ -229,7 +223,7 @@ export const Mention: Story = {
229
223
  export const Search: Story = {
230
224
  render: () => (
231
225
  <EditorStory
232
- text={str('# Search', text)}
226
+ text={join('# Search', text)}
233
227
  extensions={defaultExtensions}
234
228
  onReady={(view) => openSearchPanel(view)}
235
229
  />
@@ -0,0 +1,61 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useMemo } from 'react';
7
+
8
+ import { useThemeContext } from '@dxos/react-ui';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { createBasicExtensions, createThemeExtensions } from '@dxos/ui-editor';
11
+
12
+ import { Editor } from '../components';
13
+
14
+ const createText = (monospace?: boolean) =>
15
+ [`${monospace ? 'monospace' : 'body'}`, 'Hello world', '0123456789'].join('\n');
16
+
17
+ const DefaultStory = () => {
18
+ const { themeMode } = useThemeContext();
19
+ const [ext1, ext2] = useMemo(
20
+ () => [
21
+ //
22
+ [
23
+ createBasicExtensions({ placeholder: 'Enter text', search: true }),
24
+ createThemeExtensions({ themeMode, monospace: false }),
25
+ ],
26
+ [
27
+ createBasicExtensions({ placeholder: 'Enter text', search: true }),
28
+ createThemeExtensions({ themeMode, monospace: true }),
29
+ ],
30
+ ],
31
+ [],
32
+ );
33
+
34
+ return (
35
+ <div className='is-full grid grid-cols-2 gap-2'>
36
+ <Editor.Root>
37
+ <Editor.Content classNames='p-2' extensions={ext1} initialValue={createText(false)} />
38
+ </Editor.Root>
39
+ <Editor.Root>
40
+ <Editor.Content classNames='p-2' extensions={ext2} initialValue={createText(true)} />
41
+ </Editor.Root>
42
+ </div>
43
+ );
44
+ };
45
+
46
+ const meta: Meta<typeof DefaultStory> = {
47
+ title: 'ui/react-ui-editor/Theme',
48
+ component: DefaultStory,
49
+ decorators: [withTheme, withLayout()],
50
+ parameters: {
51
+ layout: 'fullscreen',
52
+ },
53
+ };
54
+
55
+ export default meta;
56
+
57
+ type Story = StoryObj<typeof meta>;
58
+
59
+ export const Default: Story = {
60
+ args: {},
61
+ };