@dxos/react-ui-editor 0.8.4-main.406dc2a → 0.8.4-main.422d1c7879

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