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

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 (436) hide show
  1. package/dist/lib/browser/index.mjs +1414 -8669
  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 +1414 -8668
  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 +53 -20
  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 -26
  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 +4 -8
  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 -3
  74. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/EditorToolbar.stories.d.ts +29 -27
  76. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Experimental.stories.d.ts +5 -4
  78. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  80. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Outliner.stories.d.ts +2 -2
  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 -5
  84. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  85. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  86. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  87. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  88. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -4
  89. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  90. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  91. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  92. package/dist/types/src/stories/components/EditorStory.d.ts +11 -20
  93. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  94. package/dist/types/src/stories/components/util.d.ts +4 -3
  95. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  96. package/dist/types/src/translations.d.ts +26 -26
  97. package/dist/types/src/translations.d.ts.map +1 -1
  98. package/dist/types/src/util/index.d.ts +0 -5
  99. package/dist/types/src/util/index.d.ts.map +1 -1
  100. package/dist/types/src/util/react.d.ts +6 -5
  101. package/dist/types/src/util/react.d.ts.map +1 -1
  102. package/dist/types/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +80 -75
  104. package/src/components/Editor/Editor.stories.tsx +89 -0
  105. package/src/components/Editor/Editor.tsx +170 -54
  106. package/src/components/Editor/EditorView.tsx +103 -0
  107. package/src/components/Editor/controller.ts +50 -0
  108. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  109. package/src/components/EditorMenuProvider/index.ts +10 -0
  110. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  111. package/src/components/EditorMenuProvider/menu.ts +70 -0
  112. package/src/components/EditorMenuProvider/popover.ts +286 -0
  113. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  114. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  115. package/src/components/EditorPreviewProvider/index.ts +5 -0
  116. package/src/components/EditorToolbar/EditorToolbar.tsx +90 -112
  117. package/src/components/EditorToolbar/blocks.ts +55 -47
  118. package/src/components/EditorToolbar/formatting.ts +44 -45
  119. package/src/components/EditorToolbar/headings.ts +47 -50
  120. package/src/components/EditorToolbar/image.ts +16 -14
  121. package/src/components/EditorToolbar/index.ts +2 -7
  122. package/src/components/EditorToolbar/lists.ts +42 -40
  123. package/src/components/EditorToolbar/search.ts +16 -14
  124. package/src/components/EditorToolbar/types.ts +8 -0
  125. package/src/components/EditorToolbar/view-mode.ts +37 -42
  126. package/src/components/index.ts +3 -2
  127. package/src/extensions/Assistant.stories.tsx +112 -0
  128. package/src/extensions/assistant-extension.tsx +223 -0
  129. package/src/extensions/index.ts +2 -27
  130. package/src/hooks/index.ts +1 -0
  131. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  132. package/src/hooks/useTextEditor.ts +33 -27
  133. package/src/index.ts +0 -13
  134. package/src/stories/Automerge.stories.tsx +174 -0
  135. package/src/stories/Comments.stories.tsx +49 -45
  136. package/src/stories/EditorToolbar.stories.tsx +42 -55
  137. package/src/stories/Experimental.stories.tsx +14 -16
  138. package/src/stories/Markdown.stories.tsx +16 -16
  139. package/src/stories/Outliner.stories.tsx +22 -24
  140. package/src/stories/Popover.stories.tsx +157 -0
  141. package/src/stories/Preview.stories.tsx +102 -84
  142. package/src/stories/Tags.stories.tsx +36 -13
  143. package/src/stories/TextEditor.stories.tsx +16 -48
  144. package/src/stories/Theme.stories.tsx +61 -0
  145. package/src/stories/components/EditorStory.tsx +46 -30
  146. package/src/stories/components/util.tsx +90 -59
  147. package/src/translations.ts +30 -25
  148. package/src/util/index.ts +1 -6
  149. package/src/util/react.tsx +8 -13
  150. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  151. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  152. package/dist/lib/browser/testing/index.mjs +0 -76
  153. package/dist/lib/browser/testing/index.mjs.map +0 -7
  154. package/dist/lib/browser/types/index.mjs +0 -13
  155. package/dist/lib/browser/types/index.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  157. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  158. package/dist/lib/node-esm/testing/index.mjs +0 -78
  159. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  160. package/dist/lib/node-esm/types/index.mjs +0 -14
  161. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  162. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts +0 -38
  163. package/dist/types/src/components/CommandMenu/CommandMenu.d.ts.map +0 -1
  164. package/dist/types/src/components/CommandMenu/index.d.ts +0 -2
  165. package/dist/types/src/components/CommandMenu/index.d.ts.map +0 -1
  166. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  167. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  168. package/dist/types/src/defaults.d.ts +0 -14
  169. package/dist/types/src/defaults.d.ts.map +0 -1
  170. package/dist/types/src/extensions/annotations.d.ts +0 -9
  171. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  172. package/dist/types/src/extensions/autocomplete.d.ts +0 -26
  173. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  175. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -47
  177. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  179. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  181. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  182. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  183. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  184. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  185. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  186. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  187. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  188. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  189. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  190. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  191. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  192. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  193. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  194. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  195. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  196. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  197. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  198. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  199. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  200. package/dist/types/src/extensions/blast.d.ts +0 -25
  201. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  202. package/dist/types/src/extensions/command-dialog/action.d.ts +0 -17
  203. package/dist/types/src/extensions/command-dialog/action.d.ts.map +0 -1
  204. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts +0 -6
  205. package/dist/types/src/extensions/command-dialog/command-dialog.d.ts.map +0 -1
  206. package/dist/types/src/extensions/command-dialog/hint.d.ts +0 -19
  207. package/dist/types/src/extensions/command-dialog/hint.d.ts.map +0 -1
  208. package/dist/types/src/extensions/command-dialog/index.d.ts +0 -4
  209. package/dist/types/src/extensions/command-dialog/index.d.ts.map +0 -1
  210. package/dist/types/src/extensions/command-dialog/state.d.ts +0 -16
  211. package/dist/types/src/extensions/command-dialog/state.d.ts.map +0 -1
  212. package/dist/types/src/extensions/command-dialog/typeahead.d.ts +0 -22
  213. package/dist/types/src/extensions/command-dialog/typeahead.d.ts.map +0 -1
  214. package/dist/types/src/extensions/command-menu/command-menu.d.ts +0 -20
  215. package/dist/types/src/extensions/command-menu/command-menu.d.ts.map +0 -1
  216. package/dist/types/src/extensions/command-menu/index.d.ts +0 -3
  217. package/dist/types/src/extensions/command-menu/index.d.ts.map +0 -1
  218. package/dist/types/src/extensions/command-menu/placeholder.d.ts +0 -10
  219. package/dist/types/src/extensions/command-menu/placeholder.d.ts.map +0 -1
  220. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts +0 -24
  221. package/dist/types/src/extensions/command-menu/useCommandMenu.d.ts.map +0 -1
  222. package/dist/types/src/extensions/comments.d.ts +0 -95
  223. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  224. package/dist/types/src/extensions/debug.d.ts +0 -3
  225. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  226. package/dist/types/src/extensions/dnd.d.ts +0 -9
  227. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  228. package/dist/types/src/extensions/factories.d.ts +0 -83
  229. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  230. package/dist/types/src/extensions/floating-menu.d.ts +0 -7
  231. package/dist/types/src/extensions/floating-menu.d.ts.map +0 -1
  232. package/dist/types/src/extensions/focus.d.ts +0 -7
  233. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  234. package/dist/types/src/extensions/folding.d.ts +0 -7
  235. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  236. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  237. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  238. package/dist/types/src/extensions/json.d.ts +0 -7
  239. package/dist/types/src/extensions/json.d.ts.map +0 -1
  240. package/dist/types/src/extensions/listener.d.ts +0 -11
  241. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  243. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  245. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  247. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  249. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  251. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  253. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  255. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  257. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  258. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  259. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  260. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  261. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  262. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  263. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  264. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  265. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  266. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  267. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  268. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  269. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  270. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  271. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  272. package/dist/types/src/extensions/mention.d.ts +0 -7
  273. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  274. package/dist/types/src/extensions/modes.d.ts +0 -10
  275. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  276. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  277. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  279. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  281. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  282. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  283. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  284. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  285. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  286. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  287. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  288. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  289. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  290. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  291. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  292. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  293. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  294. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  295. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  296. package/dist/types/src/extensions/preview/preview.d.ts +0 -29
  297. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  298. package/dist/types/src/extensions/selection.d.ts +0 -24
  299. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  300. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  301. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  302. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  303. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  304. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  305. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  306. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  307. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  308. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  309. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  310. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  311. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  312. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  313. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  314. package/dist/types/src/stories/CommandDialog.stories.d.ts +0 -14
  315. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +0 -1
  316. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  317. package/dist/types/src/styles/index.d.ts +0 -4
  318. package/dist/types/src/styles/index.d.ts.map +0 -1
  319. package/dist/types/src/styles/markdown.d.ts +0 -8
  320. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  321. package/dist/types/src/styles/theme.d.ts +0 -38
  322. package/dist/types/src/styles/theme.d.ts.map +0 -1
  323. package/dist/types/src/styles/tokens.d.ts +0 -3
  324. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  325. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  326. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  327. package/dist/types/src/testing/index.d.ts +0 -3
  328. package/dist/types/src/testing/index.d.ts.map +0 -1
  329. package/dist/types/src/testing/util.d.ts +0 -3
  330. package/dist/types/src/testing/util.d.ts.map +0 -1
  331. package/dist/types/src/types/index.d.ts +0 -2
  332. package/dist/types/src/types/index.d.ts.map +0 -1
  333. package/dist/types/src/types/types.d.ts +0 -21
  334. package/dist/types/src/types/types.d.ts.map +0 -1
  335. package/dist/types/src/util/cursor.d.ts +0 -31
  336. package/dist/types/src/util/cursor.d.ts.map +0 -1
  337. package/dist/types/src/util/debug.d.ts +0 -17
  338. package/dist/types/src/util/debug.d.ts.map +0 -1
  339. package/dist/types/src/util/decorations.d.ts +0 -4
  340. package/dist/types/src/util/decorations.d.ts.map +0 -1
  341. package/dist/types/src/util/dom.d.ts +0 -10
  342. package/dist/types/src/util/dom.d.ts.map +0 -1
  343. package/dist/types/src/util/facet.d.ts +0 -3
  344. package/dist/types/src/util/facet.d.ts.map +0 -1
  345. package/src/components/CommandMenu/CommandMenu.tsx +0 -348
  346. package/src/components/CommandMenu/index.ts +0 -5
  347. package/src/components/EditorToolbar/util.ts +0 -76
  348. package/src/defaults.ts +0 -52
  349. package/src/extensions/annotations.ts +0 -55
  350. package/src/extensions/autocomplete.ts +0 -219
  351. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  352. package/src/extensions/automerge/automerge.test.tsx +0 -78
  353. package/src/extensions/automerge/automerge.ts +0 -86
  354. package/src/extensions/automerge/cursor.ts +0 -28
  355. package/src/extensions/automerge/defs.ts +0 -31
  356. package/src/extensions/automerge/index.ts +0 -5
  357. package/src/extensions/automerge/sync.ts +0 -75
  358. package/src/extensions/automerge/update-automerge.ts +0 -50
  359. package/src/extensions/automerge/update-codemirror.ts +0 -115
  360. package/src/extensions/autoscroll.ts +0 -157
  361. package/src/extensions/awareness/awareness-provider.ts +0 -127
  362. package/src/extensions/awareness/awareness.ts +0 -315
  363. package/src/extensions/awareness/index.ts +0 -6
  364. package/src/extensions/blast.ts +0 -363
  365. package/src/extensions/command-dialog/action.ts +0 -55
  366. package/src/extensions/command-dialog/command-dialog.ts +0 -34
  367. package/src/extensions/command-dialog/hint.ts +0 -103
  368. package/src/extensions/command-dialog/index.ts +0 -7
  369. package/src/extensions/command-dialog/state.ts +0 -90
  370. package/src/extensions/command-dialog/typeahead.ts +0 -129
  371. package/src/extensions/command-menu/command-menu.ts +0 -210
  372. package/src/extensions/command-menu/index.ts +0 -6
  373. package/src/extensions/command-menu/placeholder.ts +0 -113
  374. package/src/extensions/command-menu/useCommandMenu.ts +0 -134
  375. package/src/extensions/comments.ts +0 -597
  376. package/src/extensions/debug.ts +0 -15
  377. package/src/extensions/dnd.ts +0 -37
  378. package/src/extensions/factories.ts +0 -284
  379. package/src/extensions/floating-menu.ts +0 -126
  380. package/src/extensions/focus.ts +0 -36
  381. package/src/extensions/folding.tsx +0 -44
  382. package/src/extensions/hashtag.tsx +0 -68
  383. package/src/extensions/json.ts +0 -57
  384. package/src/extensions/listener.ts +0 -38
  385. package/src/extensions/markdown/action.ts +0 -117
  386. package/src/extensions/markdown/bundle.ts +0 -93
  387. package/src/extensions/markdown/changes.test.ts +0 -26
  388. package/src/extensions/markdown/changes.ts +0 -149
  389. package/src/extensions/markdown/debug.ts +0 -44
  390. package/src/extensions/markdown/decorate.ts +0 -601
  391. package/src/extensions/markdown/formatting.test.ts +0 -498
  392. package/src/extensions/markdown/formatting.ts +0 -1267
  393. package/src/extensions/markdown/highlight.ts +0 -183
  394. package/src/extensions/markdown/image.ts +0 -118
  395. package/src/extensions/markdown/index.ts +0 -13
  396. package/src/extensions/markdown/link.ts +0 -50
  397. package/src/extensions/markdown/parser.test.ts +0 -75
  398. package/src/extensions/markdown/styles.ts +0 -135
  399. package/src/extensions/markdown/table.ts +0 -150
  400. package/src/extensions/mention.ts +0 -41
  401. package/src/extensions/modes.ts +0 -41
  402. package/src/extensions/outliner/commands.ts +0 -270
  403. package/src/extensions/outliner/editor.test.ts +0 -33
  404. package/src/extensions/outliner/editor.ts +0 -184
  405. package/src/extensions/outliner/index.ts +0 -7
  406. package/src/extensions/outliner/outliner.test.ts +0 -100
  407. package/src/extensions/outliner/outliner.ts +0 -167
  408. package/src/extensions/outliner/selection.ts +0 -50
  409. package/src/extensions/outliner/tree.test.ts +0 -168
  410. package/src/extensions/outliner/tree.ts +0 -317
  411. package/src/extensions/preview/index.ts +0 -5
  412. package/src/extensions/preview/preview.ts +0 -190
  413. package/src/extensions/selection.ts +0 -100
  414. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  415. package/src/extensions/tags/extended-markdown.ts +0 -78
  416. package/src/extensions/tags/index.ts +0 -7
  417. package/src/extensions/tags/streamer.ts +0 -243
  418. package/src/extensions/tags/xml-tags.ts +0 -393
  419. package/src/extensions/tags/xml-util.ts +0 -94
  420. package/src/extensions/typewriter.ts +0 -68
  421. package/src/stories/CommandDialog.stories.tsx +0 -89
  422. package/src/stories/CommandMenu.stories.tsx +0 -158
  423. package/src/styles/index.ts +0 -7
  424. package/src/styles/markdown.ts +0 -26
  425. package/src/styles/theme.ts +0 -268
  426. package/src/styles/tokens.ts +0 -17
  427. package/src/testing/PreviewPopover.tsx +0 -78
  428. package/src/testing/index.ts +0 -6
  429. package/src/testing/util.ts +0 -7
  430. package/src/types/index.ts +0 -5
  431. package/src/types/types.ts +0 -32
  432. package/src/util/cursor.ts +0 -56
  433. package/src/util/debug.ts +0 -64
  434. package/src/util/decorations.ts +0 -21
  435. package/src/util/dom.ts +0 -34
  436. package/src/util/facet.ts +0 -13
@@ -1,158 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import { type Meta, type StoryObj } from '@storybook/react-vite';
7
- import React, { useCallback, useRef } from 'react';
8
-
9
- import { Obj, Query } from '@dxos/echo';
10
- import { faker } from '@dxos/random';
11
- import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
12
- import { Domino } from '@dxos/react-ui';
13
- import { withTheme } from '@dxos/react-ui/testing';
14
- import { Testing, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
15
-
16
- import {
17
- type CommandMenuGroup,
18
- type CommandMenuItem,
19
- CommandMenuProvider,
20
- coreSlashCommands,
21
- filterItems,
22
- insertAtCursor,
23
- insertAtLineStart,
24
- linkSlashCommands,
25
- } from '../components';
26
- import { type UseCommandMenuOptions, useCommandMenu } from '../extensions';
27
- import { str } from '../testing';
28
-
29
- import { EditorStory, names } from './components';
30
-
31
- const generator: ValueGenerator = faker as any;
32
-
33
- type StoryProps = Omit<UseCommandMenuOptions, 'viewRef'> & { text: string };
34
-
35
- const DefaultStory = ({ text, ...options }: StoryProps) => {
36
- const viewRef = useRef<EditorView>(null);
37
- const { groupsRef, commandMenu, ...commandMenuProps } = useCommandMenu({ viewRef, ...options });
38
-
39
- return (
40
- <CommandMenuProvider groups={groupsRef.current} {...commandMenuProps}>
41
- <EditorStory ref={viewRef} text={text} placeholder={''} extensions={commandMenu} />
42
- </CommandMenuProvider>
43
- );
44
- };
45
-
46
- const groups: CommandMenuGroup[] = [
47
- coreSlashCommands,
48
- linkSlashCommands,
49
- {
50
- id: 'custom',
51
- label: 'Custom',
52
- items: [
53
- {
54
- id: 'custom-1',
55
- label: 'Log',
56
- icon: 'ph--log--regular',
57
- onSelect: console.log,
58
- },
59
- ],
60
- },
61
- ];
62
-
63
- const meta = {
64
- title: 'ui/react-ui-editor/CommandMenu',
65
- render: DefaultStory,
66
- decorators: [withTheme],
67
- parameters: {
68
- layout: 'fullscreen',
69
- },
70
- } satisfies Meta<typeof DefaultStory>;
71
-
72
- export default meta;
73
-
74
- type Story = StoryObj<typeof meta>;
75
-
76
- // TODO(burdon): Not working.
77
- export const Slash: Story = {
78
- args: {
79
- text: str('# Slash', '', names.join(' '), ''),
80
- trigger: '/',
81
- placeholder: {
82
- content: () =>
83
- Domino.of('div')
84
- .children(
85
- Domino.of('span').text('Press'),
86
- Domino.of('span').text('/').classNames('border border-separator rounded-sm mx-1 px-1'),
87
- Domino.of('span').text('for commands'),
88
- )
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
- onCreateSpace: 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,7 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export * from './markdown';
6
- export * from './theme';
7
- export * from './tokens';
@@ -1,26 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { mx } from '@dxos/react-ui-theme';
6
-
7
- export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
8
-
9
- // https://tailwindcss.com/docs/font-weight
10
- const headings: Record<HeadingLevel, string> = {
11
- 1: 'text-4xl',
12
- 2: 'text-3xl',
13
- 3: 'text-2xl',
14
- 4: 'text-xl',
15
- 5: 'text-lg',
16
- 6: '', // TODO(burdon): Should be text-base, but that's a color in our system.
17
- };
18
-
19
- export const theme = {
20
- code: 'font-mono !no-underline text-neutral-700 dark:text-neutral-300',
21
- codeMark: 'font-mono text-primary-500',
22
- mark: 'opacity-50',
23
- heading: (level: HeadingLevel) => {
24
- return mx(headings[level], 'dark:text-primary-400');
25
- },
26
- };
@@ -1,268 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type StyleSpec } from 'style-mod';
6
-
7
- import { fontBody } from './tokens';
8
-
9
- export type ThemeStyles = Record<string, StyleSpec>;
10
-
11
- /**
12
- * Minimal styles.
13
- * https://codemirror.net/examples/styling
14
- *
15
- * Examples:
16
- * - https://github.com/codemirror/view/blob/main/src/theme.ts
17
- * - https://github.com/codemirror/theme-one-dark/blob/main/src/one-dark.ts
18
- *
19
- * Main layout:
20
- * https://codemirror.net/examples/styling
21
- * https://codemirror.net/docs/guide (DOM Structure).
22
- *
23
- * <div class="cm-editor [cm-focused] [generated classes]">
24
- * <div class="cm-scroller">
25
- * <div class="cm-gutters">
26
- * <div class="cm-gutter [...]">
27
- * <div class="cm-gutterElement">...</div>
28
- * </div>
29
- * </div>
30
- * <div class="cm-content" role="textbox" contenteditable="true">
31
- * <div class="cm-line"></div>
32
- * </div>
33
- * <div class="cm-selectionLayer">
34
- * <div class="cm-selectionBackground"></div>
35
- * </div>
36
- * <div class="cm-cursorLayer">
37
- * <div class="cm-cursor"></div>
38
- * </div>
39
- * </div>
40
- * </div>
41
- *
42
- * NOTE: `light` and `dark` selectors are preprocessed by CodeMirror and can only be in the base theme.
43
- * NOTE: Use 'unset' to remove default CM style.
44
- */
45
- export const defaultTheme: ThemeStyles = {
46
- '&': {},
47
- '&.cm-focused': {
48
- outline: 'none',
49
- },
50
-
51
- /**
52
- * Scroller
53
- */
54
- '.cm-scroller': {
55
- overflowY: 'auto',
56
- },
57
-
58
- /**
59
- * Content
60
- * NOTE: Apply margins to content so that scrollbar is at the edge of the container.
61
- */
62
- '.cm-content': {
63
- padding: 'unset',
64
- fontFamily: fontBody,
65
- // NOTE: Base font size (otherwise defined by HTML tag, which might be different for storybook).
66
- fontSize: '16px',
67
- lineHeight: '24px',
68
- color: 'unset',
69
- },
70
-
71
- /**
72
- * Gutters
73
- * NOTE: Gutters should have the same top margin as the content.
74
- */
75
- '.cm-gutters': {
76
- borderRight: 'none',
77
- // background: 'transparent',
78
- },
79
- '.cm-gutter': {},
80
- '.cm-gutter.cm-lineNumbers': {
81
- paddingRight: '4px',
82
- borderRight: '1px solid var(--dx-subduedSeparator)',
83
- },
84
- '.cm-gutter.cm-lineNumbers .cm-gutterElement': {
85
- minWidth: '40px',
86
- },
87
- /**
88
- * Height is set to match the corresponding line (which may have wrapped).
89
- */
90
- '.cm-gutterElement': {
91
- lineHeight: '24px',
92
- fontSize: '12px',
93
- },
94
-
95
- /**
96
- * Line.
97
- */
98
- '.cm-line': {
99
- lineHeight: '24px',
100
- paddingInline: 0,
101
- },
102
- '.cm-activeLine': {
103
- background: 'var(--dx-cmActiveLine)',
104
- },
105
-
106
- /**
107
- * Cursor (layer).
108
- */
109
- '.cm-cursor, .cm-dropCursor': {
110
- borderLeft: '2px solid var(--dx-cmCursor)',
111
- },
112
- '.cm-placeholder': {
113
- color: 'var(--dx-placeholder)',
114
- },
115
-
116
- /**
117
- * Selection (layer).
118
- */
119
- '.cm-selectionBackground': {
120
- background: 'var(--dx-cmSelection)',
121
- },
122
- '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {
123
- background: 'var(--dx-cmFocusedSelection)',
124
- },
125
-
126
- /**
127
- * Search.
128
- * NOTE: Matches comment.
129
- */
130
- '.cm-searchMatch': {
131
- margin: '0 -3px',
132
- padding: '3px',
133
- borderRadius: '3px',
134
- background: 'var(--dx-cmHighlightSurface)',
135
- color: 'var(--dx-cmHighlight)',
136
- },
137
- '.cm-searchMatch-selected': {
138
- textDecoration: 'underline',
139
- },
140
-
141
- /**
142
- * Link.
143
- */
144
- '.cm-link': {
145
- textDecorationLine: 'underline',
146
- textDecorationThickness: '1px',
147
- textDecorationColor: 'var(--dx-separator)',
148
- textUnderlineOffset: '2px',
149
- borderRadius: '.125rem',
150
- },
151
- '.cm-link > span': {
152
- color: 'var(--dx-accentText)',
153
- },
154
-
155
- /**
156
- * Tooltip.
157
- */
158
- '.cm-tooltip': {
159
- background: 'var(--dx-baseSurface)',
160
- },
161
- '.cm-tooltip-below': {},
162
-
163
- /**
164
- * Autocomplete.
165
- * https://github.com/codemirror/autocomplete/blob/main/src/completion.ts
166
- */
167
- '.cm-tooltip.cm-tooltip-autocomplete': {
168
- marginTop: '6px',
169
- marginLeft: '-10px',
170
- border: '2px solid var(--dx-separator)',
171
- borderRadius: '4px',
172
- },
173
- '.cm-tooltip.cm-tooltip-autocomplete > ul': {
174
- maxHeight: '20em',
175
- },
176
- '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {
177
- padding: '4px',
178
- },
179
- '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {
180
- background: 'var(--dx-activeSurface)',
181
- color: 'var(--dx-activeSurfaceText)',
182
- },
183
- '.cm-tooltip.cm-tooltip-autocomplete > ul > completion-section': {
184
- paddingLeft: '4px !important',
185
- color: 'var(--dx-hoverSurfaceText)',
186
- },
187
-
188
- '.cm-completionInfo': {
189
- width: '360px !important',
190
- margin: '-10px 1px 0 1px',
191
- padding: '8px !important',
192
- borderColor: 'var(--dx-separator)',
193
- },
194
- '.cm-completionIcon': {
195
- display: 'none',
196
- },
197
- '.cm-completionLabel': {
198
- fontFamily: fontBody,
199
- color: 'var(--dx-description)',
200
- padding: '0 4px',
201
- },
202
- '.cm-completionMatchedText': {
203
- textDecoration: 'none !important',
204
- color: 'var(--dx-baseText)',
205
- },
206
-
207
- /**
208
- * Panels
209
- * https://github.com/codemirror/search/blob/main/src/search.ts#L745
210
- *
211
- * Find/replace panel.
212
- * <div class="cm-announced">...</div>
213
- * <div class="cm-scroller">...</div>
214
- * <div class="cm-panels cm-panels-bottom">
215
- * <div class="cm-search cm-panel">
216
- * <input class="cm-textfield" />
217
- * <button class="cm-button">...</button>
218
- * <label><input type="checkbox" />...</label>
219
- * </div>
220
- * </div
221
- */
222
- // TODO(burdon): Implement custom panel (with icon buttons).
223
- '.cm-panels': {},
224
- '.cm-panel': {
225
- fontFamily: fontBody,
226
- backgroundColor: 'var(--surface-bg)',
227
- },
228
- '.cm-panel input, .cm-panel button, .cm-panel label': {
229
- color: 'var(--dx-subdued)',
230
- fontFamily: fontBody,
231
- fontSize: '14px',
232
- all: 'unset',
233
- margin: '3px !important',
234
- padding: '2px 6px !important',
235
- outline: '1px solid transparent',
236
- },
237
- '.cm-panel input, .cm-panel button': {
238
- backgroundColor: 'var(--dx-inputSurface)',
239
- },
240
- '.cm-panel input:focus, .cm-panel button:focus': {
241
- outline: '1px solid var(--dx-neutralFocusIndicator)',
242
- },
243
- '.cm-panel label': {
244
- display: 'inline-flex',
245
- alignItems: 'center',
246
- cursor: 'pointer',
247
- },
248
- '.cm-panel input.cm-textfield': {},
249
- '.cm-panel input[type=checkbox]': {
250
- width: '8px',
251
- height: '8px',
252
- marginRight: '6px !important',
253
- padding: '2px !important',
254
- color: 'var(--dx-neutralFocusIndicator)',
255
- },
256
- '.cm-panel button': {
257
- '&:hover': {
258
- backgroundColor: 'var(--dx-accentSurfaceHover) !important',
259
- },
260
- '&:active': {
261
- backgroundColor: 'var(--dx-accentSurfaceHover)',
262
- },
263
- },
264
- '.cm-panel.cm-search': {
265
- padding: '4px',
266
- borderTop: '1px solid var(--dx-separator)',
267
- },
268
- };
@@ -1,17 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { tokens } from '@dxos/react-ui-theme';
6
- import { get } from '@dxos/util';
7
-
8
- /**
9
- * Returns the tailwind token value.
10
- */
11
- const getToken = (path: string, defaultValue?: string | string[]): string => {
12
- const value = get(tokens, path, defaultValue);
13
- return value?.toString() ?? '';
14
- };
15
-
16
- export const fontBody = getToken('fontFamily.body');
17
- export const fontMono = getToken('fontFamily.mono');
@@ -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,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './types';
@@ -1,32 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import * as Schema from 'effect/Schema';
7
-
8
- // Runtime data structure.
9
- export type Range = {
10
- from: number;
11
- to: number;
12
- };
13
-
14
- // Persistent data structure.
15
- // TODO(burdon): Rename annotation?
16
- export type Comment = {
17
- id: string;
18
- cursor?: string;
19
- };
20
-
21
- /**
22
- * Callback that renders into a DOM element within the editor.
23
- */
24
- export type RenderCallback<Props extends object> = (el: HTMLElement, props: Props, view: EditorView) => void;
25
-
26
- export const EditorViewModes = ['preview', 'readonly', 'source'] as const;
27
- export const EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));
28
- export type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;
29
-
30
- export const EditorInputModes = ['default', 'vim', 'vscode'] as const;
31
- export const EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));
32
- export type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;
@@ -1,56 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type EditorState } from '@codemirror/state';
6
-
7
- import { type Range } from '../types';
8
-
9
- import { singleValueFacet } from './facet';
10
-
11
- /**
12
- * Determines if two ranges overlap.
13
- * A range is considered to overlap if there is any intersection
14
- * between the two ranges, inclusive of their boundaries.
15
- */
16
- export const overlap = (a: Range, b: Range): boolean => a.from <= b.to && a.to >= b.from;
17
-
18
- /**
19
- * Converts indexes into the text document into stable peer-independent cursors.
20
- *
21
- * See:
22
- * - https://automerge.org/automerge/api-docs/js/functions/next.getCursor.html
23
- * - https://github.com/yjs/yjs?tab=readme-ov-file#relative-positions
24
- *
25
- * @param {assoc} number Negative values will associate the cursor with the previous character
26
- * while positive - with the next one.
27
- */
28
- export interface CursorConverter {
29
- toCursor(position: number, assoc?: -1 | 1 | undefined): string;
30
- fromCursor(cursor: string): number;
31
- }
32
-
33
- const defaultCursorConverter: CursorConverter = {
34
- toCursor: (position) => position.toString(),
35
- fromCursor: (cursor) => parseInt(cursor),
36
- };
37
-
38
- export class Cursor {
39
- static readonly converter = singleValueFacet(defaultCursorConverter);
40
-
41
- static readonly getCursorFromRange = (state: EditorState, range: Range) => {
42
- const cursorConverter = state.facet(Cursor.converter);
43
- const from = cursorConverter.toCursor(range.from);
44
- const to = cursorConverter.toCursor(range.to, -1);
45
- return [from, to].join(':');
46
- };
47
-
48
- static readonly getRangeFromCursor = (state: EditorState, cursor: string) => {
49
- const cursorConverter = state.facet(Cursor.converter);
50
-
51
- const parts = cursor.split(':');
52
- const from = cursorConverter.fromCursor(parts[0]);
53
- const to = cursorConverter.fromCursor(parts[1]);
54
- return from !== undefined && to !== undefined ? { from, to } : undefined;
55
- };
56
- }