@dxos/react-ui-editor 0.8.4-main.dedc0f3 → 0.8.4-main.dfabb4ec29

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 (440) hide show
  1. package/dist/lib/browser/index.mjs +1416 -8735
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/translations.mjs +39 -0
  5. package/dist/lib/browser/translations.mjs.map +7 -0
  6. package/dist/lib/node-esm/index.mjs +1416 -8734
  7. package/dist/lib/node-esm/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/lib/node-esm/translations.mjs +41 -0
  10. package/dist/lib/node-esm/translations.mjs.map +7 -0
  11. package/dist/types/src/components/Editor/Editor.d.ts +54 -15
  12. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  13. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  14. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  15. package/dist/types/src/components/Editor/EditorView.d.ts +31 -0
  16. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  17. package/dist/types/src/components/Editor/controller.d.ts +10 -0
  18. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  20. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  22. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  26. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  28. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  30. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  32. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  34. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  36. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  48. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  50. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/types.d.ts +6 -0
  52. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  53. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  54. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  55. package/dist/types/src/components/index.d.ts +2 -2
  56. package/dist/types/src/components/index.d.ts.map +1 -1
  57. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  58. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  59. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  60. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  61. package/dist/types/src/extensions/index.d.ts +1 -24
  62. package/dist/types/src/extensions/index.d.ts.map +1 -1
  63. package/dist/types/src/hooks/index.d.ts +1 -0
  64. package/dist/types/src/hooks/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  66. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  67. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  68. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  69. package/dist/types/src/index.d.ts +0 -9
  70. package/dist/types/src/index.d.ts.map +1 -1
  71. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  72. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  73. package/dist/types/src/stories/Comments.stories.d.ts +4 -4
  74. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/EditorToolbar.stories.d.ts +30 -29
  76. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Experimental.stories.d.ts +5 -5
  78. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Markdown.stories.d.ts +4 -4
  80. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Outliner.stories.d.ts +2 -3
  82. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/{CommandMenu.stories.d.ts → Popover.stories.d.ts} +6 -6
  84. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  85. package/dist/types/src/stories/Preview.stories.d.ts +5 -4
  86. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  87. package/dist/types/src/stories/Tags.stories.d.ts +0 -1
  88. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  89. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -5
  90. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  91. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  92. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  93. package/dist/types/src/stories/components/EditorStory.d.ts +11 -20
  94. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  95. package/dist/types/src/stories/components/util.d.ts +4 -3
  96. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  97. package/dist/types/src/translations.d.ts +26 -26
  98. package/dist/types/src/translations.d.ts.map +1 -1
  99. package/dist/types/src/util/index.d.ts +0 -6
  100. package/dist/types/src/util/index.d.ts.map +1 -1
  101. package/dist/types/src/util/react.d.ts +6 -5
  102. package/dist/types/src/util/react.d.ts.map +1 -1
  103. package/dist/types/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +85 -78
  105. package/src/components/Editor/Editor.stories.tsx +89 -0
  106. package/src/components/Editor/Editor.tsx +171 -24
  107. package/src/components/Editor/EditorView.tsx +102 -0
  108. package/src/components/Editor/controller.ts +50 -0
  109. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  110. package/src/components/EditorMenuProvider/index.ts +10 -0
  111. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  112. package/src/components/EditorMenuProvider/menu.ts +70 -0
  113. package/src/components/EditorMenuProvider/popover.ts +287 -0
  114. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  115. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  116. package/src/components/EditorPreviewProvider/index.ts +5 -0
  117. package/src/components/EditorToolbar/EditorToolbar.tsx +90 -111
  118. package/src/components/EditorToolbar/blocks.ts +55 -47
  119. package/src/components/EditorToolbar/formatting.ts +44 -45
  120. package/src/components/EditorToolbar/headings.ts +47 -50
  121. package/src/components/EditorToolbar/image.ts +16 -14
  122. package/src/components/EditorToolbar/index.ts +2 -7
  123. package/src/components/EditorToolbar/lists.ts +42 -40
  124. package/src/components/EditorToolbar/search.ts +16 -14
  125. package/src/components/EditorToolbar/types.ts +8 -0
  126. package/src/components/EditorToolbar/view-mode.ts +37 -42
  127. package/src/components/index.ts +3 -2
  128. package/src/extensions/Assistant.stories.tsx +112 -0
  129. package/src/extensions/assistant-extension.tsx +223 -0
  130. package/src/extensions/index.ts +2 -25
  131. package/src/hooks/index.ts +1 -0
  132. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  133. package/src/hooks/useTextEditor.ts +39 -45
  134. package/src/index.ts +0 -13
  135. package/src/stories/Automerge.stories.tsx +174 -0
  136. package/src/stories/Comments.stories.tsx +52 -48
  137. package/src/stories/EditorToolbar.stories.tsx +46 -58
  138. package/src/stories/Experimental.stories.tsx +17 -19
  139. package/src/stories/Markdown.stories.tsx +19 -19
  140. package/src/stories/Outliner.stories.tsx +45 -38
  141. package/src/stories/Popover.stories.tsx +157 -0
  142. package/src/stories/Preview.stories.tsx +105 -87
  143. package/src/stories/Tags.stories.tsx +39 -16
  144. package/src/stories/TextEditor.stories.tsx +20 -51
  145. package/src/stories/Theme.stories.tsx +61 -0
  146. package/src/stories/components/EditorStory.tsx +46 -30
  147. package/src/stories/components/util.tsx +90 -59
  148. package/src/translations.ts +30 -25
  149. package/src/util/index.ts +1 -7
  150. package/src/util/react.tsx +8 -13
  151. package/dist/lib/browser/chunk-22UMM3QJ.mjs +0 -22
  152. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  153. package/dist/lib/browser/testing/index.mjs +0 -6
  154. package/dist/lib/browser/testing/index.mjs.map +0 -7
  155. package/dist/lib/browser/types/index.mjs +0 -13
  156. package/dist/lib/browser/types/index.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +0 -24
  158. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  159. package/dist/lib/node-esm/testing/index.mjs +0 -8
  160. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  161. package/dist/lib/node-esm/types/index.mjs +0 -14
  162. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  163. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  164. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  165. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  166. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  167. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -14
  168. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  169. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -37
  170. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  171. package/dist/types/src/components/Popover/index.d.ts +0 -4
  172. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  173. package/dist/types/src/defaults.d.ts +0 -14
  174. package/dist/types/src/defaults.d.ts.map +0 -1
  175. package/dist/types/src/extensions/annotations.d.ts +0 -9
  176. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  177. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  178. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  179. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  180. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  181. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -47
  182. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  183. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  184. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  185. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  186. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  187. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  188. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  189. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  190. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  191. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  192. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  193. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  194. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  195. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  196. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  197. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  198. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  199. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  200. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  201. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  202. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  203. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  204. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  205. package/dist/types/src/extensions/blast.d.ts +0 -25
  206. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  207. package/dist/types/src/extensions/command/action.d.ts +0 -17
  208. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  209. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  210. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  211. package/dist/types/src/extensions/command/command.d.ts +0 -6
  212. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  213. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  214. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  215. package/dist/types/src/extensions/command/hint.d.ts +0 -19
  216. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  217. package/dist/types/src/extensions/command/index.d.ts +0 -7
  218. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  219. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  220. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  221. package/dist/types/src/extensions/command/state.d.ts +0 -16
  222. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  223. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  224. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  225. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  226. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  227. package/dist/types/src/extensions/comments.d.ts +0 -95
  228. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  229. package/dist/types/src/extensions/debug.d.ts +0 -3
  230. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  231. package/dist/types/src/extensions/dnd.d.ts +0 -9
  232. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  233. package/dist/types/src/extensions/factories.d.ts +0 -78
  234. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  235. package/dist/types/src/extensions/focus.d.ts +0 -7
  236. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  237. package/dist/types/src/extensions/folding.d.ts +0 -7
  238. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  239. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  240. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  241. package/dist/types/src/extensions/json.d.ts +0 -7
  242. package/dist/types/src/extensions/json.d.ts.map +0 -1
  243. package/dist/types/src/extensions/listener.d.ts +0 -11
  244. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  245. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  246. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  247. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  248. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  249. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  250. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  251. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  252. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  253. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  254. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  255. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  256. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  257. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  258. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  259. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  260. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  261. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  262. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  263. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  264. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  265. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  266. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  267. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  268. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  269. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  270. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  271. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  272. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  273. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  274. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  275. package/dist/types/src/extensions/mention.d.ts +0 -7
  276. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  277. package/dist/types/src/extensions/modes.d.ts +0 -10
  278. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  279. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  280. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  281. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  282. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  283. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  284. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  285. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  286. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  287. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  288. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  289. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  290. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  291. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  292. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  293. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  294. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  295. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  296. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  297. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  298. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  299. package/dist/types/src/extensions/preview/preview.d.ts +0 -30
  300. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  301. package/dist/types/src/extensions/selection.d.ts +0 -24
  302. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  303. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  304. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  305. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  306. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  307. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  308. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  309. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  310. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  311. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -71
  312. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  313. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  314. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  315. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  316. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  317. package/dist/types/src/stories/Command.stories.d.ts +0 -15
  318. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  319. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  320. package/dist/types/src/styles/index.d.ts +0 -4
  321. package/dist/types/src/styles/index.d.ts.map +0 -1
  322. package/dist/types/src/styles/markdown.d.ts +0 -8
  323. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  324. package/dist/types/src/styles/theme.d.ts +0 -38
  325. package/dist/types/src/styles/theme.d.ts.map +0 -1
  326. package/dist/types/src/styles/tokens.d.ts +0 -3
  327. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  328. package/dist/types/src/testing/index.d.ts +0 -2
  329. package/dist/types/src/testing/index.d.ts.map +0 -1
  330. package/dist/types/src/testing/util.d.ts +0 -3
  331. package/dist/types/src/testing/util.d.ts.map +0 -1
  332. package/dist/types/src/types/index.d.ts +0 -2
  333. package/dist/types/src/types/index.d.ts.map +0 -1
  334. package/dist/types/src/types/types.d.ts +0 -21
  335. package/dist/types/src/types/types.d.ts.map +0 -1
  336. package/dist/types/src/util/cursor.d.ts +0 -31
  337. package/dist/types/src/util/cursor.d.ts.map +0 -1
  338. package/dist/types/src/util/debug.d.ts +0 -17
  339. package/dist/types/src/util/debug.d.ts.map +0 -1
  340. package/dist/types/src/util/decorations.d.ts +0 -4
  341. package/dist/types/src/util/decorations.d.ts.map +0 -1
  342. package/dist/types/src/util/dom.d.ts +0 -10
  343. package/dist/types/src/util/dom.d.ts.map +0 -1
  344. package/dist/types/src/util/domino.d.ts +0 -18
  345. package/dist/types/src/util/domino.d.ts.map +0 -1
  346. package/dist/types/src/util/facet.d.ts +0 -3
  347. package/dist/types/src/util/facet.d.ts.map +0 -1
  348. package/src/components/EditorToolbar/util.ts +0 -76
  349. package/src/components/Popover/CommandMenu.tsx +0 -279
  350. package/src/components/Popover/RefDropdownMenu.tsx +0 -89
  351. package/src/components/Popover/RefPopover.tsx +0 -117
  352. package/src/components/Popover/index.ts +0 -7
  353. package/src/defaults.ts +0 -52
  354. package/src/extensions/annotations.ts +0 -55
  355. package/src/extensions/autocomplete.ts +0 -219
  356. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  357. package/src/extensions/automerge/automerge.test.tsx +0 -78
  358. package/src/extensions/automerge/automerge.ts +0 -86
  359. package/src/extensions/automerge/cursor.ts +0 -28
  360. package/src/extensions/automerge/defs.ts +0 -31
  361. package/src/extensions/automerge/index.ts +0 -5
  362. package/src/extensions/automerge/sync.ts +0 -75
  363. package/src/extensions/automerge/update-automerge.ts +0 -50
  364. package/src/extensions/automerge/update-codemirror.ts +0 -115
  365. package/src/extensions/autoscroll.ts +0 -151
  366. package/src/extensions/awareness/awareness-provider.ts +0 -127
  367. package/src/extensions/awareness/awareness.ts +0 -315
  368. package/src/extensions/awareness/index.ts +0 -6
  369. package/src/extensions/blast.ts +0 -363
  370. package/src/extensions/command/action.ts +0 -56
  371. package/src/extensions/command/command-menu.ts +0 -211
  372. package/src/extensions/command/command.ts +0 -34
  373. package/src/extensions/command/floating-menu.ts +0 -133
  374. package/src/extensions/command/hint.ts +0 -103
  375. package/src/extensions/command/index.ts +0 -10
  376. package/src/extensions/command/placeholder.ts +0 -113
  377. package/src/extensions/command/state.ts +0 -90
  378. package/src/extensions/command/typeahead.ts +0 -129
  379. package/src/extensions/command/useCommandMenu.ts +0 -119
  380. package/src/extensions/comments.ts +0 -597
  381. package/src/extensions/debug.ts +0 -15
  382. package/src/extensions/dnd.ts +0 -37
  383. package/src/extensions/factories.ts +0 -247
  384. package/src/extensions/focus.ts +0 -35
  385. package/src/extensions/folding.tsx +0 -46
  386. package/src/extensions/hashtag.tsx +0 -68
  387. package/src/extensions/json.ts +0 -57
  388. package/src/extensions/listener.ts +0 -38
  389. package/src/extensions/markdown/action.ts +0 -117
  390. package/src/extensions/markdown/bundle.ts +0 -93
  391. package/src/extensions/markdown/changes.test.ts +0 -26
  392. package/src/extensions/markdown/changes.ts +0 -149
  393. package/src/extensions/markdown/debug.ts +0 -44
  394. package/src/extensions/markdown/decorate.ts +0 -600
  395. package/src/extensions/markdown/formatting.test.ts +0 -498
  396. package/src/extensions/markdown/formatting.ts +0 -1267
  397. package/src/extensions/markdown/highlight.ts +0 -183
  398. package/src/extensions/markdown/image.ts +0 -118
  399. package/src/extensions/markdown/index.ts +0 -13
  400. package/src/extensions/markdown/link.ts +0 -47
  401. package/src/extensions/markdown/parser.test.ts +0 -75
  402. package/src/extensions/markdown/styles.ts +0 -135
  403. package/src/extensions/markdown/table.ts +0 -150
  404. package/src/extensions/mention.ts +0 -41
  405. package/src/extensions/modes.ts +0 -41
  406. package/src/extensions/outliner/commands.ts +0 -270
  407. package/src/extensions/outliner/editor.test.ts +0 -33
  408. package/src/extensions/outliner/editor.ts +0 -184
  409. package/src/extensions/outliner/index.ts +0 -7
  410. package/src/extensions/outliner/outliner.test.ts +0 -100
  411. package/src/extensions/outliner/outliner.ts +0 -167
  412. package/src/extensions/outliner/selection.ts +0 -50
  413. package/src/extensions/outliner/tree.test.ts +0 -168
  414. package/src/extensions/outliner/tree.ts +0 -317
  415. package/src/extensions/preview/index.ts +0 -5
  416. package/src/extensions/preview/preview.ts +0 -193
  417. package/src/extensions/selection.ts +0 -100
  418. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  419. package/src/extensions/tags/extended-markdown.ts +0 -78
  420. package/src/extensions/tags/index.ts +0 -7
  421. package/src/extensions/tags/streamer.ts +0 -244
  422. package/src/extensions/tags/xml-tags.ts +0 -335
  423. package/src/extensions/tags/xml-util.ts +0 -94
  424. package/src/extensions/typewriter.ts +0 -68
  425. package/src/stories/Command.stories.tsx +0 -90
  426. package/src/stories/CommandMenu.stories.tsx +0 -160
  427. package/src/styles/index.ts +0 -7
  428. package/src/styles/markdown.ts +0 -26
  429. package/src/styles/theme.ts +0 -267
  430. package/src/styles/tokens.ts +0 -17
  431. package/src/testing/index.ts +0 -5
  432. package/src/testing/util.ts +0 -7
  433. package/src/types/index.ts +0 -5
  434. package/src/types/types.ts +0 -32
  435. package/src/util/cursor.ts +0 -56
  436. package/src/util/debug.ts +0 -64
  437. package/src/util/decorations.ts +0 -21
  438. package/src/util/dom.ts +0 -34
  439. package/src/util/domino.ts +0 -51
  440. package/src/util/facet.ts +0 -13
@@ -2,26 +2,24 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import defaultsDeep from 'lodash.defaultsdeep';
9
7
  import React from 'react';
10
8
 
11
9
  import { log } from '@dxos/log';
12
- import { faker } from '@dxos/random';
13
- import { withLayout, withTheme } from '@dxos/storybook-utils';
14
-
15
- import { blast, defaultOptions, dropFile, typewriter } from '../extensions';
16
- 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, snippets } from '@dxos/ui-editor';
17
13
 
18
14
  import { EditorStory, content } from './components';
19
15
 
20
16
  const meta = {
21
17
  title: 'ui/react-ui-editor/Experimental',
22
18
  component: EditorStory,
23
- decorators: [withTheme, withLayout({ fullscreen: true })],
24
- parameters: { layout: 'fullscreen' },
19
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
20
+ parameters: {
21
+ layout: 'fullscreen',
22
+ },
25
23
  } satisfies Meta<typeof EditorStory>;
26
24
 
27
25
  export default meta;
@@ -29,16 +27,16 @@ export default meta;
29
27
  type Story = StoryObj<typeof meta>;
30
28
 
31
29
  //
32
- // Typewriter
30
+ // Snippets
33
31
  //
34
32
 
35
- const typewriterItems = localStorage.getItem('dxos.org/plugin/markdown/typewriter')?.split(',');
33
+ const snippetItems = localStorage.getItem('org.dxos.testing.snippets')?.split(',');
36
34
 
37
- export const Typewriter: Story = {
35
+ export const Snippets: Story = {
38
36
  render: () => (
39
37
  <EditorStory
40
- text={str('# Typewriter', '', content.paragraphs, content.footer)}
41
- extensions={[typewriter({ items: typewriterItems })]}
38
+ text={join('# Snippets', '', content.paragraphs, content.footer)}
39
+ extensions={[snippets({ items: snippetItems })]}
42
40
  />
43
41
  ),
44
42
  };
@@ -50,17 +48,17 @@ 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
- typewriter({ items: typewriterItems }),
53
+ snippets({ items: snippetItems }),
56
54
  blast(
57
55
  defaultsDeep(
58
56
  {
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) => {
@@ -2,24 +2,22 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { markdown } from '@codemirror/lang-markdown';
8
6
  import { type Meta, type StoryObj } from '@storybook/react-vite';
9
7
  import React from 'react';
10
8
 
11
- import { withLayout, withTheme } from '@dxos/storybook-utils';
12
-
13
- import { decorateMarkdown, image, linkTooltip, table } from '../extensions';
14
- import { str } from '../testing';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { decorateMarkdown, image, join, linkTooltip, table } from '@dxos/ui-editor';
15
11
 
16
12
  import { EditorStory, content, defaultExtensions, headings, renderLinkTooltip, text } from './components';
17
13
 
18
14
  const meta = {
19
15
  title: 'ui/react-ui-editor/Markdown',
20
16
  component: EditorStory,
21
- decorators: [withTheme, withLayout({ fullscreen: true })],
22
- parameters: { layout: 'fullscreen' },
17
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
18
+ parameters: {
19
+ layout: 'fullscreen',
20
+ },
23
21
  } satisfies Meta<typeof EditorStory>;
24
22
 
25
23
  export default meta;
@@ -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,42 +2,56 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import { type EditorView } from '@codemirror/view';
8
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
9
- import React, { useRef } from 'react';
6
+ import React, { useMemo, useState } from 'react';
10
7
 
11
- import { DropdownMenu } from '@dxos/react-ui';
12
8
  import { withAttention } from '@dxos/react-ui-attention/testing';
13
- import { withLayout, withTheme } from '@dxos/storybook-utils';
14
-
15
- import { RefDropdownMenuProvider } from '../components';
16
- import { deleteItem, hashtag, listItemToString, outliner, treeFacet } from '../extensions';
17
- import { str } from '../testing';
9
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
+ import { deleteItem, hashtag, join, listItemToString, outliner, treeFacet } from '@dxos/ui-editor';
18
11
 
12
+ import { type EditorController, type EditorMenuGroup, EditorMenuProvider } from '../components';
19
13
  import { EditorStory } from './components';
20
14
 
21
- type StoryProps = {
15
+ type DefaultStoryProps = {
22
16
  text?: string;
23
17
  };
24
18
 
25
- const DefaultStory = ({ text }: StoryProps) => {
26
- const viewRef = useRef<EditorView>(null);
27
-
28
- const handleDelete = () => {
29
- if (viewRef.current) {
30
- deleteItem(viewRef.current);
31
- }
32
- };
19
+ const DefaultStory = ({ text }: DefaultStoryProps) => {
20
+ const [controller, setController] = useState<EditorController | null>(null);
21
+
22
+ const extensions = useMemo(() => [outliner(), hashtag()], []);
23
+ const commandGroups: EditorMenuGroup[] = useMemo(
24
+ () => [
25
+ {
26
+ id: 'outliner-actions',
27
+ items: [
28
+ {
29
+ id: 'delete-row',
30
+ label: 'Delete',
31
+ onSelect: ({ view }) => {
32
+ deleteItem(view);
33
+ },
34
+ },
35
+ ],
36
+ },
37
+ ],
38
+ [],
39
+ );
33
40
 
34
41
  return (
35
- <RefDropdownMenuProvider>
42
+ <EditorMenuProvider
43
+ view={controller?.view}
44
+ groups={commandGroups}
45
+ onSelect={({ view, item }) => {
46
+ if (item.onSelect) {
47
+ return item.onSelect({ view, head: view.state.selection.main.head });
48
+ }
49
+ }}
50
+ >
36
51
  <EditorStory
37
- ref={viewRef}
52
+ ref={setController}
38
53
  text={text}
39
- extensions={[outliner(), hashtag()]}
40
- placeholder=''
54
+ extensions={extensions}
41
55
  debug='raw+tree'
42
56
  debugCustom={(view) => {
43
57
  const tree = view.state.facet(treeFacet);
@@ -46,24 +60,17 @@ const DefaultStory = ({ text }: StoryProps) => {
46
60
  return <pre className='p-1 overflow-auto text-xs text-green-800 dark:text-green-200'>{lines.join('\n')}</pre>;
47
61
  }}
48
62
  />
49
-
50
- <DropdownMenu.Portal>
51
- <DropdownMenu.Content>
52
- <DropdownMenu.Viewport>
53
- <DropdownMenu.Item onClick={handleDelete}>Delete</DropdownMenu.Item>
54
- </DropdownMenu.Viewport>
55
- <DropdownMenu.Arrow />
56
- </DropdownMenu.Content>
57
- </DropdownMenu.Portal>
58
- </RefDropdownMenuProvider>
63
+ </EditorMenuProvider>
59
64
  );
60
65
  };
61
66
 
62
67
  const meta = {
63
68
  title: 'ui/react-ui-editor/Outliner',
64
69
  render: DefaultStory,
65
- decorators: [withAttention, withTheme, withLayout({ fullscreen: true })],
66
- parameters: { layout: 'fullscreen' },
70
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withAttention()],
71
+ parameters: {
72
+ layout: 'fullscreen',
73
+ },
67
74
  } satisfies Meta<typeof DefaultStory>;
68
75
 
69
76
  export default meta;
@@ -76,7 +83,7 @@ export const Empty: Story = {
76
83
 
77
84
  export const Basic: Story = {
78
85
  args: {
79
- text: str(
86
+ text: join(
80
87
  //
81
88
  '- [ ] A',
82
89
  '- [ ] B',
@@ -91,7 +98,7 @@ export const Basic: Story = {
91
98
 
92
99
  export const Nested: Story = {
93
100
  args: {
94
- text: str(
101
+ text: join(
95
102
  //
96
103
  '- [ ] A',
97
104
  ' - [ ] B',
@@ -106,7 +113,7 @@ export const Nested: Story = {
106
113
 
107
114
  export const Continuation: Story = {
108
115
  args: {
109
- text: str(
116
+ text: join(
110
117
  //
111
118
  '- [ ] A',
112
119
  '- [ ] B',
@@ -0,0 +1,157 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useCallback, useState } from 'react';
7
+
8
+ import { Obj, Query } from '@dxos/echo';
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
+
16
+ import {
17
+ type EditorController,
18
+ type EditorMenuGroup,
19
+ type EditorMenuItem,
20
+ EditorMenuProvider,
21
+ type UseEditorMenuProps,
22
+ createMenuGroup,
23
+ filterMenuGroups,
24
+ formattingCommands,
25
+ linkSlashCommands,
26
+ useEditorMenu,
27
+ } from '../components';
28
+ import { EditorStory } from './components';
29
+
30
+ const generator: ValueGenerator = random as any;
31
+
32
+ const customCompletions: EditorMenuGroup = createMenuGroup({
33
+ id: 'test',
34
+ items: ['Hello world!', 'Hello DXOS', 'Hello Composer', 'https://dxos.org'],
35
+ });
36
+
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);
51
+
52
+ return (
53
+ <EditorMenuProvider view={controller?.view} groups={groupsRef.current} {...menuProps}>
54
+ <EditorStory ref={setController} text={text} extensions={extension} />
55
+ </EditorMenuProvider>
56
+ );
57
+ };
58
+
59
+ const LinkStory = (args: DefaultStoryProps) => {
60
+ const { space } = useClientStory();
61
+
62
+ const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(
63
+ async ({ text, trigger }): Promise<EditorMenuGroup[]> => {
64
+ if (trigger === '/') {
65
+ return filterMenuGroups([linkSlashCommands], (item) =>
66
+ text ? (item.label as string).toLowerCase().includes(text.toLowerCase()) : true,
67
+ );
68
+ }
69
+
70
+ if (!space) {
71
+ return [];
72
+ }
73
+
74
+ const name = text?.startsWith('@') ? text.slice(1).toLowerCase() : (text?.toLowerCase() ?? '');
75
+ const result = await space?.db.query(Query.type(TestSchema.Person)).run();
76
+ const items = result
77
+ .filter((object) => object.name.toLowerCase().includes(name))
78
+ .map(
79
+ (object): EditorMenuItem => ({
80
+ id: object.id,
81
+ label: object.name,
82
+ icon: 'ph--user--regular',
83
+ onSelect: ({ view, head }) => {
84
+ const link = `[${object.name}](${Obj.getDXN(object)})`;
85
+ if (text?.startsWith('@')) {
86
+ insertAtLineStart(view, head, `!${link}\n`);
87
+ } else {
88
+ insertAtCursor(view, head, `${link} `);
89
+ }
90
+ },
91
+ }),
92
+ );
93
+
94
+ return [{ id: 'test', items }];
95
+ },
96
+ [space],
97
+ );
98
+
99
+ return <DefaultStory {...args} getMenu={getMenu} />;
100
+ };
101
+
102
+ const meta = {
103
+ title: 'ui/react-ui-editor/Popover',
104
+ render: DefaultStory,
105
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
106
+ parameters: {
107
+ layout: 'fullscreen',
108
+ },
109
+ } satisfies Meta<typeof DefaultStory>;
110
+
111
+ export default meta;
112
+
113
+ type Story = StoryObj<typeof meta>;
114
+
115
+ export const Default: Story = {
116
+ args: {
117
+ text: join('# Autocomplete', '', ''),
118
+ triggerKey: 'Ctrl-Space',
119
+ filter: true,
120
+ getMenu: () => [customCompletions],
121
+ },
122
+ };
123
+
124
+ export const Formatting: Story = {
125
+ args: {
126
+ text: join('# Slash command', '', ''),
127
+ trigger: '/',
128
+ placeholder: {
129
+ content: () => placeholder(['/']),
130
+ },
131
+ getMenu: () => [formattingCommands],
132
+ },
133
+ };
134
+
135
+ export const Link: Story = {
136
+ render: LinkStory,
137
+ decorators: [
138
+ withClientProvider({
139
+ createSpace: true,
140
+ onInitialized: async (client) => {
141
+ await client.addTypes([TestSchema.Person]);
142
+ },
143
+ onCreateSpace: async ({ space }) => {
144
+ const createObjects = createObjectFactory(space.db, generator);
145
+ await createObjects([{ type: TestSchema.Person, count: 10 }]);
146
+ await space.db.flush({ indexes: true });
147
+ },
148
+ }),
149
+ ],
150
+ args: {
151
+ text: join('# Links', '', ''),
152
+ trigger: ['/', '@'],
153
+ placeholder: {
154
+ content: () => placeholder(['/', '@']),
155
+ },
156
+ },
157
+ };