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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/dist/lib/browser/index.mjs +1384 -7468
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +1534 -7617
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Editor/Editor.d.ts +42 -15
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +23 -0
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -0
  11. package/dist/types/src/components/Editor/EditorView.d.ts +31 -0
  12. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  13. package/dist/types/src/components/Editor/controller.d.ts +10 -0
  14. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +34 -0
  16. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  18. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  20. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +46 -0
  24. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  25. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  26. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  28. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  30. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +28 -2
  32. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  33. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -17
  34. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -17
  36. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  37. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -17
  38. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/image.d.ts +3 -15
  40. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/index.d.ts +1 -1
  42. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -17
  44. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/search.d.ts +3 -15
  46. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/types.d.ts +5 -0
  48. package/dist/types/src/components/EditorToolbar/types.d.ts.map +1 -0
  49. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +5 -18
  50. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  51. package/dist/types/src/components/index.d.ts +2 -2
  52. package/dist/types/src/components/index.d.ts.map +1 -1
  53. package/dist/types/src/extensions/Assistant.stories.d.ts +10 -0
  54. package/dist/types/src/extensions/Assistant.stories.d.ts.map +1 -0
  55. package/dist/types/src/extensions/assistant-extension.d.ts +24 -0
  56. package/dist/types/src/extensions/assistant-extension.d.ts.map +1 -0
  57. package/dist/types/src/extensions/index.d.ts +1 -22
  58. package/dist/types/src/extensions/index.d.ts.map +1 -1
  59. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  60. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  61. package/dist/types/src/index.d.ts +0 -7
  62. package/dist/types/src/index.d.ts.map +1 -1
  63. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  64. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  65. package/dist/types/src/stories/Comments.stories.d.ts +22 -10
  66. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  67. package/dist/types/src/stories/EditorToolbar.stories.d.ts +42 -4
  68. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  69. package/dist/types/src/stories/Experimental.stories.d.ts +23 -13
  70. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/Markdown.stories.d.ts +33 -43
  72. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Outliner.stories.d.ts +16 -22
  74. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  76. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  77. package/dist/types/src/stories/Preview.stories.d.ts +23 -7
  78. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  80. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  81. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  82. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  84. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  85. package/dist/types/src/stories/components/EditorStory.d.ts +11 -23
  86. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  87. package/dist/types/src/stories/components/util.d.ts +3 -3
  88. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  89. package/dist/types/src/translations.d.ts +26 -26
  90. package/dist/types/src/translations.d.ts.map +1 -1
  91. package/dist/types/src/util/index.d.ts +0 -4
  92. package/dist/types/src/util/index.d.ts.map +1 -1
  93. package/dist/types/src/util/react.d.ts +7 -6
  94. package/dist/types/src/util/react.d.ts.map +1 -1
  95. package/dist/types/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +87 -80
  97. package/src/components/Editor/Editor.stories.tsx +89 -0
  98. package/src/components/Editor/Editor.tsx +177 -24
  99. package/src/components/Editor/EditorView.tsx +83 -0
  100. package/src/components/Editor/controller.ts +50 -0
  101. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +226 -0
  102. package/src/components/EditorMenuProvider/index.ts +10 -0
  103. package/src/components/EditorMenuProvider/menu-presets.ts +125 -0
  104. package/src/components/EditorMenuProvider/menu.ts +70 -0
  105. package/src/components/EditorMenuProvider/popover.ts +285 -0
  106. package/src/components/EditorMenuProvider/useEditorMenu.ts +180 -0
  107. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +79 -0
  108. package/src/components/EditorPreviewProvider/index.ts +5 -0
  109. package/src/components/EditorToolbar/EditorToolbar.tsx +90 -103
  110. package/src/components/EditorToolbar/blocks.ts +52 -48
  111. package/src/components/EditorToolbar/formatting.ts +43 -48
  112. package/src/components/EditorToolbar/headings.ts +46 -45
  113. package/src/components/EditorToolbar/image.ts +16 -10
  114. package/src/components/EditorToolbar/index.ts +2 -7
  115. package/src/components/EditorToolbar/lists.ts +39 -41
  116. package/src/components/EditorToolbar/search.ts +16 -10
  117. package/src/components/EditorToolbar/types.ts +7 -0
  118. package/src/components/EditorToolbar/view-mode.ts +39 -40
  119. package/src/components/index.ts +3 -2
  120. package/src/extensions/Assistant.stories.tsx +111 -0
  121. package/src/extensions/assistant-extension.tsx +223 -0
  122. package/src/extensions/index.ts +2 -23
  123. package/src/hooks/useTextEditor.ts +39 -45
  124. package/src/index.ts +0 -9
  125. package/src/stories/Automerge.stories.tsx +173 -0
  126. package/src/stories/Comments.stories.tsx +58 -51
  127. package/src/stories/EditorToolbar.stories.tsx +48 -61
  128. package/src/stories/Experimental.stories.tsx +21 -19
  129. package/src/stories/Markdown.stories.tsx +37 -33
  130. package/src/stories/Outliner.stories.tsx +54 -44
  131. package/src/stories/Popover.stories.tsx +157 -0
  132. package/src/stories/Preview.stories.tsx +114 -95
  133. package/src/stories/Tags.stories.tsx +104 -0
  134. package/src/stories/TextEditor.stories.tsx +50 -75
  135. package/src/stories/Theme.stories.tsx +61 -0
  136. package/src/stories/components/EditorStory.tsx +48 -35
  137. package/src/stories/components/util.tsx +90 -59
  138. package/src/translations.ts +30 -25
  139. package/src/util/index.ts +1 -5
  140. package/src/util/react.tsx +9 -14
  141. package/dist/lib/browser/chunk-22UMM3QJ.mjs +0 -22
  142. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  143. package/dist/lib/browser/testing/index.mjs +0 -6
  144. package/dist/lib/browser/testing/index.mjs.map +0 -7
  145. package/dist/lib/browser/types/index.mjs +0 -13
  146. package/dist/lib/browser/types/index.mjs.map +0 -7
  147. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +0 -24
  148. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  149. package/dist/lib/node-esm/testing/index.mjs +0 -8
  150. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  151. package/dist/lib/node-esm/types/index.mjs +0 -14
  152. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  153. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  154. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  155. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  156. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  157. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  158. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  159. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  160. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  161. package/dist/types/src/components/Popover/index.d.ts +0 -4
  162. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  163. package/dist/types/src/defaults.d.ts +0 -14
  164. package/dist/types/src/defaults.d.ts.map +0 -1
  165. package/dist/types/src/extensions/annotations.d.ts +0 -9
  166. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  167. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  168. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  169. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  170. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  171. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -56
  172. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  173. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  174. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  175. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  176. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  177. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  178. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  179. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  180. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  181. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  182. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  183. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  184. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  185. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  186. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  187. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  188. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  189. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  190. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  191. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  192. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  193. package/dist/types/src/extensions/blast.d.ts +0 -25
  194. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  195. package/dist/types/src/extensions/command/action.d.ts +0 -17
  196. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  197. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  198. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  199. package/dist/types/src/extensions/command/command.d.ts +0 -6
  200. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  201. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  202. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  203. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  204. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  205. package/dist/types/src/extensions/command/index.d.ts +0 -7
  206. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  207. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  208. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  209. package/dist/types/src/extensions/command/state.d.ts +0 -16
  210. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  211. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  212. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  213. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  214. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  215. package/dist/types/src/extensions/comments.d.ts +0 -95
  216. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  217. package/dist/types/src/extensions/debug.d.ts +0 -3
  218. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  219. package/dist/types/src/extensions/dnd.d.ts +0 -9
  220. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  221. package/dist/types/src/extensions/factories.d.ts +0 -82
  222. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  223. package/dist/types/src/extensions/focus.d.ts +0 -7
  224. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  225. package/dist/types/src/extensions/folding.d.ts +0 -7
  226. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  227. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  228. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  229. package/dist/types/src/extensions/json.d.ts +0 -7
  230. package/dist/types/src/extensions/json.d.ts.map +0 -1
  231. package/dist/types/src/extensions/listener.d.ts +0 -11
  232. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  233. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  234. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  235. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -16
  236. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  237. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  238. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  239. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  240. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  241. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  242. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  243. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -17
  244. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  245. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -63
  246. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  247. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  248. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  249. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  250. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  251. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  252. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  253. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  254. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  255. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  256. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  257. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  258. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  259. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  260. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  261. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  262. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  263. package/dist/types/src/extensions/mention.d.ts +0 -7
  264. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  265. package/dist/types/src/extensions/modes.d.ts +0 -10
  266. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  267. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  268. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  269. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  270. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  271. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  272. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  273. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  274. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  275. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  276. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  277. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  278. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  279. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  280. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  281. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  282. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  283. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  284. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  285. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  286. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  287. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  288. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  289. package/dist/types/src/extensions/selection.d.ts +0 -24
  290. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  291. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  292. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  293. package/dist/types/src/stories/Command.stories.d.ts +0 -7
  294. package/dist/types/src/stories/Command.stories.d.ts.map +0 -1
  295. package/dist/types/src/stories/CommandMenu.stories.d.ts +0 -13
  296. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +0 -1
  297. package/dist/types/src/styles/index.d.ts +0 -4
  298. package/dist/types/src/styles/index.d.ts.map +0 -1
  299. package/dist/types/src/styles/markdown.d.ts +0 -8
  300. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  301. package/dist/types/src/styles/theme.d.ts +0 -38
  302. package/dist/types/src/styles/theme.d.ts.map +0 -1
  303. package/dist/types/src/styles/tokens.d.ts +0 -3
  304. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  305. package/dist/types/src/testing/index.d.ts +0 -2
  306. package/dist/types/src/testing/index.d.ts.map +0 -1
  307. package/dist/types/src/testing/util.d.ts +0 -2
  308. package/dist/types/src/testing/util.d.ts.map +0 -1
  309. package/dist/types/src/types/index.d.ts +0 -2
  310. package/dist/types/src/types/index.d.ts.map +0 -1
  311. package/dist/types/src/types/types.d.ts +0 -21
  312. package/dist/types/src/types/types.d.ts.map +0 -1
  313. package/dist/types/src/util/cursor.d.ts +0 -31
  314. package/dist/types/src/util/cursor.d.ts.map +0 -1
  315. package/dist/types/src/util/debug.d.ts +0 -17
  316. package/dist/types/src/util/debug.d.ts.map +0 -1
  317. package/dist/types/src/util/dom.d.ts +0 -20
  318. package/dist/types/src/util/dom.d.ts.map +0 -1
  319. package/dist/types/src/util/facet.d.ts +0 -3
  320. package/dist/types/src/util/facet.d.ts.map +0 -1
  321. package/src/components/EditorToolbar/util.ts +0 -65
  322. package/src/components/Popover/CommandMenu.tsx +0 -279
  323. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  324. package/src/components/Popover/RefPopover.tsx +0 -99
  325. package/src/components/Popover/index.ts +0 -7
  326. package/src/defaults.ts +0 -49
  327. package/src/extensions/annotations.ts +0 -55
  328. package/src/extensions/autocomplete.ts +0 -69
  329. package/src/extensions/automerge/automerge.stories.tsx +0 -142
  330. package/src/extensions/automerge/automerge.test.tsx +0 -78
  331. package/src/extensions/automerge/automerge.ts +0 -85
  332. package/src/extensions/automerge/cursor.ts +0 -28
  333. package/src/extensions/automerge/defs.ts +0 -31
  334. package/src/extensions/automerge/index.ts +0 -5
  335. package/src/extensions/automerge/sync.ts +0 -75
  336. package/src/extensions/automerge/update-automerge.ts +0 -50
  337. package/src/extensions/automerge/update-codemirror.ts +0 -115
  338. package/src/extensions/awareness/awareness-provider.ts +0 -127
  339. package/src/extensions/awareness/awareness.ts +0 -315
  340. package/src/extensions/awareness/index.ts +0 -6
  341. package/src/extensions/blast.ts +0 -363
  342. package/src/extensions/command/action.ts +0 -56
  343. package/src/extensions/command/command-menu.ts +0 -210
  344. package/src/extensions/command/command.ts +0 -34
  345. package/src/extensions/command/floating-menu.ts +0 -133
  346. package/src/extensions/command/hint.ts +0 -102
  347. package/src/extensions/command/index.ts +0 -10
  348. package/src/extensions/command/placeholder.ts +0 -113
  349. package/src/extensions/command/state.ts +0 -89
  350. package/src/extensions/command/typeahead.ts +0 -129
  351. package/src/extensions/command/useCommandMenu.ts +0 -118
  352. package/src/extensions/comments.ts +0 -592
  353. package/src/extensions/debug.ts +0 -15
  354. package/src/extensions/dnd.ts +0 -37
  355. package/src/extensions/factories.ts +0 -259
  356. package/src/extensions/focus.ts +0 -35
  357. package/src/extensions/folding.tsx +0 -46
  358. package/src/extensions/hashtag.tsx +0 -68
  359. package/src/extensions/json.ts +0 -57
  360. package/src/extensions/listener.ts +0 -38
  361. package/src/extensions/markdown/action.ts +0 -116
  362. package/src/extensions/markdown/bundle.ts +0 -71
  363. package/src/extensions/markdown/changes.test.ts +0 -26
  364. package/src/extensions/markdown/changes.ts +0 -149
  365. package/src/extensions/markdown/debug.ts +0 -44
  366. package/src/extensions/markdown/decorate.ts +0 -591
  367. package/src/extensions/markdown/formatting.test.ts +0 -498
  368. package/src/extensions/markdown/formatting.ts +0 -1267
  369. package/src/extensions/markdown/highlight.ts +0 -183
  370. package/src/extensions/markdown/image.ts +0 -119
  371. package/src/extensions/markdown/index.ts +0 -13
  372. package/src/extensions/markdown/link.ts +0 -47
  373. package/src/extensions/markdown/parser.test.ts +0 -75
  374. package/src/extensions/markdown/styles.ts +0 -135
  375. package/src/extensions/markdown/table.ts +0 -144
  376. package/src/extensions/mention.ts +0 -41
  377. package/src/extensions/modes.ts +0 -41
  378. package/src/extensions/outliner/commands.ts +0 -270
  379. package/src/extensions/outliner/editor.test.ts +0 -33
  380. package/src/extensions/outliner/editor.ts +0 -184
  381. package/src/extensions/outliner/index.ts +0 -7
  382. package/src/extensions/outliner/outliner.test.ts +0 -99
  383. package/src/extensions/outliner/outliner.ts +0 -166
  384. package/src/extensions/outliner/selection.ts +0 -50
  385. package/src/extensions/outliner/tree.test.ts +0 -167
  386. package/src/extensions/outliner/tree.ts +0 -317
  387. package/src/extensions/preview/index.ts +0 -5
  388. package/src/extensions/preview/preview.ts +0 -193
  389. package/src/extensions/selection.ts +0 -100
  390. package/src/extensions/typewriter.ts +0 -68
  391. package/src/stories/Command.stories.tsx +0 -97
  392. package/src/stories/CommandMenu.stories.tsx +0 -159
  393. package/src/styles/index.ts +0 -7
  394. package/src/styles/markdown.ts +0 -26
  395. package/src/styles/theme.ts +0 -266
  396. package/src/styles/tokens.ts +0 -17
  397. package/src/testing/index.ts +0 -5
  398. package/src/testing/util.ts +0 -5
  399. package/src/types/index.ts +0 -5
  400. package/src/types/types.ts +0 -32
  401. package/src/util/cursor.ts +0 -55
  402. package/src/util/debug.ts +0 -64
  403. package/src/util/dom.ts +0 -56
  404. package/src/util/facet.ts +0 -13
@@ -1,259 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';
6
- import { defaultKeymap, history, historyKeymap, indentWithTab, standardKeymap } from '@codemirror/commands';
7
- import { bracketMatching, defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';
8
- import { searchKeymap } from '@codemirror/search';
9
- import { EditorState, type Extension } from '@codemirror/state';
10
- import { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';
11
- import {
12
- EditorView,
13
- type KeyBinding,
14
- ViewPlugin,
15
- drawSelection,
16
- dropCursor,
17
- highlightActiveLine,
18
- keymap,
19
- lineNumbers,
20
- placeholder,
21
- scrollPastEnd,
22
- } from '@codemirror/view';
23
- import defaultsDeep from 'lodash.defaultsdeep';
24
- import merge from 'lodash.merge';
25
-
26
- import { generateName } from '@dxos/display-name';
27
- import { log } from '@dxos/log';
28
- import { type DocAccessor, type Space } from '@dxos/react-client/echo';
29
- import { type Identity } from '@dxos/react-client/halo';
30
- import { type ThemeMode } from '@dxos/react-ui';
31
- import { type HuePalette } from '@dxos/react-ui-theme';
32
- import { hexToHue, isNotFalsy } from '@dxos/util';
33
-
34
- import { automerge } from './automerge';
35
- import { SpaceAwarenessProvider, awareness } from './awareness';
36
- import { focus } from './focus';
37
- import { editorGutter, editorMonospace } from '../defaults';
38
- import { type ThemeStyles, defaultTheme } from '../styles';
39
-
40
- //
41
- // Basic
42
- //
43
-
44
- export const preventNewline = EditorState.transactionFilter.of((tr) => (tr.newDoc.lines > 1 ? [] : tr));
45
-
46
- /**
47
- * https://codemirror.net/docs/extensions
48
- * https://github.com/codemirror/basic-setup
49
- * https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts
50
- */
51
- export type BasicExtensionsOptions = {
52
- allowMultipleSelections?: boolean;
53
- bracketMatching?: boolean;
54
- closeBrackets?: boolean;
55
- dropCursor?: boolean;
56
- drawSelection?: boolean;
57
- editable?: boolean;
58
- focus?: boolean;
59
- highlightActiveLine?: boolean;
60
- history?: boolean;
61
- indentWithTab?: boolean;
62
- keymap?: null | 'default' | 'standard';
63
- lineNumbers?: boolean;
64
- /** If false then do not set a max-width or side margin on the editor. */
65
- lineWrapping?: boolean;
66
- monospace?: boolean;
67
- placeholder?: string;
68
- /** If true user cannot edit the text, but they can still select and copy it. */
69
- readOnly?: boolean;
70
- search?: boolean;
71
- scrollPastEnd?: boolean;
72
- standardKeymap?: boolean;
73
- tabSize?: number;
74
- };
75
-
76
- const defaultBasicOptions: BasicExtensionsOptions = {
77
- allowMultipleSelections: true,
78
- bracketMatching: true,
79
- closeBrackets: true,
80
- drawSelection: true,
81
- focus: true,
82
- history: true,
83
- keymap: 'standard',
84
- lineWrapping: true,
85
- search: true,
86
- } as const;
87
-
88
- const keymaps: { [key: string]: readonly KeyBinding[] } = {
89
- // https://codemirror.net/docs/ref/#commands.standardKeymap
90
- standard: standardKeymap,
91
- // https://codemirror.net/docs/ref/#commands.defaultKeymap
92
- default: defaultKeymap,
93
- };
94
-
95
- export const createBasicExtensions = (_props?: BasicExtensionsOptions): Extension => {
96
- const props = defaultsDeep({}, _props, defaultBasicOptions);
97
- return [
98
- // NOTE: Doesn't catch errors in keymap functions.
99
- EditorView.exceptionSink.of((err) => {
100
- log.catch(err);
101
- }),
102
-
103
- props.allowMultipleSelections && EditorState.allowMultipleSelections.of(true),
104
- props.bracketMatching && bracketMatching(),
105
- props.closeBrackets && closeBrackets(),
106
- props.dropCursor && dropCursor(),
107
- props.drawSelection && drawSelection({ cursorBlinkRate: 1_200 }),
108
- props.editable !== undefined && EditorView.editable.of(props.editable),
109
- props.focus && focus,
110
- props.highlightActiveLine && highlightActiveLine(),
111
- props.history && history(),
112
- props.lineNumbers && [lineNumbers(), editorGutter],
113
- props.lineWrapping && EditorView.lineWrapping,
114
- props.monospace && editorMonospace,
115
- props.placeholder && placeholder(props.placeholder),
116
- props.readOnly !== undefined && EditorState.readOnly.of(props.readOnly),
117
- props.scrollPastEnd && scrollPastEnd(),
118
- props.tabSize && EditorState.tabSize.of(props.tabSize),
119
-
120
- // https://codemirror.net/docs/ref/#view.KeyBinding
121
- keymap.of(
122
- [
123
- ...((props.keymap && keymaps[props.keymap]) ?? []),
124
- // NOTE: Tabs are also configured by markdown extension.
125
- // https://codemirror.net/docs/ref/#commands.indentWithTab
126
- ...(props.indentWithTab ? [indentWithTab] : []),
127
- // https://codemirror.net/docs/ref/#autocomplete.closeBracketsKeymap
128
- ...(props.closeBrackets ? closeBracketsKeymap : []),
129
- // https://codemirror.net/docs/ref/#commands.historyKeymap
130
- ...(props.history ? historyKeymap : []),
131
- // https://codemirror.net/docs/ref/#search.searchKeymap
132
- ...(props.search ? searchKeymap : []),
133
- // Disable bindings that conflict with system shortcuts.
134
- // TODO(burdon): Catalog global shortcuts.
135
- {
136
- key: 'Mod-Shift-k',
137
- preventDefault: true,
138
- run: () => true,
139
- },
140
- ].filter(isNotFalsy),
141
- ),
142
- ].filter(isNotFalsy);
143
- };
144
-
145
- //
146
- // Theme
147
- //
148
-
149
- export type ThemeExtensionsOptions = {
150
- themeMode?: ThemeMode;
151
- styles?: ThemeStyles;
152
- syntaxHighlighting?: boolean;
153
- slots?: {
154
- editor?: {
155
- className?: string;
156
- };
157
- scroll?: {
158
- className?: string;
159
- };
160
- scroller?: {
161
- className?: string;
162
- };
163
- content?: {
164
- className?: string;
165
- };
166
- };
167
- };
168
-
169
- export const grow = {
170
- editor: {
171
- className: 'is-full bs-full',
172
- },
173
- } as const;
174
-
175
- export const fullWidth = {
176
- editor: {
177
- className: 'is-full',
178
- },
179
- } as const;
180
-
181
- export const defaultThemeSlots = grow;
182
-
183
- /**
184
- * https://codemirror.net/examples/styling
185
- */
186
- export const createThemeExtensions = ({
187
- themeMode,
188
- styles,
189
- syntaxHighlighting: _syntaxHighlighting,
190
- slots: _slots,
191
- }: ThemeExtensionsOptions = {}): Extension => {
192
- const slots = defaultsDeep({}, _slots, defaultThemeSlots);
193
- return [
194
- EditorView.darkTheme.of(themeMode === 'dark'),
195
- EditorView.baseTheme(styles ? merge({}, defaultTheme, styles) : defaultTheme),
196
- // https://github.com/codemirror/theme-one-dark
197
- _syntaxHighlighting &&
198
- (themeMode === 'dark' ? syntaxHighlighting(oneDarkHighlightStyle) : syntaxHighlighting(defaultHighlightStyle)),
199
- slots.editor?.className && EditorView.editorAttributes.of({ class: slots.editor.className }),
200
- slots.content?.className && EditorView.contentAttributes.of({ class: slots.content.className }),
201
- slots.scroll?.className &&
202
- ViewPlugin.fromClass(
203
- class {
204
- constructor(view: EditorView) {
205
- view.scrollDOM.classList.add(slots.scroll.className);
206
- }
207
- },
208
- ),
209
- slots.scroller?.className &&
210
- ViewPlugin.fromClass(
211
- class {
212
- constructor(view: EditorView) {
213
- view.dom.querySelector('.cm-scroller')?.classList.add(...slots.scroller.className.split(' '));
214
- }
215
- },
216
- ),
217
- ].filter(isNotFalsy);
218
- };
219
-
220
- //
221
- // Data
222
- //
223
-
224
- export type DataExtensionsProps<T> = {
225
- id: string;
226
- text?: DocAccessor<T>;
227
- space?: Space;
228
- identity?: Identity | null;
229
- };
230
-
231
- // TODO(burdon): Move out of react-ui-editor (remove echo deps).
232
- export const createDataExtensions = <T>({ id, text, space, identity }: DataExtensionsProps<T>): Extension[] => {
233
- const extensions: Extension[] = [];
234
- if (text) {
235
- extensions.push(automerge(text));
236
- }
237
-
238
- if (space && identity) {
239
- const peerId = identity?.identityKey.toHex();
240
- const hue = (identity?.profile?.data?.hue as HuePalette | undefined) ?? hexToHue(peerId ?? '0');
241
-
242
- extensions.push(
243
- awareness(
244
- new SpaceAwarenessProvider({
245
- space,
246
- channel: `awareness.${id}`,
247
- peerId: identity.identityKey.toHex(),
248
- info: {
249
- displayName: identity.profile?.displayName ?? generateName(identity.identityKey.toHex()),
250
- darkColor: `var(--dx-${hue}Cursor)`,
251
- lightColor: `var(--dx-${hue}Cursor)`,
252
- },
253
- }),
254
- ),
255
- );
256
- }
257
-
258
- return extensions;
259
- };
@@ -1,35 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { StateEffect, StateField } from '@codemirror/state';
6
- import { EditorView } from '@codemirror/view';
7
-
8
- const focusEffect = StateEffect.define<boolean>();
9
-
10
- export const focusField = StateField.define<boolean>({
11
- create: () => false,
12
- update: (value, tr) => {
13
- for (const effect of tr.effects) {
14
- if (effect.is(focusEffect)) {
15
- return effect.value;
16
- }
17
- }
18
- return value;
19
- },
20
- });
21
-
22
- /**
23
- * Manage focus.
24
- */
25
- export const focus = [
26
- focusField,
27
- EditorView.domEventHandlers({
28
- focus: (event, view) => {
29
- setTimeout(() => view.dispatch({ effects: focusEffect.of(true) }));
30
- },
31
- blur: (event, view) => {
32
- setTimeout(() => view.dispatch({ effects: focusEffect.of(false) }));
33
- },
34
- }),
35
- ];
@@ -1,46 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { codeFolding, foldGutter } from '@codemirror/language';
6
- import { type Extension } from '@codemirror/state';
7
- import { EditorView } from '@codemirror/view';
8
- import React from 'react';
9
-
10
- import { Icon } from '@dxos/react-ui';
11
-
12
- import { createElement, renderRoot } from '../util';
13
-
14
- export type FoldingOptions = {};
15
-
16
- /**
17
- * https://codemirror.net/examples/gutter
18
- */
19
- // TODO(burdon): Remember folding state (to state).
20
- export const folding = (_props: FoldingOptions = {}): Extension => [
21
- codeFolding({
22
- placeholderDOM: () => {
23
- return document.createElement('span'); // Collapse content.
24
- },
25
- }),
26
- foldGutter({
27
- markerDOM: (open) => {
28
- // TODO(burdon): Use sprite directly.
29
- const el = createElement('div', { className: 'flex h-full items-center' });
30
- return renderRoot(
31
- el,
32
- <Icon icon='ph--caret-right--bold' size={3} classNames={['mx-3 cursor-pointer', open && 'rotate-90']} />,
33
- );
34
- },
35
- }),
36
- EditorView.theme({
37
- '.cm-foldGutter': {
38
- opacity: 0.3,
39
- transition: 'opacity 0.3s',
40
- width: '32px',
41
- },
42
- '.cm-foldGutter:hover': {
43
- opacity: 1,
44
- },
45
- }),
46
- ];
@@ -1,68 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Extension } from '@codemirror/state';
6
- import {
7
- Decoration,
8
- type DecorationSet,
9
- EditorView,
10
- MatchDecorator,
11
- ViewPlugin,
12
- type ViewUpdate,
13
- WidgetType,
14
- } from '@codemirror/view';
15
-
16
- import { getHashColor, mx } from '@dxos/react-ui-theme';
17
-
18
- class TagWidget extends WidgetType {
19
- constructor(private _text: string) {
20
- super();
21
- }
22
-
23
- toDOM(): HTMLSpanElement {
24
- const span = document.createElement('span');
25
- span.className = mx('cm-tag', getHashColor(this._text).tag);
26
- span.textContent = this._text;
27
- return span;
28
- }
29
- }
30
-
31
- const tagMatcher = new MatchDecorator({
32
- regexp: /#(\w+)\W/g,
33
- decoration: (match) =>
34
- Decoration.replace({
35
- widget: new TagWidget(match[1]),
36
- }),
37
- });
38
-
39
- // TODO(burdon): Autocomplete from existing tags?
40
- export const hashtag = (): Extension => [
41
- ViewPlugin.fromClass(
42
- class {
43
- tags: DecorationSet;
44
- constructor(view: EditorView) {
45
- this.tags = tagMatcher.createDeco(view);
46
- }
47
-
48
- update(update: ViewUpdate) {
49
- this.tags = tagMatcher.updateDeco(update, this.tags);
50
- }
51
- },
52
- {
53
- decorations: (instance) => instance.tags,
54
- provide: (plugin) =>
55
- EditorView.atomicRanges.of((view) => {
56
- return view.plugin(plugin)?.tags || Decoration.none;
57
- }),
58
- },
59
- ),
60
-
61
- EditorView.theme({
62
- '.cm-tag': {
63
- borderRadius: '4px',
64
- marginRight: '6px',
65
- padding: '2px 6px',
66
- },
67
- }),
68
- ];
@@ -1,57 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { json, jsonParseLinter } from '@codemirror/lang-json';
6
- import { type LintSource, linter } from '@codemirror/lint';
7
- import { type Extension } from '@codemirror/state';
8
- import Ajv, { type ValidateFunction } from 'ajv';
9
-
10
- import { type JsonSchemaType } from '@dxos/echo-schema';
11
-
12
- export type JsonExtensionsOptions = {
13
- schema?: JsonSchemaType;
14
- };
15
-
16
- export const createJsonExtensions = ({ schema }: JsonExtensionsOptions = {}): Extension => {
17
- let lintSource: LintSource = jsonParseLinter();
18
- if (schema) {
19
- // NOTE: Relaxing strict mode to allow additional custom schema properties.
20
- const ajv = new Ajv({ allErrors: false, strict: false });
21
- const validate = ajv.compile(schema);
22
- lintSource = schemaLinter(validate);
23
- }
24
-
25
- return [json(), linter(lintSource)];
26
- };
27
-
28
- const schemaLinter =
29
- (validate: ValidateFunction): LintSource =>
30
- (view) => {
31
- try {
32
- const jsonText = view.state.doc.toString();
33
- const jsonData = JSON.parse(jsonText);
34
- const valid = validate(jsonData);
35
- if (valid) {
36
- return [];
37
- }
38
-
39
- return (
40
- validate.errors?.map((err: any) => ({
41
- from: 0,
42
- to: jsonText.length,
43
- severity: 'error',
44
- message: `${err.instancePath || '(root)'} ${err.message}`,
45
- })) ?? []
46
- );
47
- } catch (err: unknown) {
48
- return [
49
- {
50
- from: 0,
51
- to: view.state.doc.length,
52
- severity: 'error',
53
- message: 'Invalid JSON: ' + (err as Error).message,
54
- },
55
- ];
56
- }
57
- };
@@ -1,38 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type Extension } from '@codemirror/state';
6
- import { EditorView } from '@codemirror/view';
7
-
8
- import { documentId } from './selection';
9
-
10
- export type ListenerOptions = {
11
- onFocus?: (focusing: boolean) => void;
12
- onChange?: (text: string, id: string) => void;
13
- };
14
-
15
- /**
16
- * Event listener.
17
- * @deprecated Use EditorView.updateListener and listen for specific update events.
18
- */
19
- export const listener = ({ onFocus, onChange }: ListenerOptions): Extension => {
20
- const extensions: Extension[] = [];
21
-
22
- onFocus &&
23
- extensions.push(
24
- EditorView.focusChangeEffect.of((_, focusing) => {
25
- onFocus(focusing);
26
- return null;
27
- }),
28
- );
29
-
30
- onChange &&
31
- extensions.push(
32
- EditorView.updateListener.of((update) => {
33
- onChange(update.state.doc.toString(), update.state.facet(documentId));
34
- }),
35
- );
36
-
37
- return extensions;
38
- };
@@ -1,116 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
-
7
- import { type Action } from '@dxos/app-graph';
8
- import { type MenuActionProperties } from '@dxos/react-ui-menu';
9
-
10
- import {
11
- Inline,
12
- List,
13
- addBlockquote,
14
- addCodeblock,
15
- addLink,
16
- addList,
17
- insertTable,
18
- removeBlockquote,
19
- removeCodeblock,
20
- removeLink,
21
- removeList,
22
- setHeading,
23
- setStyle,
24
- toggleBlockquote,
25
- toggleList,
26
- toggleStyle,
27
- } from './formatting';
28
- import { createComment } from '../comments';
29
-
30
- export type PayloadType =
31
- | 'view-mode'
32
- | 'blockquote'
33
- | 'strong'
34
- | 'codeblock'
35
- | 'comment'
36
- | 'heading'
37
- | 'image'
38
- | 'emphasis'
39
- | 'code'
40
- | 'link'
41
- | 'list-bullet'
42
- | 'list-ordered'
43
- | 'list-task'
44
- | 'mention'
45
- | 'prompt'
46
- | 'search'
47
- | 'strikethrough'
48
- | 'table';
49
-
50
- export type EditorActionPayload = {
51
- type: PayloadType;
52
- data?: any;
53
- };
54
-
55
- export type EditorAction = Action<MenuActionProperties & EditorActionPayload>;
56
-
57
- export type EditorPayloadHandler = (view: EditorView, payload: EditorActionPayload) => void;
58
-
59
- export const processEditorPayload: EditorPayloadHandler = (view, { type, data }) => {
60
- let inlineType, listType;
61
- switch (type) {
62
- case 'heading':
63
- setHeading(parseInt(data))(view);
64
- break;
65
-
66
- case 'strong':
67
- case 'emphasis':
68
- case 'strikethrough':
69
- case 'code':
70
- inlineType =
71
- type === 'strong'
72
- ? Inline.Strong
73
- : type === 'emphasis'
74
- ? Inline.Emphasis
75
- : type === 'strikethrough'
76
- ? Inline.Strikethrough
77
- : Inline.Code;
78
- (typeof data === 'boolean' ? setStyle(inlineType, data) : toggleStyle(inlineType))(view);
79
- break;
80
-
81
- case 'list-ordered':
82
- case 'list-bullet':
83
- case 'list-task':
84
- listType = type === 'list-ordered' ? List.Ordered : type === 'list-bullet' ? List.Bullet : List.Task;
85
- (data === false ? removeList(listType) : data === true ? addList(listType) : toggleList(listType))(view);
86
- break;
87
-
88
- case 'blockquote':
89
- (data === false ? removeBlockquote : data === true ? addBlockquote : toggleBlockquote)(view);
90
- break;
91
- case 'codeblock':
92
- (data === false ? removeCodeblock : addCodeblock)(view);
93
- break;
94
- case 'table':
95
- insertTable(view);
96
- break;
97
-
98
- case 'link':
99
- (data === false ? removeLink : addLink())(view);
100
- break;
101
-
102
- case 'image':
103
- addLink({ url: data, image: true })(view);
104
- break;
105
-
106
- case 'comment':
107
- createComment(view);
108
- break;
109
- }
110
-
111
- requestAnimationFrame(() => {
112
- if (!view.hasFocus) {
113
- view.focus();
114
- }
115
- });
116
- };
@@ -1,71 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { completionKeymap } from '@codemirror/autocomplete';
6
- import { defaultKeymap, indentWithTab } from '@codemirror/commands';
7
- import { markdownLanguage, markdown } from '@codemirror/lang-markdown';
8
- import { syntaxHighlighting } from '@codemirror/language';
9
- import { languages } from '@codemirror/language-data';
10
- import { type Extension } from '@codemirror/state';
11
- import { keymap } from '@codemirror/view';
12
-
13
- import { type ThemeMode } from '@dxos/react-ui';
14
- import { isNotFalsy } from '@dxos/util';
15
-
16
- import { markdownHighlightStyle, markdownTagsExtensions } from './highlight';
17
-
18
- export type MarkdownBundleOptions = {
19
- themeMode?: ThemeMode;
20
- indentWithTab?: boolean;
21
- };
22
-
23
- /**
24
- * Creates markdown extensions.
25
- * To be used in conjunction with createBasicExtensions.
26
- *
27
- * Refs:
28
- * https://codemirror.net/docs/community
29
- * https://codemirror.net/docs/ref/#codemirror.basicSetup
30
- */
31
- export const createMarkdownExtensions = (options: MarkdownBundleOptions = {}): Extension[] => {
32
- return [
33
- // Main extension.
34
- // https://github.com/codemirror/lang-markdown
35
- // https://codemirror.net/5/mode/markdown/index.html (demo).
36
- markdown({
37
- // GRM by default (vs strict CommonMark):
38
- // Table, TaskList, Strikethrough, and Autolink.
39
- // NOTE: This extends the parser; it doesn't affect rendering.
40
- // https://github.github.com/gfm
41
- // https://github.com/lezer-parser/markdown?tab=readme-ov-file#github-flavored-markdown
42
- base: markdownLanguage,
43
-
44
- // Languages for syntax highlighting fenced code blocks.
45
- codeLanguages: languages,
46
-
47
- // Don't complete HTML tags.
48
- completeHTMLTags: false,
49
-
50
- // Parser extensions.
51
- extensions: [
52
- // GFM provided by default.
53
- markdownTagsExtensions,
54
- ],
55
- }),
56
-
57
- // Custom styles.
58
- syntaxHighlighting(markdownHighlightStyle()),
59
-
60
- keymap.of(
61
- [
62
- // https://codemirror.net/docs/ref/#commands.indentWithTab
63
- options.indentWithTab !== false && indentWithTab,
64
-
65
- // https://codemirror.net/docs/ref/#commands.defaultKeymap
66
- ...defaultKeymap,
67
- ...completionKeymap,
68
- ].filter(isNotFalsy),
69
- ),
70
- ];
71
- };