@dxos/react-ui-editor 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (416) hide show
  1. package/dist/lib/browser/index.mjs +1103 -8137
  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 +1103 -8136
  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 +43 -30
  8. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  9. package/dist/types/src/components/Editor/Editor.stories.d.ts +16 -20
  10. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/EditorContent/EditorContent.d.ts +31 -0
  12. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +1 -0
  13. package/dist/types/src/components/EditorContent/controller.d.ts +10 -0
  14. package/dist/types/src/components/EditorContent/controller.d.ts.map +1 -0
  15. package/dist/types/src/components/EditorContent/index.d.ts +3 -0
  16. package/dist/types/src/components/EditorContent/index.d.ts.map +1 -0
  17. package/dist/types/src/{extensions/popover/PopoverMenuProvider.d.ts → components/EditorMenuProvider/EditorMenuProvider.d.ts} +6 -6
  18. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -0
  19. package/dist/types/src/components/EditorMenuProvider/index.d.ts +6 -0
  20. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -0
  21. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts +4 -0
  22. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -0
  23. package/dist/types/src/components/EditorMenuProvider/menu.d.ts +28 -0
  24. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -0
  25. package/dist/types/src/{extensions/popover → components/EditorMenuProvider}/popover.d.ts +1 -2
  26. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts +34 -0
  28. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +16 -0
  30. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorPreviewProvider/index.d.ts +2 -0
  32. package/dist/types/src/components/EditorPreviewProvider/index.d.ts.map +1 -0
  33. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +14 -3
  34. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  35. package/dist/types/src/components/EditorToolbar/actions.d.ts +24 -0
  36. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +1 -0
  37. package/dist/types/src/components/EditorToolbar/blocks.d.ts +8 -7
  38. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  39. package/dist/types/src/components/EditorToolbar/formatting.d.ts +8 -7
  40. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  41. package/dist/types/src/components/EditorToolbar/headings.d.ts +8 -7
  42. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/image.d.ts +4 -11
  44. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -1
  45. package/dist/types/src/components/EditorToolbar/index.d.ts +2 -1
  46. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  47. package/dist/types/src/components/EditorToolbar/search.d.ts +4 -11
  48. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -1
  49. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +11 -0
  50. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +1 -0
  51. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +9 -8
  52. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  53. package/dist/types/src/components/index.d.ts +4 -1
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +2 -2
  56. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +0 -8
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/{extensions/automerge/automerge.stories.d.ts → stories/Automerge.stories.d.ts} +5 -9
  60. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  61. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -1
  62. package/dist/types/src/stories/Comments.stories.d.ts +4 -3
  63. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  64. package/dist/types/src/stories/EditorToolbar.stories.d.ts +4 -4
  65. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  66. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  67. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  68. package/dist/types/src/stories/Markdown.stories.d.ts +4 -3
  69. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  70. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/Popover.stories.d.ts +2 -2
  72. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Preview.stories.d.ts +5 -3
  74. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  76. package/dist/types/src/stories/TextEditor.stories.d.ts +4 -3
  77. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  79. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  80. package/dist/types/src/stories/components/EditorStory.d.ts +10 -19
  81. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  82. package/dist/types/src/stories/components/util.d.ts +3 -3
  83. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +5 -5
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/util/index.d.ts +0 -5
  87. package/dist/types/src/util/index.d.ts.map +1 -1
  88. package/dist/types/src/util/react.d.ts +5 -1
  89. package/dist/types/src/util/react.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +63 -69
  92. package/src/components/Editor/Editor.stories.tsx +76 -50
  93. package/src/components/Editor/Editor.tsx +160 -63
  94. package/src/components/EditorContent/EditorContent.tsx +83 -0
  95. package/src/components/EditorContent/controller.ts +50 -0
  96. package/src/components/EditorContent/index.ts +6 -0
  97. package/src/{extensions/popover/PopoverMenuProvider.tsx → components/EditorMenuProvider/EditorMenuProvider.tsx} +27 -14
  98. package/src/components/EditorMenuProvider/index.ts +10 -0
  99. package/src/{extensions/popover → components/EditorMenuProvider}/menu-presets.ts +19 -19
  100. package/src/{extensions/popover → components/EditorMenuProvider}/menu.ts +21 -18
  101. package/src/{extensions/popover → components/EditorMenuProvider}/popover.ts +3 -7
  102. package/src/{extensions/popover/usePopoverMenu.ts → components/EditorMenuProvider/useEditorMenu.ts} +21 -21
  103. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +81 -0
  104. package/src/components/EditorPreviewProvider/index.ts +5 -0
  105. package/src/components/EditorToolbar/EditorToolbar.tsx +30 -17
  106. package/src/components/EditorToolbar/{lists.ts → actions.ts} +48 -17
  107. package/src/components/EditorToolbar/blocks.ts +5 -5
  108. package/src/components/EditorToolbar/formatting.ts +5 -5
  109. package/src/components/EditorToolbar/headings.ts +5 -4
  110. package/src/components/EditorToolbar/image.ts +9 -2
  111. package/src/components/EditorToolbar/index.ts +3 -7
  112. package/src/components/EditorToolbar/search.ts +9 -2
  113. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  114. package/src/components/EditorToolbar/view-mode.ts +5 -4
  115. package/src/components/index.ts +6 -1
  116. package/src/hooks/useTextEditor.ts +13 -7
  117. package/src/index.ts +0 -10
  118. package/src/stories/Automerge.stories.tsx +175 -0
  119. package/src/stories/CommandDialog.stories.tsx +12 -9
  120. package/src/stories/Comments.stories.tsx +47 -43
  121. package/src/stories/EditorToolbar.stories.tsx +31 -15
  122. package/src/stories/Experimental.stories.tsx +4 -6
  123. package/src/stories/Markdown.stories.tsx +14 -14
  124. package/src/stories/Outliner.stories.tsx +16 -24
  125. package/src/stories/Popover.stories.tsx +40 -45
  126. package/src/stories/Preview.stories.tsx +76 -74
  127. package/src/stories/Tags.stories.tsx +32 -9
  128. package/src/stories/TextEditor.stories.tsx +11 -17
  129. package/src/stories/Theme.stories.tsx +61 -0
  130. package/src/stories/components/EditorStory.tsx +34 -27
  131. package/src/stories/components/util.tsx +43 -11
  132. package/src/translations.ts +4 -4
  133. package/src/util/index.ts +1 -6
  134. package/src/util/react.tsx +6 -2
  135. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  136. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  137. package/dist/lib/browser/testing/index.mjs +0 -76
  138. package/dist/lib/browser/testing/index.mjs.map +0 -7
  139. package/dist/lib/browser/types/index.mjs +0 -13
  140. package/dist/lib/browser/types/index.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  142. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  143. package/dist/lib/node-esm/testing/index.mjs +0 -78
  144. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  145. package/dist/lib/node-esm/types/index.mjs +0 -14
  146. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  147. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  148. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  149. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -37
  150. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  151. package/dist/types/src/defaults.d.ts +0 -14
  152. package/dist/types/src/defaults.d.ts.map +0 -1
  153. package/dist/types/src/extensions/annotations.d.ts +0 -9
  154. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  155. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +0 -26
  156. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
  157. package/dist/types/src/extensions/autocomplete/index.d.ts +0 -5
  158. package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
  159. package/dist/types/src/extensions/autocomplete/match.d.ts +0 -13
  160. package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
  161. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +0 -20
  162. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
  163. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +0 -10
  164. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
  165. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  166. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  167. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  169. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  171. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  172. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  173. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  174. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  175. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  176. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  177. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  179. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  181. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  182. package/dist/types/src/extensions/autoscroll.d.ts +0 -10
  183. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  184. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  185. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  186. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  187. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  188. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  189. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  190. package/dist/types/src/extensions/blast.d.ts +0 -25
  191. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  192. package/dist/types/src/extensions/comments.d.ts +0 -95
  193. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  194. package/dist/types/src/extensions/debug.d.ts +0 -3
  195. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  196. package/dist/types/src/extensions/dnd.d.ts +0 -9
  197. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  198. package/dist/types/src/extensions/factories.d.ts +0 -83
  199. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  200. package/dist/types/src/extensions/focus.d.ts +0 -7
  201. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  202. package/dist/types/src/extensions/folding.d.ts +0 -7
  203. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  204. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  205. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  206. package/dist/types/src/extensions/index.d.ts +0 -26
  207. package/dist/types/src/extensions/index.d.ts.map +0 -1
  208. package/dist/types/src/extensions/json.d.ts +0 -7
  209. package/dist/types/src/extensions/json.d.ts.map +0 -1
  210. package/dist/types/src/extensions/listener.d.ts +0 -13
  211. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  212. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  213. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  214. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  215. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  216. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  217. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  218. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  219. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  220. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  221. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  222. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  223. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  224. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -62
  225. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  226. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  227. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  228. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  229. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  231. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  233. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  235. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  237. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  239. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  241. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  242. package/dist/types/src/extensions/mention.d.ts +0 -7
  243. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  244. package/dist/types/src/extensions/modes.d.ts +0 -10
  245. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  246. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  247. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  248. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  249. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  250. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  251. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  252. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  253. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  254. package/dist/types/src/extensions/outliner/menu.d.ts +0 -8
  255. package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
  256. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  257. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  258. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  259. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  260. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  261. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  262. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  263. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  265. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  266. package/dist/types/src/extensions/popover/PopoverMenuProvider.d.ts.map +0 -1
  267. package/dist/types/src/extensions/popover/index.d.ts +0 -8
  268. package/dist/types/src/extensions/popover/index.d.ts.map +0 -1
  269. package/dist/types/src/extensions/popover/menu-presets.d.ts +0 -4
  270. package/dist/types/src/extensions/popover/menu-presets.d.ts.map +0 -1
  271. package/dist/types/src/extensions/popover/menu.d.ts +0 -24
  272. package/dist/types/src/extensions/popover/menu.d.ts.map +0 -1
  273. package/dist/types/src/extensions/popover/modal.d.ts +0 -7
  274. package/dist/types/src/extensions/popover/modal.d.ts.map +0 -1
  275. package/dist/types/src/extensions/popover/popover.d.ts.map +0 -1
  276. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts +0 -34
  277. package/dist/types/src/extensions/popover/usePopoverMenu.d.ts.map +0 -1
  278. package/dist/types/src/extensions/popover/util.d.ts +0 -8
  279. package/dist/types/src/extensions/popover/util.d.ts.map +0 -1
  280. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  281. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  282. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  283. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  284. package/dist/types/src/extensions/selection.d.ts +0 -24
  285. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  286. package/dist/types/src/extensions/state.d.ts +0 -2
  287. package/dist/types/src/extensions/state.d.ts.map +0 -1
  288. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  289. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  290. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  291. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  292. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  293. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  294. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  295. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  296. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -72
  297. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  298. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  299. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  300. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  301. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  302. package/dist/types/src/styles/index.d.ts +0 -4
  303. package/dist/types/src/styles/index.d.ts.map +0 -1
  304. package/dist/types/src/styles/markdown.d.ts +0 -8
  305. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  306. package/dist/types/src/styles/theme.d.ts +0 -38
  307. package/dist/types/src/styles/theme.d.ts.map +0 -1
  308. package/dist/types/src/styles/tokens.d.ts +0 -3
  309. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  310. package/dist/types/src/testing/PreviewPopover.d.ts +0 -20
  311. package/dist/types/src/testing/PreviewPopover.d.ts.map +0 -1
  312. package/dist/types/src/testing/index.d.ts +0 -3
  313. package/dist/types/src/testing/index.d.ts.map +0 -1
  314. package/dist/types/src/testing/util.d.ts +0 -3
  315. package/dist/types/src/testing/util.d.ts.map +0 -1
  316. package/dist/types/src/types/index.d.ts +0 -2
  317. package/dist/types/src/types/index.d.ts.map +0 -1
  318. package/dist/types/src/types/types.d.ts +0 -21
  319. package/dist/types/src/types/types.d.ts.map +0 -1
  320. package/dist/types/src/util/cursor.d.ts +0 -31
  321. package/dist/types/src/util/cursor.d.ts.map +0 -1
  322. package/dist/types/src/util/debug.d.ts +0 -17
  323. package/dist/types/src/util/debug.d.ts.map +0 -1
  324. package/dist/types/src/util/decorations.d.ts +0 -4
  325. package/dist/types/src/util/decorations.d.ts.map +0 -1
  326. package/dist/types/src/util/dom.d.ts +0 -10
  327. package/dist/types/src/util/dom.d.ts.map +0 -1
  328. package/dist/types/src/util/facet.d.ts +0 -3
  329. package/dist/types/src/util/facet.d.ts.map +0 -1
  330. package/src/components/EditorToolbar/util.ts +0 -60
  331. package/src/defaults.ts +0 -52
  332. package/src/extensions/annotations.ts +0 -55
  333. package/src/extensions/autocomplete/autocomplete.ts +0 -220
  334. package/src/extensions/autocomplete/index.ts +0 -8
  335. package/src/extensions/autocomplete/match.ts +0 -46
  336. package/src/extensions/autocomplete/placeholder.ts +0 -117
  337. package/src/extensions/autocomplete/typeahead.ts +0 -87
  338. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  339. package/src/extensions/automerge/automerge.test.tsx +0 -78
  340. package/src/extensions/automerge/automerge.ts +0 -105
  341. package/src/extensions/automerge/cursor.ts +0 -28
  342. package/src/extensions/automerge/defs.ts +0 -31
  343. package/src/extensions/automerge/index.ts +0 -5
  344. package/src/extensions/automerge/sync.ts +0 -79
  345. package/src/extensions/automerge/update-automerge.ts +0 -50
  346. package/src/extensions/automerge/update-codemirror.ts +0 -115
  347. package/src/extensions/autoscroll.ts +0 -157
  348. package/src/extensions/awareness/awareness-provider.ts +0 -127
  349. package/src/extensions/awareness/awareness.ts +0 -315
  350. package/src/extensions/awareness/index.ts +0 -6
  351. package/src/extensions/blast.ts +0 -363
  352. package/src/extensions/comments.ts +0 -597
  353. package/src/extensions/debug.ts +0 -15
  354. package/src/extensions/dnd.ts +0 -37
  355. package/src/extensions/factories.ts +0 -277
  356. package/src/extensions/focus.ts +0 -36
  357. package/src/extensions/folding.tsx +0 -44
  358. package/src/extensions/hashtag.tsx +0 -68
  359. package/src/extensions/index.ts +0 -29
  360. package/src/extensions/json.ts +0 -57
  361. package/src/extensions/listener.ts +0 -32
  362. package/src/extensions/markdown/action.ts +0 -117
  363. package/src/extensions/markdown/bundle.ts +0 -105
  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 -601
  368. package/src/extensions/markdown/formatting.test.ts +0 -498
  369. package/src/extensions/markdown/formatting.ts +0 -1267
  370. package/src/extensions/markdown/highlight.ts +0 -183
  371. package/src/extensions/markdown/image.ts +0 -118
  372. package/src/extensions/markdown/index.ts +0 -13
  373. package/src/extensions/markdown/link.ts +0 -50
  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 -150
  377. package/src/extensions/mention.ts +0 -41
  378. package/src/extensions/modes.ts +0 -41
  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/menu.ts +0 -128
  384. package/src/extensions/outliner/outliner.test.ts +0 -100
  385. package/src/extensions/outliner/outliner.ts +0 -167
  386. package/src/extensions/outliner/selection.ts +0 -50
  387. package/src/extensions/outliner/tree.test.ts +0 -168
  388. package/src/extensions/outliner/tree.ts +0 -317
  389. package/src/extensions/popover/index.ts +0 -12
  390. package/src/extensions/popover/modal.ts +0 -24
  391. package/src/extensions/popover/util.ts +0 -29
  392. package/src/extensions/preview/index.ts +0 -5
  393. package/src/extensions/preview/preview.ts +0 -193
  394. package/src/extensions/selection.ts +0 -100
  395. package/src/extensions/state.ts +0 -7
  396. package/src/extensions/tags/extended-markdown.test.ts +0 -261
  397. package/src/extensions/tags/extended-markdown.ts +0 -78
  398. package/src/extensions/tags/index.ts +0 -7
  399. package/src/extensions/tags/streamer.ts +0 -243
  400. package/src/extensions/tags/xml-tags.ts +0 -393
  401. package/src/extensions/tags/xml-util.ts +0 -94
  402. package/src/extensions/typewriter.ts +0 -68
  403. package/src/styles/index.ts +0 -7
  404. package/src/styles/markdown.ts +0 -26
  405. package/src/styles/theme.ts +0 -269
  406. package/src/styles/tokens.ts +0 -17
  407. package/src/testing/PreviewPopover.tsx +0 -80
  408. package/src/testing/index.ts +0 -6
  409. package/src/testing/util.ts +0 -7
  410. package/src/types/index.ts +0 -5
  411. package/src/types/types.ts +0 -32
  412. package/src/util/cursor.ts +0 -56
  413. package/src/util/debug.ts +0 -64
  414. package/src/util/decorations.ts +0 -21
  415. package/src/util/dom.ts +0 -34
  416. package/src/util/facet.ts +0 -13
@@ -1,193 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { syntaxTree } from '@codemirror/language';
6
- import { type EditorState, type Extension, RangeSetBuilder, StateField } from '@codemirror/state';
7
- import { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';
8
- import { type SyntaxNode } from '@lezer/common';
9
-
10
- export type PreviewBlock = {
11
- link: PreviewLinkRef;
12
- el: HTMLElement;
13
- };
14
-
15
- export type PreviewLinkRef = {
16
- suggest?: boolean;
17
- block?: boolean;
18
- label: string;
19
- ref: string;
20
- };
21
-
22
- export type PreviewLinkTarget = {
23
- label: string;
24
- text?: string;
25
- object?: any;
26
- };
27
-
28
- export type PreviewOptions = {
29
- addBlockContainer?: (block: PreviewBlock) => void;
30
- removeBlockContainer?: (block: PreviewBlock) => void;
31
- };
32
-
33
- /**
34
- * Create preview decorations.
35
- */
36
- export const preview = (options: PreviewOptions = {}): Extension => {
37
- return [
38
- // NOTE: Atomic block decorations must be created from a state field, now a widget, otherwise it results in the following error:
39
- // "Block decorations may not be specified via plugins".
40
- StateField.define<DecorationSet>({
41
- create: (state) => buildDecorations(state, options),
42
- update: (decorations, tr) => {
43
- if (tr.docChanged) {
44
- return buildDecorations(tr.state, options);
45
- }
46
-
47
- return decorations.map(tr.changes);
48
- },
49
- provide: (field) => [
50
- EditorView.decorations.from(field),
51
- EditorView.atomicRanges.of((view) => view.state.field(field)),
52
- ],
53
- }),
54
- ];
55
- };
56
-
57
- /**
58
- * Echo references are represented as markdown reference links.
59
- * https://www.markdownguide.org/basic-syntax/#reference-style-links
60
- */
61
- const buildDecorations = (state: EditorState, options: PreviewOptions): DecorationSet => {
62
- const builder = new RangeSetBuilder<Decoration>();
63
-
64
- syntaxTree(state).iterate({
65
- enter: (node) => {
66
- switch (node.name) {
67
- //
68
- // Inline widget.
69
- // [Label](dxn:echo:123)
70
- //
71
- case 'Link': {
72
- const link = getLinkRef(state, node.node);
73
- if (link) {
74
- builder.add(
75
- node.from,
76
- node.to,
77
- Decoration.replace({
78
- widget: new PreviewInlineWidget(options, link),
79
- side: 1,
80
- }),
81
- );
82
- }
83
- return false;
84
- }
85
-
86
- //
87
- // Block widget (transclusion).
88
- // ![Label](dxn:echo:123)
89
- //
90
- case 'Image': {
91
- if (options.addBlockContainer && options.removeBlockContainer) {
92
- const link = getLinkRef(state, node.node);
93
- if (link) {
94
- builder.add(
95
- node.from,
96
- node.to,
97
- Decoration.replace({
98
- block: true,
99
- widget: new PreviewBlockWidget(options, link),
100
- }),
101
- );
102
- }
103
- }
104
- return false;
105
- }
106
- }
107
- },
108
- });
109
-
110
- return builder.finish();
111
- };
112
-
113
- /**
114
- * Link references.
115
- * [Label](dxn:echo:123) Inline reference
116
- * ![Label](dxn:echo:123) Block reference
117
- */
118
- export const getLinkRef = (state: EditorState, node: SyntaxNode): PreviewLinkRef | undefined => {
119
- const mark = node.getChildren('LinkMark');
120
- const urlNode = node.getChild('URL');
121
- if (mark && urlNode) {
122
- const url = state.sliceDoc(urlNode.from, urlNode.to);
123
- if (url.startsWith('dxn:')) {
124
- const label = state.sliceDoc(mark[0].to, mark[1].from);
125
- return {
126
- block: state.sliceDoc(mark[0].from, mark[0].from + 1) === '!',
127
- label,
128
- ref: url,
129
- };
130
- }
131
- }
132
- };
133
-
134
- /**
135
- * Inline widget.
136
- * [Label](dxn:echo:123)
137
- */
138
- class PreviewInlineWidget extends WidgetType {
139
- constructor(
140
- readonly _options: PreviewOptions,
141
- readonly _link: PreviewLinkRef,
142
- ) {
143
- super();
144
- }
145
-
146
- // override ignoreEvent() {
147
- // return false;
148
- // }
149
-
150
- override eq(other: this): boolean {
151
- return this._link.ref === other._link.ref && this._link.label === other._link.label;
152
- }
153
-
154
- override toDOM(_view: EditorView): HTMLElement {
155
- const root = document.createElement('dx-anchor');
156
- root.classList.add('dx-tag--anchor');
157
- root.textContent = this._link.label;
158
- root.setAttribute('refId', this._link.ref);
159
- return root;
160
- }
161
- }
162
-
163
- /**
164
- * Block widget (e.g., for surfaces).
165
- * ![Label][dxn:echo:123]
166
- */
167
- class PreviewBlockWidget extends WidgetType {
168
- constructor(
169
- readonly _options: PreviewOptions,
170
- readonly _link: PreviewLinkRef,
171
- ) {
172
- super();
173
- }
174
-
175
- // override ignoreEvent() {
176
- // return true;
177
- // }
178
-
179
- override eq(other: this): boolean {
180
- return this._link.ref === other._link.ref;
181
- }
182
-
183
- override toDOM(_view: EditorView): HTMLDivElement {
184
- const root = document.createElement('div');
185
- root.classList.add('cm-preview-block', 'density-coarse');
186
- this._options.addBlockContainer?.({ link: this._link, el: root });
187
- return root;
188
- }
189
-
190
- override destroy(root: HTMLDivElement) {
191
- this._options.removeBlockContainer?.({ link: this._link, el: root });
192
- }
193
- }
@@ -1,100 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type Extension, Transaction, type TransactionSpec } from '@codemirror/state';
6
- import { EditorView, keymap } from '@codemirror/view';
7
-
8
- import { debounce } from '@dxos/async';
9
- import { invariant } from '@dxos/invariant';
10
- import { isTruthy } from '@dxos/util';
11
-
12
- import { singleValueFacet } from '../util';
13
-
14
- /**
15
- * Currently edited document id as FQ string.
16
- */
17
- export const documentId = singleValueFacet<string>();
18
-
19
- export type EditorSelection = {
20
- anchor: number;
21
- head?: number;
22
- };
23
-
24
- export type EditorSelectionState = {
25
- scrollTo?: number;
26
- selection?: EditorSelection;
27
- };
28
-
29
- export type EditorStateStore = {
30
- setState: (id: string, state: EditorSelectionState) => void;
31
- getState: (id: string) => EditorSelectionState | undefined;
32
- };
33
-
34
- const stateRestoreAnnotation = 'dxos.org/cm/state-restore';
35
-
36
- export const createEditorStateTransaction = ({ scrollTo, selection }: EditorSelectionState): TransactionSpec => {
37
- return {
38
- selection,
39
- scrollIntoView: !scrollTo,
40
- effects: scrollTo ? EditorView.scrollIntoView(scrollTo, { yMargin: 96 }) : undefined,
41
- annotations: Transaction.userEvent.of(stateRestoreAnnotation),
42
- };
43
- };
44
-
45
- export const createEditorStateStore = (keyPrefix: string): EditorStateStore => ({
46
- getState: (id) => {
47
- invariant(id);
48
- const state = localStorage.getItem(`${keyPrefix}/${id}`);
49
- return state ? JSON.parse(state) : undefined;
50
- },
51
-
52
- setState: (id, state) => {
53
- invariant(id);
54
- localStorage.setItem(`${keyPrefix}/${id}`, JSON.stringify(state));
55
- },
56
- });
57
-
58
- /**
59
- * Track scrolling and selection state to be restored when switching to document.
60
- */
61
- export const selectionState = ({ getState, setState }: Partial<EditorStateStore> = {}): Extension => {
62
- const setStateDebounced = debounce(setState!, 1_000);
63
-
64
- return [
65
- // TODO(burdon): Track scrolling (currently only updates when cursor moves).
66
- // EditorView.domEventHandlers({
67
- // scroll: (event) => {
68
- // setStateDebounced(id, {});
69
- // },
70
- // }),
71
- EditorView.updateListener.of(({ view, transactions }) => {
72
- const id = view.state.facet(documentId);
73
- if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
74
- return;
75
- }
76
-
77
- if (setState) {
78
- const { scrollTop } = view.scrollDOM;
79
- const pos = view.posAtCoords({ x: 0, y: scrollTop });
80
- if (pos !== null) {
81
- const { anchor, head } = view.state.selection.main;
82
- setStateDebounced(id, { scrollTo: pos, selection: { anchor, head } });
83
- }
84
- }
85
- }),
86
- getState &&
87
- keymap.of([
88
- {
89
- key: 'ctrl-r', // TODO(burdon): Setting to jump back to selection.
90
- run: (view) => {
91
- const state = getState(view.state.facet(documentId));
92
- if (state) {
93
- view.dispatch(createEditorStateTransaction(state));
94
- }
95
- return true;
96
- },
97
- },
98
- ]),
99
- ].filter(isTruthy);
100
- };
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Transaction } from '@codemirror/state';
6
-
7
- export const initialSync = Transaction.userEvent.of('initial.sync');
@@ -1,261 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { syntaxTree } from '@codemirror/language';
6
- import { EditorState } from '@codemirror/state';
7
- import { type SyntaxNode } from '@lezer/common';
8
- import { describe, test } from 'vitest';
9
-
10
- import { trim } from '@dxos/util';
11
-
12
- import { extendedMarkdown } from './extended-markdown';
13
- import { nodeToJson } from './xml-util';
14
-
15
- describe('extended-markdown', () => {
16
- const createEditorState = (doc: string) => {
17
- return EditorState.create({
18
- doc,
19
- extensions: [extendedMarkdown()],
20
- });
21
- };
22
-
23
- test('tree', async ({ expect }) => {
24
- const doc = trim`
25
- <prompt>
26
- Hello
27
- </prompt>
28
-
29
- Hi there!
30
-
31
- What can I do for you?
32
-
33
- <suggestion>Summarize tools</suggestion>
34
-
35
- <choice>
36
- <option>Summarize tools</option>
37
- <option>Retry</option>
38
- </choice>
39
-
40
- <toolkit />
41
- `;
42
-
43
- const nodes: SyntaxNode[] = [];
44
- const state = createEditorState(doc);
45
- const tree = syntaxTree(state);
46
- tree.iterate({
47
- enter: (node) => {
48
- if (node.type.name === 'Element') {
49
- nodes.push(node.node);
50
- return false; // Stop traversal.
51
- }
52
- },
53
- });
54
-
55
- expect(nodes).toHaveLength(4);
56
- expect(
57
- nodes.map((node) => ({
58
- content: doc.slice(node.from, node.to),
59
- data: nodeToJson(state, node.node),
60
- })),
61
- ).toEqual([
62
- {
63
- content: '<prompt>\n Hello\n</prompt>',
64
- data: {
65
- _tag: 'prompt',
66
- children: ['Hello'],
67
- },
68
- },
69
- {
70
- content: '<suggestion>Summarize tools</suggestion>',
71
- data: {
72
- _tag: 'suggestion',
73
- children: ['Summarize tools'],
74
- },
75
- },
76
- {
77
- content: '<choice>\n <option>Summarize tools</option>\n <option>Retry</option>\n</choice>',
78
- data: {
79
- _tag: 'choice',
80
- children: [
81
- {
82
- _tag: 'option',
83
- children: ['Summarize tools'],
84
- },
85
- {
86
- _tag: 'option',
87
- children: ['Retry'],
88
- },
89
- ],
90
- },
91
- },
92
- {
93
- content: '<toolkit />',
94
- data: {
95
- _tag: 'toolkit',
96
- },
97
- },
98
- ]);
99
- });
100
-
101
- test('setext heading disabled', () => {
102
- const doc = trim`
103
- This should NOT be a heading
104
- =
105
-
106
- Another line that should NOT be a heading
107
- -
108
- `;
109
-
110
- const state = createEditorState(doc);
111
- const tree = syntaxTree(state);
112
-
113
- tree.iterate({
114
- enter: (node) => {
115
- if (node.type.name === 'SetextHeading') {
116
- throw new Error('SetextHeading should be disabled!');
117
- }
118
- },
119
- });
120
- });
121
-
122
- //
123
- // TODO(burdon): All tests below should test the tree.
124
- //
125
-
126
- test('should parse standard markdown elements', ({ expect }) => {
127
- const doc = trim`
128
- # Heading 1
129
- ## Heading 2
130
- ### Heading 3
131
-
132
- This is a paragraph with **bold** and *italic* text.
133
-
134
- \`\`\`javascript
135
- const code = 'block';
136
- \`\`\`
137
- `;
138
-
139
- const state = createEditorState(doc);
140
- const tree = state.sliceDoc(0, state.doc.length);
141
-
142
- // Verify the document is parsed without errors.
143
- expect(tree).toBe(doc);
144
- expect(state.doc.lines).toBeGreaterThan(1);
145
- });
146
-
147
- test('should parse custom XML tags', ({ expect }) => {
148
- const doc = trim`
149
- # Document with Custom Tags
150
-
151
- <prompt>This is a custom prompt block</prompt>
152
-
153
- Regular paragraph text.
154
-
155
- <prompt />
156
-
157
- Regular paragraph text.
158
-
159
- <prompt>
160
- Multi-line
161
- prompt content
162
- </prompt>
163
- `;
164
-
165
- const state = createEditorState(doc);
166
- const tree = state.sliceDoc(0, state.doc.length);
167
-
168
- // Verify the document contains custom tags.
169
- expect(tree).toContain('<prompt>');
170
- expect(tree).toContain('<prompt />');
171
- expect(tree).toContain('</prompt>');
172
- });
173
-
174
- test('should handle mixed markdown and XML content', ({ expect }) => {
175
- const doc = trim`
176
- # Mixed Content
177
-
178
- This is a paragraph with a <prompt>inline prompt</prompt> tag.
179
-
180
- ## Section 2
181
-
182
- <prompt>
183
- This prompt contains **markdown** formatting
184
- </prompt>
185
-
186
- \`\`\`
187
- <prompt>This should not be parsed as XML inside code block</prompt>
188
- \`\`\`
189
- `;
190
-
191
- const state = createEditorState(doc);
192
- const tree = state.sliceDoc(0, state.doc.length);
193
-
194
- // Verify mixed content is preserved.
195
- expect(tree).toBe(doc);
196
- });
197
-
198
- test('should not parse XML tags in code blocks', ({ expect }) => {
199
- const doc = trim`
200
- \`\`\`xml
201
- <prompt>This is inside a code block</prompt>
202
- \`\`\`
203
-
204
- \`<prompt>inline code</prompt>\`
205
- `;
206
-
207
- const state = createEditorState(doc);
208
- const tree = state.sliceDoc(0, state.doc.length);
209
-
210
- // Verify code blocks are preserved as-is.
211
- expect(tree).toContain('```xml');
212
- expect(tree).toContain('<prompt>This is inside a code block</prompt>');
213
- });
214
-
215
- test('should handle nested and complex structures', ({ expect }) => {
216
- const doc = trim`
217
- # Complex Document
218
-
219
- <prompt>
220
- First prompt with some content
221
- </prompt>
222
-
223
- ## Lists and Prompts
224
-
225
- - Item 1
226
- - Item 2 with <prompt>embedded prompt</prompt>
227
- - Item 3
228
-
229
- <prompt>
230
- Another prompt after the list
231
- </prompt>
232
-
233
- ### Code Example
234
-
235
- \`\`\`typescript
236
- const example = '<prompt>not parsed</prompt>';
237
- \`\`\`
238
- `;
239
-
240
- const state = createEditorState(doc);
241
- const tree = state.sliceDoc(0, state.doc.length);
242
-
243
- // Verify complex structures are handled.
244
- expect(tree).toBe(doc);
245
- expect(tree).toMatch(/Item 2 with <prompt>embedded prompt<\/prompt>/);
246
- });
247
-
248
- test('should handle empty and edge cases', ({ expect }) => {
249
- const emptyDoc = '';
250
- const emptyState = createEditorState(emptyDoc);
251
- expect(emptyState.doc.length).toBe(0);
252
-
253
- const onlyPromptDoc = '<prompt>Only prompt content</prompt>';
254
- const onlyPromptState = createEditorState(onlyPromptDoc);
255
- expect(onlyPromptState.sliceDoc(0)).toBe(onlyPromptDoc);
256
-
257
- const unclosedPromptDoc = '<prompt>Unclosed prompt';
258
- const unclosedState = createEditorState(unclosedPromptDoc);
259
- expect(unclosedState.sliceDoc(0)).toBe(unclosedPromptDoc);
260
- });
261
- });
@@ -1,78 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { xmlLanguage } from '@codemirror/lang-xml';
6
- import { type Extension } from '@codemirror/state';
7
- import { type ParseWrapper, parseMixed } from '@lezer/common';
8
-
9
- import { createMarkdownExtensions } from '../markdown';
10
-
11
- import { type XmlWidgetRegistry } from './xml-tags';
12
-
13
- export type ExtendedMarkdownOptions = {
14
- registry?: XmlWidgetRegistry;
15
- };
16
-
17
- /**
18
- * Extended markdown parser with mixed parser for custom rendering of XML tags.
19
- */
20
- export const extendedMarkdown = ({ registry }: ExtendedMarkdownOptions = {}): Extension => {
21
- return [
22
- createMarkdownExtensions({
23
- extensions: [
24
- {
25
- wrap: mixedParser(registry),
26
- parseBlock: [
27
- // Disable SetextHeading since it causes flickering when parsing/rendering tasks in chunks.
28
- {
29
- name: 'SetextHeading',
30
- parse: () => false,
31
- },
32
- ],
33
- },
34
- ],
35
- }),
36
- ];
37
- };
38
-
39
- /**
40
- * Configure mixed parser to recognize custom tags.
41
- */
42
- const mixedParser = (registry?: XmlWidgetRegistry): ParseWrapper => {
43
- const customTags = Object.keys(registry ?? {});
44
- const tagPattern = new RegExp(`<(${customTags.join('|')})`);
45
-
46
- return parseMixed((node, input) => {
47
- switch (node.name) {
48
- // Ignore XML inside of fenced and inline code.
49
- case 'FencedCode':
50
- case 'InlineCode': {
51
- return null;
52
- }
53
-
54
- // Parse multi-line HTML blocks.
55
- // case 'XMLBlock':
56
- case 'HTMLBlock': {
57
- return {
58
- parser: xmlLanguage.parser,
59
- };
60
- }
61
-
62
- // Parse paragraphs that contain custom XML tags.
63
- // TODO(burdon): Entire paragraph should be parsed as XML.
64
- case 'Paragraph': {
65
- const content = input.read(node.from, node.to);
66
- if (tagPattern.test(content)) {
67
- return {
68
- parser: xmlLanguage.parser,
69
- };
70
- }
71
-
72
- return null;
73
- }
74
- }
75
-
76
- return null;
77
- });
78
- };
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './extended-markdown';
6
- export * from './streamer';
7
- export * from './xml-tags';