@dxos/react-ui-editor 0.8.4-main.e098934 → 0.8.4-main.e8ec1fe

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 (312) hide show
  1. package/dist/lib/browser/{chunk-22UMM3QJ.mjs → chunk-HL3YF6WC.mjs} +2 -2
  2. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4960 -4414
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +1 -1
  7. package/dist/lib/node-esm/{chunk-YXYQPV6R.mjs → chunk-YJZGD3LY.mjs} +2 -2
  8. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +7 -0
  9. package/dist/lib/node-esm/index.mjs +4960 -4414
  10. package/dist/lib/node-esm/index.mjs.map +4 -4
  11. package/dist/lib/node-esm/meta.json +1 -1
  12. package/dist/lib/node-esm/types/index.mjs +1 -1
  13. package/dist/types/src/components/Editor/Editor.d.ts +37 -15
  14. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  15. package/dist/types/src/components/Editor/Editor.stories.d.ts +20 -0
  16. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorContent/EditorContent.d.ts +29 -0
  18. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts +26 -0
  20. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  22. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  24. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -0
  26. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/index.d.ts +7 -0
  28. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  30. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  32. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +47 -0
  34. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  35. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  36. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorMenuProvider/util.d.ts +8 -0
  38. package/dist/types/src/components/EditorMenuProvider/util.d.ts.map +1 -0
  39. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  40. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  41. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  42. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  43. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +26 -2
  44. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/actions.d.ts +39 -0
  46. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  47. package/dist/types/src/components/EditorToolbar/blocks.d.ts +3 -3
  48. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/formatting.d.ts +3 -3
  50. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/headings.d.ts +3 -3
  52. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  53. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  54. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  55. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  56. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  57. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +3 -3
  58. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  59. package/dist/types/src/components/index.d.ts +4 -2
  60. package/dist/types/src/components/index.d.ts.map +1 -1
  61. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +17 -0
  62. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +1 -0
  63. package/dist/types/src/extensions/autocomplete/index.d.ts +5 -0
  64. package/dist/types/src/extensions/autocomplete/index.d.ts.map +1 -0
  65. package/dist/types/src/extensions/autocomplete/match.d.ts +13 -0
  66. package/dist/types/src/extensions/autocomplete/match.d.ts.map +1 -0
  67. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +20 -0
  68. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +1 -0
  69. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +10 -0
  70. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +1 -0
  71. package/dist/types/src/extensions/automerge/automerge.d.ts +1 -1
  72. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  73. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +1 -1
  74. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  75. package/dist/types/src/extensions/automerge/cursor.d.ts +1 -1
  76. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  77. package/dist/types/src/extensions/automerge/sync.d.ts +3 -3
  78. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  79. package/dist/types/src/extensions/automerge/update-automerge.d.ts +1 -1
  80. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  81. package/dist/types/src/extensions/autoscroll.d.ts +14 -4
  82. package/dist/types/src/extensions/autoscroll.d.ts.map +1 -1
  83. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +1 -1
  84. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +1 -1
  85. package/dist/types/src/extensions/blocks.d.ts +2 -0
  86. package/dist/types/src/extensions/blocks.d.ts.map +1 -0
  87. package/dist/types/src/extensions/bookmarks.d.ts +12 -0
  88. package/dist/types/src/extensions/bookmarks.d.ts.map +1 -0
  89. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  90. package/dist/types/src/extensions/factories.d.ts +10 -5
  91. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  92. package/dist/types/src/extensions/focus.d.ts.map +1 -1
  93. package/dist/types/src/extensions/folding.d.ts.map +1 -1
  94. package/dist/types/src/extensions/index.d.ts +8 -1
  95. package/dist/types/src/extensions/index.d.ts.map +1 -1
  96. package/dist/types/src/extensions/json.d.ts +1 -1
  97. package/dist/types/src/extensions/json.d.ts.map +1 -1
  98. package/dist/types/src/extensions/listener.d.ts +8 -6
  99. package/dist/types/src/extensions/listener.d.ts.map +1 -1
  100. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  101. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  102. package/dist/types/src/extensions/markdown/formatting.d.ts +1 -3
  103. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  104. package/dist/types/src/extensions/modal.d.ts +7 -0
  105. package/dist/types/src/extensions/modal.d.ts.map +1 -0
  106. package/dist/types/src/extensions/modes.d.ts +1 -1
  107. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  108. package/dist/types/src/extensions/outliner/menu.d.ts +8 -0
  109. package/dist/types/src/extensions/outliner/menu.d.ts.map +1 -0
  110. package/dist/types/src/extensions/preview/preview.d.ts +6 -3
  111. package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
  112. package/dist/types/src/extensions/replacer.d.ts +21 -0
  113. package/dist/types/src/extensions/replacer.d.ts.map +1 -0
  114. package/dist/types/src/extensions/replacer.test.d.ts +2 -0
  115. package/dist/types/src/extensions/replacer.test.d.ts.map +1 -0
  116. package/dist/types/src/extensions/scrolling.d.ts +78 -0
  117. package/dist/types/src/extensions/scrolling.d.ts.map +1 -0
  118. package/dist/types/src/extensions/state.d.ts +2 -0
  119. package/dist/types/src/extensions/state.d.ts.map +1 -0
  120. package/dist/types/src/extensions/submit.d.ts +10 -0
  121. package/dist/types/src/extensions/submit.d.ts.map +1 -0
  122. package/dist/types/src/extensions/tab.d.ts +4 -0
  123. package/dist/types/src/extensions/tab.d.ts.map +1 -0
  124. package/dist/types/src/extensions/tags/streamer.d.ts.map +1 -1
  125. package/dist/types/src/extensions/tags/xml-tags.d.ts +42 -16
  126. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +1 -1
  127. package/dist/types/src/hooks/useTextEditor.d.ts +5 -9
  128. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  129. package/dist/types/src/stories/{Command.stories.d.ts → CommandDialog.stories.d.ts} +2 -3
  130. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -0
  131. package/dist/types/src/stories/Comments.stories.d.ts +3 -4
  132. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  133. package/dist/types/src/stories/EditorToolbar.stories.d.ts +1 -2
  134. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  135. package/dist/types/src/stories/Experimental.stories.d.ts +3 -4
  136. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  137. package/dist/types/src/stories/Markdown.stories.d.ts +3 -4
  138. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  139. package/dist/types/src/stories/Outliner.stories.d.ts +0 -1
  140. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  141. package/dist/types/src/stories/{CommandMenu.stories.d.ts → Popover.stories.d.ts} +6 -6
  142. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  143. package/dist/types/src/stories/Preview.stories.d.ts +4 -4
  144. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  145. package/dist/types/src/stories/Tags.stories.d.ts +0 -1
  146. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  147. package/dist/types/src/stories/TextEditor.stories.d.ts +3 -5
  148. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  149. package/dist/types/src/stories/components/EditorStory.d.ts +7 -5
  150. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  151. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  152. package/dist/types/src/styles/theme.d.ts.map +1 -1
  153. package/dist/types/src/types/types.d.ts +1 -1
  154. package/dist/types/src/types/types.d.ts.map +1 -1
  155. package/dist/types/src/util/debug.d.ts +4 -0
  156. package/dist/types/src/util/debug.d.ts.map +1 -1
  157. package/dist/types/src/util/index.d.ts +0 -1
  158. package/dist/types/src/util/index.d.ts.map +1 -1
  159. package/dist/types/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +57 -58
  161. package/src/components/Editor/Editor.stories.tsx +89 -0
  162. package/src/components/Editor/Editor.tsx +160 -25
  163. package/src/components/EditorContent/EditorContent.stories.tsx +70 -0
  164. package/src/components/EditorContent/EditorContent.tsx +70 -0
  165. package/src/components/EditorContent/controller.ts +50 -0
  166. package/src/components/EditorContent/index.ts +6 -0
  167. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +233 -0
  168. package/src/components/EditorMenuProvider/index.ts +11 -0
  169. package/src/components/EditorMenuProvider/menu-presets.ts +123 -0
  170. package/src/components/EditorMenuProvider/menu.ts +71 -0
  171. package/src/components/EditorMenuProvider/popover.ts +287 -0
  172. package/src/components/EditorMenuProvider/useEditorMenu.ts +175 -0
  173. package/src/components/EditorMenuProvider/util.ts +31 -0
  174. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +82 -0
  175. package/src/components/EditorPreviewProvider/index.ts +5 -0
  176. package/src/components/EditorToolbar/EditorToolbar.tsx +101 -91
  177. package/src/components/EditorToolbar/{lists.ts → actions.ts} +46 -16
  178. package/src/components/EditorToolbar/blocks.ts +2 -1
  179. package/src/components/EditorToolbar/formatting.ts +2 -1
  180. package/src/components/EditorToolbar/headings.ts +8 -5
  181. package/src/components/EditorToolbar/image.ts +1 -1
  182. package/src/components/EditorToolbar/index.ts +3 -7
  183. package/src/components/EditorToolbar/search.ts +1 -1
  184. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  185. package/src/components/EditorToolbar/view-mode.ts +2 -1
  186. package/src/components/index.ts +8 -2
  187. package/src/extensions/{autocomplete.ts → autocomplete/autocomplete.ts} +8 -76
  188. package/src/extensions/autocomplete/index.ts +8 -0
  189. package/src/extensions/autocomplete/match.ts +46 -0
  190. package/src/extensions/{command → autocomplete}/placeholder.ts +21 -17
  191. package/src/extensions/{command → autocomplete}/typeahead.ts +6 -48
  192. package/src/extensions/automerge/automerge.stories.tsx +9 -9
  193. package/src/extensions/automerge/automerge.ts +28 -9
  194. package/src/extensions/automerge/cursor.ts +1 -1
  195. package/src/extensions/automerge/sync.ts +8 -4
  196. package/src/extensions/automerge/update-automerge.ts +1 -1
  197. package/src/extensions/autoscroll.ts +98 -92
  198. package/src/extensions/awareness/awareness-provider.ts +2 -2
  199. package/src/extensions/blocks.ts +131 -0
  200. package/src/extensions/bookmarks.ts +75 -0
  201. package/src/extensions/comments.ts +2 -1
  202. package/src/extensions/factories.ts +47 -16
  203. package/src/extensions/focus.ts +5 -4
  204. package/src/extensions/folding.tsx +3 -6
  205. package/src/extensions/hashtag.tsx +2 -2
  206. package/src/extensions/index.ts +8 -1
  207. package/src/extensions/json.ts +1 -1
  208. package/src/extensions/listener.ts +14 -20
  209. package/src/extensions/markdown/bundle.ts +16 -4
  210. package/src/extensions/markdown/decorate.ts +9 -8
  211. package/src/extensions/markdown/formatting.ts +8 -10
  212. package/src/extensions/markdown/highlight.ts +1 -1
  213. package/src/extensions/markdown/image.ts +2 -2
  214. package/src/extensions/markdown/table.ts +6 -6
  215. package/src/extensions/modal.ts +24 -0
  216. package/src/extensions/modes.ts +2 -2
  217. package/src/extensions/{command/floating-menu.ts → outliner/menu.ts} +9 -9
  218. package/src/extensions/outliner/outliner.test.ts +1 -1
  219. package/src/extensions/outliner/outliner.ts +3 -3
  220. package/src/extensions/outliner/tree.test.ts +1 -1
  221. package/src/extensions/preview/index.ts +1 -1
  222. package/src/extensions/preview/preview.ts +14 -11
  223. package/src/extensions/replacer.test.ts +75 -0
  224. package/src/extensions/replacer.ts +93 -0
  225. package/src/extensions/scrolling.ts +189 -0
  226. package/src/extensions/selection.ts +3 -3
  227. package/src/extensions/state.ts +7 -0
  228. package/src/extensions/submit.ts +62 -0
  229. package/src/extensions/tab.ts +29 -0
  230. package/src/extensions/tags/extended-markdown.test.ts +2 -1
  231. package/src/extensions/tags/streamer.ts +4 -5
  232. package/src/extensions/tags/xml-tags.ts +320 -155
  233. package/src/extensions/typewriter.ts +1 -1
  234. package/src/hooks/useTextEditor.ts +31 -31
  235. package/src/stories/{Command.stories.tsx → CommandDialog.stories.tsx} +20 -27
  236. package/src/stories/Comments.stories.tsx +8 -9
  237. package/src/stories/EditorToolbar.stories.tsx +14 -13
  238. package/src/stories/Experimental.stories.tsx +7 -7
  239. package/src/stories/Markdown.stories.tsx +6 -6
  240. package/src/stories/Outliner.stories.tsx +20 -20
  241. package/src/stories/Popover.stories.tsx +162 -0
  242. package/src/stories/Preview.stories.tsx +46 -42
  243. package/src/stories/Tags.stories.tsx +24 -10
  244. package/src/stories/TextEditor.stories.tsx +10 -35
  245. package/src/stories/components/EditorStory.tsx +29 -16
  246. package/src/stories/components/util.tsx +40 -8
  247. package/src/styles/markdown.ts +1 -1
  248. package/src/styles/theme.ts +13 -11
  249. package/src/types/types.ts +1 -1
  250. package/src/util/debug.ts +5 -0
  251. package/src/util/index.ts +0 -1
  252. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  253. package/dist/lib/browser/testing/index.mjs +0 -76
  254. package/dist/lib/browser/testing/index.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  256. package/dist/lib/node-esm/testing/index.mjs +0 -78
  257. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  258. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts +0 -38
  259. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +0 -1
  260. package/dist/types/src/components/CommandMenu/index.d.ts +0 -2
  261. package/dist/types/src/components/CommandMenu/index.d.ts.map +0 -1
  262. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  263. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  264. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  265. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  266. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  267. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  268. package/dist/types/src/extensions/command/action.d.ts +0 -17
  269. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  270. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  271. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  272. package/dist/types/src/extensions/command/command.d.ts +0 -6
  273. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  274. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  275. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  276. package/dist/types/src/extensions/command/hint.d.ts +0 -19
  277. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  278. package/dist/types/src/extensions/command/index.d.ts +0 -7
  279. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  280. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  281. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  282. package/dist/types/src/extensions/command/state.d.ts +0 -16
  283. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  284. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  285. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  286. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -25
  287. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  288. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  289. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  290. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  291. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  292. package/dist/types/src/testing/index.d.ts +0 -3
  293. package/dist/types/src/testing/index.d.ts.map +0 -1
  294. package/dist/types/src/testing/util.d.ts +0 -3
  295. package/dist/types/src/testing/util.d.ts.map +0 -1
  296. package/dist/types/src/util/domino.d.ts +0 -18
  297. package/dist/types/src/util/domino.d.ts.map +0 -1
  298. package/src/components/CommandMenu/CommandMenu.tsx +0 -346
  299. package/src/components/CommandMenu/index.ts +0 -5
  300. package/src/components/EditorToolbar/util.ts +0 -76
  301. package/src/extensions/command/action.ts +0 -55
  302. package/src/extensions/command/command-menu.ts +0 -211
  303. package/src/extensions/command/command.ts +0 -34
  304. package/src/extensions/command/hint.ts +0 -103
  305. package/src/extensions/command/index.ts +0 -10
  306. package/src/extensions/command/state.ts +0 -90
  307. package/src/extensions/command/useCommandMenu.ts +0 -115
  308. package/src/stories/CommandMenu.stories.tsx +0 -158
  309. package/src/testing/PreviewPopover.tsx +0 -78
  310. package/src/testing/index.ts +0 -6
  311. package/src/testing/util.ts +0 -7
  312. package/src/util/domino.ts +0 -51
@@ -1,158 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type EditorView } from '@codemirror/view';
8
- import { type Meta, type StoryObj } from '@storybook/react-vite';
9
- import React, { useCallback, useRef } from 'react';
10
-
11
- import { Obj, Query } from '@dxos/echo';
12
- import { faker } from '@dxos/random';
13
- import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
14
- import { Testing, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
15
- import { withLayout, withTheme } from '@dxos/storybook-utils';
16
-
17
- import {
18
- type CommandMenuGroup,
19
- type CommandMenuItem,
20
- CommandMenuProvider,
21
- coreSlashCommands,
22
- filterItems,
23
- insertAtCursor,
24
- insertAtLineStart,
25
- linkSlashCommands,
26
- } from '../components';
27
- import { type UseCommandMenuOptions, useCommandMenu } from '../extensions';
28
- import { str } from '../testing';
29
- import { Domino } from '../util';
30
-
31
- import { EditorStory, names } from './components';
32
-
33
- const generator: ValueGenerator = faker as any;
34
-
35
- type StoryProps = Omit<UseCommandMenuOptions, 'viewRef'> & { text: string };
36
-
37
- const DefaultStory = ({ text, ...options }: StoryProps) => {
38
- const viewRef = useRef<EditorView>();
39
- const { commandMenu, groupsRef, ...commandMenuProps } = useCommandMenu({ viewRef, ...options });
40
-
41
- return (
42
- <CommandMenuProvider groups={groupsRef.current} {...commandMenuProps}>
43
- <EditorStory ref={viewRef} text={text} placeholder={''} extensions={commandMenu} />
44
- </CommandMenuProvider>
45
- );
46
- };
47
-
48
- const groups: CommandMenuGroup[] = [
49
- coreSlashCommands,
50
- linkSlashCommands,
51
- {
52
- id: 'custom',
53
- label: 'Custom',
54
- items: [
55
- {
56
- id: 'custom-1',
57
- label: 'Log',
58
- icon: 'ph--log--regular',
59
- onSelect: console.log,
60
- },
61
- ],
62
- },
63
- ];
64
-
65
- const meta = {
66
- title: 'ui/react-ui-editor/CommandMenu',
67
- render: DefaultStory,
68
- decorators: [withTheme, withLayout({ fullscreen: true })],
69
- parameters: {
70
- layout: 'fullscreen',
71
- },
72
- } satisfies Meta<typeof DefaultStory>;
73
-
74
- export default meta;
75
-
76
- type Story = StoryObj<typeof meta>;
77
-
78
- // TODO(burdon): Not working.
79
- export const Slash: Story = {
80
- args: {
81
- text: str('# Slash', '', names.join(' '), ''),
82
- trigger: '/',
83
- placeholder: {
84
- content: () =>
85
- Domino.of('div')
86
- .child(Domino.of('span').text('Press'))
87
- .child(Domino.of('span').text('/').classNames('border border-separator rounded-sm mx-1 px-1'))
88
- .child(Domino.of('span').text('for commands'))
89
- .build(),
90
- },
91
- getMenu: (text) => {
92
- return filterItems(groups, (item) =>
93
- text ? (item.label as string).toLowerCase().includes(text.toLowerCase()) : true,
94
- );
95
- },
96
- },
97
- };
98
-
99
- export const Link: Story = {
100
- render: (args: StoryProps) => {
101
- const { space } = useClientProvider();
102
- const getMenu = useCallback(
103
- async (trigger: string, query?: string): Promise<CommandMenuGroup[]> => {
104
- if (trigger === '/') {
105
- return filterItems(groups, (item) =>
106
- query ? (item.label as string).toLowerCase().includes(query.toLowerCase()) : true,
107
- );
108
- }
109
-
110
- if (!space) {
111
- return [];
112
- }
113
-
114
- const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');
115
- const result = await space?.db.query(Query.type(Testing.Contact)).run();
116
- const items = result.objects
117
- .filter((object) => object.name.toLowerCase().includes(name))
118
- .map(
119
- (object): CommandMenuItem => ({
120
- id: object.id,
121
- label: object.name,
122
- icon: 'ph--user--regular',
123
- onSelect: (view, head) => {
124
- const link = `[${object.name}](${Obj.getDXN(object)})`;
125
- if (query?.startsWith('@')) {
126
- insertAtLineStart(view, head, `!${link}\n`);
127
- } else {
128
- insertAtCursor(view, head, `${link} `);
129
- }
130
- },
131
- }),
132
- );
133
- return [{ id: 'echo', items }];
134
- },
135
- [space],
136
- );
137
-
138
- return <DefaultStory {...args} getMenu={getMenu} />;
139
- },
140
- decorators: [
141
- withClientProvider({
142
- createSpace: true,
143
- onInitialized: async (client) => {
144
- client.addTypes([Testing.Contact]);
145
- },
146
- onSpaceCreated: async ({ space }) => {
147
- const createObjects = createObjectFactory(space.db, generator);
148
- await createObjects([{ type: Testing.Contact, count: 10 }]);
149
- await space.db.flush({ indexes: true });
150
- },
151
- }),
152
- ],
153
- args: {
154
- text: str('# Link', '', names.join(' '), ''),
155
- trigger: ['/', '@'],
156
- getMenu: () => [],
157
- },
158
- };
@@ -1,78 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { createContext } from '@radix-ui/react-context';
6
- import React, { type PropsWithChildren, type RefObject, useCallback, useEffect, useRef, useState } from 'react';
7
-
8
- import { addEventListener } from '@dxos/async';
9
- import { type DxAnchorActivate, Popover } from '@dxos/react-ui';
10
-
11
- import { type PreviewLinkRef, type PreviewLinkTarget } from '../extensions';
12
-
13
- type PreviewLookup = (link: PreviewLinkRef) => Promise<PreviewLinkTarget | null | undefined>;
14
-
15
- type PreviewPopoverValue = Partial<{
16
- link: PreviewLinkRef;
17
- target: PreviewLinkTarget;
18
- pending: boolean;
19
- }>;
20
-
21
- const [PreviewPopoverContextProvider, usePreviewPopover] = createContext<PreviewPopoverValue>('PreviewPopover', {});
22
-
23
- type PopoverLookupProviderProps = PropsWithChildren<{
24
- onLookup?: PreviewLookup;
25
- }>;
26
-
27
- const PreviewPopoverProvider = ({ children, onLookup }: PopoverLookupProviderProps) => {
28
- const trigger = useRef<HTMLElement | null>(null);
29
- const [value, setValue] = useState<PreviewPopoverValue>({});
30
- const [open, setOpen] = useState(false);
31
-
32
- const handleDxAnchorActivate = useCallback(
33
- (event: DxAnchorActivate) => {
34
- const { refId, label, trigger: dxTrigger } = event;
35
- setValue((value) => ({
36
- ...value,
37
- link: { label, ref: refId },
38
- pending: true,
39
- }));
40
- trigger.current = dxTrigger;
41
- queueMicrotask(() => setOpen(true));
42
- void onLookup?.({ label, ref: refId }).then((target) =>
43
- setValue((value) => ({
44
- ...value,
45
- target: target ?? undefined,
46
- pending: false,
47
- })),
48
- );
49
- },
50
- [onLookup],
51
- );
52
-
53
- const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);
54
- useEffect(() => {
55
- if (!rootRef || !handleDxAnchorActivate) {
56
- return;
57
- }
58
-
59
- return addEventListener(rootRef, 'dx-anchor-activate' as any, handleDxAnchorActivate, {
60
- capture: true,
61
- passive: false,
62
- });
63
- }, [rootRef, handleDxAnchorActivate]);
64
-
65
- return (
66
- <PreviewPopoverContextProvider pending={value.pending} link={value.link} target={value.target}>
67
- <Popover.Root open={open} onOpenChange={setOpen}>
68
- <Popover.VirtualTrigger virtualRef={trigger as unknown as RefObject<HTMLButtonElement>} />
69
- <div role='none' className='contents' ref={setRootRef}>
70
- {children}
71
- </div>
72
- </Popover.Root>
73
- </PreviewPopoverContextProvider>
74
- );
75
- };
76
- export { PreviewPopoverProvider, usePreviewPopover };
77
-
78
- export type { PopoverLookupProviderProps, PreviewPopoverValue };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
-
5
- export * from './util';
6
- export * from './PreviewPopover';
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- /** deprecated Replace with @dxos/util trim */
6
- // TODO(burdon): Remove
7
- export const str = (...lines: string[]) => lines.join('\n');
@@ -1,51 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { mx } from '@dxos/react-ui-theme';
6
- import { type ClassNameValue } from '@dxos/react-ui-types';
7
-
8
- /**
9
- * Super lightweight chainable DOM builder.
10
- */
11
- export class Domino<T extends HTMLElement> {
12
- static of<K extends keyof HTMLElementTagNameMap>(tag: K): Domino<HTMLElementTagNameMap[K]> {
13
- return new Domino<HTMLElementTagNameMap[K]>(tag);
14
- }
15
-
16
- private readonly _el: T;
17
- constructor(tag: keyof HTMLElementTagNameMap) {
18
- this._el = document.createElement(tag) as T;
19
- }
20
- classNames(...classNames: ClassNameValue[]): this {
21
- this._el.className = mx(classNames);
22
- return this;
23
- }
24
- text(value: string): this {
25
- this._el.textContent = value;
26
- return this;
27
- }
28
- data(key: string, value: string): this {
29
- this._el.dataset[key] = value;
30
- return this;
31
- }
32
- style(styles: Partial<CSSStyleDeclaration>): this {
33
- Object.assign(this._el.style, styles);
34
- return this;
35
- }
36
- attr<K extends keyof T>(key: K, value: T[K]): this {
37
- (this._el as any)[key] = value;
38
- return this;
39
- }
40
- child<C extends HTMLElement>(...children: Domino<C>[]): this {
41
- children.forEach((child) => this._el.appendChild(child.build()));
42
- return this;
43
- }
44
- on(event: string, handler: (e: Event) => void): this {
45
- this._el.addEventListener(event, handler);
46
- return this;
47
- }
48
- build(): T {
49
- return this._el;
50
- }
51
- }