@dxos/react-ui-editor 0.8.4-main.f9ba587 → 0.8.4-main.fcfe5033a5

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 (404) hide show
  1. package/dist/lib/browser/index.mjs +1384 -7468
  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 +1534 -7617
  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 +42 -15
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  11. package/dist/types/src/components/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/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  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/components/EditorMenuProvider/popover.d.ts +46 -0
  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 -2
  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 -22
  58. package/dist/types/src/extensions/index.d.ts.map +1 -1
  59. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  60. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  61. package/dist/types/src/index.d.ts +0 -7
  62. package/dist/types/src/index.d.ts.map +1 -1
  63. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  64. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  65. package/dist/types/src/stories/Comments.stories.d.ts +22 -10
  66. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  67. package/dist/types/src/stories/EditorToolbar.stories.d.ts +42 -4
  68. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  69. package/dist/types/src/stories/Experimental.stories.d.ts +23 -13
  70. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/Markdown.stories.d.ts +33 -43
  72. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Outliner.stories.d.ts +16 -22
  74. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  76. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  77. package/dist/types/src/stories/Preview.stories.d.ts +23 -7
  78. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  80. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  81. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  82. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  84. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  85. package/dist/types/src/stories/components/EditorStory.d.ts +11 -23
  86. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  87. package/dist/types/src/stories/components/util.d.ts +3 -3
  88. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  89. package/dist/types/src/translations.d.ts +26 -26
  90. package/dist/types/src/translations.d.ts.map +1 -1
  91. package/dist/types/src/util/index.d.ts +0 -4
  92. package/dist/types/src/util/index.d.ts.map +1 -1
  93. package/dist/types/src/util/react.d.ts +7 -6
  94. package/dist/types/src/util/react.d.ts.map +1 -1
  95. package/dist/types/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +87 -80
  97. package/src/components/Editor/Editor.stories.tsx +89 -0
  98. package/src/components/Editor/Editor.tsx +177 -24
  99. package/src/components/Editor/EditorView.tsx +83 -0
  100. package/src/components/Editor/controller.ts +50 -0
  101. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  102. package/src/components/EditorMenuProvider/index.ts +10 -0
  103. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  104. package/src/components/EditorMenuProvider/menu.ts +70 -0
  105. package/src/components/EditorMenuProvider/popover.ts +285 -0
  106. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  107. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  108. package/src/components/EditorPreviewProvider/index.ts +5 -0
  109. package/src/components/EditorToolbar/EditorToolbar.tsx +90 -103
  110. package/src/components/EditorToolbar/blocks.ts +52 -48
  111. package/src/components/EditorToolbar/formatting.ts +43 -48
  112. package/src/components/EditorToolbar/headings.ts +46 -45
  113. package/src/components/EditorToolbar/image.ts +16 -10
  114. package/src/components/EditorToolbar/index.ts +2 -7
  115. package/src/components/EditorToolbar/lists.ts +39 -41
  116. package/src/components/EditorToolbar/search.ts +16 -10
  117. package/src/components/EditorToolbar/types.ts +7 -0
  118. package/src/components/EditorToolbar/view-mode.ts +39 -40
  119. package/src/components/index.ts +3 -2
  120. package/src/extensions/Assistant.stories.tsx +111 -0
  121. package/src/extensions/assistant-extension.tsx +223 -0
  122. package/src/extensions/index.ts +2 -23
  123. package/src/hooks/useTextEditor.ts +39 -45
  124. package/src/index.ts +0 -9
  125. package/src/stories/Automerge.stories.tsx +173 -0
  126. package/src/stories/Comments.stories.tsx +58 -51
  127. package/src/stories/EditorToolbar.stories.tsx +48 -61
  128. package/src/stories/Experimental.stories.tsx +21 -19
  129. package/src/stories/Markdown.stories.tsx +37 -33
  130. package/src/stories/Outliner.stories.tsx +54 -44
  131. package/src/stories/Popover.stories.tsx +157 -0
  132. package/src/stories/Preview.stories.tsx +114 -95
  133. package/src/stories/Tags.stories.tsx +104 -0
  134. package/src/stories/TextEditor.stories.tsx +50 -75
  135. package/src/stories/Theme.stories.tsx +61 -0
  136. package/src/stories/components/EditorStory.tsx +48 -35
  137. package/src/stories/components/util.tsx +90 -59
  138. package/src/translations.ts +30 -25
  139. package/src/util/index.ts +1 -5
  140. package/src/util/react.tsx +9 -14
  141. package/dist/lib/browser/chunk-22UMM3QJ.mjs +0 -22
  142. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  143. package/dist/lib/browser/testing/index.mjs +0 -6
  144. package/dist/lib/browser/testing/index.mjs.map +0 -7
  145. package/dist/lib/browser/types/index.mjs +0 -13
  146. package/dist/lib/browser/types/index.mjs.map +0 -7
  147. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +0 -24
  148. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  149. package/dist/lib/node-esm/testing/index.mjs +0 -8
  150. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  151. package/dist/lib/node-esm/types/index.mjs +0 -14
  152. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  153. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  154. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  155. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  156. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  157. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  158. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  159. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  160. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  161. package/dist/types/src/components/Popover/index.d.ts +0 -4
  162. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  163. package/dist/types/src/defaults.d.ts +0 -14
  164. package/dist/types/src/defaults.d.ts.map +0 -1
  165. package/dist/types/src/extensions/annotations.d.ts +0 -9
  166. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  167. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  168. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  169. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  170. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  171. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -56
  172. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  173. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  174. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  175. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  176. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  177. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  178. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  179. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  180. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  181. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  182. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  183. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  184. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  185. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  186. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  187. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  188. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  189. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  190. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  191. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  192. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  193. package/dist/types/src/extensions/blast.d.ts +0 -25
  194. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  195. package/dist/types/src/extensions/command/action.d.ts +0 -17
  196. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  197. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  198. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  199. package/dist/types/src/extensions/command/command.d.ts +0 -6
  200. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  201. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  202. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  203. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  204. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  205. package/dist/types/src/extensions/command/index.d.ts +0 -7
  206. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  207. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  208. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  209. package/dist/types/src/extensions/command/state.d.ts +0 -16
  210. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  211. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  212. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  213. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  214. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  215. package/dist/types/src/extensions/comments.d.ts +0 -95
  216. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  217. package/dist/types/src/extensions/debug.d.ts +0 -3
  218. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  219. package/dist/types/src/extensions/dnd.d.ts +0 -9
  220. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  221. package/dist/types/src/extensions/factories.d.ts +0 -82
  222. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  223. package/dist/types/src/extensions/focus.d.ts +0 -7
  224. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  225. package/dist/types/src/extensions/folding.d.ts +0 -7
  226. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  227. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  228. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  229. package/dist/types/src/extensions/json.d.ts +0 -7
  230. package/dist/types/src/extensions/json.d.ts.map +0 -1
  231. package/dist/types/src/extensions/listener.d.ts +0 -11
  232. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  233. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  234. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  235. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -16
  236. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  237. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  238. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  239. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  240. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  241. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  242. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  243. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -17
  244. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  245. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  246. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  247. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  248. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  249. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  250. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  251. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  252. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  253. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  254. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  255. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  256. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  257. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  258. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  259. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  260. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  261. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  262. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  263. package/dist/types/src/extensions/mention.d.ts +0 -7
  264. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  265. package/dist/types/src/extensions/modes.d.ts +0 -10
  266. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  267. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  268. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  269. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  270. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  271. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  272. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  273. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  274. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  275. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  276. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  277. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  278. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  279. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  280. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  281. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  282. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  283. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  284. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  285. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  286. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  287. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  288. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  289. package/dist/types/src/extensions/selection.d.ts +0 -24
  290. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  291. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  292. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  293. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  294. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  295. package/dist/types/src/stories/CommandMenu.stories.d.ts +0 -13
  296. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  297. package/dist/types/src/styles/index.d.ts +0 -4
  298. package/dist/types/src/styles/index.d.ts.map +0 -1
  299. package/dist/types/src/styles/markdown.d.ts +0 -8
  300. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  301. package/dist/types/src/styles/theme.d.ts +0 -38
  302. package/dist/types/src/styles/theme.d.ts.map +0 -1
  303. package/dist/types/src/styles/tokens.d.ts +0 -3
  304. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  305. package/dist/types/src/testing/index.d.ts +0 -2
  306. package/dist/types/src/testing/index.d.ts.map +0 -1
  307. package/dist/types/src/testing/util.d.ts +0 -2
  308. package/dist/types/src/testing/util.d.ts.map +0 -1
  309. package/dist/types/src/types/index.d.ts +0 -2
  310. package/dist/types/src/types/index.d.ts.map +0 -1
  311. package/dist/types/src/types/types.d.ts +0 -21
  312. package/dist/types/src/types/types.d.ts.map +0 -1
  313. package/dist/types/src/util/cursor.d.ts +0 -31
  314. package/dist/types/src/util/cursor.d.ts.map +0 -1
  315. package/dist/types/src/util/debug.d.ts +0 -17
  316. package/dist/types/src/util/debug.d.ts.map +0 -1
  317. package/dist/types/src/util/dom.d.ts +0 -20
  318. package/dist/types/src/util/dom.d.ts.map +0 -1
  319. package/dist/types/src/util/facet.d.ts +0 -3
  320. package/dist/types/src/util/facet.d.ts.map +0 -1
  321. package/src/components/EditorToolbar/util.ts +0 -65
  322. package/src/components/Popover/CommandMenu.tsx +0 -279
  323. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  324. package/src/components/Popover/RefPopover.tsx +0 -99
  325. package/src/components/Popover/index.ts +0 -7
  326. package/src/defaults.ts +0 -49
  327. package/src/extensions/annotations.ts +0 -55
  328. package/src/extensions/autocomplete.ts +0 -69
  329. package/src/extensions/automerge/automerge.stories.tsx +0 -142
  330. package/src/extensions/automerge/automerge.test.tsx +0 -78
  331. package/src/extensions/automerge/automerge.ts +0 -85
  332. package/src/extensions/automerge/cursor.ts +0 -28
  333. package/src/extensions/automerge/defs.ts +0 -31
  334. package/src/extensions/automerge/index.ts +0 -5
  335. package/src/extensions/automerge/sync.ts +0 -75
  336. package/src/extensions/automerge/update-automerge.ts +0 -50
  337. package/src/extensions/automerge/update-codemirror.ts +0 -115
  338. package/src/extensions/awareness/awareness-provider.ts +0 -127
  339. package/src/extensions/awareness/awareness.ts +0 -315
  340. package/src/extensions/awareness/index.ts +0 -6
  341. package/src/extensions/blast.ts +0 -363
  342. package/src/extensions/command/action.ts +0 -56
  343. package/src/extensions/command/command-menu.ts +0 -210
  344. package/src/extensions/command/command.ts +0 -34
  345. package/src/extensions/command/floating-menu.ts +0 -133
  346. package/src/extensions/command/hint.ts +0 -102
  347. package/src/extensions/command/index.ts +0 -10
  348. package/src/extensions/command/placeholder.ts +0 -113
  349. package/src/extensions/command/state.ts +0 -89
  350. package/src/extensions/command/typeahead.ts +0 -129
  351. package/src/extensions/command/useCommandMenu.ts +0 -118
  352. package/src/extensions/comments.ts +0 -592
  353. package/src/extensions/debug.ts +0 -15
  354. package/src/extensions/dnd.ts +0 -37
  355. package/src/extensions/factories.ts +0 -259
  356. package/src/extensions/focus.ts +0 -35
  357. package/src/extensions/folding.tsx +0 -46
  358. package/src/extensions/hashtag.tsx +0 -68
  359. package/src/extensions/json.ts +0 -57
  360. package/src/extensions/listener.ts +0 -38
  361. package/src/extensions/markdown/action.ts +0 -116
  362. package/src/extensions/markdown/bundle.ts +0 -71
  363. package/src/extensions/markdown/changes.test.ts +0 -26
  364. package/src/extensions/markdown/changes.ts +0 -149
  365. package/src/extensions/markdown/debug.ts +0 -44
  366. package/src/extensions/markdown/decorate.ts +0 -591
  367. package/src/extensions/markdown/formatting.test.ts +0 -498
  368. package/src/extensions/markdown/formatting.ts +0 -1267
  369. package/src/extensions/markdown/highlight.ts +0 -183
  370. package/src/extensions/markdown/image.ts +0 -119
  371. package/src/extensions/markdown/index.ts +0 -13
  372. package/src/extensions/markdown/link.ts +0 -47
  373. package/src/extensions/markdown/parser.test.ts +0 -75
  374. package/src/extensions/markdown/styles.ts +0 -135
  375. package/src/extensions/markdown/table.ts +0 -144
  376. package/src/extensions/mention.ts +0 -41
  377. package/src/extensions/modes.ts +0 -41
  378. package/src/extensions/outliner/commands.ts +0 -270
  379. package/src/extensions/outliner/editor.test.ts +0 -33
  380. package/src/extensions/outliner/editor.ts +0 -184
  381. package/src/extensions/outliner/index.ts +0 -7
  382. package/src/extensions/outliner/outliner.test.ts +0 -99
  383. package/src/extensions/outliner/outliner.ts +0 -166
  384. package/src/extensions/outliner/selection.ts +0 -50
  385. package/src/extensions/outliner/tree.test.ts +0 -167
  386. package/src/extensions/outliner/tree.ts +0 -317
  387. package/src/extensions/preview/index.ts +0 -5
  388. package/src/extensions/preview/preview.ts +0 -193
  389. package/src/extensions/selection.ts +0 -100
  390. package/src/extensions/typewriter.ts +0 -68
  391. package/src/stories/Command.stories.tsx +0 -97
  392. package/src/stories/CommandMenu.stories.tsx +0 -159
  393. package/src/styles/index.ts +0 -7
  394. package/src/styles/markdown.ts +0 -26
  395. package/src/styles/theme.ts +0 -266
  396. package/src/styles/tokens.ts +0 -17
  397. package/src/testing/index.ts +0 -5
  398. package/src/testing/util.ts +0 -5
  399. package/src/types/index.ts +0 -5
  400. package/src/types/types.ts +0 -32
  401. package/src/util/cursor.ts +0 -55
  402. package/src/util/debug.ts +0 -64
  403. package/src/util/dom.ts +0 -56
  404. package/src/util/facet.ts +0 -13
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/testing/util.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,GAAG,GAAI,GAAG,OAAO,MAAM,EAAE,WAAqB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './types';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC"}
@@ -1,21 +0,0 @@
1
- import { type EditorView } from '@codemirror/view';
2
- import { Schema } from 'effect';
3
- export type Range = {
4
- from: number;
5
- to: number;
6
- };
7
- export type Comment = {
8
- id: string;
9
- cursor?: string;
10
- };
11
- /**
12
- * Callback that renders into a DOM element within the editor.
13
- */
14
- export type RenderCallback<Props extends object> = (el: HTMLElement, props: Props, view: EditorView) => void;
15
- export declare const EditorViewModes: readonly ["preview", "readonly", "source"];
16
- export declare const EditorViewMode: Schema.Schema<"preview" | "readonly" | "source", "preview" | "readonly" | "source", never>;
17
- export type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;
18
- export declare const EditorInputModes: readonly ["default", "vim", "vscode"];
19
- export declare const EditorInputMode: Schema.Schema<"default" | "vim" | "vscode", "default" | "vim" | "vscode", never>;
20
- export type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;
21
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAIF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AAE7G,eAAO,MAAM,eAAe,4CAA6C,CAAC;AAC1E,eAAO,MAAM,cAAc,4FAAuE,CAAC;AACnG,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAC;AAEvE,eAAO,MAAM,gBAAgB,uCAAwC,CAAC;AACtE,eAAO,MAAM,eAAe,kFAAwE,CAAC;AACrG,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { type EditorState } from '@codemirror/state';
2
- import { type Range } from '../types';
3
- /**
4
- * Determines if two ranges overlap.
5
- * A range is considered to overlap if there is any intersection
6
- * between the two ranges, inclusive of their boundaries.
7
- */
8
- export declare const overlap: (a: Range, b: Range) => boolean;
9
- /**
10
- * Converts indexes into the text document into stable peer-independent cursors.
11
- *
12
- * See:
13
- * - https://automerge.org/automerge/api-docs/js/functions/next.getCursor.html
14
- * - https://github.com/yjs/yjs?tab=readme-ov-file#relative-positions
15
- *
16
- * @param {assoc} number Negative values will associate the cursor with the previous character
17
- * while positive - with the next one.
18
- */
19
- export interface CursorConverter {
20
- toCursor(position: number, assoc?: -1 | 1 | undefined): string;
21
- fromCursor(cursor: string): number;
22
- }
23
- export declare class Cursor {
24
- static readonly converter: import("@codemirror/state").Facet<unknown, CursorConverter>;
25
- static readonly getCursorFromRange: (state: EditorState, range: Range) => string;
26
- static readonly getRangeFromCursor: (state: EditorState, cursor: string) => {
27
- from: number;
28
- to: number;
29
- } | undefined;
30
- }
31
- //# sourceMappingURL=cursor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/util/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,KAAK,EAAE,GAAG,KAAK,KAAG,OAA2C,CAAC;AAEzF;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAOD,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,SAAS,8DAA4C;IAErE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAI,OAAO,WAAW,EAAE,OAAO,KAAK,YAKpE;IAEF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAI,OAAO,WAAW,EAAE,QAAQ,MAAM;;;kBAOtE;CACH"}
@@ -1,17 +0,0 @@
1
- import { type Transaction } from '@codemirror/state';
2
- import { type EditorView } from '@codemirror/view';
3
- export declare const wrapWithCatch: (fn: (...args: any[]) => any) => (...args: any[]) => any;
4
- /**
5
- * CodeMirror callbacks swallow errors so wrap handlers.
6
- */
7
- export declare const callbackWrapper: <T extends Function>(fn: T) => T;
8
- /**
9
- * Log all changes before dispatching them to the view.
10
- * https://codemirror.net/docs/ref/#view.EditorView.dispatch
11
- */
12
- export declare const debugDispatcher: (trs: readonly Transaction[], view: EditorView) => void;
13
- /**
14
- * Util to log transactions in update listener.
15
- */
16
- export declare const logChanges: (trs: readonly Transaction[]) => void;
17
- //# sourceMappingURL=debug.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../src/util/debug.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,eAAO,MAAM,aAAa,GAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,MAC/C,GAAG,MAAM,GAAG,EAAE,QAOvB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,QAAQ,EAAE,IAAI,CAAC,KAAG,CAOxC,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,SAAS,WAAW,EAAE,EAAE,MAAM,UAAU,SAG5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,WAAW,EAAE,SAmBrD,CAAC"}
@@ -1,20 +0,0 @@
1
- export interface Rect {
2
- readonly left: number;
3
- readonly right: number;
4
- readonly top: number;
5
- readonly bottom: number;
6
- }
7
- export declare const flattenRect: (rect: Rect, left: boolean) => {
8
- left: number;
9
- right: number;
10
- top: number;
11
- bottom: number;
12
- };
13
- export declare const textRange: (node: Text, from: number, to?: number) => Range;
14
- export declare const clientRectsFor: (dom: Node) => DOMRectList;
15
- export type ElementOptions = {
16
- className?: string;
17
- text?: string;
18
- };
19
- export declare const createElement: (tag: string, options?: ElementOptions, children?: HTMLElement[]) => HTMLElement;
20
- //# sourceMappingURL=dom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../../src/util/dom.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,EAAE,MAAM,OAAO;;;;;CAGpD,CAAC;AAIF,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,EAAE,WAAS,UAK5D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,IAAI,gBAQvC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,UAAU,cAAc,EAAE,WAAW,WAAW,EAAE,KAAG,WAa/F,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Facet } from '@codemirror/state';
2
- export declare const singleValueFacet: <I, O = I>(defaultValue?: O) => Facet<I, O>;
3
- //# sourceMappingURL=facet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"facet.d.ts","sourceRoot":"","sources":["../../../../src/util/facet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,gBAMvD,CAAC"}
@@ -1,65 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import { type Rx } from '@effect-rx/rx-react';
7
- import { useMemo } from 'react';
8
-
9
- import { type Action } from '@dxos/app-graph';
10
- import { live, type Live } from '@dxos/live-object';
11
- import { type ThemedClassName } from '@dxos/react-ui';
12
- import {
13
- type ActionGraphProps,
14
- type MenuActionProperties,
15
- type MenuItemGroup,
16
- type MenuSeparator,
17
- type ToolbarMenuActionGroupProperties,
18
- createMenuAction,
19
- createMenuItemGroup,
20
- } from '@dxos/react-ui-menu';
21
-
22
- import type { EditorAction, Formatting } from '../../extensions';
23
- import { translationKey } from '../../translations';
24
- import { type EditorViewMode } from '../../types';
25
-
26
- export type EditorToolbarState = Formatting & Partial<{ viewMode: EditorViewMode }>;
27
-
28
- export const useEditorToolbarState = (initialState: Partial<EditorToolbarState> = {}) => {
29
- return useMemo(() => live<EditorToolbarState>(initialState), []);
30
- };
31
-
32
- export type EditorToolbarFeatureFlags = Partial<{
33
- headings: boolean;
34
- formatting: boolean;
35
- lists: boolean;
36
- blocks: boolean;
37
- search: boolean;
38
- // TODO(wittjosiah): Factor out. Depend on plugin-level capabilities.
39
- image: () => void;
40
- viewMode: (mode: EditorViewMode) => void;
41
- }>;
42
-
43
- export type EditorToolbarActionGraphProps = {
44
- state: Live<EditorToolbarState>;
45
- getView: () => EditorView;
46
- // TODO(wittjosiah): Control positioning.
47
- customActions?: Rx.Rx<ActionGraphProps>;
48
- };
49
-
50
- export type EditorToolbarProps = ThemedClassName<
51
- EditorToolbarActionGraphProps & EditorToolbarFeatureFlags & { attendableId?: string; role?: string }
52
- >;
53
-
54
- export type EditorToolbarItem = EditorAction | MenuItemGroup | MenuSeparator;
55
-
56
- export const createEditorAction = (id: string, invoke: () => void, properties: Partial<MenuActionProperties>) => {
57
- const { label = [`${id} label`, { ns: translationKey }], ...rest } = properties;
58
- return createMenuAction(id, invoke, { label, ...rest }) as Action<MenuActionProperties>;
59
- };
60
-
61
- export const createEditorActionGroup = (
62
- id: string,
63
- props: Omit<ToolbarMenuActionGroupProperties, 'icon'>,
64
- icon?: string,
65
- ) => createMenuItemGroup(id, { icon, iconOnly: true, ...props });
@@ -1,279 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import React, { useCallback, useEffect, useRef } from 'react';
7
-
8
- import { Icon, type Label, Popover, toLocalizedString, useThemeContext, useTranslation } from '@dxos/react-ui';
9
- import { type MaybePromise } from '@dxos/util';
10
-
11
- import { commandRangeEffect } from '../../extensions';
12
-
13
- export type CommandMenuGroup = {
14
- id: string;
15
- label?: Label;
16
- items: CommandMenuItem[];
17
- };
18
-
19
- export type CommandMenuItem = {
20
- id: string;
21
- label: Label;
22
- icon?: string;
23
- onSelect?: (view: EditorView, head: number) => MaybePromise<void>;
24
- };
25
-
26
- export type CommandMenuProps = {
27
- groups: CommandMenuGroup[];
28
- currentItem?: string;
29
- onSelect: (item: CommandMenuItem) => void;
30
- };
31
-
32
- // NOTE: Not using DropdownMenu because the command menu needs to manage focus explicitly.
33
- export const CommandMenu = ({ groups, currentItem, onSelect }: CommandMenuProps) => {
34
- const { tx } = useThemeContext();
35
- const groupsWithItems = groups.filter((group) => group.items.length > 0);
36
- return (
37
- <Popover.Portal>
38
- <Popover.Content
39
- align='start'
40
- onOpenAutoFocus={(event) => event.preventDefault()}
41
- classNames={tx('menu.content', 'menu--exotic-unfocusable', { elevation: 'positioned' }, [
42
- 'max-h-[300px] overflow-y-auto',
43
- ])}
44
- >
45
- <Popover.Viewport classNames={tx('menu.viewport', 'menu__viewport--exotic-unfocusable', {})}>
46
- <ul>
47
- {groupsWithItems.map((group, index) => (
48
- <React.Fragment key={group.id}>
49
- <CommandGroup group={group} currentItem={currentItem} onSelect={onSelect} />
50
- {index < groupsWithItems.length - 1 && <div className={tx('menu.separator', 'menu__item', {})} />}
51
- </React.Fragment>
52
- ))}
53
- </ul>
54
- </Popover.Viewport>
55
- </Popover.Content>
56
- </Popover.Portal>
57
- );
58
- };
59
-
60
- const CommandGroup = ({
61
- group,
62
- currentItem,
63
- onSelect,
64
- }: {
65
- group: CommandMenuGroup;
66
- currentItem?: string;
67
- onSelect: (item: CommandMenuItem) => void;
68
- }) => {
69
- const { tx } = useThemeContext();
70
- const { t } = useTranslation();
71
- return (
72
- <>
73
- {group.label && (
74
- <div className={tx('menu.groupLabel', 'menu__group__label', {})}>
75
- <span>{toLocalizedString(group.label, t)}</span>
76
- </div>
77
- )}
78
- {group.items.map((item) => (
79
- <CommandItem key={item.id} item={item} current={currentItem === item.id} onSelect={onSelect} />
80
- ))}
81
- </>
82
- );
83
- };
84
-
85
- const CommandItem = ({
86
- item,
87
- current,
88
- onSelect,
89
- }: {
90
- item: CommandMenuItem;
91
- current: boolean;
92
- onSelect: (item: CommandMenuItem) => void;
93
- }) => {
94
- const ref = useRef<HTMLLIElement>(null);
95
- const { tx } = useThemeContext();
96
- const { t } = useTranslation();
97
- const handleSelect = useCallback(() => onSelect(item), [item, onSelect]);
98
-
99
- useEffect(() => {
100
- if (current && ref.current) {
101
- ref.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
102
- }
103
- }, [current]);
104
-
105
- return (
106
- <li
107
- ref={ref}
108
- className={tx('menu.item', 'menu__item--exotic-unfocusable', {}, [current && 'bg-hoverSurface'])}
109
- onClick={handleSelect}
110
- >
111
- {item.icon && <Icon icon={item.icon} size={5} />}
112
- <span className='grow truncate'>{toLocalizedString(item.label, t)}</span>
113
- </li>
114
- );
115
- };
116
-
117
- // TODO(wittjosiah): Factor out into a separate file.
118
-
119
- //
120
- // Helpers
121
- //
122
-
123
- export const getItem = (groups: CommandMenuGroup[], id?: string): CommandMenuItem | undefined => {
124
- return groups.flatMap((group) => group.items).find((item) => item.id === id);
125
- };
126
-
127
- export const getNextItem = (groups: CommandMenuGroup[], id?: string): CommandMenuItem => {
128
- const items = groups.flatMap((group) => group.items);
129
- const index = items.findIndex((item) => item.id === id);
130
- return items[(index + 1) % items.length];
131
- };
132
-
133
- export const getPreviousItem = (groups: CommandMenuGroup[], id?: string): CommandMenuItem => {
134
- const items = groups.flatMap((group) => group.items);
135
- const index = items.findIndex((item) => item.id === id);
136
- return items[(index - 1 + items.length) % items.length];
137
- };
138
-
139
- export const filterItems = (
140
- groups: CommandMenuGroup[],
141
- filter: (item: CommandMenuItem) => boolean,
142
- ): CommandMenuGroup[] => {
143
- return groups.map((group) => ({
144
- ...group,
145
- items: group.items.filter(filter),
146
- }));
147
- };
148
-
149
- export const insertAtCursor = (view: EditorView, head: number, insert: string) => {
150
- view.dispatch({
151
- changes: { from: head, to: head, insert },
152
- selection: { anchor: head + insert.length, head: head + insert.length },
153
- });
154
- };
155
-
156
- /**
157
- * If the cursor is at the start of a line, insert the text at the cursor.
158
- * Otherwise, insert the text on a new line.
159
- */
160
- export const insertAtLineStart = (view: EditorView, head: number, insert: string) => {
161
- const line = view.state.doc.lineAt(head);
162
- if (line.from === head) {
163
- insertAtCursor(view, head, insert);
164
- } else {
165
- insert = '\n' + insert;
166
- view.dispatch({
167
- changes: { from: line.to, to: line.to, insert },
168
- selection: { anchor: line.to + insert.length, head: line.to + insert.length },
169
- });
170
- }
171
- };
172
-
173
- export const coreSlashCommands: CommandMenuGroup = {
174
- id: 'markdown',
175
- label: 'Markdown',
176
- items: [
177
- {
178
- id: 'heading-1',
179
- label: 'Heading 1',
180
- icon: 'ph--text-h-one--regular',
181
- onSelect: (view, head) => insertAtLineStart(view, head, '# '),
182
- },
183
- {
184
- id: 'heading-2',
185
- label: 'Heading 2',
186
- icon: 'ph--text-h-two--regular',
187
- onSelect: (view, head) => insertAtLineStart(view, head, '## '),
188
- },
189
- {
190
- id: 'heading-3',
191
- label: 'Heading 3',
192
- icon: 'ph--text-h-three--regular',
193
- onSelect: (view, head) => insertAtLineStart(view, head, '### '),
194
- },
195
- {
196
- id: 'heading-4',
197
- label: 'Heading 4',
198
- icon: 'ph--text-h-four--regular',
199
- onSelect: (view, head) => insertAtLineStart(view, head, '#### '),
200
- },
201
- {
202
- id: 'heading-5',
203
- label: 'Heading 5',
204
- icon: 'ph--text-h-five--regular',
205
- onSelect: (view, head) => insertAtLineStart(view, head, '##### '),
206
- },
207
- {
208
- id: 'heading-6',
209
- label: 'Heading 6',
210
- icon: 'ph--text-h-six--regular',
211
- onSelect: (view, head) => insertAtLineStart(view, head, '###### '),
212
- },
213
- {
214
- id: 'bullet-list',
215
- label: 'Bullet List',
216
- icon: 'ph--list-bullets--regular',
217
- onSelect: (view, head) => insertAtLineStart(view, head, '- '),
218
- },
219
- {
220
- id: 'numbered-list',
221
- label: 'Numbered List',
222
- icon: 'ph--list-numbers--regular',
223
- onSelect: (view, head) => insertAtLineStart(view, head, '1. '),
224
- },
225
- {
226
- id: 'task-list',
227
- label: 'Task List',
228
- icon: 'ph--list-checks--regular',
229
- onSelect: (view, head) => insertAtLineStart(view, head, '- [ ] '),
230
- },
231
- {
232
- id: 'quote',
233
- label: 'Quote',
234
- icon: 'ph--quotes--regular',
235
- onSelect: (view, head) => insertAtLineStart(view, head, '> '),
236
- },
237
- {
238
- id: 'code-block',
239
- label: 'Code Block',
240
- icon: 'ph--code-block--regular',
241
- onSelect: (view, head) => insertAtLineStart(view, head, '```\n\n```'),
242
- },
243
- {
244
- id: 'table',
245
- label: 'Table',
246
- icon: 'ph--table--regular',
247
- onSelect: (view, head) => insertAtLineStart(view, head, '| | | |\n|---|---|---|\n| | | |'),
248
- },
249
- ],
250
- };
251
-
252
- export const linkSlashCommands: CommandMenuGroup = {
253
- id: 'link',
254
- label: 'Link',
255
- items: [
256
- {
257
- id: 'inline-link',
258
- label: 'Inline link',
259
- icon: 'ph--link--regular',
260
- onSelect: (view, head) =>
261
- view.dispatch({
262
- changes: { from: head, insert: '@' },
263
- selection: { anchor: head + 1, head: head + 1 },
264
- effects: commandRangeEffect.of({ trigger: '@', range: { from: head, to: head + 1 } }),
265
- }),
266
- },
267
- {
268
- id: 'block-embed',
269
- label: 'Block embed',
270
- icon: 'ph--lego--regular',
271
- onSelect: (view, head) =>
272
- view.dispatch({
273
- changes: { from: head, insert: '@@' },
274
- selection: { anchor: head + 2, head: head + 2 },
275
- effects: commandRangeEffect.of({ trigger: '@', range: { from: head, to: head + 2 } }),
276
- }),
277
- },
278
- ],
279
- };
@@ -1,85 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { createContext } from '@radix-ui/react-context';
6
- import React, { type PropsWithChildren, useRef, useState, useEffect, useCallback, type RefObject } from 'react';
7
-
8
- import { addEventListener } from '@dxos/async';
9
- import { type DxRefTag, type DxRefTagActivate } from '@dxos/lit-ui';
10
- import { DropdownMenu } from '@dxos/react-ui';
11
-
12
- import { type PreviewLinkRef, type PreviewLinkTarget, type PreviewLookup } from '../../extensions';
13
-
14
- // TODO(burdon): Reconcile this file with RefPopover?
15
-
16
- const customEventOptions = { capture: true, passive: false };
17
-
18
- // Create a context for the dxn value.
19
- type RefDropdownMenuValue = Partial<{
20
- link: PreviewLinkRef;
21
- target: PreviewLinkTarget;
22
- pending: boolean;
23
- }>;
24
-
25
- const REF_DROPDOWN_MENU = 'RefDropdownMenu';
26
- const [RefDropdownMenuContextProvider, useRefDropdownMenu] = createContext<RefDropdownMenuValue>(REF_DROPDOWN_MENU, {});
27
-
28
- type RefDropdownMenuProviderProps = PropsWithChildren<{
29
- onLookup?: PreviewLookup;
30
- }>;
31
-
32
- const RefDropdownMenuProvider = ({ children, onLookup }: RefDropdownMenuProviderProps) => {
33
- const trigger = useRef<DxRefTag | null>(null);
34
- const [value, setValue] = useState<RefDropdownMenuValue>({});
35
- const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);
36
- const [open, setOpen] = useState(false);
37
-
38
- const handleDxRefTagActivate = useCallback(
39
- (event: DxRefTagActivate) => {
40
- const { refId, label, trigger: dxTrigger } = event;
41
- setValue((value) => ({
42
- ...value,
43
- link: { label, ref: refId },
44
- pending: true,
45
- }));
46
- trigger.current = dxTrigger;
47
- queueMicrotask(() => setOpen(true));
48
- void onLookup?.({ label, ref: refId }).then((target) =>
49
- setValue((value) => ({
50
- ...value,
51
- target: target ?? undefined,
52
- pending: false,
53
- })),
54
- );
55
- },
56
- [onLookup],
57
- );
58
-
59
- useEffect(() => {
60
- if (!rootRef) {
61
- return;
62
- }
63
-
64
- return addEventListener(rootRef, 'dx-ref-tag-activate' as any, handleDxRefTagActivate, customEventOptions);
65
- }, [rootRef]);
66
-
67
- return (
68
- <RefDropdownMenuContextProvider pending={value.pending} link={value.link} target={value.target}>
69
- <DropdownMenu.Root open={open} onOpenChange={setOpen}>
70
- <DropdownMenu.VirtualTrigger virtualRef={trigger as unknown as RefObject<HTMLButtonElement>} />
71
- <div role='none' className='contents' ref={setRootRef}>
72
- {children}
73
- </div>
74
- </DropdownMenu.Root>
75
- </RefDropdownMenuContextProvider>
76
- );
77
- };
78
-
79
- export const RefDropdownMenu = {
80
- Provider: RefDropdownMenuProvider,
81
- };
82
-
83
- export { useRefDropdownMenu };
84
-
85
- export type { RefDropdownMenuProviderProps, RefDropdownMenuValue };
@@ -1,99 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { createContext } from '@radix-ui/react-context';
6
- import React, {
7
- type PropsWithChildren,
8
- useRef,
9
- useState,
10
- useEffect,
11
- useCallback,
12
- type RefObject,
13
- forwardRef,
14
- } from 'react';
15
-
16
- import { addEventListener } from '@dxos/async';
17
- import { type DxRefTag, type DxRefTagActivate } from '@dxos/lit-ui';
18
- import { Popover } from '@dxos/react-ui';
19
-
20
- import { type PreviewLinkRef, type PreviewLinkTarget, type PreviewLookup } from '../../extensions';
21
-
22
- const customEventOptions = { capture: true, passive: false };
23
-
24
- export type RefPopoverProps = PropsWithChildren<{
25
- modal?: boolean;
26
- open?: boolean;
27
- onOpenChange?: (open: boolean) => void;
28
- onActivate?: (event: DxRefTagActivate) => void;
29
- }>;
30
-
31
- export const RefPopover = forwardRef<DxRefTag | null, RefPopoverProps>(
32
- ({ children, open, onOpenChange, modal, onActivate }, ref) => {
33
- const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);
34
-
35
- useEffect(() => {
36
- if (!rootRef || !onActivate) {
37
- return;
38
- }
39
-
40
- return addEventListener(rootRef, 'dx-ref-tag-activate' as any, onActivate, customEventOptions);
41
- }, [rootRef, onActivate]);
42
-
43
- return (
44
- <Popover.Root open={open} onOpenChange={onOpenChange} modal={modal}>
45
- <Popover.VirtualTrigger virtualRef={ref as unknown as RefObject<HTMLButtonElement>} />
46
- <div role='none' className='contents' ref={setRootRef}>
47
- {children}
48
- </div>
49
- </Popover.Root>
50
- );
51
- },
52
- );
53
-
54
- // Create a context for the dxn value.
55
- type RefPopoverValue = Partial<{ link: PreviewLinkRef; target: PreviewLinkTarget; pending: boolean }>;
56
-
57
- const REF_POPOVER = 'RefPopover';
58
- const [RefPopoverContextProvider, useRefPopover] = createContext<RefPopoverValue>(REF_POPOVER, {});
59
-
60
- type PreviewProviderProps = PropsWithChildren<{ onLookup?: PreviewLookup }>;
61
-
62
- const PreviewProvider = ({ children, onLookup }: PreviewProviderProps) => {
63
- const trigger = useRef<DxRefTag | null>(null);
64
- const [value, setValue] = useState<RefPopoverValue>({});
65
- const [open, setOpen] = useState(false);
66
-
67
- const handleDxRefTagActivate = useCallback(
68
- (event: DxRefTagActivate) => {
69
- const { refId, label, trigger: dxTrigger } = event;
70
- setValue((value) => ({
71
- ...value,
72
- link: { label, ref: refId },
73
- pending: true,
74
- }));
75
- trigger.current = dxTrigger;
76
- queueMicrotask(() => setOpen(true));
77
- void onLookup?.({ label, ref: refId }).then((target) =>
78
- setValue((value) => ({
79
- ...value,
80
- target: target ?? undefined,
81
- pending: false,
82
- })),
83
- );
84
- },
85
- [onLookup],
86
- );
87
-
88
- return (
89
- <RefPopoverContextProvider pending={value.pending} link={value.link} target={value.target}>
90
- <RefPopover ref={trigger} open={open} onOpenChange={setOpen} onActivate={handleDxRefTagActivate}>
91
- {children}
92
- </RefPopover>
93
- </RefPopoverContextProvider>
94
- );
95
- };
96
-
97
- export { PreviewProvider, useRefPopover };
98
-
99
- export type { PreviewProviderProps, RefPopoverValue };
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
-
5
- export * from './CommandMenu';
6
- export * from './RefPopover';
7
- export * from './RefDropdownMenu';