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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/dist/lib/browser/index.mjs +1143 -8424
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1143 -8423
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Editor/Editor.d.ts +43 -21
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  11. package/dist/types/src/components/EditorContent/EditorContent.d.ts +31 -0
  12. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  13. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  14. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  16. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -0
  18. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  20. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +46 -0
  26. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  28. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  30. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  32. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  34. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/actions.d.ts +25 -0
  36. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +9 -7
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +9 -7
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +9 -7
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +5 -11
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/search.d.ts +5 -11
  48. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  50. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  51. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +10 -8
  52. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +4 -2
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +4 -8
  56. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +0 -8
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/{extensions/automerge/automerge.stories.d.ts → stories/Automerge.stories.d.ts} +5 -8
  60. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  61. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  63. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  64. package/dist/types/src/stories/EditorToolbar.stories.d.ts +4 -4
  65. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  66. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  67. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  68. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  69. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  70. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/{CommandMenu.stories.d.ts → Popover.stories.d.ts} +6 -5
  72. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  73. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  74. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  76. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -4
  77. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  79. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  80. package/dist/types/src/stories/components/EditorStory.d.ts +9 -18
  81. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  82. package/dist/types/src/stories/components/util.d.ts +3 -3
  83. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +5 -5
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/util/index.d.ts +0 -5
  87. package/dist/types/src/util/index.d.ts.map +1 -1
  88. package/dist/types/src/util/react.d.ts +6 -5
  89. package/dist/types/src/util/react.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +68 -72
  92. package/src/components/Editor/Editor.stories.tsx +95 -0
  93. package/src/components/Editor/Editor.tsx +167 -56
  94. package/src/components/EditorContent/EditorContent.tsx +83 -0
  95. package/src/components/EditorContent/controller.ts +50 -0
  96. package/src/components/EditorContent/index.ts +6 -0
  97. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +228 -0
  98. package/src/components/EditorMenuProvider/index.ts +10 -0
  99. package/src/components/EditorMenuProvider/menu-presets.ts +124 -0
  100. package/src/components/EditorMenuProvider/menu.ts +70 -0
  101. package/src/components/EditorMenuProvider/popover.ts +285 -0
  102. package/src/components/EditorMenuProvider/useEditorMenu.ts +179 -0
  103. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  104. package/src/components/EditorPreviewProvider/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +102 -105
  106. package/src/components/EditorToolbar/{lists.ts → actions.ts} +48 -17
  107. package/src/components/EditorToolbar/blocks.ts +7 -7
  108. package/src/components/EditorToolbar/formatting.ts +7 -7
  109. package/src/components/EditorToolbar/headings.ts +20 -17
  110. package/src/components/EditorToolbar/image.ts +10 -3
  111. package/src/components/EditorToolbar/index.ts +3 -7
  112. package/src/components/EditorToolbar/search.ts +10 -3
  113. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  114. package/src/components/EditorToolbar/view-mode.ts +7 -6
  115. package/src/components/index.ts +6 -2
  116. package/src/hooks/useTextEditor.ts +33 -27
  117. package/src/index.ts +0 -10
  118. package/src/stories/Automerge.stories.tsx +174 -0
  119. package/src/stories/CommandDialog.stories.tsx +18 -26
  120. package/src/stories/Comments.stories.tsx +48 -44
  121. package/src/stories/EditorToolbar.stories.tsx +36 -21
  122. package/src/stories/Experimental.stories.tsx +6 -8
  123. package/src/stories/Markdown.stories.tsx +16 -16
  124. package/src/stories/Outliner.stories.tsx +20 -21
  125. package/src/stories/Popover.stories.tsx +158 -0
  126. package/src/stories/Preview.stories.tsx +100 -81
  127. package/src/stories/Tags.stories.tsx +36 -13
  128. package/src/stories/TextEditor.stories.tsx +16 -48
  129. package/src/stories/Theme.stories.tsx +61 -0
  130. package/src/stories/components/EditorStory.tsx +32 -25
  131. package/src/stories/components/util.tsx +60 -31
  132. package/src/translations.ts +4 -4
  133. package/src/util/index.ts +1 -6
  134. package/src/util/react.tsx +8 -13
  135. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  136. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  137. package/dist/lib/browser/testing/index.mjs +0 -76
  138. package/dist/lib/browser/testing/index.mjs.map +0 -7
  139. package/dist/lib/browser/types/index.mjs +0 -13
  140. package/dist/lib/browser/types/index.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  142. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  143. package/dist/lib/node-esm/testing/index.mjs +0 -78
  144. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  145. package/dist/lib/node-esm/types/index.mjs +0 -14
  146. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  147. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts +0 -38
  148. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +0 -1
  149. package/dist/types/src/components/CommandMenu/index.d.ts +0 -2
  150. package/dist/types/src/components/CommandMenu/index.d.ts.map +0 -1
  151. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  152. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  153. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  154. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  155. package/dist/types/src/defaults.d.ts +0 -14
  156. package/dist/types/src/defaults.d.ts.map +0 -1
  157. package/dist/types/src/extensions/annotations.d.ts +0 -9
  158. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  159. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  160. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  161. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  162. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  163. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  164. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  165. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  166. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  167. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  169. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  171. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  173. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  175. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  177. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  178. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  179. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  180. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  181. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  182. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  183. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  184. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  185. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  186. package/dist/types/src/extensions/blast.d.ts +0 -25
  187. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  188. package/dist/types/src/extensions/command-dialog/action.d.ts +0 -17
  189. package/dist/types/src/extensions/command-dialog/action.d.ts.map +0 -1
  190. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts +0 -6
  191. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +0 -1
  192. package/dist/types/src/extensions/command-dialog/hint.d.ts +0 -19
  193. package/dist/types/src/extensions/command-dialog/hint.d.ts.map +0 -1
  194. package/dist/types/src/extensions/command-dialog/index.d.ts +0 -4
  195. package/dist/types/src/extensions/command-dialog/index.d.ts.map +0 -1
  196. package/dist/types/src/extensions/command-dialog/state.d.ts +0 -16
  197. package/dist/types/src/extensions/command-dialog/state.d.ts.map +0 -1
  198. package/dist/types/src/extensions/command-dialog/typeahead.d.ts +0 -22
  199. package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +0 -1
  200. package/dist/types/src/extensions/command-menu/command-menu.d.ts +0 -20
  201. package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +0 -1
  202. package/dist/types/src/extensions/command-menu/index.d.ts +0 -3
  203. package/dist/types/src/extensions/command-menu/index.d.ts.map +0 -1
  204. package/dist/types/src/extensions/command-menu/placeholder.d.ts +0 -10
  205. package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +0 -1
  206. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +0 -24
  207. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +0 -1
  208. package/dist/types/src/extensions/comments.d.ts +0 -95
  209. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  210. package/dist/types/src/extensions/debug.d.ts +0 -3
  211. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  212. package/dist/types/src/extensions/dnd.d.ts +0 -9
  213. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  214. package/dist/types/src/extensions/factories.d.ts +0 -83
  215. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  216. package/dist/types/src/extensions/floating-menu.d.ts +0 -7
  217. package/dist/types/src/extensions/floating-menu.d.ts.map +0 -1
  218. package/dist/types/src/extensions/focus.d.ts +0 -7
  219. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  220. package/dist/types/src/extensions/folding.d.ts +0 -7
  221. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  222. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  223. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  224. package/dist/types/src/extensions/index.d.ts +0 -27
  225. package/dist/types/src/extensions/index.d.ts.map +0 -1
  226. package/dist/types/src/extensions/json.d.ts +0 -7
  227. package/dist/types/src/extensions/json.d.ts.map +0 -1
  228. package/dist/types/src/extensions/listener.d.ts +0 -11
  229. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  231. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  233. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  235. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  237. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  239. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  241. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  243. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  245. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  247. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  249. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  251. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  253. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  255. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  257. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  258. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  259. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  260. package/dist/types/src/extensions/mention.d.ts +0 -7
  261. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  262. package/dist/types/src/extensions/modes.d.ts +0 -10
  263. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  265. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  266. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  267. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  268. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  269. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  270. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  271. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  272. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  273. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  274. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  275. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  276. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  277. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  279. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  281. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  282. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  283. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  284. package/dist/types/src/extensions/preview/preview.d.ts +0 -29
  285. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  286. package/dist/types/src/extensions/selection.d.ts +0 -24
  287. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  288. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  289. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  290. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  291. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  292. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  293. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  294. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  295. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  296. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  297. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  298. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  299. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  300. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  301. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  302. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  303. package/dist/types/src/styles/index.d.ts +0 -4
  304. package/dist/types/src/styles/index.d.ts.map +0 -1
  305. package/dist/types/src/styles/markdown.d.ts +0 -8
  306. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  307. package/dist/types/src/styles/theme.d.ts +0 -38
  308. package/dist/types/src/styles/theme.d.ts.map +0 -1
  309. package/dist/types/src/styles/tokens.d.ts +0 -3
  310. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  311. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  312. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  313. package/dist/types/src/testing/index.d.ts +0 -3
  314. package/dist/types/src/testing/index.d.ts.map +0 -1
  315. package/dist/types/src/testing/util.d.ts +0 -3
  316. package/dist/types/src/testing/util.d.ts.map +0 -1
  317. package/dist/types/src/types/index.d.ts +0 -2
  318. package/dist/types/src/types/index.d.ts.map +0 -1
  319. package/dist/types/src/types/types.d.ts +0 -21
  320. package/dist/types/src/types/types.d.ts.map +0 -1
  321. package/dist/types/src/util/cursor.d.ts +0 -31
  322. package/dist/types/src/util/cursor.d.ts.map +0 -1
  323. package/dist/types/src/util/debug.d.ts +0 -17
  324. package/dist/types/src/util/debug.d.ts.map +0 -1
  325. package/dist/types/src/util/decorations.d.ts +0 -4
  326. package/dist/types/src/util/decorations.d.ts.map +0 -1
  327. package/dist/types/src/util/dom.d.ts +0 -10
  328. package/dist/types/src/util/dom.d.ts.map +0 -1
  329. package/dist/types/src/util/facet.d.ts +0 -3
  330. package/dist/types/src/util/facet.d.ts.map +0 -1
  331. package/src/components/CommandMenu/CommandMenu.tsx +0 -348
  332. package/src/components/CommandMenu/index.ts +0 -5
  333. package/src/components/EditorToolbar/util.ts +0 -76
  334. package/src/defaults.ts +0 -52
  335. package/src/extensions/annotations.ts +0 -55
  336. package/src/extensions/autocomplete.ts +0 -219
  337. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  338. package/src/extensions/automerge/automerge.test.tsx +0 -78
  339. package/src/extensions/automerge/automerge.ts +0 -86
  340. package/src/extensions/automerge/cursor.ts +0 -28
  341. package/src/extensions/automerge/defs.ts +0 -31
  342. package/src/extensions/automerge/index.ts +0 -5
  343. package/src/extensions/automerge/sync.ts +0 -75
  344. package/src/extensions/automerge/update-automerge.ts +0 -50
  345. package/src/extensions/automerge/update-codemirror.ts +0 -115
  346. package/src/extensions/autoscroll.ts +0 -157
  347. package/src/extensions/awareness/awareness-provider.ts +0 -127
  348. package/src/extensions/awareness/awareness.ts +0 -315
  349. package/src/extensions/awareness/index.ts +0 -6
  350. package/src/extensions/blast.ts +0 -363
  351. package/src/extensions/command-dialog/action.ts +0 -55
  352. package/src/extensions/command-dialog/command-dialog.ts +0 -34
  353. package/src/extensions/command-dialog/hint.ts +0 -103
  354. package/src/extensions/command-dialog/index.ts +0 -7
  355. package/src/extensions/command-dialog/state.ts +0 -90
  356. package/src/extensions/command-dialog/typeahead.ts +0 -129
  357. package/src/extensions/command-menu/command-menu.ts +0 -210
  358. package/src/extensions/command-menu/index.ts +0 -6
  359. package/src/extensions/command-menu/placeholder.ts +0 -113
  360. package/src/extensions/command-menu/useCommandMenu.ts +0 -134
  361. package/src/extensions/comments.ts +0 -597
  362. package/src/extensions/debug.ts +0 -15
  363. package/src/extensions/dnd.ts +0 -37
  364. package/src/extensions/factories.ts +0 -284
  365. package/src/extensions/floating-menu.ts +0 -126
  366. package/src/extensions/focus.ts +0 -36
  367. package/src/extensions/folding.tsx +0 -44
  368. package/src/extensions/hashtag.tsx +0 -68
  369. package/src/extensions/index.ts +0 -30
  370. package/src/extensions/json.ts +0 -57
  371. package/src/extensions/listener.ts +0 -38
  372. package/src/extensions/markdown/action.ts +0 -117
  373. package/src/extensions/markdown/bundle.ts +0 -93
  374. package/src/extensions/markdown/changes.test.ts +0 -26
  375. package/src/extensions/markdown/changes.ts +0 -149
  376. package/src/extensions/markdown/debug.ts +0 -44
  377. package/src/extensions/markdown/decorate.ts +0 -601
  378. package/src/extensions/markdown/formatting.test.ts +0 -498
  379. package/src/extensions/markdown/formatting.ts +0 -1267
  380. package/src/extensions/markdown/highlight.ts +0 -183
  381. package/src/extensions/markdown/image.ts +0 -118
  382. package/src/extensions/markdown/index.ts +0 -13
  383. package/src/extensions/markdown/link.ts +0 -50
  384. package/src/extensions/markdown/parser.test.ts +0 -75
  385. package/src/extensions/markdown/styles.ts +0 -135
  386. package/src/extensions/markdown/table.ts +0 -150
  387. package/src/extensions/mention.ts +0 -41
  388. package/src/extensions/modes.ts +0 -41
  389. package/src/extensions/outliner/commands.ts +0 -270
  390. package/src/extensions/outliner/editor.test.ts +0 -33
  391. package/src/extensions/outliner/editor.ts +0 -184
  392. package/src/extensions/outliner/index.ts +0 -7
  393. package/src/extensions/outliner/outliner.test.ts +0 -100
  394. package/src/extensions/outliner/outliner.ts +0 -167
  395. package/src/extensions/outliner/selection.ts +0 -50
  396. package/src/extensions/outliner/tree.test.ts +0 -168
  397. package/src/extensions/outliner/tree.ts +0 -317
  398. package/src/extensions/preview/index.ts +0 -5
  399. package/src/extensions/preview/preview.ts +0 -190
  400. package/src/extensions/selection.ts +0 -100
  401. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  402. package/src/extensions/tags/extended-markdown.ts +0 -78
  403. package/src/extensions/tags/index.ts +0 -7
  404. package/src/extensions/tags/streamer.ts +0 -243
  405. package/src/extensions/tags/xml-tags.ts +0 -393
  406. package/src/extensions/tags/xml-util.ts +0 -94
  407. package/src/extensions/typewriter.ts +0 -68
  408. package/src/stories/CommandMenu.stories.tsx +0 -158
  409. package/src/styles/index.ts +0 -7
  410. package/src/styles/markdown.ts +0 -26
  411. package/src/styles/theme.ts +0 -268
  412. package/src/styles/tokens.ts +0 -17
  413. package/src/testing/PreviewPopover.tsx +0 -78
  414. package/src/testing/index.ts +0 -6
  415. package/src/testing/util.ts +0 -7
  416. package/src/types/index.ts +0 -5
  417. package/src/types/types.ts +0 -32
  418. package/src/util/cursor.ts +0 -56
  419. package/src/util/debug.ts +0 -64
  420. package/src/util/decorations.ts +0 -21
  421. package/src/util/dom.ts +0 -34
  422. package/src/util/facet.ts +0 -13
@@ -2,134 +2,131 @@
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 { ElevationProvider } from '@dxos/react-ui';
10
- import {
11
- type ActionGraphProps,
12
- MenuProvider,
13
- ToolbarMenu,
14
- createGapSeparator,
15
- useMenuActions,
16
- } from '@dxos/react-ui-menu';
9
+ import { type Node } from '@dxos/app-graph';
10
+ import { ElevationProvider, type ThemedClassName } from '@dxos/react-ui';
11
+ import { type ActionGraphProps, Menu, type MenuAction, MenuBuilder, useMenuActions } from '@dxos/react-ui-menu';
12
+ import { type EditorViewMode } from '@dxos/ui-editor';
17
13
 
14
+ import { createLists } from './actions';
18
15
  import { createBlocks } from './blocks';
19
16
  import { createFormatting } from './formatting';
20
17
  import { createHeadings } from './headings';
21
18
  import { createImageUpload } from './image';
22
- import { createLists } from './lists';
23
19
  import { createSearch } from './search';
24
- import { type EditorToolbarActionGraphProps, type EditorToolbarFeatureFlags, type EditorToolbarProps } from './util';
20
+ import { type EditorToolbarState } from './useEditorToolbar';
25
21
  import { createViewMode } from './view-mode';
26
22
 
23
+ export type EditorToolbarFeatureFlags = Partial<{
24
+ showHeadings: boolean;
25
+ showFormatting: boolean;
26
+ showLists: boolean;
27
+ showBlocks: boolean;
28
+ showSearch: boolean;
29
+
30
+ // TODO(wittjosiah): Factor out (depends on plugin-level capabilities.)
31
+ onImageUpload: () => void;
32
+ onViewModeChange: (mode: EditorViewMode) => void;
33
+ }>;
34
+
35
+ export type EditorToolbarActionGraphProps = {
36
+ state: Atom.Atom<EditorToolbarState>;
37
+ getView: () => EditorView;
38
+ // TODO(wittjosiah): Control positioning.
39
+ customActions?: Atom.Atom<ActionGraphProps>;
40
+ };
41
+
42
+ export type EditorToolbarProps = ThemedClassName<
43
+ {
44
+ role?: string;
45
+ attendableId?: string;
46
+ /** Handler for executing actions. Required when customActions use Operation.invoke. */
47
+ onAction?: (action: MenuAction, params: Node.InvokeProps) => void;
48
+ } & (EditorToolbarActionGraphProps & EditorToolbarFeatureFlags)
49
+ >;
50
+
51
+ export const EditorToolbar = memo(({ classNames, role, attendableId, onAction, ...props }: EditorToolbarProps) => {
52
+ const menuProps = useEditorToolbarActionGraph(props);
53
+
54
+ return (
55
+ <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
56
+ <Menu.Root {...menuProps} attendableId={attendableId} onAction={onAction}>
57
+ <Menu.Toolbar classNames={classNames} textBlockWidth />
58
+ </Menu.Root>
59
+ </ElevationProvider>
60
+ );
61
+ });
62
+
63
+ type ToolbarActionsProps = Pick<EditorToolbarActionGraphProps, 'state' | 'getView' | 'customActions'> &
64
+ EditorToolbarFeatureFlags;
65
+
66
+ // TODO(wittjosiah): Toolbar re-rendering is causing this graph to be recreated and breaking reactivity in some cases.
67
+ // E.g. for toolbar dropdowns which use active icon, the icon is not updated when the active item changes.
68
+ // This is currently only happening in the markdown plugin usage and should be reproduced in an editor story.
69
+ // TODO(burdon): Some actions should toggle the state (e.g., toggle bullets on/off depending on the current state).
70
+ const useEditorToolbarActionGraph = ({ state, getView, customActions, ...features }: ToolbarActionsProps) => {
71
+ const menuCreator = useMemo(
72
+ () => createToolbarActions({ state, getView, customActions, ...features }),
73
+ [
74
+ state,
75
+ getView,
76
+ customActions,
77
+ features?.showHeadings,
78
+ features?.showFormatting,
79
+ features?.showLists,
80
+ features?.showBlocks,
81
+ features?.showSearch,
82
+ features?.onImageUpload,
83
+ features?.onViewModeChange,
84
+ ],
85
+ );
86
+
87
+ return useMenuActions(menuCreator);
88
+ };
89
+
27
90
  const createToolbarActions = ({
28
- getView,
29
91
  state,
92
+ getView,
30
93
  customActions,
31
94
  ...features
32
- }: EditorToolbarFeatureFlags &
33
- Pick<EditorToolbarActionGraphProps, 'getView' | 'state' | 'customActions'>): Rx.Rx<ActionGraphProps> => {
34
- return Rx.make((get) => {
35
- const graph: ActionGraphProps = {
36
- nodes: [],
37
- edges: [],
38
- };
39
-
40
- if (features.headings ?? true) {
41
- const headings = get(rxFromSignal(() => createHeadings(state, getView)));
42
- graph.nodes.push(...headings.nodes);
43
- graph.edges.push(...headings.edges);
44
- }
45
- if (features.formatting ?? true) {
46
- const formatting = get(rxFromSignal(() => createFormatting(state, getView)));
47
- graph.nodes.push(...formatting.nodes);
48
- graph.edges.push(...formatting.edges);
95
+ }: ToolbarActionsProps): Atom.Atom<ActionGraphProps> => {
96
+ return Atom.make((get) => {
97
+ // Subscribe to state changes.
98
+ const stateSnapshot = get(state);
99
+
100
+ const builder = MenuBuilder.make();
101
+
102
+ if (features?.showHeadings ?? true) {
103
+ builder.subgraph(createHeadings(stateSnapshot, getView));
49
104
  }
50
- if (features.lists ?? true) {
51
- const lists = get(rxFromSignal(() => createLists(state, getView)));
52
- graph.nodes.push(...lists.nodes);
53
- graph.edges.push(...lists.edges);
105
+ if (features?.showFormatting ?? true) {
106
+ builder.subgraph(createFormatting(stateSnapshot, getView));
54
107
  }
55
- if (features.blocks ?? true) {
56
- const blocks = get(rxFromSignal(() => createBlocks(state, getView)));
57
- graph.nodes.push(...blocks.nodes);
58
- graph.edges.push(...blocks.edges);
108
+ if (features?.showLists ?? true) {
109
+ builder.subgraph(createLists(stateSnapshot, getView));
59
110
  }
60
- if (features.image) {
61
- const image = get(rxFromSignal(() => createImageUpload(features.image!)));
62
- graph.nodes.push(...image.nodes);
63
- graph.edges.push(...image.edges);
111
+ if (features?.showBlocks ?? true) {
112
+ builder.subgraph(createBlocks(stateSnapshot, getView));
64
113
  }
65
- {
66
- const gap = createGapSeparator();
67
- graph.nodes.push(...gap.nodes);
68
- graph.edges.push(...gap.edges);
114
+ if (features?.onImageUpload) {
115
+ builder.subgraph(createImageUpload(features.onImageUpload!));
69
116
  }
117
+
118
+ builder.separator('gap');
119
+
70
120
  if (customActions) {
71
- const custom = get(customActions);
72
- graph.nodes.push(...custom.nodes);
73
- graph.edges.push(...custom.edges);
121
+ builder.subgraph(get(customActions));
74
122
  }
75
- if (features.search ?? true) {
76
- const search = get(rxFromSignal(() => createSearch(getView)));
77
- graph.nodes.push(...search.nodes);
78
- graph.edges.push(...search.edges);
123
+ if (features?.showSearch ?? true) {
124
+ builder.subgraph(createSearch(getView));
79
125
  }
80
- if (features.viewMode) {
81
- const viewMode = get(rxFromSignal(() => createViewMode(state, features.viewMode!)));
82
- graph.nodes.push(...viewMode.nodes);
83
- graph.edges.push(...viewMode.edges);
126
+ if (features?.onViewModeChange) {
127
+ builder.subgraph(createViewMode(stateSnapshot, features.onViewModeChange!));
84
128
  }
85
129
 
86
- return graph;
130
+ return builder.build();
87
131
  });
88
132
  };
89
-
90
- // TODO(wittjosiah): Toolbar re-rendering is causing this graph to be recreated and breaking reactivity in some cases.
91
- // E.g. for toolbar dropdowns which use active icon, the icon is not updated when the active item changes.
92
- // This is currently only happening in the markdown plugin usage and should be reproduced in an editor story.
93
- const useEditorToolbarActionGraph = (props: EditorToolbarProps) => {
94
- const menuCreator = useMemo(
95
- () =>
96
- createToolbarActions({
97
- getView: props.getView,
98
- state: props.state,
99
- customActions: props.customActions,
100
- headings: props.headings,
101
- formatting: props.formatting,
102
- lists: props.lists,
103
- blocks: props.blocks,
104
- image: props.image,
105
- search: props.search,
106
- viewMode: props.viewMode,
107
- }),
108
- [
109
- props.getView,
110
- props.state,
111
- props.customActions,
112
- props.headings,
113
- props.formatting,
114
- props.lists,
115
- props.blocks,
116
- props.image,
117
- props.search,
118
- props.viewMode,
119
- ],
120
- );
121
-
122
- return useMenuActions(menuCreator);
123
- };
124
-
125
- export const EditorToolbar = memo(({ classNames, attendableId, role, ...props }: EditorToolbarProps) => {
126
- const menuProps = useEditorToolbarActionGraph(props);
127
-
128
- return (
129
- <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
130
- <MenuProvider {...menuProps} attendableId={attendableId}>
131
- <ToolbarMenu classNames={classNames} textBlockWidth />
132
- </MenuProvider>
133
- </ElevationProvider>
134
- );
135
- });
@@ -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', relation: 'child' },
35
+ ...listActionsMap.map(({ id }) => ({ source: listGroupAction.id, target: id, relation: 'child' })),
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,10 +50,10 @@ 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
- { source: 'root', target: 'block' },
56
- ...blockActions.map(({ id }) => ({ source: blockGroupAction.id, target: id })),
55
+ { source: 'root', target: 'block', relation: 'child' },
56
+ ...blockActions.map(({ id }) => ({ source: blockGroupAction.id, target: id, relation: 'child' })),
57
57
  ],
58
58
  };
59
59
  };
@@ -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,10 +56,10 @@ 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
- { source: 'root', target: 'formatting' },
62
- ...formattingActions.map(({ id }) => ({ source: formattingGroupAction.id, target: id })),
61
+ { source: 'root', target: 'formatting', relation: 'child' },
62
+ ...formattingActions.map(({ id }) => ({ source: formattingGroupAction.id, target: id, relation: 'child' })),
63
63
  ],
64
64
  };
65
65
  };
@@ -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(
@@ -19,20 +20,21 @@ const createHeadingGroupAction = (value: string) =>
19
20
  variant: 'dropdownMenu',
20
21
  applyActive: true,
21
22
  selectCardinality: 'single',
23
+ // TODO(wittjosiah): Remove? Not sure this does anything.
22
24
  value,
23
25
  } as ToolbarMenuActionGroupProperties,
24
26
  'ph--text-h--regular',
25
27
  );
26
28
 
27
- const createHeadingActions = (getView: () => EditorView) =>
29
+ const createHeadingActions = (currentLevel: string, getView: () => EditorView) =>
28
30
  Object.entries({
29
- '0': 'ph--paragraph--regular',
30
- '1': 'ph--text-h-one--regular',
31
- '2': 'ph--text-h-two--regular',
32
- '3': 'ph--text-h-three--regular',
33
- '4': 'ph--text-h-four--regular',
34
- '5': 'ph--text-h-five--regular',
35
- '6': 'ph--text-h-six--regular',
31
+ 0: 'ph--paragraph--regular',
32
+ 1: 'ph--text-h-one--regular',
33
+ 2: 'ph--text-h-two--regular',
34
+ 3: 'ph--text-h-three--regular',
35
+ 4: 'ph--text-h-four--regular',
36
+ 5: 'ph--text-h-five--regular',
37
+ 6: 'ph--text-h-six--regular',
36
38
  }).map(([levelStr, icon]) => {
37
39
  const level = parseInt(levelStr);
38
40
  return createEditorAction(
@@ -40,6 +42,7 @@ const createHeadingActions = (getView: () => EditorView) =>
40
42
  {
41
43
  label: ['heading level label', { count: level, ns: translationKey }],
42
44
  icon,
45
+ checked: levelStr === currentLevel,
43
46
  },
44
47
  () => setHeading(level)(getView()),
45
48
  );
@@ -47,19 +50,19 @@ const createHeadingActions = (getView: () => EditorView) =>
47
50
 
48
51
  const computeHeadingValue = (state: EditorToolbarState) => {
49
52
  const blockType = state ? state.blockType : 'paragraph';
50
- const header = blockType && /heading(\d)/.exec(blockType);
51
- return header ? header[1] : blockType === 'paragraph' || !blockType ? '0' : '';
53
+ const heading = blockType && /heading(\d)/.exec(blockType);
54
+ return heading ? heading[1] : blockType === 'paragraph' || !blockType ? '0' : '';
52
55
  };
53
56
 
54
57
  export const createHeadings = (state: EditorToolbarState, getView: () => EditorView) => {
55
58
  const headingValue = computeHeadingValue(state);
56
59
  const headingGroupAction = createHeadingGroupAction(headingValue);
57
- const headingActions = createHeadingActions(getView);
60
+ const headingActions = createHeadingActions(headingValue, getView);
58
61
  return {
59
- nodes: [headingGroupAction as NodeArg<any>, ...headingActions],
62
+ nodes: [headingGroupAction as Node.NodeArg<any>, ...headingActions],
60
63
  edges: [
61
- { source: 'root', target: 'heading' },
62
- ...headingActions.map(({ id }) => ({ source: headingGroupAction.id, target: id })),
64
+ { source: 'root', target: 'heading', relation: 'child' },
65
+ ...headingActions.map(({ id }) => ({ source: headingGroupAction.id, target: id, relation: 'child' })),
63
66
  ],
64
67
  };
65
68
  };
@@ -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; relation: 'child' }>;
24
+ } => ({
18
25
  nodes: [createImageUploadAction(onImageUpload)],
19
- edges: [{ source: 'root', target: 'image' }],
26
+ edges: [{ source: 'root', target: 'image', relation: 'child' }],
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; relation: 'child' }>;
27
+ } => ({
21
28
  nodes: [createSearchAction(getView)],
22
- edges: [{ source: 'root', target: 'search' }],
29
+ edges: [{ source: 'root', target: 'search', relation: 'child' }],
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,10 +46,10 @@ 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
- { source: 'root', target: 'viewMode' },
51
- ...viewModeActions.map(({ id }) => ({ source: viewModeGroupAction.id, target: id })),
51
+ { source: 'root', target: 'viewMode', relation: 'child' },
52
+ ...viewModeActions.map(({ id }) => ({ source: viewModeGroupAction.id, target: id, relation: 'child' })),
52
53
  ],
53
54
  };
54
55
  };
@@ -2,6 +2,10 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export * from './CommandMenu';
6
5
  export * from './Editor';
7
- 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';