@dxos/react-ui-editor 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934

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 (435) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/index.mjs +1080 -8837
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/translations.mjs +39 -0
  7. package/dist/lib/browser/translations.mjs.map +7 -0
  8. package/dist/lib/node-esm/index.mjs +1080 -8836
  9. package/dist/lib/node-esm/index.mjs.map +4 -4
  10. package/dist/lib/node-esm/meta.json +1 -1
  11. package/dist/lib/node-esm/translations.mjs +41 -0
  12. package/dist/lib/node-esm/translations.mjs.map +7 -0
  13. package/dist/types/src/components/Editor/Editor.d.ts +41 -24
  14. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  15. package/dist/types/src/components/Editor/Editor.stories.d.ts +7 -4
  16. package/dist/types/src/components/Editor/Editor.stories.d.ts.map +1 -1
  17. package/dist/types/src/components/{EditorContent/EditorContent.d.ts → Editor/EditorView.d.ts} +9 -7
  18. package/dist/types/src/components/Editor/EditorView.d.ts.map +1 -0
  19. package/dist/types/src/components/Editor/controller.d.ts.map +1 -0
  20. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts +2 -4
  21. package/dist/types/src/components/EditorMenuProvider/EditorMenuProvider.d.ts.map +1 -1
  22. package/dist/types/src/components/EditorMenuProvider/index.d.ts +0 -1
  23. package/dist/types/src/components/EditorMenuProvider/index.d.ts.map +1 -1
  24. package/dist/types/src/components/EditorMenuProvider/menu-presets.d.ts.map +1 -1
  25. package/dist/types/src/components/EditorMenuProvider/menu.d.ts.map +1 -1
  26. package/dist/types/src/components/EditorMenuProvider/popover.d.ts +2 -2
  27. package/dist/types/src/components/EditorMenuProvider/popover.d.ts.map +1 -1
  28. package/dist/types/src/components/EditorMenuProvider/useEditorMenu.d.ts.map +1 -1
  29. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts +1 -1
  30. package/dist/types/src/components/EditorPreviewProvider/EditorPreviewProvider.d.ts.map +1 -1
  31. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +8 -6
  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 -2
  42. package/dist/types/src/components/EditorToolbar/index.d.ts.map +1 -1
  43. package/dist/types/src/components/EditorToolbar/lists.d.ts +6 -0
  44. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -0
  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 +6 -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 +0 -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 -31
  58. package/dist/types/src/extensions/index.d.ts.map +1 -1
  59. package/dist/types/src/hooks/index.d.ts +1 -0
  60. package/dist/types/src/hooks/index.d.ts.map +1 -1
  61. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts +25 -0
  62. package/dist/types/src/hooks/useBasicMarkdownExtensions.d.ts.map +1 -0
  63. package/dist/types/src/hooks/useTextEditor.d.ts +1 -1
  64. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  65. package/dist/types/src/index.d.ts +0 -9
  66. package/dist/types/src/index.d.ts.map +1 -1
  67. package/dist/types/src/stories/Automerge.stories.d.ts +44 -0
  68. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  69. package/dist/types/src/stories/Comments.stories.d.ts +3 -2
  70. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/EditorToolbar.stories.d.ts +29 -27
  72. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Experimental.stories.d.ts +4 -3
  74. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  75. package/dist/types/src/stories/Markdown.stories.d.ts +3 -2
  76. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Outliner.stories.d.ts +2 -2
  78. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/Popover.stories.d.ts +2 -2
  80. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Preview.stories.d.ts +3 -2
  82. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  83. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -1
  84. package/dist/types/src/stories/TextEditor.stories.d.ts +3 -2
  85. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  86. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  87. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  88. package/dist/types/src/stories/components/EditorStory.d.ts +9 -20
  89. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  90. package/dist/types/src/stories/components/util.d.ts +4 -3
  91. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  92. package/dist/types/src/translations.d.ts +26 -26
  93. package/dist/types/src/translations.d.ts.map +1 -1
  94. package/dist/types/src/util/index.d.ts +0 -5
  95. package/dist/types/src/util/index.d.ts.map +1 -1
  96. package/dist/types/src/util/react.d.ts +6 -5
  97. package/dist/types/src/util/react.d.ts.map +1 -1
  98. package/dist/types/tsconfig.tsbuildinfo +1 -1
  99. package/package.json +79 -71
  100. package/src/components/Editor/Editor.stories.tsx +26 -26
  101. package/src/components/Editor/Editor.tsx +67 -55
  102. package/src/components/Editor/EditorView.tsx +102 -0
  103. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +23 -30
  104. package/src/components/EditorMenuProvider/index.ts +0 -1
  105. package/src/components/EditorMenuProvider/menu-presets.ts +3 -1
  106. package/src/components/EditorMenuProvider/menu.ts +1 -2
  107. package/src/components/EditorMenuProvider/popover.ts +3 -3
  108. package/src/components/EditorMenuProvider/useEditorMenu.ts +9 -4
  109. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +6 -9
  110. package/src/components/EditorToolbar/EditorToolbar.tsx +37 -68
  111. package/src/components/EditorToolbar/blocks.ts +55 -48
  112. package/src/components/EditorToolbar/formatting.ts +44 -46
  113. package/src/components/EditorToolbar/headings.ts +45 -51
  114. package/src/components/EditorToolbar/image.ts +16 -14
  115. package/src/components/EditorToolbar/index.ts +2 -3
  116. package/src/components/EditorToolbar/lists.ts +58 -0
  117. package/src/components/EditorToolbar/search.ts +16 -14
  118. package/src/components/EditorToolbar/types.ts +8 -0
  119. package/src/components/EditorToolbar/view-mode.ts +37 -43
  120. package/src/components/index.ts +0 -5
  121. package/src/extensions/Assistant.stories.tsx +112 -0
  122. package/src/extensions/assistant-extension.tsx +223 -0
  123. package/src/extensions/index.ts +2 -32
  124. package/src/hooks/index.ts +1 -0
  125. package/src/hooks/useBasicMarkdownExtensions.ts +55 -0
  126. package/src/hooks/useTextEditor.ts +9 -3
  127. package/src/index.ts +0 -13
  128. package/src/stories/Automerge.stories.tsx +177 -0
  129. package/src/stories/Comments.stories.tsx +48 -43
  130. package/src/stories/EditorToolbar.stories.tsx +40 -53
  131. package/src/stories/Experimental.stories.tsx +14 -16
  132. package/src/stories/Markdown.stories.tsx +16 -16
  133. package/src/stories/Outliner.stories.tsx +8 -10
  134. package/src/stories/Popover.stories.tsx +27 -32
  135. package/src/stories/Preview.stories.tsx +67 -53
  136. package/src/stories/Tags.stories.tsx +24 -15
  137. package/src/stories/TextEditor.stories.tsx +13 -19
  138. package/src/stories/Theme.stories.tsx +61 -0
  139. package/src/stories/components/EditorStory.tsx +33 -30
  140. package/src/stories/components/util.tsx +51 -52
  141. package/src/translations.ts +30 -25
  142. package/src/util/index.ts +1 -6
  143. package/src/util/react.tsx +8 -13
  144. package/dist/lib/browser/chunk-HL3YF6WC.mjs +0 -22
  145. package/dist/lib/browser/chunk-HL3YF6WC.mjs.map +0 -7
  146. package/dist/lib/browser/types/index.mjs +0 -13
  147. package/dist/lib/browser/types/index.mjs.map +0 -7
  148. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs +0 -24
  149. package/dist/lib/node-esm/chunk-YJZGD3LY.mjs.map +0 -7
  150. package/dist/lib/node-esm/types/index.mjs +0 -14
  151. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  152. package/dist/types/src/components/EditorContent/EditorContent.d.ts.map +0 -1
  153. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts +0 -26
  154. package/dist/types/src/components/EditorContent/EditorContent.stories.d.ts.map +0 -1
  155. package/dist/types/src/components/EditorContent/controller.d.ts.map +0 -1
  156. package/dist/types/src/components/EditorContent/index.d.ts +0 -3
  157. package/dist/types/src/components/EditorContent/index.d.ts.map +0 -1
  158. package/dist/types/src/components/EditorMenuProvider/util.d.ts +0 -8
  159. package/dist/types/src/components/EditorMenuProvider/util.d.ts.map +0 -1
  160. package/dist/types/src/components/EditorToolbar/actions.d.ts +0 -39
  161. package/dist/types/src/components/EditorToolbar/actions.d.ts.map +0 -1
  162. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts +0 -11
  163. package/dist/types/src/components/EditorToolbar/useEditorToolbar.d.ts.map +0 -1
  164. package/dist/types/src/defaults.d.ts +0 -14
  165. package/dist/types/src/defaults.d.ts.map +0 -1
  166. package/dist/types/src/extensions/annotations.d.ts +0 -9
  167. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  168. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts +0 -17
  169. package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
  170. package/dist/types/src/extensions/autocomplete/index.d.ts +0 -5
  171. package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
  172. package/dist/types/src/extensions/autocomplete/match.d.ts +0 -13
  173. package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
  174. package/dist/types/src/extensions/autocomplete/placeholder.d.ts +0 -20
  175. package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
  176. package/dist/types/src/extensions/autocomplete/typeahead.d.ts +0 -10
  177. package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
  178. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  179. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  180. package/dist/types/src/extensions/automerge/automerge.stories.d.ts +0 -47
  181. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  182. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  183. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  184. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  185. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  186. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  187. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  188. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  189. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  190. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  191. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  192. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  193. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  194. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  195. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  196. package/dist/types/src/extensions/autoscroll.d.ts +0 -20
  197. package/dist/types/src/extensions/autoscroll.d.ts.map +0 -1
  198. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  199. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  200. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  201. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  202. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  203. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  204. package/dist/types/src/extensions/blast.d.ts +0 -25
  205. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  206. package/dist/types/src/extensions/blocks.d.ts +0 -2
  207. package/dist/types/src/extensions/blocks.d.ts.map +0 -1
  208. package/dist/types/src/extensions/bookmarks.d.ts +0 -12
  209. package/dist/types/src/extensions/bookmarks.d.ts.map +0 -1
  210. package/dist/types/src/extensions/comments.d.ts +0 -95
  211. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  212. package/dist/types/src/extensions/debug.d.ts +0 -3
  213. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  214. package/dist/types/src/extensions/dnd.d.ts +0 -9
  215. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  216. package/dist/types/src/extensions/factories.d.ts +0 -83
  217. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  218. package/dist/types/src/extensions/focus.d.ts +0 -7
  219. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  220. package/dist/types/src/extensions/folding.d.ts +0 -7
  221. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  222. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  223. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  224. package/dist/types/src/extensions/json.d.ts +0 -7
  225. package/dist/types/src/extensions/json.d.ts.map +0 -1
  226. package/dist/types/src/extensions/listener.d.ts +0 -13
  227. package/dist/types/src/extensions/listener.d.ts.map +0 -1
  228. package/dist/types/src/extensions/markdown/action.d.ts +0 -12
  229. package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
  230. package/dist/types/src/extensions/markdown/bundle.d.ts +0 -22
  231. package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
  232. package/dist/types/src/extensions/markdown/changes.d.ts +0 -10
  233. package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
  234. package/dist/types/src/extensions/markdown/changes.test.d.ts +0 -2
  235. package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
  236. package/dist/types/src/extensions/markdown/debug.d.ts +0 -11
  237. package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
  238. package/dist/types/src/extensions/markdown/decorate.d.ts +0 -25
  239. package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
  240. package/dist/types/src/extensions/markdown/formatting.d.ts +0 -61
  241. package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
  242. package/dist/types/src/extensions/markdown/formatting.test.d.ts +0 -3
  243. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
  244. package/dist/types/src/extensions/markdown/highlight.d.ts +0 -37
  245. package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
  246. package/dist/types/src/extensions/markdown/image.d.ts +0 -7
  247. package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
  248. package/dist/types/src/extensions/markdown/index.d.ts +0 -10
  249. package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
  250. package/dist/types/src/extensions/markdown/link.d.ts +0 -7
  251. package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
  252. package/dist/types/src/extensions/markdown/parser.test.d.ts +0 -2
  253. package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
  254. package/dist/types/src/extensions/markdown/styles.d.ts +0 -4
  255. package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
  256. package/dist/types/src/extensions/markdown/table.d.ts +0 -8
  257. package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
  258. package/dist/types/src/extensions/mention.d.ts +0 -7
  259. package/dist/types/src/extensions/mention.d.ts.map +0 -1
  260. package/dist/types/src/extensions/modal.d.ts +0 -7
  261. package/dist/types/src/extensions/modal.d.ts.map +0 -1
  262. package/dist/types/src/extensions/modes.d.ts +0 -10
  263. package/dist/types/src/extensions/modes.d.ts.map +0 -1
  264. package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
  265. package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
  266. package/dist/types/src/extensions/outliner/editor.d.ts +0 -5
  267. package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
  268. package/dist/types/src/extensions/outliner/editor.test.d.ts +0 -2
  269. package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
  270. package/dist/types/src/extensions/outliner/index.d.ts +0 -4
  271. package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
  272. package/dist/types/src/extensions/outliner/menu.d.ts +0 -8
  273. package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
  274. package/dist/types/src/extensions/outliner/outliner.d.ts +0 -11
  275. package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
  276. package/dist/types/src/extensions/outliner/outliner.test.d.ts +0 -2
  277. package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
  278. package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
  279. package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
  280. package/dist/types/src/extensions/outliner/tree.d.ts +0 -79
  281. package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
  282. package/dist/types/src/extensions/outliner/tree.test.d.ts +0 -2
  283. package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
  284. package/dist/types/src/extensions/preview/index.d.ts +0 -2
  285. package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
  286. package/dist/types/src/extensions/preview/preview.d.ts +0 -32
  287. package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
  288. package/dist/types/src/extensions/replacer.d.ts +0 -21
  289. package/dist/types/src/extensions/replacer.d.ts.map +0 -1
  290. package/dist/types/src/extensions/replacer.test.d.ts +0 -2
  291. package/dist/types/src/extensions/replacer.test.d.ts.map +0 -1
  292. package/dist/types/src/extensions/scrolling.d.ts +0 -78
  293. package/dist/types/src/extensions/scrolling.d.ts.map +0 -1
  294. package/dist/types/src/extensions/selection.d.ts +0 -24
  295. package/dist/types/src/extensions/selection.d.ts.map +0 -1
  296. package/dist/types/src/extensions/state.d.ts +0 -2
  297. package/dist/types/src/extensions/state.d.ts.map +0 -1
  298. package/dist/types/src/extensions/submit.d.ts +0 -10
  299. package/dist/types/src/extensions/submit.d.ts.map +0 -1
  300. package/dist/types/src/extensions/tab.d.ts +0 -4
  301. package/dist/types/src/extensions/tab.d.ts.map +0 -1
  302. package/dist/types/src/extensions/tags/extended-markdown.d.ts +0 -10
  303. package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
  304. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts +0 -2
  305. package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
  306. package/dist/types/src/extensions/tags/index.d.ts +0 -4
  307. package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
  308. package/dist/types/src/extensions/tags/streamer.d.ts +0 -12
  309. package/dist/types/src/extensions/tags/streamer.d.ts.map +0 -1
  310. package/dist/types/src/extensions/tags/xml-tags.d.ts +0 -97
  311. package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
  312. package/dist/types/src/extensions/tags/xml-util.d.ts +0 -10
  313. package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
  314. package/dist/types/src/extensions/typewriter.d.ts +0 -10
  315. package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
  316. package/dist/types/src/stories/CommandDialog.stories.d.ts +0 -14
  317. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +0 -1
  318. package/dist/types/src/styles/index.d.ts +0 -4
  319. package/dist/types/src/styles/index.d.ts.map +0 -1
  320. package/dist/types/src/styles/markdown.d.ts +0 -8
  321. package/dist/types/src/styles/markdown.d.ts.map +0 -1
  322. package/dist/types/src/styles/theme.d.ts +0 -38
  323. package/dist/types/src/styles/theme.d.ts.map +0 -1
  324. package/dist/types/src/styles/tokens.d.ts +0 -3
  325. package/dist/types/src/styles/tokens.d.ts.map +0 -1
  326. package/dist/types/src/types/index.d.ts +0 -2
  327. package/dist/types/src/types/index.d.ts.map +0 -1
  328. package/dist/types/src/types/types.d.ts +0 -21
  329. package/dist/types/src/types/types.d.ts.map +0 -1
  330. package/dist/types/src/util/cursor.d.ts +0 -31
  331. package/dist/types/src/util/cursor.d.ts.map +0 -1
  332. package/dist/types/src/util/debug.d.ts +0 -21
  333. package/dist/types/src/util/debug.d.ts.map +0 -1
  334. package/dist/types/src/util/decorations.d.ts +0 -4
  335. package/dist/types/src/util/decorations.d.ts.map +0 -1
  336. package/dist/types/src/util/dom.d.ts +0 -10
  337. package/dist/types/src/util/dom.d.ts.map +0 -1
  338. package/dist/types/src/util/facet.d.ts +0 -3
  339. package/dist/types/src/util/facet.d.ts.map +0 -1
  340. package/src/components/EditorContent/EditorContent.stories.tsx +0 -70
  341. package/src/components/EditorContent/EditorContent.tsx +0 -70
  342. package/src/components/EditorContent/index.ts +0 -6
  343. package/src/components/EditorMenuProvider/util.ts +0 -31
  344. package/src/components/EditorToolbar/actions.ts +0 -86
  345. package/src/components/EditorToolbar/useEditorToolbar.ts +0 -20
  346. package/src/defaults.ts +0 -52
  347. package/src/extensions/annotations.ts +0 -55
  348. package/src/extensions/autocomplete/autocomplete.ts +0 -151
  349. package/src/extensions/autocomplete/index.ts +0 -8
  350. package/src/extensions/autocomplete/match.ts +0 -46
  351. package/src/extensions/autocomplete/placeholder.ts +0 -117
  352. package/src/extensions/autocomplete/typeahead.ts +0 -87
  353. package/src/extensions/automerge/automerge.stories.tsx +0 -149
  354. package/src/extensions/automerge/automerge.test.tsx +0 -78
  355. package/src/extensions/automerge/automerge.ts +0 -105
  356. package/src/extensions/automerge/cursor.ts +0 -28
  357. package/src/extensions/automerge/defs.ts +0 -31
  358. package/src/extensions/automerge/index.ts +0 -5
  359. package/src/extensions/automerge/sync.ts +0 -79
  360. package/src/extensions/automerge/update-automerge.ts +0 -50
  361. package/src/extensions/automerge/update-codemirror.ts +0 -115
  362. package/src/extensions/autoscroll.ts +0 -163
  363. package/src/extensions/awareness/awareness-provider.ts +0 -127
  364. package/src/extensions/awareness/awareness.ts +0 -315
  365. package/src/extensions/awareness/index.ts +0 -6
  366. package/src/extensions/blast.ts +0 -363
  367. package/src/extensions/blocks.ts +0 -131
  368. package/src/extensions/bookmarks.ts +0 -75
  369. package/src/extensions/comments.ts +0 -598
  370. package/src/extensions/debug.ts +0 -15
  371. package/src/extensions/dnd.ts +0 -37
  372. package/src/extensions/factories.ts +0 -278
  373. package/src/extensions/focus.ts +0 -36
  374. package/src/extensions/folding.tsx +0 -43
  375. package/src/extensions/hashtag.tsx +0 -68
  376. package/src/extensions/json.ts +0 -57
  377. package/src/extensions/listener.ts +0 -32
  378. package/src/extensions/markdown/action.ts +0 -117
  379. package/src/extensions/markdown/bundle.ts +0 -105
  380. package/src/extensions/markdown/changes.test.ts +0 -26
  381. package/src/extensions/markdown/changes.ts +0 -149
  382. package/src/extensions/markdown/debug.ts +0 -44
  383. package/src/extensions/markdown/decorate.ts +0 -601
  384. package/src/extensions/markdown/formatting.test.ts +0 -498
  385. package/src/extensions/markdown/formatting.ts +0 -1265
  386. package/src/extensions/markdown/highlight.ts +0 -183
  387. package/src/extensions/markdown/image.ts +0 -118
  388. package/src/extensions/markdown/index.ts +0 -13
  389. package/src/extensions/markdown/link.ts +0 -50
  390. package/src/extensions/markdown/parser.test.ts +0 -75
  391. package/src/extensions/markdown/styles.ts +0 -135
  392. package/src/extensions/markdown/table.ts +0 -150
  393. package/src/extensions/mention.ts +0 -41
  394. package/src/extensions/modal.ts +0 -24
  395. package/src/extensions/modes.ts +0 -41
  396. package/src/extensions/outliner/commands.ts +0 -270
  397. package/src/extensions/outliner/editor.test.ts +0 -33
  398. package/src/extensions/outliner/editor.ts +0 -184
  399. package/src/extensions/outliner/index.ts +0 -7
  400. package/src/extensions/outliner/menu.ts +0 -128
  401. package/src/extensions/outliner/outliner.test.ts +0 -100
  402. package/src/extensions/outliner/outliner.ts +0 -167
  403. package/src/extensions/outliner/selection.ts +0 -50
  404. package/src/extensions/outliner/tree.test.ts +0 -168
  405. package/src/extensions/outliner/tree.ts +0 -317
  406. package/src/extensions/preview/index.ts +0 -5
  407. package/src/extensions/preview/preview.ts +0 -193
  408. package/src/extensions/replacer.test.ts +0 -75
  409. package/src/extensions/replacer.ts +0 -93
  410. package/src/extensions/scrolling.ts +0 -189
  411. package/src/extensions/selection.ts +0 -100
  412. package/src/extensions/state.ts +0 -7
  413. package/src/extensions/submit.ts +0 -62
  414. package/src/extensions/tab.ts +0 -29
  415. package/src/extensions/tags/extended-markdown.test.ts +0 -262
  416. package/src/extensions/tags/extended-markdown.ts +0 -78
  417. package/src/extensions/tags/index.ts +0 -7
  418. package/src/extensions/tags/streamer.ts +0 -243
  419. package/src/extensions/tags/xml-tags.ts +0 -500
  420. package/src/extensions/tags/xml-util.ts +0 -94
  421. package/src/extensions/typewriter.ts +0 -68
  422. package/src/stories/CommandDialog.stories.tsx +0 -83
  423. package/src/styles/index.ts +0 -7
  424. package/src/styles/markdown.ts +0 -26
  425. package/src/styles/theme.ts +0 -269
  426. package/src/styles/tokens.ts +0 -17
  427. package/src/types/index.ts +0 -5
  428. package/src/types/types.ts +0 -32
  429. package/src/util/cursor.ts +0 -56
  430. package/src/util/debug.ts +0 -69
  431. package/src/util/decorations.ts +0 -21
  432. package/src/util/dom.ts +0 -34
  433. package/src/util/facet.ts +0 -13
  434. /package/dist/types/src/components/{EditorContent → Editor}/controller.d.ts +0 -0
  435. /package/src/components/{EditorContent → Editor}/controller.ts +0 -0
@@ -1,262 +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 state = createEditorState(doc);
44
-
45
- const nodes: SyntaxNode[] = [];
46
- const tree = syntaxTree(state);
47
- tree.iterate({
48
- enter: (node) => {
49
- if (node.type.name === 'Element') {
50
- nodes.push(node.node);
51
- return false; // Stop traversal.
52
- }
53
- },
54
- });
55
-
56
- expect(nodes).toHaveLength(4);
57
- expect(
58
- nodes.map((node) => ({
59
- content: doc.slice(node.from, node.to),
60
- data: nodeToJson(state, node.node),
61
- })),
62
- ).toEqual([
63
- {
64
- content: '<prompt>\n Hello\n</prompt>',
65
- data: {
66
- _tag: 'prompt',
67
- children: ['Hello'],
68
- },
69
- },
70
- {
71
- content: '<suggestion>Summarize tools</suggestion>',
72
- data: {
73
- _tag: 'suggestion',
74
- children: ['Summarize tools'],
75
- },
76
- },
77
- {
78
- content: '<choice>\n <option>Summarize tools</option>\n <option>Retry</option>\n</choice>',
79
- data: {
80
- _tag: 'choice',
81
- children: [
82
- {
83
- _tag: 'option',
84
- children: ['Summarize tools'],
85
- },
86
- {
87
- _tag: 'option',
88
- children: ['Retry'],
89
- },
90
- ],
91
- },
92
- },
93
- {
94
- content: '<toolkit />',
95
- data: {
96
- _tag: 'toolkit',
97
- },
98
- },
99
- ]);
100
- });
101
-
102
- test('setext heading disabled', () => {
103
- const doc = trim`
104
- This should NOT be a heading
105
- =
106
-
107
- Another line that should NOT be a heading
108
- -
109
- `;
110
-
111
- const state = createEditorState(doc);
112
- const tree = syntaxTree(state);
113
-
114
- tree.iterate({
115
- enter: (node) => {
116
- if (node.type.name === 'SetextHeading') {
117
- throw new Error('SetextHeading should be disabled!');
118
- }
119
- },
120
- });
121
- });
122
-
123
- //
124
- // TODO(burdon): All tests below should test the tree.
125
- //
126
-
127
- test('should parse standard markdown elements', ({ expect }) => {
128
- const doc = trim`
129
- # Heading 1
130
- ## Heading 2
131
- ### Heading 3
132
-
133
- This is a paragraph with **bold** and *italic* text.
134
-
135
- \`\`\`javascript
136
- const code = 'block';
137
- \`\`\`
138
- `;
139
-
140
- const state = createEditorState(doc);
141
- const tree = state.sliceDoc(0, state.doc.length);
142
-
143
- // Verify the document is parsed without errors.
144
- expect(tree).toBe(doc);
145
- expect(state.doc.lines).toBeGreaterThan(1);
146
- });
147
-
148
- test('should parse custom XML tags', ({ expect }) => {
149
- const doc = trim`
150
- # Document with Custom Tags
151
-
152
- <prompt>This is a custom prompt block</prompt>
153
-
154
- Regular paragraph text.
155
-
156
- <prompt />
157
-
158
- Regular paragraph text.
159
-
160
- <prompt>
161
- Multi-line
162
- prompt content
163
- </prompt>
164
- `;
165
-
166
- const state = createEditorState(doc);
167
- const tree = state.sliceDoc(0, state.doc.length);
168
-
169
- // Verify the document contains custom tags.
170
- expect(tree).toContain('<prompt>');
171
- expect(tree).toContain('<prompt />');
172
- expect(tree).toContain('</prompt>');
173
- });
174
-
175
- test('should handle mixed markdown and XML content', ({ expect }) => {
176
- const doc = trim`
177
- # Mixed Content
178
-
179
- This is a paragraph with a <prompt>inline prompt</prompt> tag.
180
-
181
- ## Section 2
182
-
183
- <prompt>
184
- This prompt contains **markdown** formatting
185
- </prompt>
186
-
187
- \`\`\`
188
- <prompt>This should not be parsed as XML inside code block</prompt>
189
- \`\`\`
190
- `;
191
-
192
- const state = createEditorState(doc);
193
- const tree = state.sliceDoc(0, state.doc.length);
194
-
195
- // Verify mixed content is preserved.
196
- expect(tree).toBe(doc);
197
- });
198
-
199
- test('should not parse XML tags in code blocks', ({ expect }) => {
200
- const doc = trim`
201
- \`\`\`xml
202
- <prompt>This is inside a code block</prompt>
203
- \`\`\`
204
-
205
- \`<prompt>inline code</prompt>\`
206
- `;
207
-
208
- const state = createEditorState(doc);
209
- const tree = state.sliceDoc(0, state.doc.length);
210
-
211
- // Verify code blocks are preserved as-is.
212
- expect(tree).toContain('```xml');
213
- expect(tree).toContain('<prompt>This is inside a code block</prompt>');
214
- });
215
-
216
- test('should handle nested and complex structures', ({ expect }) => {
217
- const doc = trim`
218
- # Complex Document
219
-
220
- <prompt>
221
- First prompt with some content
222
- </prompt>
223
-
224
- ## Lists and Prompts
225
-
226
- - Item 1
227
- - Item 2 with <prompt>embedded prompt</prompt>
228
- - Item 3
229
-
230
- <prompt>
231
- Another prompt after the list
232
- </prompt>
233
-
234
- ### Code Example
235
-
236
- \`\`\`typescript
237
- const example = '<prompt>not parsed</prompt>';
238
- \`\`\`
239
- `;
240
-
241
- const state = createEditorState(doc);
242
- const tree = state.sliceDoc(0, state.doc.length);
243
-
244
- // Verify complex structures are handled.
245
- expect(tree).toBe(doc);
246
- expect(tree).toMatch(/Item 2 with <prompt>embedded prompt<\/prompt>/);
247
- });
248
-
249
- test('should handle empty and edge cases', ({ expect }) => {
250
- const emptyDoc = '';
251
- const emptyState = createEditorState(emptyDoc);
252
- expect(emptyState.doc.length).toBe(0);
253
-
254
- const onlyPromptDoc = '<prompt>Only prompt content</prompt>';
255
- const onlyPromptState = createEditorState(onlyPromptDoc);
256
- expect(onlyPromptState.sliceDoc(0)).toBe(onlyPromptDoc);
257
-
258
- const unclosedPromptDoc = '<prompt>Unclosed prompt';
259
- const unclosedState = createEditorState(unclosedPromptDoc);
260
- expect(unclosedState.sliceDoc(0)).toBe(unclosedPromptDoc);
261
- });
262
- });
@@ -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';
@@ -1,243 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Extension, StateEffect, StateField } from '@codemirror/state';
6
- import { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';
7
-
8
- import { Domino } from '@dxos/react-ui';
9
- import { isTruthy } from '@dxos/util';
10
-
11
- const BLINK_RATE = 2_000;
12
-
13
- export type StreamerOptions = {
14
- cursor?: boolean;
15
- // When true, uses defaults. When object, allows configuring removal delay.
16
- fadeIn?: boolean | { removalDelay?: number };
17
- };
18
-
19
- /**
20
- * Extension that adds a blinking cursor widget at the end of the document.
21
- */
22
- export const streamer = (options: StreamerOptions = {}): Extension => {
23
- return [
24
- options.cursor && cursor(),
25
- options.fadeIn && fadeIn(typeof options.fadeIn === 'object' ? options.fadeIn : {}),
26
- ].filter(isTruthy);
27
- };
28
-
29
- /**
30
- * State field to manage the cursor widget decoration.
31
- */
32
- const cursor = (): Extension => {
33
- const hideCursor = StateEffect.define();
34
-
35
- // State field to track if cursor should be shown.
36
- const showCursor = StateField.define<boolean>({
37
- create: () => true,
38
- update: (value, tr) => {
39
- for (const effect of tr.effects) {
40
- if (effect.is(hideCursor)) {
41
- return false;
42
- }
43
- }
44
- if (tr.docChanged) {
45
- return true;
46
- }
47
-
48
- return value;
49
- },
50
- });
51
-
52
- // View plugin to manage timer and dispatch effects.
53
- const timerPlugin = ViewPlugin.fromClass(
54
- class {
55
- timer: any;
56
-
57
- constructor(private view: EditorView) {}
58
-
59
- update(update: ViewUpdate) {
60
- if (update.docChanged) {
61
- clearTimeout(this.timer);
62
- this.timer = setTimeout(() => {
63
- this.view.dispatch({
64
- effects: hideCursor.of(null),
65
- });
66
- }, BLINK_RATE);
67
- }
68
- }
69
-
70
- destroy() {
71
- clearTimeout(this.timer);
72
- }
73
- },
74
- );
75
-
76
- // Decoration field that uses the showCursor state.
77
- const cursorDecoration = StateField.define<DecorationSet>({
78
- create: () => Decoration.none,
79
- update: (_decorations, tr) => {
80
- const show = tr.state.field(showCursor);
81
- if (!show) {
82
- return Decoration.none;
83
- }
84
-
85
- // Always place cursor at the end of the document.
86
- const endPos = tr.state.doc.length;
87
- return Decoration.set([
88
- Decoration.widget({
89
- widget: new CursorWidget(),
90
- side: 1, // Place after the position.
91
- }).range(endPos),
92
- ]);
93
- },
94
- provide: (f) => EditorView.decorations.from(f),
95
- });
96
-
97
- return [showCursor, timerPlugin, cursorDecoration];
98
- };
99
-
100
- /**
101
- * Widget class for the cursor at the end of the document.
102
- * Half
103
- */
104
- class CursorWidget extends WidgetType {
105
- toDOM() {
106
- return Domino.of('span')
107
- .style({ opacity: '0.8' })
108
- .children(Domino.of('span').text('\u258F').style({ animation: 'blink 2s infinite' }))
109
- .build();
110
- }
111
- }
112
-
113
- /**
114
- * State field to detect and decorate appended text with a fade-in effect.
115
- * Also schedules removal of the last appended decoration after a delay.
116
- */
117
- const fadeIn = (options: { removalDelay?: number } = {}): Extension => {
118
- const FADE_IN_DURATION = 1_000; // ms.
119
- const DEFAULT_REMOVAL_DELAY = 5_000; // ms.
120
- const removalDelay = options.removalDelay ?? DEFAULT_REMOVAL_DELAY;
121
-
122
- // Effect to remove a specific decoration by range.
123
- const removeDecoration = StateEffect.define<{ from: number; to: number }>();
124
-
125
- // Decoration field that adds fade-in marks for appended content and responds to removal effects.
126
- const fadeField = StateField.define<DecorationSet>({
127
- create: () => Decoration.none,
128
- update: (decorations, tr) => {
129
- let next = decorations;
130
-
131
- // Apply removals first, if any.
132
- for (const effect of tr.effects) {
133
- if (effect.is(removeDecoration)) {
134
- const target = effect.value;
135
- next = next.update({
136
- filter: (from, to) => !(from === target.from && to === target.to),
137
- });
138
- }
139
- }
140
-
141
- if (!tr.docChanged) {
142
- return next;
143
- }
144
-
145
- // Reset decorations if the entire content was replaced.
146
- let isReset = tr.state.doc.length === 0;
147
- if (!isReset) {
148
- tr.changes.iterChanges((fromA, toA) => {
149
- if (fromA === 0 && toA === tr.startState.doc.length) {
150
- isReset = true;
151
- }
152
- });
153
- }
154
- if (isReset) {
155
- return Decoration.none;
156
- }
157
-
158
- // Add fade-in decorations for appended content at the end only.
159
- const add: any[] = [];
160
- tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {
161
- // Don't fade in initial content.
162
- if (fromB === 0 && toB === inserted.length) {
163
- return;
164
- }
165
- // At-the-end append.
166
- if (toA === tr.startState.doc.length && inserted.length > 0) {
167
- add.push(Decoration.mark({ class: 'cm-fade-in' }).range(fromB, toB));
168
- }
169
- });
170
-
171
- return next.update({ add });
172
- },
173
- provide: (f) => EditorView.decorations.from(f),
174
- });
175
-
176
- // View plugin that tracks appended ranges and schedules their removal.
177
- const timerPlugin = ViewPlugin.fromClass(
178
- class {
179
- // Map a simple key "from-to" to timer id.
180
- _timers = new Map<string, any>();
181
-
182
- constructor(private view: EditorView) {}
183
-
184
- update(update: ViewUpdate) {
185
- if (!update.docChanged) {
186
- return;
187
- }
188
-
189
- update.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {
190
- // Only consider appends at the end.
191
- if (toA !== update.startState.doc.length || inserted.length === 0) {
192
- return;
193
- }
194
-
195
- const key = `${fromB}-${toB}`;
196
- // Clear any prior timer for this exact range.
197
- if (this._timers.has(key)) {
198
- clearTimeout(this._timers.get(key));
199
- }
200
-
201
- const totalDelay = FADE_IN_DURATION + removalDelay;
202
- const id = setTimeout(() => {
203
- this.view.dispatch({ effects: removeDecoration.of({ from: fromB, to: toB }) });
204
- this._timers.delete(key);
205
- }, totalDelay);
206
-
207
- this._timers.set(key, id);
208
- });
209
- }
210
-
211
- destroy() {
212
- for (const id of this._timers.values()) {
213
- clearTimeout(id);
214
- }
215
- this._timers.clear();
216
- }
217
- },
218
- );
219
-
220
- return [
221
- fadeField,
222
- timerPlugin,
223
- EditorView.theme({
224
- '.cm-line > span': {
225
- opacity: '0.8',
226
- },
227
- '.cm-fade-in': {
228
- animation: 'fade-in 3s ease-out forwards',
229
- },
230
- '@keyframes fade-in': {
231
- '0%': {
232
- opacity: '0',
233
- },
234
- '80%': {
235
- opacity: '1',
236
- },
237
- '100%': {
238
- opacity: '0.8',
239
- },
240
- },
241
- }),
242
- ];
243
- };