@dxos/react-ui-editor 0.8.3 → 0.8.4-main.1068cf700f

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 +1304 -7438
  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 +1304 -7438
  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 +47 -0
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -0
  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/index.d.ts +2 -0
  12. package/dist/types/src/components/Editor/index.d.ts.map +1 -0
  13. package/dist/types/src/components/EditorContent/EditorContent.d.ts +31 -0
  14. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  16. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  18. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -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 +46 -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/actions.d.ts +24 -0
  38. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  39. package/dist/types/src/components/EditorToolbar/blocks.d.ts +8 -7
  40. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/formatting.d.ts +8 -7
  42. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/headings.d.ts +8 -7
  44. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/image.d.ts +4 -11
  46. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  48. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/search.d.ts +4 -11
  50. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  51. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  52. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  53. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +9 -8
  54. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  55. package/dist/types/src/components/index.d.ts +5 -2
  56. package/dist/types/src/components/index.d.ts.map +1 -1
  57. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  58. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  59. package/dist/types/src/index.d.ts +1 -9
  60. package/dist/types/src/index.d.ts.map +1 -1
  61. package/dist/types/src/stories/Automerge.stories.d.ts +43 -0
  62. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  63. package/dist/types/src/stories/CommandDialog.stories.d.ts +14 -0
  64. package/dist/types/src/stories/CommandDialog.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 +40 -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 +15 -21
  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 +29 -30
  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 +6 -2
  94. package/dist/types/src/util/react.d.ts.map +1 -1
  95. package/dist/types/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +82 -75
  97. package/src/components/Editor/Editor.stories.tsx +95 -0
  98. package/src/components/Editor/Editor.tsx +185 -0
  99. package/src/components/Editor/index.ts +5 -0
  100. package/src/components/EditorContent/EditorContent.tsx +83 -0
  101. package/src/components/EditorContent/controller.ts +50 -0
  102. package/src/components/EditorContent/index.ts +6 -0
  103. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +227 -0
  104. package/src/components/EditorMenuProvider/index.ts +10 -0
  105. package/src/components/EditorMenuProvider/menu-presets.ts +124 -0
  106. package/src/components/EditorMenuProvider/menu.ts +70 -0
  107. package/src/components/EditorMenuProvider/popover.ts +285 -0
  108. package/src/components/EditorMenuProvider/useEditorMenu.ts +173 -0
  109. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  110. package/src/components/EditorPreviewProvider/index.ts +5 -0
  111. package/src/components/EditorToolbar/EditorToolbar.tsx +119 -96
  112. package/src/components/EditorToolbar/actions.ts +87 -0
  113. package/src/components/EditorToolbar/blocks.ts +23 -26
  114. package/src/components/EditorToolbar/formatting.ts +24 -27
  115. package/src/components/EditorToolbar/headings.ts +20 -12
  116. package/src/components/EditorToolbar/image.ts +17 -6
  117. package/src/components/EditorToolbar/index.ts +3 -7
  118. package/src/components/EditorToolbar/search.ts +17 -6
  119. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  120. package/src/components/EditorToolbar/view-mode.ts +15 -9
  121. package/src/components/index.ts +7 -2
  122. package/src/hooks/useTextEditor.ts +39 -45
  123. package/src/index.ts +1 -11
  124. package/src/stories/Automerge.stories.tsx +175 -0
  125. package/src/stories/CommandDialog.stories.tsx +81 -0
  126. package/src/stories/Comments.stories.tsx +59 -51
  127. package/src/stories/EditorToolbar.stories.tsx +45 -30
  128. package/src/stories/Experimental.stories.tsx +18 -16
  129. package/src/stories/Markdown.stories.tsx +37 -33
  130. package/src/stories/Outliner.stories.tsx +53 -42
  131. package/src/stories/Popover.stories.tsx +158 -0
  132. package/src/stories/Preview.stories.tsx +105 -94
  133. package/src/stories/Tags.stories.tsx +104 -0
  134. package/src/stories/TextEditor.stories.tsx +51 -76
  135. package/src/stories/Theme.stories.tsx +61 -0
  136. package/src/stories/components/EditorStory.tsx +41 -33
  137. package/src/stories/components/util.tsx +43 -11
  138. package/src/translations.ts +9 -7
  139. package/src/util/index.ts +1 -5
  140. package/src/util/react.tsx +7 -3
  141. package/dist/lib/browser/testing/index.mjs +0 -6
  142. package/dist/lib/browser/testing/index.mjs.map +0 -7
  143. package/dist/lib/node/index.cjs +0 -7754
  144. package/dist/lib/node/index.cjs.map +0 -7
  145. package/dist/lib/node/meta.json +0 -1
  146. package/dist/lib/node/testing/index.cjs +0 -29
  147. package/dist/lib/node/testing/index.cjs.map +0 -7
  148. package/dist/lib/node-esm/testing/index.mjs +0 -8
  149. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  150. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  151. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  152. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -50
  153. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  154. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  155. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  156. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  157. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  158. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  159. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  160. package/dist/types/src/components/Popover/index.d.ts +0 -4
  161. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  162. package/dist/types/src/defaults.d.ts +0 -14
  163. package/dist/types/src/defaults.d.ts.map +0 -1
  164. package/dist/types/src/extensions/annotations.d.ts +0 -9
  165. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  166. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  167. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  169. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -56
  171. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  173. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  175. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  177. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  179. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  181. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  182. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  183. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  184. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  185. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  186. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  187. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  188. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  189. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  190. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  191. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  192. package/dist/types/src/extensions/blast.d.ts +0 -25
  193. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  194. package/dist/types/src/extensions/command/action.d.ts +0 -17
  195. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  196. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  197. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  198. package/dist/types/src/extensions/command/command.d.ts +0 -6
  199. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  200. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  201. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  202. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  203. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  204. package/dist/types/src/extensions/command/index.d.ts +0 -7
  205. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  206. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  207. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  208. package/dist/types/src/extensions/command/state.d.ts +0 -16
  209. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  210. package/dist/types/src/extensions/command/typeahead.d.ts +0 -17
  211. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  212. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  213. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  214. package/dist/types/src/extensions/comments.d.ts +0 -95
  215. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  216. package/dist/types/src/extensions/debug.d.ts +0 -3
  217. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  218. package/dist/types/src/extensions/dnd.d.ts +0 -9
  219. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  220. package/dist/types/src/extensions/factories.d.ts +0 -64
  221. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  222. package/dist/types/src/extensions/focus.d.ts +0 -7
  223. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  224. package/dist/types/src/extensions/folding.d.ts +0 -7
  225. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  226. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  227. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  228. package/dist/types/src/extensions/index.d.ts +0 -23
  229. package/dist/types/src/extensions/index.d.ts.map +0 -1
  230. package/dist/types/src/extensions/json.d.ts +0 -7
  231. package/dist/types/src/extensions/json.d.ts.map +0 -1
  232. package/dist/types/src/extensions/listener.d.ts +0 -11
  233. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  235. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -16
  237. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  239. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  241. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  243. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -17
  245. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  247. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  249. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  251. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  253. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  255. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  257. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  258. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  259. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  260. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  261. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  262. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  263. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  264. package/dist/types/src/extensions/mention.d.ts +0 -7
  265. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  266. package/dist/types/src/extensions/modes.d.ts +0 -17
  267. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  268. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  269. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  270. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  271. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  272. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  273. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  274. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  275. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  276. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  277. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  279. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  281. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  282. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  283. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  284. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  285. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  286. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  287. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  288. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  289. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  290. package/dist/types/src/extensions/selection.d.ts +0 -24
  291. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  292. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  293. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  294. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  295. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  296. package/dist/types/src/stories/CommandMenu.stories.d.ts +0 -13
  297. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  298. package/dist/types/src/styles/index.d.ts +0 -4
  299. package/dist/types/src/styles/index.d.ts.map +0 -1
  300. package/dist/types/src/styles/markdown.d.ts +0 -8
  301. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  302. package/dist/types/src/styles/theme.d.ts +0 -38
  303. package/dist/types/src/styles/theme.d.ts.map +0 -1
  304. package/dist/types/src/styles/tokens.d.ts +0 -3
  305. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  306. package/dist/types/src/testing/index.d.ts +0 -2
  307. package/dist/types/src/testing/index.d.ts.map +0 -1
  308. package/dist/types/src/testing/util.d.ts +0 -2
  309. package/dist/types/src/testing/util.d.ts.map +0 -1
  310. package/dist/types/src/types.d.ts +0 -14
  311. package/dist/types/src/types.d.ts.map +0 -1
  312. package/dist/types/src/util/cursor.d.ts +0 -31
  313. package/dist/types/src/util/cursor.d.ts.map +0 -1
  314. package/dist/types/src/util/debug.d.ts +0 -17
  315. package/dist/types/src/util/debug.d.ts.map +0 -1
  316. package/dist/types/src/util/dom.d.ts +0 -20
  317. package/dist/types/src/util/dom.d.ts.map +0 -1
  318. package/dist/types/src/util/facet.d.ts +0 -3
  319. package/dist/types/src/util/facet.d.ts.map +0 -1
  320. package/src/components/EditorToolbar/lists.ts +0 -59
  321. package/src/components/EditorToolbar/util.ts +0 -64
  322. package/src/components/Popover/CommandMenu.tsx +0 -279
  323. package/src/components/Popover/RefDropdownMenu.tsx +0 -79
  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 -140
  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 -376
  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 -116
  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 -240
  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/index.ts +0 -26
  360. package/src/extensions/json.ts +0 -57
  361. package/src/extensions/listener.ts +0 -38
  362. package/src/extensions/markdown/action.ts +0 -116
  363. package/src/extensions/markdown/bundle.ts +0 -71
  364. package/src/extensions/markdown/changes.test.ts +0 -26
  365. package/src/extensions/markdown/changes.ts +0 -149
  366. package/src/extensions/markdown/debug.ts +0 -44
  367. package/src/extensions/markdown/decorate.ts +0 -591
  368. package/src/extensions/markdown/formatting.test.ts +0 -498
  369. package/src/extensions/markdown/formatting.ts +0 -1265
  370. package/src/extensions/markdown/highlight.ts +0 -183
  371. package/src/extensions/markdown/image.ts +0 -119
  372. package/src/extensions/markdown/index.ts +0 -13
  373. package/src/extensions/markdown/link.ts +0 -47
  374. package/src/extensions/markdown/parser.test.ts +0 -75
  375. package/src/extensions/markdown/styles.ts +0 -135
  376. package/src/extensions/markdown/table.ts +0 -144
  377. package/src/extensions/mention.ts +0 -41
  378. package/src/extensions/modes.ts +0 -50
  379. package/src/extensions/outliner/commands.ts +0 -270
  380. package/src/extensions/outliner/editor.test.ts +0 -33
  381. package/src/extensions/outliner/editor.ts +0 -184
  382. package/src/extensions/outliner/index.ts +0 -7
  383. package/src/extensions/outliner/outliner.test.ts +0 -99
  384. package/src/extensions/outliner/outliner.ts +0 -166
  385. package/src/extensions/outliner/selection.ts +0 -50
  386. package/src/extensions/outliner/tree.test.ts +0 -167
  387. package/src/extensions/outliner/tree.ts +0 -317
  388. package/src/extensions/preview/index.ts +0 -5
  389. package/src/extensions/preview/preview.ts +0 -193
  390. package/src/extensions/selection.ts +0 -100
  391. package/src/extensions/typewriter.ts +0 -68
  392. package/src/stories/Command.stories.tsx +0 -97
  393. package/src/stories/CommandMenu.stories.tsx +0 -159
  394. package/src/styles/index.ts +0 -7
  395. package/src/styles/markdown.ts +0 -26
  396. package/src/styles/theme.ts +0 -266
  397. package/src/styles/tokens.ts +0 -17
  398. package/src/testing/index.ts +0 -5
  399. package/src/testing/util.ts +0 -5
  400. package/src/types.ts +0 -23
  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,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,79 +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 with RefPopover?
15
-
16
- const customEventOptions = { capture: true, passive: false };
17
-
18
- // Create a context for the dxn value.
19
- type RefDropdownMenuValue = Partial<{ link: PreviewLinkRef; target: PreviewLinkTarget; pending: boolean }>;
20
-
21
- const REF_DROPDOWN_MENU = 'RefDropdownMenu';
22
- const [RefDropdownMenuContextProvider, useRefDropdownMenu] = createContext<RefDropdownMenuValue>(REF_DROPDOWN_MENU, {});
23
-
24
- type RefDropdownMenuProviderProps = PropsWithChildren<{ onLookup?: PreviewLookup }>;
25
-
26
- const RefDropdownMenuProvider = ({ children, onLookup }: RefDropdownMenuProviderProps) => {
27
- const trigger = useRef<DxRefTag | null>(null);
28
- const [value, setValue] = useState<RefDropdownMenuValue>({});
29
- const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);
30
- const [open, setOpen] = useState(false);
31
-
32
- const handleDxRefTagActivate = useCallback(
33
- (event: DxRefTagActivate) => {
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
- useEffect(() => {
54
- if (!rootRef) {
55
- return;
56
- }
57
-
58
- return addEventListener(rootRef, 'dx-ref-tag-activate' as any, handleDxRefTagActivate, customEventOptions);
59
- }, [rootRef]);
60
-
61
- return (
62
- <RefDropdownMenuContextProvider pending={value.pending} link={value.link} target={value.target}>
63
- <DropdownMenu.Root open={open} onOpenChange={setOpen}>
64
- <DropdownMenu.VirtualTrigger virtualRef={trigger as unknown as RefObject<HTMLButtonElement>} />
65
- <div role='none' className='contents' ref={setRootRef}>
66
- {children}
67
- </div>
68
- </DropdownMenu.Root>
69
- </RefDropdownMenuContextProvider>
70
- );
71
- };
72
-
73
- export const RefDropdownMenu = {
74
- Provider: RefDropdownMenuProvider,
75
- };
76
-
77
- export { useRefDropdownMenu };
78
-
79
- 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';
package/src/defaults.ts DELETED
@@ -1,49 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { EditorView } from '@codemirror/view';
6
-
7
- import { mx } from '@dxos/react-ui-theme';
8
-
9
- import { type ThemeExtensionsOptions } from './extensions';
10
- import { fontMono } from './styles';
11
-
12
- /**
13
- * CodeMirror content width.
14
- * 40rem = 640px. Corresponds to initial plank width (Google docs, Stashpad, etc.)
15
- * 50rem = 800px. Maximum content width for solo mode.
16
- * NOTE: Max width - 4rem = 2rem left/right margin (or 2rem gutter plus 1rem left/right margin).
17
- */
18
- export const editorWidth = '!mli-auto is-full max-is-[min(50rem,100%-4rem)]';
19
-
20
- export const editorSlots: ThemeExtensionsOptions['slots'] = {
21
- scroll: {
22
- className: 'pbs-2',
23
- },
24
- content: {
25
- className: editorWidth,
26
- },
27
- };
28
-
29
- export const editorGutter = EditorView.theme({
30
- '.cm-gutters': {
31
- background: 'var(--dx-baseSurface)',
32
- paddingRight: '1rem',
33
- },
34
- });
35
-
36
- export const editorMonospace = EditorView.theme({
37
- '.cm-content': {
38
- fontFamily: fontMono,
39
- },
40
- });
41
-
42
- export const editorWithToolbarLayout =
43
- 'grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden';
44
-
45
- export const stackItemContentEditorClassNames = (role?: string) =>
46
- mx(
47
- 'attention-surface dx-focus-ring-inset data-[toolbar=disabled]:pbs-2',
48
- role === 'section' ? '[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24' : 'min-bs-0',
49
- );
@@ -1,55 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type Extension, RangeSetBuilder } from '@codemirror/state';
6
- import { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';
7
-
8
- const annotationMark = Decoration.mark({ class: 'cm-annotation' });
9
-
10
- export type AnnotationOptions = {
11
- match?: RegExp; // TODO(burdon): Update via hook (e.g., for search).
12
- };
13
-
14
- /**
15
- *
16
- */
17
- export const annotations = ({ match }: AnnotationOptions = {}): Extension => {
18
- return [
19
- ViewPlugin.fromClass(
20
- class {
21
- decorations: DecorationSet = Decoration.none;
22
- update(update: ViewUpdate) {
23
- const builder = new RangeSetBuilder<Decoration>();
24
- if (match) {
25
- // Only process visible lines.
26
- const { from, to } = update.view.viewport;
27
- const text = update.state.doc.sliceString(from, to);
28
- const matches = text.matchAll(match);
29
- for (const m of matches) {
30
- if (m.index !== undefined) {
31
- // Adjust match position relative to viewport.
32
- const start = from + m.index;
33
- const end = start + m[0].length;
34
- builder.add(start, end, annotationMark);
35
- }
36
- }
37
- }
38
-
39
- this.decorations = builder.finish();
40
- }
41
- },
42
- {
43
- decorations: (v) => v.decorations,
44
- },
45
- ),
46
-
47
- EditorView.theme({
48
- '.cm-annotation': {
49
- textDecoration: 'underline',
50
- textDecorationStyle: 'wavy',
51
- textDecorationColor: 'var(--dx-errorText)',
52
- },
53
- }),
54
- ];
55
- };
@@ -1,69 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import {
6
- autocompletion,
7
- completionKeymap,
8
- type CompletionSource,
9
- type Completion,
10
- type CompletionContext,
11
- type CompletionResult,
12
- } from '@codemirror/autocomplete';
13
- import { markdownLanguage } from '@codemirror/lang-markdown';
14
- import { type Extension } from '@codemirror/state';
15
- import { keymap } from '@codemirror/view';
16
-
17
- export type AutocompleteResult = Completion;
18
-
19
- export type AutocompleteOptions = {
20
- activateOnTyping?: boolean;
21
- override?: CompletionSource[];
22
- onSearch?: (text: string) => Completion[];
23
- };
24
-
25
- // https://codemirror.net/examples/autocompletion
26
- // https://codemirror.net/docs/ref/#autocomplete.autocompletion
27
- // https://codemirror.net/docs/ref/#autocomplete.Completion
28
-
29
- /**
30
- * Autocomplete extension.
31
- */
32
- export const autocomplete = ({ activateOnTyping, override, onSearch }: AutocompleteOptions = {}): Extension => {
33
- const extensions: Extension[] = [
34
- // https://codemirror.net/docs/ref/#view.keymap
35
- // https://discuss.codemirror.net/t/how-can-i-replace-the-default-autocompletion-keymap-v6/3322
36
- // TODO(burdon): Set custom keymap.
37
- keymap.of(completionKeymap),
38
-
39
- // https://codemirror.net/examples/autocompletion
40
- // https://codemirror.net/docs/ref/#autocomplete.autocompletion
41
- autocompletion({
42
- override,
43
- activateOnTyping,
44
- // closeOnBlur: false,
45
- // tooltipClass: () => 'rounded-be pbe-1 border-separator',
46
- }),
47
- ];
48
-
49
- if (onSearch) {
50
- extensions.push(
51
- // TODO(burdon): Optional decoration via addToOptions.
52
- markdownLanguage.data.of({
53
- autocomplete: (context: CompletionContext): CompletionResult | null => {
54
- const match = context.matchBefore(/\w*/);
55
- if (!match || (match.from === match.to && !context.explicit)) {
56
- return null;
57
- }
58
-
59
- return {
60
- from: match.from,
61
- options: onSearch(match.text.toLowerCase()),
62
- };
63
- },
64
- }),
65
- );
66
- }
67
-
68
- return extensions;
69
- };