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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/dist/lib/browser/index.mjs +1156 -8352
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1148 -8343
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Editor/Editor.d.ts +41 -29
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +13 -20
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/Editor/EditorView.d.ts +31 -0
  12. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  13. package/dist/types/src/components/Editor/controller.d.ts +10 -0
  14. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  15. package/dist/types/src/{extensions/popover/PopoverMenuProvider.d.ts → components/EditorMenuProvider/EditorMenuProvider.d.ts} +7 -9
  16. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  18. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  20. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  23. package/dist/types/src/{extensions/popover → components/EditorMenuProvider}/popover.d.ts +1 -2
  24. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  26. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  28. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  30. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  32. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  33. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  34. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  36. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  37. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  38. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  40. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  42. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  44. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  46. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/types.d.ts +5 -0
  48. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  49. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  50. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  51. package/dist/types/src/components/index.d.ts +2 -1
  52. package/dist/types/src/components/index.d.ts.map +1 -1
  53. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  54. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  55. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  56. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  57. package/dist/types/src/extensions/index.d.ts +1 -25
  58. package/dist/types/src/extensions/index.d.ts.map +1 -1
  59. package/dist/types/src/hooks/index.d.ts +1 -0
  60. package/dist/types/src/hooks/index.d.ts.map +1 -1
  61. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  62. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  63. package/dist/types/src/hooks/useTextEditor.d.ts +2 -2
  64. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  65. package/dist/types/src/index.d.ts +0 -7
  66. package/dist/types/src/index.d.ts.map +1 -1
  67. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  68. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  69. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  70. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/EditorToolbar.stories.d.ts +29 -27
  72. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  74. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  76. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Outliner.stories.d.ts +2 -2
  78. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Popover.stories.d.ts +3 -3
  80. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  82. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  84. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -3
  85. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  86. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  87. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  88. package/dist/types/src/stories/components/EditorStory.d.ts +11 -20
  89. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  90. package/dist/types/src/stories/components/util.d.ts +3 -3
  91. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  92. package/dist/types/src/translations.d.ts +26 -26
  93. package/dist/types/src/translations.d.ts.map +1 -1
  94. package/dist/types/src/util/index.d.ts +0 -5
  95. package/dist/types/src/util/index.d.ts.map +1 -1
  96. package/dist/types/src/util/react.d.ts +6 -5
  97. package/dist/types/src/util/react.d.ts.map +1 -1
  98. package/dist/types/tsconfig.tsbuildinfo +1 -1
  99. package/package.json +70 -74
  100. package/src/components/Editor/Editor.stories.tsx +68 -51
  101. package/src/components/Editor/Editor.tsx +171 -61
  102. package/src/components/Editor/EditorView.tsx +83 -0
  103. package/src/components/Editor/controller.ts +50 -0
  104. package/src/{extensions/popover/PopoverMenuProvider.tsx → components/EditorMenuProvider/EditorMenuProvider.tsx} +49 -44
  105. package/src/components/EditorMenuProvider/index.ts +10 -0
  106. package/src/{extensions/popover → components/EditorMenuProvider}/menu-presets.ts +20 -19
  107. package/src/{extensions/popover → components/EditorMenuProvider}/menu.ts +21 -18
  108. package/src/{extensions/popover → components/EditorMenuProvider}/popover.ts +3 -11
  109. package/src/{extensions/popover/usePopoverMenu.ts → components/EditorMenuProvider/useEditorMenu.ts} +29 -22
  110. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  111. package/src/components/EditorPreviewProvider/index.ts +5 -0
  112. package/src/components/EditorToolbar/EditorToolbar.tsx +88 -112
  113. package/src/components/EditorToolbar/blocks.ts +55 -48
  114. package/src/components/EditorToolbar/formatting.ts +46 -48
  115. package/src/components/EditorToolbar/headings.ts +47 -51
  116. package/src/components/EditorToolbar/image.ts +16 -14
  117. package/src/components/EditorToolbar/index.ts +2 -7
  118. package/src/components/EditorToolbar/lists.ts +42 -41
  119. package/src/components/EditorToolbar/search.ts +16 -14
  120. package/src/components/EditorToolbar/types.ts +7 -0
  121. package/src/components/EditorToolbar/view-mode.ts +36 -42
  122. package/src/components/index.ts +3 -1
  123. package/src/extensions/Assistant.stories.tsx +111 -0
  124. package/src/extensions/assistant-extension.tsx +223 -0
  125. package/src/extensions/index.ts +2 -26
  126. package/src/hooks/index.ts +1 -0
  127. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  128. package/src/hooks/useTextEditor.ts +13 -7
  129. package/src/index.ts +0 -9
  130. package/src/stories/Automerge.stories.tsx +173 -0
  131. package/src/stories/Comments.stories.tsx +48 -45
  132. package/src/stories/EditorToolbar.stories.tsx +40 -54
  133. package/src/stories/Experimental.stories.tsx +10 -12
  134. package/src/stories/Markdown.stories.tsx +16 -16
  135. package/src/stories/Outliner.stories.tsx +20 -29
  136. package/src/stories/Popover.stories.tsx +47 -53
  137. package/src/stories/Preview.stories.tsx +102 -84
  138. package/src/stories/Tags.stories.tsx +36 -13
  139. package/src/stories/TextEditor.stories.tsx +15 -21
  140. package/src/stories/Theme.stories.tsx +61 -0
  141. package/src/stories/components/EditorStory.tsx +46 -32
  142. package/src/stories/components/util.tsx +90 -59
  143. package/src/translations.ts +30 -25
  144. package/src/util/index.ts +1 -6
  145. package/src/util/react.tsx +8 -13
  146. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  147. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  148. package/dist/lib/browser/testing/index.mjs +0 -76
  149. package/dist/lib/browser/testing/index.mjs.map +0 -7
  150. package/dist/lib/browser/types/index.mjs +0 -13
  151. package/dist/lib/browser/types/index.mjs.map +0 -7
  152. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  153. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  154. package/dist/lib/node-esm/testing/index.mjs +0 -78
  155. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  156. package/dist/lib/node-esm/types/index.mjs +0 -14
  157. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  158. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  159. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  160. package/dist/types/src/defaults.d.ts +0 -14
  161. package/dist/types/src/defaults.d.ts.map +0 -1
  162. package/dist/types/src/extensions/annotations.d.ts +0 -9
  163. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  164. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +0 -26
  165. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
  166. package/dist/types/src/extensions/autocomplete/index.d.ts +0 -5
  167. package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
  168. package/dist/types/src/extensions/autocomplete/match.d.ts +0 -13
  169. package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
  170. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +0 -20
  171. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
  172. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +0 -10
  173. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  175. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -47
  177. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  179. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  181. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  182. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  183. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  184. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  185. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  186. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  187. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  188. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  189. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  190. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  191. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  192. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  193. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  194. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  195. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  196. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  197. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  198. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  199. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  200. package/dist/types/src/extensions/blast.d.ts +0 -25
  201. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  202. package/dist/types/src/extensions/comments.d.ts +0 -95
  203. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  204. package/dist/types/src/extensions/debug.d.ts +0 -3
  205. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  206. package/dist/types/src/extensions/dnd.d.ts +0 -9
  207. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  208. package/dist/types/src/extensions/factories.d.ts +0 -83
  209. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  210. package/dist/types/src/extensions/focus.d.ts +0 -7
  211. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  212. package/dist/types/src/extensions/folding.d.ts +0 -7
  213. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  214. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  215. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  216. package/dist/types/src/extensions/json.d.ts +0 -7
  217. package/dist/types/src/extensions/json.d.ts.map +0 -1
  218. package/dist/types/src/extensions/listener.d.ts +0 -11
  219. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  220. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  221. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  222. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  223. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  224. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  225. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  226. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  227. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  228. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  229. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  231. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  233. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  235. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  237. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  239. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  241. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  243. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  245. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  247. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  249. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  250. package/dist/types/src/extensions/mention.d.ts +0 -7
  251. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  252. package/dist/types/src/extensions/modes.d.ts +0 -10
  253. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  254. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  255. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  256. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  257. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  258. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  259. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  260. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  261. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  262. package/dist/types/src/extensions/outliner/menu.d.ts +0 -8
  263. package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  265. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  266. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  267. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  268. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  269. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  270. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  271. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  272. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  273. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  274. package/dist/types/src/extensions/popover/PopoverMenuProvider.d.ts.map +0 -1
  275. package/dist/types/src/extensions/popover/index.d.ts +0 -8
  276. package/dist/types/src/extensions/popover/index.d.ts.map +0 -1
  277. package/dist/types/src/extensions/popover/menu-presets.d.ts +0 -4
  278. package/dist/types/src/extensions/popover/menu-presets.d.ts.map +0 -1
  279. package/dist/types/src/extensions/popover/menu.d.ts +0 -24
  280. package/dist/types/src/extensions/popover/menu.d.ts.map +0 -1
  281. package/dist/types/src/extensions/popover/modal.d.ts +0 -7
  282. package/dist/types/src/extensions/popover/modal.d.ts.map +0 -1
  283. package/dist/types/src/extensions/popover/popover.d.ts.map +0 -1
  284. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts +0 -34
  285. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts.map +0 -1
  286. package/dist/types/src/extensions/popover/util.d.ts +0 -8
  287. package/dist/types/src/extensions/popover/util.d.ts.map +0 -1
  288. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  289. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  290. package/dist/types/src/extensions/preview/preview.d.ts +0 -28
  291. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  292. package/dist/types/src/extensions/selection.d.ts +0 -24
  293. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  294. package/dist/types/src/extensions/state.d.ts +0 -2
  295. package/dist/types/src/extensions/state.d.ts.map +0 -1
  296. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  297. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  298. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  299. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  300. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  301. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  302. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  303. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  304. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  305. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  306. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  307. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  308. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  309. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  310. package/dist/types/src/stories/CommandDialog.stories.d.ts +0 -14
  311. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +0 -1
  312. package/dist/types/src/styles/index.d.ts +0 -4
  313. package/dist/types/src/styles/index.d.ts.map +0 -1
  314. package/dist/types/src/styles/markdown.d.ts +0 -8
  315. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  316. package/dist/types/src/styles/theme.d.ts +0 -38
  317. package/dist/types/src/styles/theme.d.ts.map +0 -1
  318. package/dist/types/src/styles/tokens.d.ts +0 -3
  319. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  320. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  321. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  322. package/dist/types/src/testing/index.d.ts +0 -3
  323. package/dist/types/src/testing/index.d.ts.map +0 -1
  324. package/dist/types/src/testing/util.d.ts +0 -3
  325. package/dist/types/src/testing/util.d.ts.map +0 -1
  326. package/dist/types/src/types/index.d.ts +0 -2
  327. package/dist/types/src/types/index.d.ts.map +0 -1
  328. package/dist/types/src/types/types.d.ts +0 -21
  329. package/dist/types/src/types/types.d.ts.map +0 -1
  330. package/dist/types/src/util/cursor.d.ts +0 -31
  331. package/dist/types/src/util/cursor.d.ts.map +0 -1
  332. package/dist/types/src/util/debug.d.ts +0 -17
  333. package/dist/types/src/util/debug.d.ts.map +0 -1
  334. package/dist/types/src/util/decorations.d.ts +0 -4
  335. package/dist/types/src/util/decorations.d.ts.map +0 -1
  336. package/dist/types/src/util/dom.d.ts +0 -10
  337. package/dist/types/src/util/dom.d.ts.map +0 -1
  338. package/dist/types/src/util/facet.d.ts +0 -3
  339. package/dist/types/src/util/facet.d.ts.map +0 -1
  340. package/src/components/EditorToolbar/util.ts +0 -76
  341. package/src/defaults.ts +0 -52
  342. package/src/extensions/annotations.ts +0 -55
  343. package/src/extensions/autocomplete/autocomplete.ts +0 -220
  344. package/src/extensions/autocomplete/index.ts +0 -8
  345. package/src/extensions/autocomplete/match.ts +0 -46
  346. package/src/extensions/autocomplete/placeholder.ts +0 -117
  347. package/src/extensions/autocomplete/typeahead.ts +0 -87
  348. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  349. package/src/extensions/automerge/automerge.test.tsx +0 -78
  350. package/src/extensions/automerge/automerge.ts +0 -105
  351. package/src/extensions/automerge/cursor.ts +0 -28
  352. package/src/extensions/automerge/defs.ts +0 -31
  353. package/src/extensions/automerge/index.ts +0 -5
  354. package/src/extensions/automerge/sync.ts +0 -79
  355. package/src/extensions/automerge/update-automerge.ts +0 -50
  356. package/src/extensions/automerge/update-codemirror.ts +0 -115
  357. package/src/extensions/autoscroll.ts +0 -157
  358. package/src/extensions/awareness/awareness-provider.ts +0 -127
  359. package/src/extensions/awareness/awareness.ts +0 -315
  360. package/src/extensions/awareness/index.ts +0 -6
  361. package/src/extensions/blast.ts +0 -363
  362. package/src/extensions/comments.ts +0 -597
  363. package/src/extensions/debug.ts +0 -15
  364. package/src/extensions/dnd.ts +0 -37
  365. package/src/extensions/factories.ts +0 -276
  366. package/src/extensions/focus.ts +0 -36
  367. package/src/extensions/folding.tsx +0 -44
  368. package/src/extensions/hashtag.tsx +0 -68
  369. package/src/extensions/json.ts +0 -57
  370. package/src/extensions/listener.ts +0 -38
  371. package/src/extensions/markdown/action.ts +0 -117
  372. package/src/extensions/markdown/bundle.ts +0 -95
  373. package/src/extensions/markdown/changes.test.ts +0 -26
  374. package/src/extensions/markdown/changes.ts +0 -149
  375. package/src/extensions/markdown/debug.ts +0 -44
  376. package/src/extensions/markdown/decorate.ts +0 -601
  377. package/src/extensions/markdown/formatting.test.ts +0 -498
  378. package/src/extensions/markdown/formatting.ts +0 -1267
  379. package/src/extensions/markdown/highlight.ts +0 -183
  380. package/src/extensions/markdown/image.ts +0 -118
  381. package/src/extensions/markdown/index.ts +0 -13
  382. package/src/extensions/markdown/link.ts +0 -50
  383. package/src/extensions/markdown/parser.test.ts +0 -75
  384. package/src/extensions/markdown/styles.ts +0 -135
  385. package/src/extensions/markdown/table.ts +0 -150
  386. package/src/extensions/mention.ts +0 -41
  387. package/src/extensions/modes.ts +0 -41
  388. package/src/extensions/outliner/commands.ts +0 -270
  389. package/src/extensions/outliner/editor.test.ts +0 -33
  390. package/src/extensions/outliner/editor.ts +0 -184
  391. package/src/extensions/outliner/index.ts +0 -7
  392. package/src/extensions/outliner/menu.ts +0 -128
  393. package/src/extensions/outliner/outliner.test.ts +0 -100
  394. package/src/extensions/outliner/outliner.ts +0 -167
  395. package/src/extensions/outliner/selection.ts +0 -50
  396. package/src/extensions/outliner/tree.test.ts +0 -168
  397. package/src/extensions/outliner/tree.ts +0 -317
  398. package/src/extensions/popover/index.ts +0 -12
  399. package/src/extensions/popover/modal.ts +0 -24
  400. package/src/extensions/popover/util.ts +0 -29
  401. package/src/extensions/preview/index.ts +0 -5
  402. package/src/extensions/preview/preview.ts +0 -188
  403. package/src/extensions/selection.ts +0 -100
  404. package/src/extensions/state.ts +0 -7
  405. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  406. package/src/extensions/tags/extended-markdown.ts +0 -78
  407. package/src/extensions/tags/index.ts +0 -7
  408. package/src/extensions/tags/streamer.ts +0 -243
  409. package/src/extensions/tags/xml-tags.ts +0 -393
  410. package/src/extensions/tags/xml-util.ts +0 -94
  411. package/src/extensions/typewriter.ts +0 -68
  412. package/src/stories/CommandDialog.stories.tsx +0 -78
  413. package/src/styles/index.ts +0 -7
  414. package/src/styles/markdown.ts +0 -26
  415. package/src/styles/theme.ts +0 -269
  416. package/src/styles/tokens.ts +0 -17
  417. package/src/testing/PreviewPopover.tsx +0 -80
  418. package/src/testing/index.ts +0 -6
  419. package/src/testing/util.ts +0 -7
  420. package/src/types/index.ts +0 -5
  421. package/src/types/types.ts +0 -32
  422. package/src/util/cursor.ts +0 -56
  423. package/src/util/debug.ts +0 -64
  424. package/src/util/decorations.ts +0 -21
  425. package/src/util/dom.ts +0 -34
  426. package/src/util/facet.ts +0 -13
@@ -3,80 +3,66 @@
3
3
  //
4
4
 
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
- import React, { useCallback, useState } from 'react';
6
+ import React, { useMemo } from 'react';
7
7
 
8
- import { invariant } from '@dxos/invariant';
9
8
  import { useThemeContext } from '@dxos/react-ui';
10
- import { withTheme } from '@dxos/react-ui/testing';
11
- import { attentionSurface, mx } from '@dxos/react-ui-theme';
12
-
13
- import { EditorToolbar, useEditorToolbarState } from '../components';
14
- import { editorWidth } from '../defaults';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { withRegistry } from '@dxos/storybook-utils';
15
11
  import {
16
- InputModeExtensions,
12
+ type EditorViewMode,
17
13
  createBasicExtensions,
18
14
  createMarkdownExtensions,
19
15
  createThemeExtensions,
20
16
  decorateMarkdown,
17
+ documentSlots,
21
18
  formattingKeymap,
22
- useFormattingState,
23
- } from '../extensions';
24
- import { type UseTextEditorProps, useTextEditor } from '../hooks';
19
+ } from '@dxos/ui-editor';
20
+
21
+ import { Editor } from '../components';
22
+ import { type UseTextEditorProps } from '../hooks';
25
23
  import { translations } from '../translations';
26
- import { type EditorInputMode, type EditorViewMode } from '../types';
27
24
 
28
- type StoryProps = { placeholder?: string } & UseTextEditorProps;
25
+ type DefaultStoryProps = { placeholder?: string; viewMode?: EditorViewMode } & UseTextEditorProps;
29
26
 
30
- const DefaultStory = ({ autoFocus, initialValue, placeholder }: StoryProps) => {
27
+ const DefaultStory = ({ autoFocus, initialValue, placeholder, viewMode = 'source' }: DefaultStoryProps) => {
31
28
  const { themeMode } = useThemeContext();
32
- const toolbarState = useEditorToolbarState({ viewMode: 'source' });
33
- const viewMode = toolbarState.viewMode;
34
- const trackFormatting = useFormattingState(toolbarState);
35
- // TODO(wittjosiah): Provide way to change the input mode.
36
- const [editorInputMode, _setEditorInputMode] = useState<EditorInputMode>('default');
37
- const { parentRef, view } = useTextEditor(
38
- () => ({
39
- autoFocus,
40
- initialValue,
41
- moveToEndOfLine: true,
42
- extensions: [
43
- editorInputMode ? InputModeExtensions[editorInputMode] : [],
44
- createBasicExtensions({ placeholder, lineWrapping: true, readOnly: viewMode === 'readonly', search: true }),
45
- createMarkdownExtensions(),
46
- createThemeExtensions({ themeMode, syntaxHighlighting: true }),
47
- viewMode === 'source' ? [] : decorateMarkdown(),
48
- formattingKeymap(),
49
- trackFormatting,
50
- ],
51
- }),
52
- [editorInputMode, viewMode, themeMode, placeholder],
53
- );
54
29
 
55
- const getView = useCallback(() => {
56
- invariant(view);
57
- return view;
58
- }, [view]);
59
-
60
- const handleViewModeChange = useCallback((mode: EditorViewMode) => {
61
- toolbarState.viewMode = mode;
62
- }, []);
30
+ const extensions = useMemo(
31
+ () => [
32
+ createBasicExtensions({
33
+ placeholder,
34
+ lineWrapping: true,
35
+ readOnly: viewMode === 'readonly',
36
+ search: true,
37
+ }),
38
+ createThemeExtensions({
39
+ themeMode,
40
+ syntaxHighlighting: true,
41
+ slots: documentSlots,
42
+ }),
43
+ createMarkdownExtensions(),
44
+ viewMode === 'source' ? [] : decorateMarkdown(),
45
+ formattingKeymap(),
46
+ ],
47
+ [viewMode, themeMode, placeholder],
48
+ );
63
49
 
64
- // TODO(marijn): This doesn't update the state on view changes.
65
- // Also not sure if view is even guaranteed to exist at this point.
66
50
  return (
67
- <div role='none' className={mx('fixed inset-0 flex flex-col')}>
68
- {toolbarState && <EditorToolbar state={toolbarState} getView={getView} viewMode={handleViewModeChange} />}
69
- <div role='none' className={mx('grow overflow-hidden', attentionSurface)}>
70
- <div className={mx(editorWidth)} ref={parentRef} />
71
- </div>
72
- </div>
51
+ <Editor.Root extensions={extensions} viewMode={viewMode}>
52
+ <Editor.Content>
53
+ <Editor.Toolbar classNames='dx-document' />
54
+ <div role='none' className='dx-container dx-document bg-base-surface'>
55
+ <Editor.View autoFocus={autoFocus} initialValue={initialValue} selectionEnd />
56
+ </div>
57
+ </Editor.Content>
58
+ </Editor.Root>
73
59
  );
74
60
  };
75
61
 
76
62
  const meta = {
77
63
  title: 'ui/react-ui-editor/EditorToolbar',
78
64
  render: DefaultStory,
79
- decorators: [withTheme],
65
+ decorators: [withRegistry, withTheme(), withLayout({ layout: 'fullscreen', classNames: 'bg-sidebar-surface' })],
80
66
  parameters: {
81
67
  layout: 'fullscreen',
82
68
  translations,
@@ -91,6 +77,6 @@ export const Default: Story = {
91
77
  args: {
92
78
  autoFocus: true,
93
79
  placeholder: 'Text...',
94
- initialValue: '# Demo\n\nThis is a document.\n\n',
80
+ initialValue: '# Demo\n\nThis is a **document**.\n\n',
95
81
  },
96
82
  };
@@ -7,18 +7,16 @@ import defaultsDeep from 'lodash.defaultsdeep';
7
7
  import React from 'react';
8
8
 
9
9
  import { log } from '@dxos/log';
10
- import { faker } from '@dxos/random';
11
- import { withTheme } from '@dxos/react-ui/testing';
12
-
13
- import { blast, defaultOptions, dropFile, typewriter } from '../extensions';
14
- import { str } from '../testing';
10
+ import { random } from '@dxos/random';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
+ import { blast, defaultOptions, dropFile, join, typewriter } from '@dxos/ui-editor';
15
13
 
16
14
  import { EditorStory, content } from './components';
17
15
 
18
16
  const meta = {
19
17
  title: 'ui/react-ui-editor/Experimental',
20
18
  component: EditorStory,
21
- decorators: [withTheme],
19
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
22
20
  parameters: {
23
21
  layout: 'fullscreen',
24
22
  },
@@ -32,12 +30,12 @@ type Story = StoryObj<typeof meta>;
32
30
  // Typewriter
33
31
  //
34
32
 
35
- const typewriterItems = localStorage.getItem('dxos.org/testing/typewriter')?.split(',');
33
+ const typewriterItems = localStorage.getItem('org.dxos.testing.typewriter')?.split(',');
36
34
 
37
35
  export const Typewriter: Story = {
38
36
  render: () => (
39
37
  <EditorStory
40
- text={str('# Typewriter', '', content.paragraphs, content.footer)}
38
+ text={join('# Typewriter', '', content.paragraphs, content.footer)}
41
39
  extensions={[typewriter({ items: typewriterItems })]}
42
40
  />
43
41
  ),
@@ -50,7 +48,7 @@ export const Typewriter: Story = {
50
48
  export const Blast: Story = {
51
49
  render: () => (
52
50
  <EditorStory
53
- text={str('# Blast', '', content.paragraphs, content.codeblocks, content.paragraphs)}
51
+ text={join('# Blast', '', content.paragraphs, content.codeblocks, content.paragraphs)}
54
52
  extensions={[
55
53
  typewriter({ items: typewriterItems }),
56
54
  blast(
@@ -59,8 +57,8 @@ export const Blast: Story = {
59
57
  effect: 2,
60
58
  particleGravity: 0.2,
61
59
  particleShrinkRate: 0.995,
62
- color: () => [faker.number.int({ min: 100, max: 200 }), 0, 0],
63
- // color: () => [faker.number.int(256), faker.number.int(256), faker.number.int(256)],
60
+ color: () => [random.number.int({ min: 100, max: 200 }), 0, 0],
61
+ // color: () => [random.number.int(256), random.number.int(256), random.number.int(256)],
64
62
  },
65
63
  defaultOptions,
66
64
  ),
@@ -77,7 +75,7 @@ export const Blast: Story = {
77
75
  export const DND: Story = {
78
76
  render: () => (
79
77
  <EditorStory
80
- text={str('# DND', '')}
78
+ text={join('# DND', '')}
81
79
  extensions={[
82
80
  dropFile({
83
81
  onDrop: (view, event) => {
@@ -6,17 +6,15 @@ import { markdown } from '@codemirror/lang-markdown';
6
6
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
7
  import React from 'react';
8
8
 
9
- import { withTheme } from '@dxos/react-ui/testing';
10
-
11
- import { decorateMarkdown, image, linkTooltip, table } from '../extensions';
12
- import { str } from '../testing';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { decorateMarkdown, image, join, linkTooltip, table } from '@dxos/ui-editor';
13
11
 
14
12
  import { EditorStory, content, defaultExtensions, headings, renderLinkTooltip, text } from './components';
15
13
 
16
14
  const meta = {
17
15
  title: 'ui/react-ui-editor/Markdown',
18
16
  component: EditorStory,
19
- decorators: [withTheme],
17
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
20
18
  parameters: {
21
19
  layout: 'fullscreen',
22
20
  },
@@ -37,7 +35,7 @@ export const Default: Story = {
37
35
  export const Blockquote: Story = {
38
36
  render: () => (
39
37
  <EditorStory
40
- text={str('> Blockquote', 'continuation', content.footer)}
38
+ text={join('> Blockquote', 'continuation', content.footer)}
41
39
  extensions={decorateMarkdown()}
42
40
  debug='raw'
43
41
  />
@@ -49,21 +47,23 @@ export const Headings: Story = {
49
47
  };
50
48
 
51
49
  export const Links: Story = {
52
- render: () => <EditorStory text={str(content.links, content.footer)} extensions={[linkTooltip(renderLinkTooltip)]} />,
50
+ render: () => (
51
+ <EditorStory text={join(content.links, content.footer)} extensions={[linkTooltip(renderLinkTooltip)]} />
52
+ ),
53
53
  };
54
54
 
55
55
  export const Image: Story = {
56
- render: () => <EditorStory text={str(content.image, content.footer)} extensions={[image()]} />,
56
+ render: () => <EditorStory text={join(content.image, content.footer)} extensions={[image()]} />,
57
57
  };
58
58
 
59
59
  export const Code: Story = {
60
- render: () => <EditorStory text={str(content.codeblocks, content.footer)} extensions={[decorateMarkdown()]} />,
60
+ render: () => <EditorStory text={join(content.codeblocks, content.footer)} extensions={[decorateMarkdown()]} />,
61
61
  };
62
62
 
63
63
  export const Lists: Story = {
64
64
  render: () => (
65
65
  <EditorStory
66
- text={str(content.tasks, '', content.bullets, '', content.numbered, content.footer)}
66
+ text={join(content.tasks, '', content.bullets, '', content.numbered, content.footer)}
67
67
  extensions={[decorateMarkdown()]}
68
68
  />
69
69
  ),
@@ -74,7 +74,7 @@ export const Lists: Story = {
74
74
  //
75
75
 
76
76
  export const BulletList: Story = {
77
- render: () => <EditorStory text={str(content.bullets, content.footer)} extensions={[decorateMarkdown()]} />,
77
+ render: () => <EditorStory text={join(content.bullets, content.footer)} extensions={[decorateMarkdown()]} />,
78
78
  };
79
79
 
80
80
  //
@@ -82,7 +82,7 @@ export const BulletList: Story = {
82
82
  //
83
83
 
84
84
  export const OrderedList: Story = {
85
- render: () => <EditorStory text={str(content.numbered, content.footer)} extensions={[decorateMarkdown()]} />,
85
+ render: () => <EditorStory text={join(content.numbered, content.footer)} extensions={[decorateMarkdown()]} />,
86
86
  };
87
87
 
88
88
  //
@@ -91,12 +91,12 @@ export const OrderedList: Story = {
91
91
 
92
92
  export const TaskList: Story = {
93
93
  render: () => (
94
- <EditorStory text={str(content.tasks, content.footer)} extensions={[decorateMarkdown()]} debug='raw+tree' />
94
+ <EditorStory text={join(content.tasks, content.footer)} extensions={[decorateMarkdown()]} debug='raw+tree' />
95
95
  ),
96
96
  };
97
97
 
98
98
  export const TaskListEmpty: Story = {
99
- render: () => <EditorStory text={str('- [ ] ')} extensions={[decorateMarkdown()]} debug='raw+tree' />,
99
+ render: () => <EditorStory text={join('- [ ] ')} extensions={[decorateMarkdown()]} debug='raw+tree' />,
100
100
  };
101
101
 
102
102
  //
@@ -104,7 +104,7 @@ export const TaskListEmpty: Story = {
104
104
  //
105
105
 
106
106
  export const Table: Story = {
107
- render: () => <EditorStory text={str(content.table, content.footer)} extensions={[decorateMarkdown(), table()]} />,
107
+ render: () => <EditorStory text={join(content.table, content.footer)} extensions={[decorateMarkdown(), table()]} />,
108
108
  };
109
109
 
110
110
  //
@@ -114,7 +114,7 @@ export const Table: Story = {
114
114
  export const CommentedOut: Story = {
115
115
  render: () => (
116
116
  <EditorStory
117
- text={str('# Commented out', '', content.comment, content.footer)}
117
+ text={join('# Commented out', '', content.comment, content.footer)}
118
118
  extensions={[
119
119
  decorateMarkdown(),
120
120
  markdown(),
@@ -2,34 +2,25 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type EditorView } from '@codemirror/view';
6
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
- import React, { useMemo, useRef } from 'react';
6
+ import React, { useMemo, useState } from 'react';
8
7
 
9
- import { withTheme } from '@dxos/react-ui/testing';
10
8
  import { withAttention } from '@dxos/react-ui-attention/testing';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { deleteItem, hashtag, join, listItemToString, outliner, treeFacet } from '@dxos/ui-editor';
11
11
 
12
- import {
13
- type PopoverMenuGroup,
14
- PopoverMenuProvider,
15
- deleteItem,
16
- hashtag,
17
- listItemToString,
18
- outliner,
19
- treeFacet,
20
- } from '../extensions';
21
- import { str } from '../testing';
22
-
12
+ import { type EditorController, type EditorMenuGroup, EditorMenuProvider } from '../components';
23
13
  import { EditorStory } from './components';
24
14
 
25
- type StoryProps = {
15
+ type DefaultStoryProps = {
26
16
  text?: string;
27
17
  };
28
18
 
29
- const DefaultStory = ({ text }: StoryProps) => {
30
- const viewRef = useRef<EditorView>(null);
19
+ const DefaultStory = ({ text }: DefaultStoryProps) => {
20
+ const [controller, setController] = useState<EditorController | null>(null);
31
21
 
32
- const commandGroups: PopoverMenuGroup[] = useMemo(
22
+ const extensions = useMemo(() => [outliner(), hashtag()], []);
23
+ const commandGroups: EditorMenuGroup[] = useMemo(
33
24
  () => [
34
25
  {
35
26
  id: 'outliner-actions',
@@ -37,7 +28,7 @@ const DefaultStory = ({ text }: StoryProps) => {
37
28
  {
38
29
  id: 'delete-row',
39
30
  label: 'Delete',
40
- onSelect: (view: EditorView) => {
31
+ onSelect: ({ view }) => {
41
32
  deleteItem(view);
42
33
  },
43
34
  },
@@ -48,19 +39,19 @@ const DefaultStory = ({ text }: StoryProps) => {
48
39
  );
49
40
 
50
41
  return (
51
- <PopoverMenuProvider
52
- view={viewRef.current}
42
+ <EditorMenuProvider
43
+ view={controller?.view}
53
44
  groups={commandGroups}
54
45
  onSelect={({ view, item }) => {
55
46
  if (item.onSelect) {
56
- return item.onSelect(view, view.state.selection.main.head);
47
+ return item.onSelect({ view, head: view.state.selection.main.head });
57
48
  }
58
49
  }}
59
50
  >
60
51
  <EditorStory
61
- ref={viewRef}
52
+ ref={setController}
62
53
  text={text}
63
- extensions={[outliner(), hashtag()]}
54
+ extensions={extensions}
64
55
  debug='raw+tree'
65
56
  debugCustom={(view) => {
66
57
  const tree = view.state.facet(treeFacet);
@@ -69,14 +60,14 @@ const DefaultStory = ({ text }: StoryProps) => {
69
60
  return <pre className='p-1 overflow-auto text-xs text-green-800 dark:text-green-200'>{lines.join('\n')}</pre>;
70
61
  }}
71
62
  />
72
- </PopoverMenuProvider>
63
+ </EditorMenuProvider>
73
64
  );
74
65
  };
75
66
 
76
67
  const meta = {
77
68
  title: 'ui/react-ui-editor/Outliner',
78
69
  render: DefaultStory,
79
- decorators: [withTheme, withAttention],
70
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withAttention()],
80
71
  parameters: {
81
72
  layout: 'fullscreen',
82
73
  },
@@ -92,7 +83,7 @@ export const Empty: Story = {
92
83
 
93
84
  export const Basic: Story = {
94
85
  args: {
95
- text: str(
86
+ text: join(
96
87
  //
97
88
  '- [ ] A',
98
89
  '- [ ] B',
@@ -107,7 +98,7 @@ export const Basic: Story = {
107
98
 
108
99
  export const Nested: Story = {
109
100
  args: {
110
- text: str(
101
+ text: join(
111
102
  //
112
103
  '- [ ] A',
113
104
  ' - [ ] B',
@@ -122,7 +113,7 @@ export const Nested: Story = {
122
113
 
123
114
  export const Continuation: Story = {
124
115
  args: {
125
- text: str(
116
+ text: join(
126
117
  //
127
118
  '- [ ] A',
128
119
  '- [ ] B',
@@ -2,71 +2,65 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type EditorView } from '@codemirror/view';
6
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React, { useCallback, useState } from 'react';
8
7
 
9
8
  import { Obj, Query } from '@dxos/echo';
10
- import { faker } from '@dxos/random';
11
- import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
12
- import { Domino } from '@dxos/react-ui';
13
- import { withTheme } from '@dxos/react-ui/testing';
14
- import { Testing, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
9
+ import { random } from '@dxos/random';
10
+ import { useClientStory, withClientProvider } from '@dxos/react-client/testing';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
+ import { TestSchema, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
13
+ import { Domino, mx } from '@dxos/ui';
14
+ import { insertAtCursor, insertAtLineStart, join } from '@dxos/ui-editor';
15
15
 
16
16
  import {
17
- type PopoverMenuGroup,
18
- type PopoverMenuItem,
19
- PopoverMenuProvider,
20
- type UsePopoverMenuProps,
17
+ type EditorController,
18
+ type EditorMenuGroup,
19
+ type EditorMenuItem,
20
+ EditorMenuProvider,
21
+ type UseEditorMenuProps,
21
22
  createMenuGroup,
22
23
  filterMenuGroups,
23
24
  formattingCommands,
24
- insertAtCursor,
25
- insertAtLineStart,
26
25
  linkSlashCommands,
27
- usePopoverMenu,
28
- } from '../extensions';
29
- import { str } from '../testing';
30
-
26
+ useEditorMenu,
27
+ } from '../components';
31
28
  import { EditorStory } from './components';
32
29
 
33
- const generator: ValueGenerator = faker as any;
30
+ const generator: ValueGenerator = random as any;
34
31
 
35
- const customCompletions: PopoverMenuGroup = createMenuGroup({
32
+ const customCompletions: EditorMenuGroup = createMenuGroup({
36
33
  id: 'test',
37
34
  items: ['Hello world!', 'Hello DXOS', 'Hello Composer', 'https://dxos.org'],
38
35
  });
39
36
 
40
- const placeholder = (trigger: string[]) =>
41
- Domino.of('div')
42
- .children(
43
- Domino.of('span').text('Press'),
44
- ...trigger.map((trigger) =>
45
- Domino.of('span')
46
- .text(trigger)
47
- .classNames('border border-separator rounded-sm mx-1 pis-1 pie-1 pbs-[2px] pbe-[3px]'),
48
- ),
49
- Domino.of('span').text('for commands'),
50
- )
51
- .build();
52
-
53
- type StoryProps = Omit<UsePopoverMenuProps, 'viewRef'> & { text: string };
54
-
55
- const DefaultStory = ({ text, ...props }: StoryProps) => {
56
- const [view, setView] = useState<EditorView | null>(null);
57
- const { groupsRef, extension, ...menuProps } = usePopoverMenu(props);
37
+ const placeholder = (trigger: string[]) => {
38
+ const pressEl = Domino.of('span').text('Press');
39
+ const triggerEls = trigger.map((trigger) =>
40
+ Domino.of('span').classNames(mx('border border-separator rounded-xs mx-1 px-1 py-[2px] pb-[3px]')).text(trigger),
41
+ );
42
+ const forCommandsEl = Domino.of('span').text('for commands');
43
+ return Domino.of('div').append(pressEl, ...triggerEls, forCommandsEl).root;
44
+ };
45
+
46
+ type DefaultStoryProps = Omit<UseEditorMenuProps, 'viewRef'> & { text: string };
47
+
48
+ const DefaultStory = ({ text, ...props }: DefaultStoryProps) => {
49
+ const [controller, setController] = useState<EditorController | null>(null);
50
+ const { groupsRef, extension, ...menuProps } = useEditorMenu(props);
58
51
 
59
52
  return (
60
- <PopoverMenuProvider view={view} groups={groupsRef.current} {...menuProps}>
61
- <EditorStory ref={setView} text={text} extensions={extension} />
62
- </PopoverMenuProvider>
53
+ <EditorMenuProvider view={controller?.view} groups={groupsRef.current} {...menuProps}>
54
+ <EditorStory ref={setController} text={text} extensions={extension} />
55
+ </EditorMenuProvider>
63
56
  );
64
57
  };
65
58
 
66
- const LinkStory = (args: StoryProps) => {
67
- const { space } = useClientProvider();
68
- const getMenu = useCallback<NonNullable<UsePopoverMenuProps['getMenu']>>(
69
- async ({ text, trigger }): Promise<PopoverMenuGroup[]> => {
59
+ const LinkStory = (args: DefaultStoryProps) => {
60
+ const { space } = useClientStory();
61
+
62
+ const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(
63
+ async ({ text, trigger }): Promise<EditorMenuGroup[]> => {
70
64
  if (trigger === '/') {
71
65
  return filterMenuGroups([linkSlashCommands], (item) =>
72
66
  text ? (item.label as string).toLowerCase().includes(text.toLowerCase()) : true,
@@ -78,15 +72,15 @@ const LinkStory = (args: StoryProps) => {
78
72
  }
79
73
 
80
74
  const name = text?.startsWith('@') ? text.slice(1).toLowerCase() : (text?.toLowerCase() ?? '');
81
- const result = await space?.db.query(Query.type(Testing.Contact)).run();
82
- const items = result.objects
75
+ const result = await space?.db.query(Query.type(TestSchema.Person)).run();
76
+ const items = result
83
77
  .filter((object) => object.name.toLowerCase().includes(name))
84
78
  .map(
85
- (object): PopoverMenuItem => ({
79
+ (object): EditorMenuItem => ({
86
80
  id: object.id,
87
81
  label: object.name,
88
82
  icon: 'ph--user--regular',
89
- onSelect: (view, head) => {
83
+ onSelect: ({ view, head }) => {
90
84
  const link = `[${object.name}](${Obj.getDXN(object)})`;
91
85
  if (text?.startsWith('@')) {
92
86
  insertAtLineStart(view, head, `!${link}\n`);
@@ -108,7 +102,7 @@ const LinkStory = (args: StoryProps) => {
108
102
  const meta = {
109
103
  title: 'ui/react-ui-editor/Popover',
110
104
  render: DefaultStory,
111
- decorators: [withTheme],
105
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
112
106
  parameters: {
113
107
  layout: 'fullscreen',
114
108
  },
@@ -120,7 +114,7 @@ type Story = StoryObj<typeof meta>;
120
114
 
121
115
  export const Default: Story = {
122
116
  args: {
123
- text: str('# Autocomplete', '', ''),
117
+ text: join('# Autocomplete', '', ''),
124
118
  triggerKey: 'Ctrl-Space',
125
119
  filter: true,
126
120
  getMenu: () => [customCompletions],
@@ -129,7 +123,7 @@ export const Default: Story = {
129
123
 
130
124
  export const Formatting: Story = {
131
125
  args: {
132
- text: str('# Slash command', '', ''),
126
+ text: join('# Slash command', '', ''),
133
127
  trigger: '/',
134
128
  placeholder: {
135
129
  content: () => placeholder(['/']),
@@ -144,17 +138,17 @@ export const Link: Story = {
144
138
  withClientProvider({
145
139
  createSpace: true,
146
140
  onInitialized: async (client) => {
147
- client.addTypes([Testing.Contact]);
141
+ await client.addTypes([TestSchema.Person]);
148
142
  },
149
143
  onCreateSpace: async ({ space }) => {
150
144
  const createObjects = createObjectFactory(space.db, generator);
151
- await createObjects([{ type: Testing.Contact, count: 10 }]);
145
+ await createObjects([{ type: TestSchema.Person, count: 10 }]);
152
146
  await space.db.flush({ indexes: true });
153
147
  },
154
148
  }),
155
149
  ],
156
150
  args: {
157
- text: str('# Links', '', ''),
151
+ text: join('# Links', '', ''),
158
152
  trigger: ['/', '@'],
159
153
  placeholder: {
160
154
  content: () => placeholder(['/', '@']),