@dxos/react-ui-editor 0.8.4-main.c4373fc → 0.8.4-main.d05673bc65

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 (422) hide show
  1. package/dist/lib/browser/index.mjs +1143 -8424
  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 +1143 -8423
  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 -21
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  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/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -0
  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/components/EditorMenuProvider/popover.d.ts +46 -0
  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 +28 -2
  34. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/actions.d.ts +25 -0
  36. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +9 -7
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +9 -7
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +9 -7
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +5 -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 +5 -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 +10 -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 -2
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +4 -8
  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 -8
  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/{CommandMenu.stories.d.ts → Popover.stories.d.ts} +6 -5
  72. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  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 -4
  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 +9 -18
  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 +6 -5
  89. package/dist/types/src/util/react.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +68 -72
  92. package/src/components/Editor/Editor.stories.tsx +95 -0
  93. package/src/components/Editor/Editor.tsx +167 -56
  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/components/EditorMenuProvider/EditorMenuProvider.tsx +228 -0
  98. package/src/components/EditorMenuProvider/index.ts +10 -0
  99. package/src/components/EditorMenuProvider/menu-presets.ts +124 -0
  100. package/src/components/EditorMenuProvider/menu.ts +70 -0
  101. package/src/components/EditorMenuProvider/popover.ts +285 -0
  102. package/src/components/EditorMenuProvider/useEditorMenu.ts +179 -0
  103. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  104. package/src/components/EditorPreviewProvider/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +102 -105
  106. package/src/components/EditorToolbar/{lists.ts → actions.ts} +48 -17
  107. package/src/components/EditorToolbar/blocks.ts +7 -7
  108. package/src/components/EditorToolbar/formatting.ts +7 -7
  109. package/src/components/EditorToolbar/headings.ts +20 -17
  110. package/src/components/EditorToolbar/image.ts +10 -3
  111. package/src/components/EditorToolbar/index.ts +3 -7
  112. package/src/components/EditorToolbar/search.ts +10 -3
  113. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  114. package/src/components/EditorToolbar/view-mode.ts +7 -6
  115. package/src/components/index.ts +6 -2
  116. package/src/hooks/useTextEditor.ts +33 -27
  117. package/src/index.ts +0 -10
  118. package/src/stories/Automerge.stories.tsx +173 -0
  119. package/src/stories/CommandDialog.stories.tsx +18 -26
  120. package/src/stories/Comments.stories.tsx +48 -44
  121. package/src/stories/EditorToolbar.stories.tsx +36 -21
  122. package/src/stories/Experimental.stories.tsx +7 -9
  123. package/src/stories/Markdown.stories.tsx +16 -16
  124. package/src/stories/Outliner.stories.tsx +20 -21
  125. package/src/stories/Popover.stories.tsx +158 -0
  126. package/src/stories/Preview.stories.tsx +100 -81
  127. package/src/stories/Tags.stories.tsx +36 -13
  128. package/src/stories/TextEditor.stories.tsx +16 -48
  129. package/src/stories/Theme.stories.tsx +61 -0
  130. package/src/stories/components/EditorStory.tsx +32 -25
  131. package/src/stories/components/util.tsx +60 -31
  132. package/src/translations.ts +4 -4
  133. package/src/util/index.ts +1 -6
  134. package/src/util/react.tsx +8 -13
  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/CommandMenu/CommandMenu.d.ts +0 -38
  148. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +0 -1
  149. package/dist/types/src/components/CommandMenu/index.d.ts +0 -2
  150. package/dist/types/src/components/CommandMenu/index.d.ts.map +0 -1
  151. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  152. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  153. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  154. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  155. package/dist/types/src/defaults.d.ts +0 -14
  156. package/dist/types/src/defaults.d.ts.map +0 -1
  157. package/dist/types/src/extensions/annotations.d.ts +0 -9
  158. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  159. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  160. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  161. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  162. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  163. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  164. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  165. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  166. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  167. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  169. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  171. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  173. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  175. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  177. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  178. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  179. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  180. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  181. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  182. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  183. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  184. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  185. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  186. package/dist/types/src/extensions/blast.d.ts +0 -25
  187. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  188. package/dist/types/src/extensions/command-dialog/action.d.ts +0 -17
  189. package/dist/types/src/extensions/command-dialog/action.d.ts.map +0 -1
  190. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts +0 -6
  191. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +0 -1
  192. package/dist/types/src/extensions/command-dialog/hint.d.ts +0 -19
  193. package/dist/types/src/extensions/command-dialog/hint.d.ts.map +0 -1
  194. package/dist/types/src/extensions/command-dialog/index.d.ts +0 -4
  195. package/dist/types/src/extensions/command-dialog/index.d.ts.map +0 -1
  196. package/dist/types/src/extensions/command-dialog/state.d.ts +0 -16
  197. package/dist/types/src/extensions/command-dialog/state.d.ts.map +0 -1
  198. package/dist/types/src/extensions/command-dialog/typeahead.d.ts +0 -22
  199. package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +0 -1
  200. package/dist/types/src/extensions/command-menu/command-menu.d.ts +0 -20
  201. package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +0 -1
  202. package/dist/types/src/extensions/command-menu/index.d.ts +0 -3
  203. package/dist/types/src/extensions/command-menu/index.d.ts.map +0 -1
  204. package/dist/types/src/extensions/command-menu/placeholder.d.ts +0 -10
  205. package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +0 -1
  206. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +0 -24
  207. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +0 -1
  208. package/dist/types/src/extensions/comments.d.ts +0 -95
  209. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  210. package/dist/types/src/extensions/debug.d.ts +0 -3
  211. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  212. package/dist/types/src/extensions/dnd.d.ts +0 -9
  213. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  214. package/dist/types/src/extensions/factories.d.ts +0 -83
  215. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  216. package/dist/types/src/extensions/floating-menu.d.ts +0 -7
  217. package/dist/types/src/extensions/floating-menu.d.ts.map +0 -1
  218. package/dist/types/src/extensions/focus.d.ts +0 -7
  219. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  220. package/dist/types/src/extensions/folding.d.ts +0 -7
  221. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  222. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  223. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  224. package/dist/types/src/extensions/index.d.ts +0 -27
  225. package/dist/types/src/extensions/index.d.ts.map +0 -1
  226. package/dist/types/src/extensions/json.d.ts +0 -7
  227. package/dist/types/src/extensions/json.d.ts.map +0 -1
  228. package/dist/types/src/extensions/listener.d.ts +0 -11
  229. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  231. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  233. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  235. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  237. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  239. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  241. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  243. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  245. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  247. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  249. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  251. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  253. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  255. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  257. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  258. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  259. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  260. package/dist/types/src/extensions/mention.d.ts +0 -7
  261. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  262. package/dist/types/src/extensions/modes.d.ts +0 -10
  263. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  265. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  266. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  267. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  268. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  269. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  270. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  271. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  272. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  273. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  274. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  275. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  276. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  277. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  279. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  281. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  282. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  283. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  284. package/dist/types/src/extensions/preview/preview.d.ts +0 -29
  285. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  286. package/dist/types/src/extensions/selection.d.ts +0 -24
  287. package/dist/types/src/extensions/selection.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/stories/CommandMenu.stories.d.ts.map +0 -1
  303. package/dist/types/src/styles/index.d.ts +0 -4
  304. package/dist/types/src/styles/index.d.ts.map +0 -1
  305. package/dist/types/src/styles/markdown.d.ts +0 -8
  306. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  307. package/dist/types/src/styles/theme.d.ts +0 -38
  308. package/dist/types/src/styles/theme.d.ts.map +0 -1
  309. package/dist/types/src/styles/tokens.d.ts +0 -3
  310. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  311. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  312. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  313. package/dist/types/src/testing/index.d.ts +0 -3
  314. package/dist/types/src/testing/index.d.ts.map +0 -1
  315. package/dist/types/src/testing/util.d.ts +0 -3
  316. package/dist/types/src/testing/util.d.ts.map +0 -1
  317. package/dist/types/src/types/index.d.ts +0 -2
  318. package/dist/types/src/types/index.d.ts.map +0 -1
  319. package/dist/types/src/types/types.d.ts +0 -21
  320. package/dist/types/src/types/types.d.ts.map +0 -1
  321. package/dist/types/src/util/cursor.d.ts +0 -31
  322. package/dist/types/src/util/cursor.d.ts.map +0 -1
  323. package/dist/types/src/util/debug.d.ts +0 -17
  324. package/dist/types/src/util/debug.d.ts.map +0 -1
  325. package/dist/types/src/util/decorations.d.ts +0 -4
  326. package/dist/types/src/util/decorations.d.ts.map +0 -1
  327. package/dist/types/src/util/dom.d.ts +0 -10
  328. package/dist/types/src/util/dom.d.ts.map +0 -1
  329. package/dist/types/src/util/facet.d.ts +0 -3
  330. package/dist/types/src/util/facet.d.ts.map +0 -1
  331. package/src/components/CommandMenu/CommandMenu.tsx +0 -348
  332. package/src/components/CommandMenu/index.ts +0 -5
  333. package/src/components/EditorToolbar/util.ts +0 -76
  334. package/src/defaults.ts +0 -52
  335. package/src/extensions/annotations.ts +0 -55
  336. package/src/extensions/autocomplete.ts +0 -219
  337. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  338. package/src/extensions/automerge/automerge.test.tsx +0 -78
  339. package/src/extensions/automerge/automerge.ts +0 -86
  340. package/src/extensions/automerge/cursor.ts +0 -28
  341. package/src/extensions/automerge/defs.ts +0 -31
  342. package/src/extensions/automerge/index.ts +0 -5
  343. package/src/extensions/automerge/sync.ts +0 -75
  344. package/src/extensions/automerge/update-automerge.ts +0 -50
  345. package/src/extensions/automerge/update-codemirror.ts +0 -115
  346. package/src/extensions/autoscroll.ts +0 -157
  347. package/src/extensions/awareness/awareness-provider.ts +0 -127
  348. package/src/extensions/awareness/awareness.ts +0 -315
  349. package/src/extensions/awareness/index.ts +0 -6
  350. package/src/extensions/blast.ts +0 -363
  351. package/src/extensions/command-dialog/action.ts +0 -55
  352. package/src/extensions/command-dialog/command-dialog.ts +0 -34
  353. package/src/extensions/command-dialog/hint.ts +0 -103
  354. package/src/extensions/command-dialog/index.ts +0 -7
  355. package/src/extensions/command-dialog/state.ts +0 -90
  356. package/src/extensions/command-dialog/typeahead.ts +0 -129
  357. package/src/extensions/command-menu/command-menu.ts +0 -210
  358. package/src/extensions/command-menu/index.ts +0 -6
  359. package/src/extensions/command-menu/placeholder.ts +0 -113
  360. package/src/extensions/command-menu/useCommandMenu.ts +0 -134
  361. package/src/extensions/comments.ts +0 -597
  362. package/src/extensions/debug.ts +0 -15
  363. package/src/extensions/dnd.ts +0 -37
  364. package/src/extensions/factories.ts +0 -284
  365. package/src/extensions/floating-menu.ts +0 -126
  366. package/src/extensions/focus.ts +0 -36
  367. package/src/extensions/folding.tsx +0 -44
  368. package/src/extensions/hashtag.tsx +0 -68
  369. package/src/extensions/index.ts +0 -30
  370. package/src/extensions/json.ts +0 -57
  371. package/src/extensions/listener.ts +0 -38
  372. package/src/extensions/markdown/action.ts +0 -117
  373. package/src/extensions/markdown/bundle.ts +0 -93
  374. package/src/extensions/markdown/changes.test.ts +0 -26
  375. package/src/extensions/markdown/changes.ts +0 -149
  376. package/src/extensions/markdown/debug.ts +0 -44
  377. package/src/extensions/markdown/decorate.ts +0 -601
  378. package/src/extensions/markdown/formatting.test.ts +0 -498
  379. package/src/extensions/markdown/formatting.ts +0 -1267
  380. package/src/extensions/markdown/highlight.ts +0 -183
  381. package/src/extensions/markdown/image.ts +0 -118
  382. package/src/extensions/markdown/index.ts +0 -13
  383. package/src/extensions/markdown/link.ts +0 -50
  384. package/src/extensions/markdown/parser.test.ts +0 -75
  385. package/src/extensions/markdown/styles.ts +0 -135
  386. package/src/extensions/markdown/table.ts +0 -150
  387. package/src/extensions/mention.ts +0 -41
  388. package/src/extensions/modes.ts +0 -41
  389. package/src/extensions/outliner/commands.ts +0 -270
  390. package/src/extensions/outliner/editor.test.ts +0 -33
  391. package/src/extensions/outliner/editor.ts +0 -184
  392. package/src/extensions/outliner/index.ts +0 -7
  393. package/src/extensions/outliner/outliner.test.ts +0 -100
  394. package/src/extensions/outliner/outliner.ts +0 -167
  395. package/src/extensions/outliner/selection.ts +0 -50
  396. package/src/extensions/outliner/tree.test.ts +0 -168
  397. package/src/extensions/outliner/tree.ts +0 -317
  398. package/src/extensions/preview/index.ts +0 -5
  399. package/src/extensions/preview/preview.ts +0 -190
  400. package/src/extensions/selection.ts +0 -100
  401. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  402. package/src/extensions/tags/extended-markdown.ts +0 -78
  403. package/src/extensions/tags/index.ts +0 -7
  404. package/src/extensions/tags/streamer.ts +0 -243
  405. package/src/extensions/tags/xml-tags.ts +0 -393
  406. package/src/extensions/tags/xml-util.ts +0 -94
  407. package/src/extensions/typewriter.ts +0 -68
  408. package/src/stories/CommandMenu.stories.tsx +0 -158
  409. package/src/styles/index.ts +0 -7
  410. package/src/styles/markdown.ts +0 -26
  411. package/src/styles/theme.ts +0 -268
  412. package/src/styles/tokens.ts +0 -17
  413. package/src/testing/PreviewPopover.tsx +0 -78
  414. package/src/testing/index.ts +0 -6
  415. package/src/testing/util.ts +0 -7
  416. package/src/types/index.ts +0 -5
  417. package/src/types/types.ts +0 -32
  418. package/src/util/cursor.ts +0 -56
  419. package/src/util/debug.ts +0 -64
  420. package/src/util/decorations.ts +0 -21
  421. package/src/util/dom.ts +0 -34
  422. package/src/util/facet.ts +0 -13
@@ -10,20 +10,27 @@ import { createPortal } from 'react-dom';
10
10
 
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { faker } from '@dxos/random';
13
- import { Popover } from '@dxos/react-ui';
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';
13
+ import { Card, Popover, Toolbar } from '@dxos/react-ui';
14
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
15
+ import { Menu, createMenuAction } from '@dxos/react-ui-menu';
16
+ import {
17
+ type PreviewBlock,
18
+ type PreviewLinkRef,
19
+ type PreviewLinkTarget,
20
+ getLinkRef,
21
+ image,
22
+ preview,
23
+ } from '@dxos/ui-editor';
24
+ import { hoverableControls } from '@dxos/ui-theme';
17
25
  import { trim } from '@dxos/util';
18
26
 
19
- import { type PreviewLinkRef, type PreviewLinkTarget, getLinkRef, image, preview } from '../extensions';
20
- import { PreviewPopoverProvider, usePreviewPopover } from '../testing';
27
+ import { type EditorController, EditorPreviewProvider, useEditorPreview } from '../components';
21
28
 
22
29
  import { EditorStory } from './components';
23
30
 
24
- const handlePreviewLookup = async ({ label, ref }: PreviewLinkRef): Promise<PreviewLinkTarget> => {
31
+ const handlePreviewLookup = async ({ dxn, label }: PreviewLinkRef): Promise<PreviewLinkTarget> => {
25
32
  // Random text.
26
- faker.seed(ref.split('').reduce((acc: number, char: string) => acc + char.charCodeAt(0), 1));
33
+ faker.seed(dxn.split('').reduce((acc: number, char: string) => acc + char.charCodeAt(0), 1));
27
34
  const text = Array.from({ length: 2 }, () => faker.lorem.paragraphs()).join('\n\n');
28
35
  return {
29
36
  label,
@@ -43,15 +50,27 @@ const useRefTarget = (link: PreviewLinkRef): PreviewLinkTarget | undefined => {
43
50
  };
44
51
 
45
52
  const PreviewCard = () => {
46
- const { target } = usePreviewPopover('PreviewCard');
53
+ const { target } = useEditorPreview('PreviewCard');
54
+ if (!target) {
55
+ return null;
56
+ }
57
+
47
58
  return (
48
59
  <Popover.Portal>
49
60
  <Popover.Content onOpenAutoFocus={(event) => event.preventDefault()}>
50
- <Popover.Viewport>
51
- <Card.SurfaceRoot role='card--popover'>
52
- <Card.Heading>{target?.label}</Card.Heading>
53
- {target && <Card.Text classNames='line-clamp-3'>{target.text}</Card.Text>}
54
- </Card.SurfaceRoot>
61
+ <Popover.Viewport classNames='dx-card-popover-width'>
62
+ <Card.Root border={false}>
63
+ <Card.Toolbar>
64
+ <Card.Icon toolbar icon='ph--file-text--regular' />
65
+ <Card.Title>{target.label}</Card.Title>
66
+ <Popover.Close asChild>
67
+ <Card.CloseIconButton />
68
+ </Popover.Close>
69
+ </Card.Toolbar>
70
+ <Card.Row>
71
+ <Card.Text variant='description'>{target.text}</Card.Text>
72
+ </Card.Row>
73
+ </Card.Root>
55
74
  </Popover.Viewport>
56
75
  <Popover.Arrow />
57
76
  </Popover.Content>
@@ -70,7 +89,7 @@ type PreviewAction =
70
89
  link: PreviewLinkRef;
71
90
  };
72
91
 
73
- const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElement; view?: EditorView }) => {
92
+ const PreviewBlockComponent = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElement; view?: EditorView }) => {
74
93
  const target = useRefTarget(link);
75
94
 
76
95
  const handleAction = useCallback(
@@ -83,7 +102,7 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
83
102
  }
84
103
 
85
104
  const link = getLinkRef(view.state, node);
86
- if (link?.ref !== action.link.ref) {
105
+ if (link?.dxn !== action.link.dxn) {
87
106
  return;
88
107
  }
89
108
 
@@ -125,41 +144,45 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
125
144
  }
126
145
  }, [handleAction, link, target]);
127
146
 
147
+ const menuItems = useMemo(
148
+ () => [
149
+ createMenuAction('delete', handleDelete, {
150
+ label: link.suggest ? 'Discard' : 'Delete',
151
+ icon: 'ph--x--regular',
152
+ }),
153
+ ...(target
154
+ ? [
155
+ createMenuAction('apply', handleInsert, {
156
+ label: 'Apply',
157
+ icon: 'ph--check--regular',
158
+ }),
159
+ ]
160
+ : []),
161
+ ],
162
+ [handleDelete, handleInsert, link.suggest, target],
163
+ );
164
+
128
165
  return createPortal(
129
- <Card.StaticRoot classNames={hoverableControls}>
130
- <div className='flex items-start'>
166
+ <Menu.Root>
167
+ <Card.Root classNames={hoverableControls}>
131
168
  {!view?.state.readOnly && (
132
- <Card.Toolbar classNames='is-min p-[--dx-cardSpacingInline]'>
133
- {(link.suggest && (
134
- <>
135
- <Card.ToolbarIconButton label='Discard' icon='ph--x--regular' onClick={handleDelete} />
136
- {target && (
137
- <Card.ToolbarIconButton
138
- classNames='bg-successSurface text-successSurfaceText'
139
- label='Apply'
140
- icon='ph--check--regular'
141
- onClick={handleInsert}
142
- />
143
- )}
144
- </>
145
- )) || (
146
- <Card.ToolbarIconButton
147
- iconOnly
148
- label='Delete'
149
- icon='ph--x--regular'
150
- classNames={[hoverableControlItem, hoverableControlItemTransition]}
151
- onClick={handleDelete}
152
- />
153
- )}
169
+ <Card.Toolbar>
170
+ <Card.Icon toolbar icon='ph--bookmark--regular' />
171
+ <Card.Title>{link.label}</Card.Title>
172
+ {/* TODO(wittjosiah): Reconcile with Card.Menu. */}
173
+ <Menu.Trigger asChild disabled={!menuItems?.length}>
174
+ <Toolbar.IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Menu' />
175
+ </Menu.Trigger>
176
+ <Menu.Content items={menuItems} />
154
177
  </Card.Toolbar>
155
178
  )}
156
- <Card.Heading classNames='grow order-first mie-0'>
157
- {/* <span className='text-xs text-subdued mie-2'>Prompt</span> */}
158
- {link.label}
159
- </Card.Heading>
160
- </div>
161
- {target && <Card.Text classNames='line-clamp-3 mbs-0'>{target.text}</Card.Text>}
162
- </Card.StaticRoot>,
179
+ {target && (
180
+ <Card.Row>
181
+ <Card.Text className='text-description'>{target.text}</Card.Text>
182
+ </Card.Row>
183
+ )}
184
+ </Card.Root>
185
+ </Menu.Root>,
163
186
  el,
164
187
  );
165
188
  };
@@ -167,7 +190,7 @@ const PreviewBlock = ({ link, el, view }: { link: PreviewLinkRef; el: HTMLElemen
167
190
  const meta = {
168
191
  title: 'ui/react-ui-editor/Preview',
169
192
  component: EditorStory,
170
- decorators: [withTheme],
193
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
171
194
  parameters: {
172
195
  layout: 'fullscreen',
173
196
  },
@@ -177,53 +200,49 @@ export default meta;
177
200
 
178
201
  type Story = StoryObj<typeof meta>;
179
202
 
203
+ const text = trim`
204
+ # Preview
205
+
206
+ This project is part of the [DXOS](dxn:queue:data:123) SDK.
207
+
208
+ ![DXOS](dxn:queue:data:123)
209
+
210
+ It consists of [ECHO](dxn:queue:data:echo), [HALO](dxn:queue:data:halo), and [MESH](dxn:queue:data:mesh).
211
+
212
+ ## Deep dive
213
+
214
+ ![ECHO](dxn:queue:data:echo)
215
+
216
+ `;
217
+
180
218
  export const Default: Story = {
181
219
  render: () => {
182
- const [view, setView] = useState<EditorView>();
183
- const [previewBlocks, setPreviewBlocks] = useState<{ link: PreviewLinkRef; el: HTMLElement }[]>([]);
220
+ const [controller, setController] = useState<EditorController | null>(null);
221
+ const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);
184
222
  const extensions = useMemo(() => {
185
223
  return [
186
224
  image(),
187
225
  preview({
188
- addBlockContainer: (link, el) => {
189
- setPreviewBlocks((prev) => [...prev, { link, el }]);
226
+ addBlockContainer: (block) => {
227
+ setPreviewBlocks((prev) => [...prev, block]);
190
228
  },
191
- removeBlockContainer: (link) => {
192
- setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));
229
+ removeBlockContainer: (block) => {
230
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== block.link.dxn));
193
231
  },
194
232
  }),
195
233
  ];
196
234
  }, []);
197
235
 
198
- const handleViewRef = useCallback((instance?: EditorView | null) => {
199
- setView(instance ?? undefined);
200
- }, []);
201
-
236
+ // TODO(burdon): Migrate to Editor.Root.
202
237
  return (
203
- <PreviewPopoverProvider onLookup={handlePreviewLookup}>
204
- <EditorStory
205
- ref={handleViewRef}
206
- text={trim`
207
- # Preview
208
-
209
- This project is part of the [DXOS](dxn:queue:data:123) SDK.
210
-
211
- ![DXOS](dxn:queue:data:123)
212
-
213
- It consists of [ECHO](dxn:queue:data:echo), [HALO](dxn:queue:data:halo), and [MESH](dxn:queue:data:mesh).
214
-
215
- ## Deep dive
216
-
217
- ![ECHO](dxn:queue:data:echo)
218
-
219
- `}
220
- extensions={extensions}
221
- />
238
+ <EditorPreviewProvider onLookup={handlePreviewLookup}>
239
+ <EditorStory ref={setController} text={text} extensions={extensions} />
222
240
  <PreviewCard />
223
- {previewBlocks.map(({ link, el }) => (
224
- <PreviewBlock key={link.ref} link={link} el={el} view={view} />
225
- ))}
226
- </PreviewPopoverProvider>
241
+ {controller?.view &&
242
+ previewBlocks.map(({ link, el }) => (
243
+ <PreviewBlockComponent key={link.dxn} link={link} el={el} view={controller.view!} />
244
+ ))}
245
+ </EditorPreviewProvider>
227
246
  );
228
247
  },
229
248
  };
@@ -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
- import { withTheme } from '@dxos/react-ui/testing';
11
- import { trim } from '@dxos/util';
12
-
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
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/>
26
- ['test' as const]: {
25
+ /**
26
+ * Custom tag: <test/>
27
+ */
28
+ test: {
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-sm'>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 }),
@@ -45,8 +64,8 @@ const DefaultStory = ({ text }: { text?: string }) => {
45
64
 
46
65
  return (
47
66
  <>
48
- <div ref={parentRef} className='is-full p-4' />
49
- {widgets.map(({ Component, root, id, ...props }) => (
67
+ <div ref={parentRef} className='w-full p-4' />
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
  `;
@@ -64,7 +87,7 @@ const text = trim`
64
87
  const meta = {
65
88
  title: 'ui/react-ui-editor/Tags',
66
89
  render: DefaultStory,
67
- decorators: [withTheme],
90
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
68
91
  parameters: {
69
92
  layout: 'fullscreen',
70
93
  },
@@ -8,22 +8,19 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
10
  import { log } from '@dxos/log';
11
- import { withTheme } from '@dxos/react-ui/testing';
12
-
13
- import { editorMonospace } from '../defaults';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
14
12
  import {
15
13
  InputModeExtensions,
16
- autocomplete,
17
14
  decorateMarkdown,
18
15
  folding,
19
16
  image,
17
+ join,
20
18
  listener,
21
19
  mention,
22
20
  selectionState,
23
21
  staticCompletion,
24
22
  typeahead,
25
- } from '../extensions';
26
- import { str } from '../testing';
23
+ } from '@dxos/ui-editor';
27
24
 
28
25
  import {
29
26
  EditorStory,
@@ -32,17 +29,15 @@ import {
32
29
  defaultExtensions,
33
30
  global,
34
31
  largeWithImages,
35
- links,
36
32
  longText,
37
33
  names,
38
- renderLinkButton,
39
34
  text,
40
35
  } from './components';
41
36
 
42
37
  const meta = {
43
38
  title: 'ui/react-ui-editor/TextEditor',
44
39
  component: EditorStory,
45
- decorators: [withTheme],
40
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
46
41
  parameters: {
47
42
  layout: 'fullscreen',
48
43
  controls: { disable: true },
@@ -100,7 +95,7 @@ export const NoExtensions: Story = {
100
95
  export const Vim: Story = {
101
96
  render: () => (
102
97
  <EditorStory
103
- 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)}
104
99
  extensions={[defaultExtensions, InputModeExtensions.vim]}
105
100
  />
106
101
  ),
@@ -113,13 +108,13 @@ export const Vim: Story = {
113
108
  export const Listener: Story = {
114
109
  render: () => (
115
110
  <EditorStory
116
- text={str('# Listener', '', content.footer)}
111
+ text={join('# Listener', '', content.footer)}
117
112
  extensions={[
118
113
  listener({
119
- onFocus: (focusing) => {
114
+ onFocus: ({ focusing }) => {
120
115
  log.info('listener', { focusing });
121
116
  },
122
- onChange: (text) => {
117
+ onChange: ({ text }) => {
123
118
  log.info('listener', { text });
124
119
  },
125
120
  }),
@@ -143,7 +138,7 @@ export const Folding: Story = {
143
138
  export const Scrolling: Story = {
144
139
  render: () => (
145
140
  <EditorStory
146
- text={str('# Large Document', '', longText)}
141
+ text={join('# Large Document', '', longText)}
147
142
  extensions={selectionState({
148
143
  setState: (id, state) => global.set(id, state),
149
144
  getState: (id) => global.get(id),
@@ -154,7 +149,7 @@ export const Scrolling: Story = {
154
149
 
155
150
  export const ScrollingWithImages: Story = {
156
151
  render: () => (
157
- <EditorStory text={str('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
152
+ <EditorStory text={join('# Large Document', '', largeWithImages)} extensions={[decorateMarkdown(), image()]} />
158
153
  ),
159
154
  };
160
155
 
@@ -162,7 +157,7 @@ export const ScrollTo: Story = {
162
157
  render: () => {
163
158
  // NOTE: Selection won't appear if text is reformatted.
164
159
  const word = 'Scroll to here...';
165
- const text = str('# Scroll To', longText, '', word, '', longText);
160
+ const text = join('# Scroll To', longText, '', word, '', longText);
166
161
  const idx = text.indexOf(word);
167
162
  return (
168
163
  <EditorStory
@@ -181,33 +176,7 @@ export const ScrollTo: Story = {
181
176
 
182
177
  export const Typescript: Story = {
183
178
  render: () => (
184
- <EditorStory
185
- text={content.typescript}
186
- lineNumbers
187
- extensions={[editorMonospace, javascript({ typescript: true })]}
188
- />
189
- ),
190
- };
191
-
192
- //
193
- // Autocomplete
194
- //
195
-
196
- export const Autocomplete: Story = {
197
- render: () => (
198
- <EditorStory
199
- text={str('# Autocomplete', '', 'Press Ctrl-Space...', content.footer)}
200
- extensions={[
201
- decorateMarkdown({ renderLinkButton }),
202
- autocomplete({
203
- onSuggest: (text) => {
204
- return links
205
- .filter(({ label }) => label.toLowerCase().includes(text.toLowerCase()))
206
- .map(({ label }) => label);
207
- },
208
- }),
209
- ]}
210
- />
179
+ <EditorStory text={content.typescript} lineNumbers monospace extensions={javascript({ typescript: true })} />
211
180
  ),
212
181
  };
213
182
 
@@ -215,14 +184,13 @@ export const Autocomplete: Story = {
215
184
  // Typeahead
216
185
  //
217
186
 
218
- const completions = ['type', 'AND', 'OR', 'NOT', 'dxos.org'];
187
+ const completions = ['hello world!', 'dxos.org'];
219
188
 
220
189
  export const Typeahead: Story = {
221
190
  render: () => (
222
191
  <EditorStory
223
- text={str('# Typeahead', '')}
192
+ text={join('# Typeahead', '')}
224
193
  extensions={[
225
- decorateMarkdown({ renderLinkButton }),
226
194
  typeahead({
227
195
  onComplete: staticCompletion(completions, { minLength: 2 }),
228
196
  }),
@@ -238,7 +206,7 @@ export const Typeahead: Story = {
238
206
  export const Mention: Story = {
239
207
  render: () => (
240
208
  <EditorStory
241
- text={str('# Mention', '', 'Type @...', content.footer)}
209
+ text={join('# Mention', '', 'Type @...', content.footer)}
242
210
  extensions={[
243
211
  mention({
244
212
  onSearch: (text) => names.filter((name) => name.toLowerCase().startsWith(text.toLowerCase())),
@@ -255,7 +223,7 @@ export const Mention: Story = {
255
223
  export const Search: Story = {
256
224
  render: () => (
257
225
  <EditorStory
258
- text={str('# Search', text)}
226
+ text={join('# Search', text)}
259
227
  extensions={defaultExtensions}
260
228
  onReady={(view) => openSearchPanel(view)}
261
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='w-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({ layout: 'fullscreen' })],
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
+ };