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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/dist/lib/browser/index.mjs +1103 -8137
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1103 -8136
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Editor/Editor.d.ts +43 -30
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +16 -20
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/EditorContent/EditorContent.d.ts +31 -0
  12. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  13. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  14. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  16. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  17. package/dist/types/src/{extensions/popover/PopoverMenuProvider.d.ts → components/EditorMenuProvider/EditorMenuProvider.d.ts} +6 -6
  18. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  20. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  25. package/dist/types/src/{extensions/popover → components/EditorMenuProvider}/popover.d.ts +1 -2
  26. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  28. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  30. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  32. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +14 -3
  34. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/actions.d.ts +24 -0
  36. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +8 -7
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +8 -7
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +8 -7
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +4 -11
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/search.d.ts +4 -11
  48. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  50. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  51. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +9 -8
  52. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +4 -1
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +2 -2
  56. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +0 -8
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/{extensions/automerge/automerge.stories.d.ts → stories/Automerge.stories.d.ts} +5 -9
  60. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  61. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  63. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  64. package/dist/types/src/stories/EditorToolbar.stories.d.ts +4 -4
  65. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  66. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  67. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  68. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  69. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  70. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/Popover.stories.d.ts +2 -2
  72. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  74. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  76. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -3
  77. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  79. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  80. package/dist/types/src/stories/components/EditorStory.d.ts +10 -19
  81. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  82. package/dist/types/src/stories/components/util.d.ts +3 -3
  83. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +5 -5
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/util/index.d.ts +0 -5
  87. package/dist/types/src/util/index.d.ts.map +1 -1
  88. package/dist/types/src/util/react.d.ts +5 -1
  89. package/dist/types/src/util/react.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +63 -69
  92. package/src/components/Editor/Editor.stories.tsx +76 -50
  93. package/src/components/Editor/Editor.tsx +160 -63
  94. package/src/components/EditorContent/EditorContent.tsx +83 -0
  95. package/src/components/EditorContent/controller.ts +50 -0
  96. package/src/components/EditorContent/index.ts +6 -0
  97. package/src/{extensions/popover/PopoverMenuProvider.tsx → components/EditorMenuProvider/EditorMenuProvider.tsx} +27 -14
  98. package/src/components/EditorMenuProvider/index.ts +10 -0
  99. package/src/{extensions/popover → components/EditorMenuProvider}/menu-presets.ts +19 -19
  100. package/src/{extensions/popover → components/EditorMenuProvider}/menu.ts +21 -18
  101. package/src/{extensions/popover → components/EditorMenuProvider}/popover.ts +3 -7
  102. package/src/{extensions/popover/usePopoverMenu.ts → components/EditorMenuProvider/useEditorMenu.ts} +21 -21
  103. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +81 -0
  104. package/src/components/EditorPreviewProvider/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +30 -17
  106. package/src/components/EditorToolbar/{lists.ts → actions.ts} +48 -17
  107. package/src/components/EditorToolbar/blocks.ts +5 -5
  108. package/src/components/EditorToolbar/formatting.ts +5 -5
  109. package/src/components/EditorToolbar/headings.ts +5 -4
  110. package/src/components/EditorToolbar/image.ts +9 -2
  111. package/src/components/EditorToolbar/index.ts +3 -7
  112. package/src/components/EditorToolbar/search.ts +9 -2
  113. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  114. package/src/components/EditorToolbar/view-mode.ts +5 -4
  115. package/src/components/index.ts +6 -1
  116. package/src/hooks/useTextEditor.ts +13 -7
  117. package/src/index.ts +0 -10
  118. package/src/stories/Automerge.stories.tsx +175 -0
  119. package/src/stories/CommandDialog.stories.tsx +12 -9
  120. package/src/stories/Comments.stories.tsx +47 -43
  121. package/src/stories/EditorToolbar.stories.tsx +31 -15
  122. package/src/stories/Experimental.stories.tsx +4 -6
  123. package/src/stories/Markdown.stories.tsx +14 -14
  124. package/src/stories/Outliner.stories.tsx +16 -24
  125. package/src/stories/Popover.stories.tsx +40 -45
  126. package/src/stories/Preview.stories.tsx +76 -74
  127. package/src/stories/Tags.stories.tsx +32 -9
  128. package/src/stories/TextEditor.stories.tsx +11 -17
  129. package/src/stories/Theme.stories.tsx +61 -0
  130. package/src/stories/components/EditorStory.tsx +34 -27
  131. package/src/stories/components/util.tsx +43 -11
  132. package/src/translations.ts +4 -4
  133. package/src/util/index.ts +1 -6
  134. package/src/util/react.tsx +6 -2
  135. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  136. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  137. package/dist/lib/browser/testing/index.mjs +0 -76
  138. package/dist/lib/browser/testing/index.mjs.map +0 -7
  139. package/dist/lib/browser/types/index.mjs +0 -13
  140. package/dist/lib/browser/types/index.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  142. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  143. package/dist/lib/node-esm/testing/index.mjs +0 -78
  144. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  145. package/dist/lib/node-esm/types/index.mjs +0 -14
  146. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  147. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  148. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  149. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -37
  150. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  151. package/dist/types/src/defaults.d.ts +0 -14
  152. package/dist/types/src/defaults.d.ts.map +0 -1
  153. package/dist/types/src/extensions/annotations.d.ts +0 -9
  154. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  155. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +0 -26
  156. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
  157. package/dist/types/src/extensions/autocomplete/index.d.ts +0 -5
  158. package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
  159. package/dist/types/src/extensions/autocomplete/match.d.ts +0 -13
  160. package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
  161. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +0 -20
  162. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
  163. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +0 -10
  164. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
  165. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  166. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  167. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  169. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  171. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  173. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  175. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  177. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  179. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  181. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  182. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  183. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  184. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  185. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  186. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  187. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  188. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  189. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  190. package/dist/types/src/extensions/blast.d.ts +0 -25
  191. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  192. package/dist/types/src/extensions/comments.d.ts +0 -95
  193. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  194. package/dist/types/src/extensions/debug.d.ts +0 -3
  195. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  196. package/dist/types/src/extensions/dnd.d.ts +0 -9
  197. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  198. package/dist/types/src/extensions/factories.d.ts +0 -83
  199. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  200. package/dist/types/src/extensions/focus.d.ts +0 -7
  201. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  202. package/dist/types/src/extensions/folding.d.ts +0 -7
  203. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  204. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  205. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  206. package/dist/types/src/extensions/index.d.ts +0 -26
  207. package/dist/types/src/extensions/index.d.ts.map +0 -1
  208. package/dist/types/src/extensions/json.d.ts +0 -7
  209. package/dist/types/src/extensions/json.d.ts.map +0 -1
  210. package/dist/types/src/extensions/listener.d.ts +0 -13
  211. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  212. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  213. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  214. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  215. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  216. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  217. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  218. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  219. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  220. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  221. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  222. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  223. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  224. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -62
  225. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  226. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  227. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  228. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  229. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  231. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  233. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  235. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  237. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  239. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  241. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  242. package/dist/types/src/extensions/mention.d.ts +0 -7
  243. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  244. package/dist/types/src/extensions/modes.d.ts +0 -10
  245. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  246. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  247. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  248. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  249. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  250. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  251. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  252. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  253. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  254. package/dist/types/src/extensions/outliner/menu.d.ts +0 -8
  255. package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
  256. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  257. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  258. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  259. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  260. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  261. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  262. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  263. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  265. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  266. package/dist/types/src/extensions/popover/PopoverMenuProvider.d.ts.map +0 -1
  267. package/dist/types/src/extensions/popover/index.d.ts +0 -8
  268. package/dist/types/src/extensions/popover/index.d.ts.map +0 -1
  269. package/dist/types/src/extensions/popover/menu-presets.d.ts +0 -4
  270. package/dist/types/src/extensions/popover/menu-presets.d.ts.map +0 -1
  271. package/dist/types/src/extensions/popover/menu.d.ts +0 -24
  272. package/dist/types/src/extensions/popover/menu.d.ts.map +0 -1
  273. package/dist/types/src/extensions/popover/modal.d.ts +0 -7
  274. package/dist/types/src/extensions/popover/modal.d.ts.map +0 -1
  275. package/dist/types/src/extensions/popover/popover.d.ts.map +0 -1
  276. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts +0 -34
  277. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts.map +0 -1
  278. package/dist/types/src/extensions/popover/util.d.ts +0 -8
  279. package/dist/types/src/extensions/popover/util.d.ts.map +0 -1
  280. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  281. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  282. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  283. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  284. package/dist/types/src/extensions/selection.d.ts +0 -24
  285. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  286. package/dist/types/src/extensions/state.d.ts +0 -2
  287. package/dist/types/src/extensions/state.d.ts.map +0 -1
  288. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  289. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  290. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  291. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  292. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  293. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  294. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  295. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  296. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  297. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  298. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  299. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  300. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  301. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  302. package/dist/types/src/styles/index.d.ts +0 -4
  303. package/dist/types/src/styles/index.d.ts.map +0 -1
  304. package/dist/types/src/styles/markdown.d.ts +0 -8
  305. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  306. package/dist/types/src/styles/theme.d.ts +0 -38
  307. package/dist/types/src/styles/theme.d.ts.map +0 -1
  308. package/dist/types/src/styles/tokens.d.ts +0 -3
  309. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  310. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  311. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  312. package/dist/types/src/testing/index.d.ts +0 -3
  313. package/dist/types/src/testing/index.d.ts.map +0 -1
  314. package/dist/types/src/testing/util.d.ts +0 -3
  315. package/dist/types/src/testing/util.d.ts.map +0 -1
  316. package/dist/types/src/types/index.d.ts +0 -2
  317. package/dist/types/src/types/index.d.ts.map +0 -1
  318. package/dist/types/src/types/types.d.ts +0 -21
  319. package/dist/types/src/types/types.d.ts.map +0 -1
  320. package/dist/types/src/util/cursor.d.ts +0 -31
  321. package/dist/types/src/util/cursor.d.ts.map +0 -1
  322. package/dist/types/src/util/debug.d.ts +0 -17
  323. package/dist/types/src/util/debug.d.ts.map +0 -1
  324. package/dist/types/src/util/decorations.d.ts +0 -4
  325. package/dist/types/src/util/decorations.d.ts.map +0 -1
  326. package/dist/types/src/util/dom.d.ts +0 -10
  327. package/dist/types/src/util/dom.d.ts.map +0 -1
  328. package/dist/types/src/util/facet.d.ts +0 -3
  329. package/dist/types/src/util/facet.d.ts.map +0 -1
  330. package/src/components/EditorToolbar/util.ts +0 -60
  331. package/src/defaults.ts +0 -52
  332. package/src/extensions/annotations.ts +0 -55
  333. package/src/extensions/autocomplete/autocomplete.ts +0 -220
  334. package/src/extensions/autocomplete/index.ts +0 -8
  335. package/src/extensions/autocomplete/match.ts +0 -46
  336. package/src/extensions/autocomplete/placeholder.ts +0 -117
  337. package/src/extensions/autocomplete/typeahead.ts +0 -87
  338. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  339. package/src/extensions/automerge/automerge.test.tsx +0 -78
  340. package/src/extensions/automerge/automerge.ts +0 -105
  341. package/src/extensions/automerge/cursor.ts +0 -28
  342. package/src/extensions/automerge/defs.ts +0 -31
  343. package/src/extensions/automerge/index.ts +0 -5
  344. package/src/extensions/automerge/sync.ts +0 -79
  345. package/src/extensions/automerge/update-automerge.ts +0 -50
  346. package/src/extensions/automerge/update-codemirror.ts +0 -115
  347. package/src/extensions/autoscroll.ts +0 -157
  348. package/src/extensions/awareness/awareness-provider.ts +0 -127
  349. package/src/extensions/awareness/awareness.ts +0 -315
  350. package/src/extensions/awareness/index.ts +0 -6
  351. package/src/extensions/blast.ts +0 -363
  352. package/src/extensions/comments.ts +0 -597
  353. package/src/extensions/debug.ts +0 -15
  354. package/src/extensions/dnd.ts +0 -37
  355. package/src/extensions/factories.ts +0 -277
  356. package/src/extensions/focus.ts +0 -36
  357. package/src/extensions/folding.tsx +0 -44
  358. package/src/extensions/hashtag.tsx +0 -68
  359. package/src/extensions/index.ts +0 -29
  360. package/src/extensions/json.ts +0 -57
  361. package/src/extensions/listener.ts +0 -32
  362. package/src/extensions/markdown/action.ts +0 -117
  363. package/src/extensions/markdown/bundle.ts +0 -105
  364. package/src/extensions/markdown/changes.test.ts +0 -26
  365. package/src/extensions/markdown/changes.ts +0 -149
  366. package/src/extensions/markdown/debug.ts +0 -44
  367. package/src/extensions/markdown/decorate.ts +0 -601
  368. package/src/extensions/markdown/formatting.test.ts +0 -498
  369. package/src/extensions/markdown/formatting.ts +0 -1267
  370. package/src/extensions/markdown/highlight.ts +0 -183
  371. package/src/extensions/markdown/image.ts +0 -118
  372. package/src/extensions/markdown/index.ts +0 -13
  373. package/src/extensions/markdown/link.ts +0 -50
  374. package/src/extensions/markdown/parser.test.ts +0 -75
  375. package/src/extensions/markdown/styles.ts +0 -135
  376. package/src/extensions/markdown/table.ts +0 -150
  377. package/src/extensions/mention.ts +0 -41
  378. package/src/extensions/modes.ts +0 -41
  379. package/src/extensions/outliner/commands.ts +0 -270
  380. package/src/extensions/outliner/editor.test.ts +0 -33
  381. package/src/extensions/outliner/editor.ts +0 -184
  382. package/src/extensions/outliner/index.ts +0 -7
  383. package/src/extensions/outliner/menu.ts +0 -128
  384. package/src/extensions/outliner/outliner.test.ts +0 -100
  385. package/src/extensions/outliner/outliner.ts +0 -167
  386. package/src/extensions/outliner/selection.ts +0 -50
  387. package/src/extensions/outliner/tree.test.ts +0 -168
  388. package/src/extensions/outliner/tree.ts +0 -317
  389. package/src/extensions/popover/index.ts +0 -12
  390. package/src/extensions/popover/modal.ts +0 -24
  391. package/src/extensions/popover/util.ts +0 -29
  392. package/src/extensions/preview/index.ts +0 -5
  393. package/src/extensions/preview/preview.ts +0 -193
  394. package/src/extensions/selection.ts +0 -100
  395. package/src/extensions/state.ts +0 -7
  396. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  397. package/src/extensions/tags/extended-markdown.ts +0 -78
  398. package/src/extensions/tags/index.ts +0 -7
  399. package/src/extensions/tags/streamer.ts +0 -243
  400. package/src/extensions/tags/xml-tags.ts +0 -393
  401. package/src/extensions/tags/xml-util.ts +0 -94
  402. package/src/extensions/typewriter.ts +0 -68
  403. package/src/styles/index.ts +0 -7
  404. package/src/styles/markdown.ts +0 -26
  405. package/src/styles/theme.ts +0 -269
  406. package/src/styles/tokens.ts +0 -17
  407. package/src/testing/PreviewPopover.tsx +0 -80
  408. package/src/testing/index.ts +0 -6
  409. package/src/testing/util.ts +0 -7
  410. package/src/types/index.ts +0 -5
  411. package/src/types/types.ts +0 -32
  412. package/src/util/cursor.ts +0 -56
  413. package/src/util/debug.ts +0 -64
  414. package/src/util/decorations.ts +0 -21
  415. package/src/util/dom.ts +0 -34
  416. package/src/util/facet.ts +0 -13
@@ -0,0 +1,81 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { createContext } from '@radix-ui/react-context';
6
+ import React, { type PropsWithChildren, type RefObject, useCallback, useEffect, useRef, useState } from 'react';
7
+
8
+ import { addEventListener } from '@dxos/async';
9
+ import { DX_ANCHOR_ACTIVATE, type DxAnchorActivate, Popover } from '@dxos/react-ui';
10
+ import { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/ui-editor';
11
+
12
+ type EditorPreviewPopoverValue = Partial<{
13
+ link: PreviewLinkRef;
14
+ target: PreviewLinkTarget;
15
+ pending: boolean;
16
+ }>;
17
+
18
+ const [EditorPreviewContextProvider, useEditorPreview] = createContext<EditorPreviewPopoverValue>('PreviewPopover', {});
19
+
20
+ export type EditorPreviewProviderProps = PropsWithChildren<{
21
+ onLookup?: (link: PreviewLinkRef) => Promise<PreviewLinkTarget | null | undefined>;
22
+ }>;
23
+
24
+ /**
25
+ * NOTE: In Composer, the DeckPlugin provides the Popover.Root as part of the DeckLayout.
26
+ */
27
+ // TOOD(burdon): Reconcile with PreviewPlugin.
28
+ export const EditorPreviewProvider = ({ children, onLookup }: EditorPreviewProviderProps) => {
29
+ const triggerRef = useRef<HTMLElement | null>(null);
30
+ const [value, setValue] = useState<EditorPreviewPopoverValue>({});
31
+ const [open, setOpen] = useState(false);
32
+
33
+ const handleActivate = useCallback(
34
+ (event: DxAnchorActivate) => {
35
+ const { refId, label, trigger: dxTrigger } = event;
36
+ setValue((value) => ({
37
+ ...value,
38
+ link: { label, ref: refId },
39
+ pending: true,
40
+ }));
41
+
42
+ triggerRef.current = dxTrigger;
43
+ queueMicrotask(() => setOpen(true));
44
+ void onLookup?.({ label, ref: refId }).then((target) =>
45
+ setValue((value) => ({
46
+ ...value,
47
+ target: target ?? undefined,
48
+ pending: false,
49
+ })),
50
+ );
51
+ },
52
+ [onLookup],
53
+ );
54
+
55
+ const [root, setRoot] = useState<HTMLDivElement | null>(null);
56
+ useEffect(() => {
57
+ if (!root || !handleActivate) {
58
+ return;
59
+ }
60
+
61
+ return addEventListener(root, DX_ANCHOR_ACTIVATE as any, handleActivate, {
62
+ capture: true,
63
+ passive: false,
64
+ });
65
+ }, [root, handleActivate]);
66
+
67
+ return (
68
+ <EditorPreviewContextProvider pending={value.pending} link={value.link} target={value.target}>
69
+ <Popover.Root open={open} onOpenChange={setOpen}>
70
+ <Popover.VirtualTrigger virtualRef={triggerRef as unknown as RefObject<HTMLButtonElement>} />
71
+
72
+ {/* Content */}
73
+ <div ref={setRoot} role='none' className='contents'>
74
+ {children}
75
+ </div>
76
+ </Popover.Root>
77
+ </EditorPreviewContextProvider>
78
+ );
79
+ };
80
+
81
+ export { useEditorPreview };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './EditorPreviewProvider';
@@ -2,28 +2,29 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Rx } from '@effect-rx/rx-react';
5
+ import { type EditorView } from '@codemirror/view';
6
+ import { Atom } from '@effect-atom/atom-react';
6
7
  import React, { memo, useMemo } from 'react';
7
8
 
8
- import { rxFromSignal } from '@dxos/app-graph';
9
+ import { type Node } from '@dxos/app-graph';
9
10
  import { ElevationProvider, type ThemedClassName } from '@dxos/react-ui';
10
11
  import {
11
12
  type ActionGraphProps,
13
+ type MenuAction,
12
14
  MenuProvider,
13
15
  ToolbarMenu,
14
16
  createGapSeparator,
15
17
  useMenuActions,
16
18
  } from '@dxos/react-ui-menu';
19
+ import { type EditorViewMode } from '@dxos/ui-editor';
17
20
 
18
- import { type EditorViewMode } from '../../types';
19
-
21
+ import { createLists } from './actions';
20
22
  import { createBlocks } from './blocks';
21
23
  import { createFormatting } from './formatting';
22
24
  import { createHeadings } from './headings';
23
25
  import { createImageUpload } from './image';
24
- import { createLists } from './lists';
25
26
  import { createSearch } from './search';
26
- import { type EditorToolbarActionGraphProps } from './util';
27
+ import { type EditorToolbarState } from './useEditorToolbar';
27
28
  import { createViewMode } from './view-mode';
28
29
 
29
30
  export type EditorToolbarFeatureFlags = Partial<{
@@ -38,20 +39,29 @@ export type EditorToolbarFeatureFlags = Partial<{
38
39
  onViewModeChange: (mode: EditorViewMode) => void;
39
40
  }>;
40
41
 
42
+ export type EditorToolbarActionGraphProps = {
43
+ state: Atom.Atom<EditorToolbarState>;
44
+ getView: () => EditorView;
45
+ // TODO(wittjosiah): Control positioning.
46
+ customActions?: Atom.Atom<ActionGraphProps>;
47
+ };
48
+
41
49
  export type EditorToolbarProps = ThemedClassName<
42
50
  {
43
51
  role?: string;
44
52
  attendableId?: string;
53
+ /** Handler for executing actions. Required when customActions use Operation.invoke. */
54
+ onAction?: (action: MenuAction, params: Node.InvokeProps) => void;
45
55
  } & (EditorToolbarActionGraphProps & EditorToolbarFeatureFlags)
46
56
  >;
47
57
 
48
58
  // TODO(burdon): Remove role dependency.
49
- export const EditorToolbar = memo(({ classNames, role, attendableId, ...props }: EditorToolbarProps) => {
59
+ export const EditorToolbar = memo(({ classNames, role, attendableId, onAction, ...props }: EditorToolbarProps) => {
50
60
  const menuProps = useEditorToolbarActionGraph(props);
51
61
 
52
62
  return (
53
63
  <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
54
- <MenuProvider {...menuProps} attendableId={attendableId}>
64
+ <MenuProvider {...menuProps} attendableId={attendableId} onAction={onAction}>
55
65
  <ToolbarMenu classNames={classNames} textBlockWidth />
56
66
  </MenuProvider>
57
67
  </ElevationProvider>
@@ -89,8 +99,8 @@ const createToolbarActions = ({
89
99
  getView,
90
100
  customActions,
91
101
  ...features
92
- }: ToolbarActionsProps): Rx.Rx<ActionGraphProps> => {
93
- return Rx.make((get) => {
102
+ }: ToolbarActionsProps): Atom.Atom<ActionGraphProps> => {
103
+ return Atom.make((get) => {
94
104
  const graph: ActionGraphProps = {
95
105
  nodes: [],
96
106
  edges: [],
@@ -102,20 +112,23 @@ const createToolbarActions = ({
102
112
  graph.edges.push(...subGraph.edges);
103
113
  };
104
114
 
115
+ // Subscribe to state changes.
116
+ const stateSnapshot = get(state);
117
+
105
118
  if (features?.showHeadings ?? true) {
106
- addSubGraph(graph, get(rxFromSignal(() => createHeadings(state, getView))));
119
+ addSubGraph(graph, createHeadings(stateSnapshot, getView));
107
120
  }
108
121
  if (features?.showFormatting ?? true) {
109
- addSubGraph(graph, get(rxFromSignal(() => createFormatting(state, getView))));
122
+ addSubGraph(graph, createFormatting(stateSnapshot, getView));
110
123
  }
111
124
  if (features?.showLists ?? true) {
112
- addSubGraph(graph, get(rxFromSignal(() => createLists(state, getView))));
125
+ addSubGraph(graph, createLists(stateSnapshot, getView));
113
126
  }
114
127
  if (features?.showBlocks ?? true) {
115
- addSubGraph(graph, get(rxFromSignal(() => createBlocks(state, getView))));
128
+ addSubGraph(graph, createBlocks(stateSnapshot, getView));
116
129
  }
117
130
  if (features?.onImageUpload) {
118
- addSubGraph(graph, get(rxFromSignal(() => createImageUpload(features.onImageUpload!))));
131
+ addSubGraph(graph, createImageUpload(features.onImageUpload!));
119
132
  }
120
133
 
121
134
  addSubGraph(graph, createGapSeparator());
@@ -124,10 +137,10 @@ const createToolbarActions = ({
124
137
  addSubGraph(graph, get(customActions));
125
138
  }
126
139
  if (features?.showSearch ?? true) {
127
- addSubGraph(graph, get(rxFromSignal(() => createSearch(getView))));
140
+ addSubGraph(graph, createSearch(getView));
128
141
  }
129
142
  if (features?.onViewModeChange) {
130
- addSubGraph(graph, get(rxFromSignal(() => createViewMode(state, features.onViewModeChange!))));
143
+ addSubGraph(graph, createViewMode(stateSnapshot, features.onViewModeChange!));
131
144
  }
132
145
 
133
146
  return graph;
@@ -4,12 +4,19 @@
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
6
 
7
- import { type NodeArg } from '@dxos/app-graph';
8
- import { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';
7
+ import { type Node } from '@dxos/app-graph';
8
+ import {
9
+ type MenuItemGroup,
10
+ type ToolbarMenuActionGroupProperties,
11
+ createMenuAction,
12
+ createMenuItemGroup,
13
+ } from '@dxos/react-ui-menu';
14
+ import { List, addList, removeList } from '@dxos/ui-editor';
15
+ import { type MenuActionProperties } from '@dxos/ui-types';
9
16
 
10
- import { List, addList, removeList } from '../../extensions';
17
+ import { translationKey } from '../../translations';
11
18
 
12
- import { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';
19
+ import { type EditorToolbarState } from './useEditorToolbar';
13
20
 
14
21
  const listStyles = {
15
22
  bullet: 'ph--list-bullets--regular',
@@ -17,6 +24,43 @@ const listStyles = {
17
24
  task: 'ph--list-checks--regular',
18
25
  };
19
26
 
27
+ export const createLists = (state: EditorToolbarState, getView: () => EditorView) => {
28
+ const value = state.listStyle ?? '';
29
+ const listGroupAction = createListGroupAction(value);
30
+ const listActionsMap = createListActions(value, getView);
31
+ return {
32
+ nodes: [listGroupAction as Node.NodeArg<any>, ...listActionsMap],
33
+ edges: [
34
+ { source: 'root', target: 'list' },
35
+ ...listActionsMap.map(({ id }) => ({ source: listGroupAction.id, target: id })),
36
+ ],
37
+ };
38
+ };
39
+
40
+ export const createEditorAction = (id: string, props: Partial<MenuActionProperties>, invoke: () => void) => {
41
+ const { label = [`${id} label`, { ns: translationKey }], ...rest } = props;
42
+
43
+ return createMenuAction(id, invoke, {
44
+ label,
45
+ ...rest,
46
+ }) as Node.Action<MenuActionProperties>;
47
+ };
48
+
49
+ export const createEditorActionGroup = (
50
+ id: string,
51
+ props: Omit<ToolbarMenuActionGroupProperties, 'icon'>,
52
+ icon?: string,
53
+ ): MenuItemGroup<ToolbarMenuActionGroupProperties> => {
54
+ const { label = [`${id} label`, { ns: translationKey }], ...rest } = props;
55
+
56
+ return createMenuItemGroup(id, {
57
+ label,
58
+ icon,
59
+ iconOnly: true,
60
+ ...rest,
61
+ }) as MenuItemGroup<ToolbarMenuActionGroupProperties>;
62
+ };
63
+
20
64
  const createListGroupAction = (value: string) =>
21
65
  createEditorActionGroup('list', {
22
66
  variant: 'toggleGroup',
@@ -41,16 +85,3 @@ const createListActions = (value: string, getView: () => EditorView) =>
41
85
  }
42
86
  });
43
87
  });
44
-
45
- export const createLists = (state: EditorToolbarState, getView: () => EditorView) => {
46
- const value = state.listStyle ?? '';
47
- const listGroupAction = createListGroupAction(value);
48
- const listActionsMap = createListActions(value, getView);
49
- return {
50
- nodes: [listGroupAction as NodeArg<any>, ...listActionsMap],
51
- edges: [
52
- { source: 'root', target: 'list' },
53
- ...listActionsMap.map(({ id }) => ({ source: listGroupAction.id, target: id })),
54
- ],
55
- };
56
- };
@@ -4,12 +4,12 @@
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
6
 
7
- import { type NodeArg } from '@dxos/app-graph';
7
+ import { type Node } from '@dxos/app-graph';
8
8
  import { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';
9
+ import { addBlockquote, addCodeblock, insertTable, removeBlockquote, removeCodeblock } from '@dxos/ui-editor';
9
10
 
10
- import { addBlockquote, addCodeblock, insertTable, removeBlockquote, removeCodeblock } from '../../extensions';
11
-
12
- import { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';
11
+ import { createEditorAction, createEditorActionGroup } from './actions';
12
+ import { type EditorToolbarState } from './useEditorToolbar';
13
13
 
14
14
  const createBlockGroupAction = (value: string) =>
15
15
  createEditorActionGroup('block', {
@@ -50,7 +50,7 @@ export const createBlocks = (state: EditorToolbarState, getView: () => EditorVie
50
50
  const blockGroupAction = createBlockGroupAction(value);
51
51
  const blockActions = createBlockActions(value, getView, state.blankLine);
52
52
  return {
53
- nodes: [blockGroupAction as NodeArg<any>, ...blockActions],
53
+ nodes: [blockGroupAction as Node.NodeArg<any>, ...blockActions],
54
54
  edges: [
55
55
  { source: 'root', target: 'block' },
56
56
  ...blockActions.map(({ id }) => ({ source: blockGroupAction.id, target: id })),
@@ -4,12 +4,12 @@
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
6
 
7
- import { type NodeArg } from '@dxos/app-graph';
7
+ import { type Node } from '@dxos/app-graph';
8
8
  import { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';
9
+ import { type Formatting, Inline, addLink, removeLink, setStyle } from '@dxos/ui-editor';
9
10
 
10
- import { type Formatting, Inline, addLink, removeLink, setStyle } from '../../extensions';
11
-
12
- import { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';
11
+ import { createEditorAction, createEditorActionGroup } from './actions';
12
+ import { type EditorToolbarState } from './useEditorToolbar';
13
13
 
14
14
  const formats = {
15
15
  strong: 'ph--text-b--regular',
@@ -56,7 +56,7 @@ export const createFormatting = (state: EditorToolbarState, getView: () => Edito
56
56
  const formattingGroupAction = createFormattingGroup(state);
57
57
  const formattingActions = createFormattingActions(state, getView);
58
58
  return {
59
- nodes: [formattingGroupAction as NodeArg<any>, ...formattingActions],
59
+ nodes: [formattingGroupAction as Node.NodeArg<any>, ...formattingActions],
60
60
  edges: [
61
61
  { source: 'root', target: 'formatting' },
62
62
  ...formattingActions.map(({ id }) => ({ source: formattingGroupAction.id, target: id })),
@@ -4,13 +4,14 @@
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
6
 
7
- import { type NodeArg } from '@dxos/app-graph';
7
+ import { type Node } from '@dxos/app-graph';
8
8
  import { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';
9
+ import { setHeading } from '@dxos/ui-editor';
9
10
 
10
- import { setHeading } from '../../extensions';
11
11
  import { translationKey } from '../../translations';
12
12
 
13
- import { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';
13
+ import { createEditorAction, createEditorActionGroup } from './actions';
14
+ import { type EditorToolbarState } from './useEditorToolbar';
14
15
 
15
16
  const createHeadingGroupAction = (value: string) =>
16
17
  createEditorActionGroup(
@@ -58,7 +59,7 @@ export const createHeadings = (state: EditorToolbarState, getView: () => EditorV
58
59
  const headingGroupAction = createHeadingGroupAction(headingValue);
59
60
  const headingActions = createHeadingActions(headingValue, getView);
60
61
  return {
61
- nodes: [headingGroupAction as NodeArg<any>, ...headingActions],
62
+ nodes: [headingGroupAction as Node.NodeArg<any>, ...headingActions],
62
63
  edges: [
63
64
  { source: 'root', target: 'heading' },
64
65
  ...headingActions.map(({ id }) => ({ source: headingGroupAction.id, target: id })),
@@ -2,7 +2,9 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { createEditorAction } from './util';
5
+ import { type Node } from '@dxos/app-graph';
6
+
7
+ import { createEditorAction } from './actions';
6
8
 
7
9
  const createImageUploadAction = (onImageUpload: () => void) =>
8
10
  createEditorAction(
@@ -14,7 +16,12 @@ const createImageUploadAction = (onImageUpload: () => void) =>
14
16
  onImageUpload,
15
17
  );
16
18
 
17
- export const createImageUpload = (onImageUpload: () => void) => ({
19
+ export const createImageUpload = (
20
+ onImageUpload: () => void,
21
+ ): {
22
+ nodes: Node.NodeArg<any>[];
23
+ edges: Array<{ source: string; target: string }>;
24
+ } => ({
18
25
  nodes: [createImageUploadAction(onImageUpload)],
19
26
  edges: [{ source: 'root', target: 'image' }],
20
27
  });
@@ -3,10 +3,6 @@
3
3
  //
4
4
 
5
5
  export * from './EditorToolbar';
6
- export {
7
- type EditorToolbarState,
8
- type EditorToolbarActionGraphProps,
9
- useEditorToolbarState,
10
- createEditorAction,
11
- createEditorActionGroup,
12
- } from './util';
6
+
7
+ export { createEditorAction, createEditorActionGroup } from './actions';
8
+ export { type EditorToolbarState, useEditorToolbar } from './useEditorToolbar';
@@ -5,7 +5,9 @@
5
5
  import { openSearchPanel } from '@codemirror/search';
6
6
  import { type EditorView } from '@codemirror/view';
7
7
 
8
- import { createEditorAction } from './util';
8
+ import { type Node } from '@dxos/app-graph';
9
+
10
+ import { createEditorAction } from './actions';
9
11
 
10
12
  const createSearchAction = (getView: () => EditorView) =>
11
13
  createEditorAction(
@@ -17,7 +19,12 @@ const createSearchAction = (getView: () => EditorView) =>
17
19
  () => openSearchPanel(getView()),
18
20
  );
19
21
 
20
- export const createSearch = (getView: () => EditorView) => ({
22
+ export const createSearch = (
23
+ getView: () => EditorView,
24
+ ): {
25
+ nodes: Node.NodeArg<any>[];
26
+ edges: Array<{ source: string; target: string }>;
27
+ } => ({
21
28
  nodes: [createSearchAction(getView)],
22
29
  edges: [{ source: 'root', target: 'search' }],
23
30
  });
@@ -0,0 +1,20 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Atom } from '@effect-atom/atom-react';
6
+ import { useMemo } from 'react';
7
+
8
+ import { type EditorViewMode, type Formatting } from '@dxos/ui-editor';
9
+
10
+ // TODO(burdon): Move to extensions.
11
+ export type EditorToolbarState = { viewMode?: EditorViewMode } & Formatting;
12
+
13
+ /**
14
+ * Creates an atom for editor toolbar state.
15
+ * @deprecated Use Editor.Root
16
+ */
17
+ export const useEditorToolbar = (initialState: EditorToolbarState = {}): Atom.Writable<EditorToolbarState> => {
18
+ // TODO(wittjosiah): Including initialState in the deps causes reactivity issues.
19
+ return useMemo(() => Atom.make<EditorToolbarState>(initialState), []);
20
+ };
@@ -2,13 +2,14 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type NodeArg } from '@dxos/app-graph';
5
+ import { type Node } from '@dxos/app-graph';
6
6
  import { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';
7
+ import { type EditorViewMode } from '@dxos/ui-editor';
7
8
 
8
9
  import { translationKey } from '../../translations';
9
- import { type EditorViewMode } from '../../types';
10
10
 
11
- import { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';
11
+ import { createEditorAction, createEditorActionGroup } from './actions';
12
+ import { type EditorToolbarState } from './useEditorToolbar';
12
13
 
13
14
  const createViewModeGroupAction = (value: string) =>
14
15
  createEditorActionGroup(
@@ -45,7 +46,7 @@ export const createViewMode = (state: EditorToolbarState, onViewModeChange: (mod
45
46
  const viewModeGroupAction = createViewModeGroupAction(value);
46
47
  const viewModeActions = createViewModeActions(value, onViewModeChange);
47
48
  return {
48
- nodes: [viewModeGroupAction as NodeArg<any>, ...viewModeActions],
49
+ nodes: [viewModeGroupAction as Node.NodeArg<any>, ...viewModeActions],
49
50
  edges: [
50
51
  { source: 'root', target: 'viewMode' },
51
52
  ...viewModeActions.map(({ id }) => ({ source: viewModeGroupAction.id, target: id })),
@@ -3,4 +3,9 @@
3
3
  //
4
4
 
5
5
  export * from './Editor';
6
- export * from './EditorToolbar';
6
+
7
+ // TODO(burdon): Remove once Editor is fully migrated.
8
+ export { EditorContent, createEditorController } from './EditorContent';
9
+ export * from './EditorMenuProvider';
10
+ export * from './EditorPreviewProvider';
11
+ export { EditorToolbar, type EditorToolbarProps, type EditorToolbarState, useEditorToolbar } from './EditorToolbar';
@@ -17,11 +17,15 @@ import {
17
17
  } from 'react';
18
18
 
19
19
  import { log } from '@dxos/log';
20
+ import {
21
+ type EditorSelection,
22
+ createEditorStateTransaction,
23
+ debugDispatcher,
24
+ documentId,
25
+ modalStateField,
26
+ } from '@dxos/ui-editor';
20
27
  import { type MaybeProvider, getProviderValue, isTruthy } from '@dxos/util';
21
28
 
22
- import { type EditorSelection, createEditorStateTransaction, documentId, modalStateField } from '../extensions';
23
- import { debugDispatcher } from '../util';
24
-
25
29
  let instanceCount = 0;
26
30
 
27
31
  export type CursorInfo = {
@@ -46,7 +50,7 @@ export type UseTextEditorProps = Pick<EditorStateConfig, 'extensions'> & {
46
50
  autoFocus?: boolean;
47
51
  scrollTo?: number;
48
52
  selection?: EditorSelection;
49
- moveToEndOfLine?: boolean;
53
+ selectionEnd?: boolean;
50
54
  debug?: boolean;
51
55
  };
52
56
 
@@ -57,7 +61,7 @@ export const useTextEditor = (
57
61
  props: MaybeProvider<UseTextEditorProps> = {},
58
62
  deps: DependencyList = [],
59
63
  ): UseTextEditor => {
60
- const { id, doc, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } =
64
+ const { id, doc, initialValue, extensions, autoFocus, scrollTo, selection, selectionEnd, debug } =
61
65
  useMemo<UseTextEditorProps>(() => getProviderValue(props), deps ?? []);
62
66
 
63
67
  // NOTE: Increments by 2 in strict mode.
@@ -75,7 +79,7 @@ export const useTextEditor = (
75
79
  if (selection.anchor <= initialValue.length && (selection?.head ?? 0) <= initialValue.length) {
76
80
  initialSelection = selection;
77
81
  }
78
- } else if (moveToEndOfLine && selection === undefined) {
82
+ } else if (selectionEnd && selection === undefined) {
79
83
  const index = initialValue?.indexOf('\n');
80
84
  const anchor = !index || index === -1 ? 0 : index;
81
85
  initialSelection = { anchor };
@@ -104,7 +108,7 @@ export const useTextEditor = (
104
108
  });
105
109
 
106
110
  // Move to end of line after document loaded (unless selection is specified).
107
- if (moveToEndOfLine && !initialSelection) {
111
+ if (selectionEnd && !initialSelection) {
108
112
  const { to } = view.state.doc.lineAt(0);
109
113
  if (to) {
110
114
  view.dispatch({ selection: { anchor: to } });
@@ -156,7 +160,9 @@ export const useTextEditor = (
156
160
  element?.focus();
157
161
  break;
158
162
  }
163
+
159
164
  case 'Enter': {
165
+ event.preventDefault();
160
166
  if (target === currentTarget) {
161
167
  view?.focus();
162
168
  }
package/src/index.ts CHANGED
@@ -4,17 +4,7 @@
4
4
 
5
5
  import { translations } from './translations';
6
6
 
7
- export { type Extension, EditorState } from '@codemirror/state';
8
- export { EditorView, keymap } from '@codemirror/view';
9
- export { tags } from '@lezer/highlight';
10
-
11
- export { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';
12
-
13
7
  export * from './components';
14
- export * from './defaults';
15
- export * from './extensions';
16
8
  export * from './hooks';
17
- export * from './types';
18
- export * from './util';
19
9
 
20
10
  export { translations };