@dxos/react-ui-editor 0.8.4-main.b97322e → 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 (406) hide show
  1. package/dist/lib/browser/index.mjs +1216 -7393
  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 +1216 -7392
  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 -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/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/components/EditorMenuProvider/EditorMenuProvider.d.ts +36 -0
  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/components/EditorMenuProvider/popover.d.ts +46 -0
  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 +28 -2
  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 -2
  54. package/dist/types/src/components/index.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useTextEditor.d.ts +6 -10
  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} +14 -27
  60. package/dist/types/src/stories/Automerge.stories.d.ts.map +1 -0
  61. package/dist/types/src/stories/CommandDialog.stories.d.ts +14 -0
  62. package/dist/types/src/stories/CommandDialog.stories.d.ts.map +1 -0
  63. package/dist/types/src/stories/Comments.stories.d.ts +22 -10
  64. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  65. package/dist/types/src/stories/EditorToolbar.stories.d.ts +39 -3
  66. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  67. package/dist/types/src/stories/Experimental.stories.d.ts +23 -13
  68. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  69. package/dist/types/src/stories/Markdown.stories.d.ts +33 -43
  70. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  71. package/dist/types/src/stories/Outliner.stories.d.ts +15 -21
  72. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  73. package/dist/types/src/stories/Popover.stories.d.ts +20 -0
  74. package/dist/types/src/stories/Popover.stories.d.ts.map +1 -0
  75. package/dist/types/src/stories/Preview.stories.d.ts +23 -7
  76. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Tags.stories.d.ts +16 -0
  78. package/dist/types/src/stories/Tags.stories.d.ts.map +1 -0
  79. package/dist/types/src/stories/TextEditor.stories.d.ts +38 -52
  80. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  81. package/dist/types/src/stories/Theme.stories.d.ts +8 -0
  82. package/dist/types/src/stories/Theme.stories.d.ts.map +1 -0
  83. package/dist/types/src/stories/components/EditorStory.d.ts +11 -23
  84. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  85. package/dist/types/src/stories/components/util.d.ts +3 -3
  86. package/dist/types/src/stories/components/util.d.ts.map +1 -1
  87. package/dist/types/src/translations.d.ts +6 -6
  88. package/dist/types/src/translations.d.ts.map +1 -1
  89. package/dist/types/src/util/index.d.ts +0 -4
  90. package/dist/types/src/util/index.d.ts.map +1 -1
  91. package/dist/types/src/util/react.d.ts +6 -2
  92. package/dist/types/src/util/react.d.ts.map +1 -1
  93. package/dist/types/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +82 -78
  95. package/src/components/Editor/Editor.stories.tsx +95 -0
  96. package/src/components/Editor/Editor.tsx +164 -24
  97. package/src/components/EditorContent/EditorContent.tsx +83 -0
  98. package/src/components/EditorContent/controller.ts +50 -0
  99. package/src/components/EditorContent/index.ts +6 -0
  100. package/src/components/EditorMenuProvider/EditorMenuProvider.tsx +233 -0
  101. package/src/components/EditorMenuProvider/index.ts +10 -0
  102. package/src/components/EditorMenuProvider/menu-presets.ts +124 -0
  103. package/src/components/EditorMenuProvider/menu.ts +70 -0
  104. package/src/components/EditorMenuProvider/popover.ts +285 -0
  105. package/src/components/EditorMenuProvider/useEditorMenu.ts +173 -0
  106. package/src/components/EditorPreviewProvider/EditorPreviewProvider.tsx +81 -0
  107. package/src/components/EditorPreviewProvider/index.ts +5 -0
  108. package/src/components/EditorToolbar/EditorToolbar.tsx +120 -96
  109. package/src/components/EditorToolbar/actions.ts +87 -0
  110. package/src/components/EditorToolbar/blocks.ts +22 -25
  111. package/src/components/EditorToolbar/formatting.ts +24 -27
  112. package/src/components/EditorToolbar/headings.ts +20 -12
  113. package/src/components/EditorToolbar/image.ts +17 -6
  114. package/src/components/EditorToolbar/index.ts +3 -7
  115. package/src/components/EditorToolbar/search.ts +17 -6
  116. package/src/components/EditorToolbar/useEditorToolbar.ts +20 -0
  117. package/src/components/EditorToolbar/view-mode.ts +15 -9
  118. package/src/components/index.ts +6 -2
  119. package/src/hooks/useTextEditor.ts +39 -45
  120. package/src/index.ts +0 -10
  121. package/src/stories/Automerge.stories.tsx +175 -0
  122. package/src/stories/CommandDialog.stories.tsx +81 -0
  123. package/src/stories/Comments.stories.tsx +59 -51
  124. package/src/stories/EditorToolbar.stories.tsx +46 -30
  125. package/src/stories/Experimental.stories.tsx +18 -16
  126. package/src/stories/Markdown.stories.tsx +37 -33
  127. package/src/stories/Outliner.stories.tsx +53 -42
  128. package/src/stories/Popover.stories.tsx +158 -0
  129. package/src/stories/Preview.stories.tsx +101 -91
  130. package/src/stories/Tags.stories.tsx +104 -0
  131. package/src/stories/TextEditor.stories.tsx +50 -75
  132. package/src/stories/Theme.stories.tsx +61 -0
  133. package/src/stories/components/EditorStory.tsx +41 -33
  134. package/src/stories/components/util.tsx +43 -11
  135. package/src/translations.ts +5 -5
  136. package/src/util/index.ts +1 -5
  137. package/src/util/react.tsx +7 -3
  138. package/dist/lib/browser/chunk-22UMM3QJ.mjs +0 -22
  139. package/dist/lib/browser/chunk-22UMM3QJ.mjs.map +0 -7
  140. package/dist/lib/browser/testing/index.mjs +0 -6
  141. package/dist/lib/browser/testing/index.mjs.map +0 -7
  142. package/dist/lib/browser/types/index.mjs +0 -13
  143. package/dist/lib/browser/types/index.mjs.map +0 -7
  144. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs +0 -24
  145. package/dist/lib/node-esm/chunk-YXYQPV6R.mjs.map +0 -7
  146. package/dist/lib/node-esm/testing/index.mjs +0 -8
  147. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  148. package/dist/lib/node-esm/types/index.mjs +0 -14
  149. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  150. package/dist/types/src/components/EditorToolbar/lists.d.ts +0 -19
  151. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +0 -1
  152. package/dist/types/src/components/EditorToolbar/util.d.ts +0 -51
  153. package/dist/types/src/components/EditorToolbar/util.d.ts.map +0 -1
  154. package/dist/types/src/components/Popover/CommandMenu.d.ts +0 -34
  155. package/dist/types/src/components/Popover/CommandMenu.d.ts.map +0 -1
  156. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts +0 -21
  157. package/dist/types/src/components/Popover/RefDropdownMenu.d.ts.map +0 -1
  158. package/dist/types/src/components/Popover/RefPopover.d.ts +0 -34
  159. package/dist/types/src/components/Popover/RefPopover.d.ts.map +0 -1
  160. package/dist/types/src/components/Popover/index.d.ts +0 -4
  161. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  162. package/dist/types/src/defaults.d.ts +0 -14
  163. package/dist/types/src/defaults.d.ts.map +0 -1
  164. package/dist/types/src/extensions/annotations.d.ts +0 -9
  165. package/dist/types/src/extensions/annotations.d.ts.map +0 -1
  166. package/dist/types/src/extensions/autocomplete.d.ts +0 -13
  167. package/dist/types/src/extensions/autocomplete.d.ts.map +0 -1
  168. package/dist/types/src/extensions/automerge/automerge.d.ts +0 -4
  169. package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
  170. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +0 -1
  171. package/dist/types/src/extensions/automerge/automerge.test.d.ts +0 -2
  172. package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
  173. package/dist/types/src/extensions/automerge/cursor.d.ts +0 -4
  174. package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
  175. package/dist/types/src/extensions/automerge/defs.d.ts +0 -17
  176. package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
  177. package/dist/types/src/extensions/automerge/index.d.ts +0 -2
  178. package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
  179. package/dist/types/src/extensions/automerge/sync.d.ts +0 -17
  180. package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
  181. package/dist/types/src/extensions/automerge/update-automerge.d.ts +0 -6
  182. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
  183. package/dist/types/src/extensions/automerge/update-codemirror.d.ts +0 -5
  184. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
  185. package/dist/types/src/extensions/awareness/awareness-provider.d.ts +0 -31
  186. package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
  187. package/dist/types/src/extensions/awareness/awareness.d.ts +0 -46
  188. package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
  189. package/dist/types/src/extensions/awareness/index.d.ts +0 -3
  190. package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
  191. package/dist/types/src/extensions/blast.d.ts +0 -25
  192. package/dist/types/src/extensions/blast.d.ts.map +0 -1
  193. package/dist/types/src/extensions/command/action.d.ts +0 -17
  194. package/dist/types/src/extensions/command/action.d.ts.map +0 -1
  195. package/dist/types/src/extensions/command/command-menu.d.ts +0 -20
  196. package/dist/types/src/extensions/command/command-menu.d.ts.map +0 -1
  197. package/dist/types/src/extensions/command/command.d.ts +0 -6
  198. package/dist/types/src/extensions/command/command.d.ts.map +0 -1
  199. package/dist/types/src/extensions/command/floating-menu.d.ts +0 -7
  200. package/dist/types/src/extensions/command/floating-menu.d.ts.map +0 -1
  201. package/dist/types/src/extensions/command/hint.d.ts +0 -24
  202. package/dist/types/src/extensions/command/hint.d.ts.map +0 -1
  203. package/dist/types/src/extensions/command/index.d.ts +0 -7
  204. package/dist/types/src/extensions/command/index.d.ts.map +0 -1
  205. package/dist/types/src/extensions/command/placeholder.d.ts +0 -10
  206. package/dist/types/src/extensions/command/placeholder.d.ts.map +0 -1
  207. package/dist/types/src/extensions/command/state.d.ts +0 -16
  208. package/dist/types/src/extensions/command/state.d.ts.map +0 -1
  209. package/dist/types/src/extensions/command/typeahead.d.ts +0 -22
  210. package/dist/types/src/extensions/command/typeahead.d.ts.map +0 -1
  211. package/dist/types/src/extensions/command/useCommandMenu.d.ts +0 -26
  212. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +0 -1
  213. package/dist/types/src/extensions/comments.d.ts +0 -95
  214. package/dist/types/src/extensions/comments.d.ts.map +0 -1
  215. package/dist/types/src/extensions/debug.d.ts +0 -3
  216. package/dist/types/src/extensions/debug.d.ts.map +0 -1
  217. package/dist/types/src/extensions/dnd.d.ts +0 -9
  218. package/dist/types/src/extensions/dnd.d.ts.map +0 -1
  219. package/dist/types/src/extensions/factories.d.ts +0 -83
  220. package/dist/types/src/extensions/factories.d.ts.map +0 -1
  221. package/dist/types/src/extensions/focus.d.ts +0 -7
  222. package/dist/types/src/extensions/focus.d.ts.map +0 -1
  223. package/dist/types/src/extensions/folding.d.ts +0 -7
  224. package/dist/types/src/extensions/folding.d.ts.map +0 -1
  225. package/dist/types/src/extensions/hashtag.d.ts +0 -3
  226. package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
  227. package/dist/types/src/extensions/index.d.ts +0 -23
  228. package/dist/types/src/extensions/index.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/lists.ts +0 -59
  322. package/src/components/EditorToolbar/util.ts +0 -65
  323. package/src/components/Popover/CommandMenu.tsx +0 -279
  324. package/src/components/Popover/RefDropdownMenu.tsx +0 -85
  325. package/src/components/Popover/RefPopover.tsx +0 -99
  326. package/src/components/Popover/index.ts +0 -7
  327. package/src/defaults.ts +0 -49
  328. package/src/extensions/annotations.ts +0 -55
  329. package/src/extensions/autocomplete.ts +0 -69
  330. package/src/extensions/automerge/automerge.stories.tsx +0 -142
  331. package/src/extensions/automerge/automerge.test.tsx +0 -78
  332. package/src/extensions/automerge/automerge.ts +0 -85
  333. package/src/extensions/automerge/cursor.ts +0 -28
  334. package/src/extensions/automerge/defs.ts +0 -31
  335. package/src/extensions/automerge/index.ts +0 -5
  336. package/src/extensions/automerge/sync.ts +0 -75
  337. package/src/extensions/automerge/update-automerge.ts +0 -50
  338. package/src/extensions/automerge/update-codemirror.ts +0 -115
  339. package/src/extensions/awareness/awareness-provider.ts +0 -127
  340. package/src/extensions/awareness/awareness.ts +0 -315
  341. package/src/extensions/awareness/index.ts +0 -6
  342. package/src/extensions/blast.ts +0 -363
  343. package/src/extensions/command/action.ts +0 -56
  344. package/src/extensions/command/command-menu.ts +0 -210
  345. package/src/extensions/command/command.ts +0 -34
  346. package/src/extensions/command/floating-menu.ts +0 -133
  347. package/src/extensions/command/hint.ts +0 -102
  348. package/src/extensions/command/index.ts +0 -10
  349. package/src/extensions/command/placeholder.ts +0 -113
  350. package/src/extensions/command/state.ts +0 -89
  351. package/src/extensions/command/typeahead.ts +0 -129
  352. package/src/extensions/command/useCommandMenu.ts +0 -118
  353. package/src/extensions/comments.ts +0 -592
  354. package/src/extensions/debug.ts +0 -15
  355. package/src/extensions/dnd.ts +0 -37
  356. package/src/extensions/factories.ts +0 -259
  357. package/src/extensions/focus.ts +0 -35
  358. package/src/extensions/folding.tsx +0 -46
  359. package/src/extensions/hashtag.tsx +0 -68
  360. package/src/extensions/index.ts +0 -26
  361. package/src/extensions/json.ts +0 -57
  362. package/src/extensions/listener.ts +0 -38
  363. package/src/extensions/markdown/action.ts +0 -116
  364. package/src/extensions/markdown/bundle.ts +0 -71
  365. package/src/extensions/markdown/changes.test.ts +0 -26
  366. package/src/extensions/markdown/changes.ts +0 -149
  367. package/src/extensions/markdown/debug.ts +0 -44
  368. package/src/extensions/markdown/decorate.ts +0 -591
  369. package/src/extensions/markdown/formatting.test.ts +0 -498
  370. package/src/extensions/markdown/formatting.ts +0 -1267
  371. package/src/extensions/markdown/highlight.ts +0 -183
  372. package/src/extensions/markdown/image.ts +0 -119
  373. package/src/extensions/markdown/index.ts +0 -13
  374. package/src/extensions/markdown/link.ts +0 -47
  375. package/src/extensions/markdown/parser.test.ts +0 -75
  376. package/src/extensions/markdown/styles.ts +0 -135
  377. package/src/extensions/markdown/table.ts +0 -144
  378. package/src/extensions/mention.ts +0 -41
  379. package/src/extensions/modes.ts +0 -41
  380. package/src/extensions/outliner/commands.ts +0 -270
  381. package/src/extensions/outliner/editor.test.ts +0 -33
  382. package/src/extensions/outliner/editor.ts +0 -184
  383. package/src/extensions/outliner/index.ts +0 -7
  384. package/src/extensions/outliner/outliner.test.ts +0 -99
  385. package/src/extensions/outliner/outliner.ts +0 -166
  386. package/src/extensions/outliner/selection.ts +0 -50
  387. package/src/extensions/outliner/tree.test.ts +0 -167
  388. package/src/extensions/outliner/tree.ts +0 -317
  389. package/src/extensions/preview/index.ts +0 -5
  390. package/src/extensions/preview/preview.ts +0 -193
  391. package/src/extensions/selection.ts +0 -100
  392. package/src/extensions/typewriter.ts +0 -68
  393. package/src/stories/Command.stories.tsx +0 -97
  394. package/src/stories/CommandMenu.stories.tsx +0 -159
  395. package/src/styles/index.ts +0 -7
  396. package/src/styles/markdown.ts +0 -26
  397. package/src/styles/theme.ts +0 -265
  398. package/src/styles/tokens.ts +0 -17
  399. package/src/testing/index.ts +0 -5
  400. package/src/testing/util.ts +0 -5
  401. package/src/types/index.ts +0 -5
  402. package/src/types/types.ts +0 -32
  403. package/src/util/cursor.ts +0 -55
  404. package/src/util/debug.ts +0 -64
  405. package/src/util/dom.ts +0 -56
  406. package/src/util/facet.ts +0 -13
@@ -1,591 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { syntaxTree } from '@codemirror/language';
6
- import { RangeSetBuilder, type EditorState, StateEffect } from '@codemirror/state';
7
- import { EditorView, Decoration, type DecorationSet, WidgetType, ViewPlugin, type ViewUpdate } from '@codemirror/view';
8
- import { type SyntaxNodeRef } from '@lezer/common';
9
-
10
- import { invariant } from '@dxos/invariant';
11
- import { mx } from '@dxos/react-ui-theme';
12
-
13
- import { adjustChanges } from './changes';
14
- import { image } from './image';
15
- import { formattingStyles, bulletListIndentationWidth, orderedListIndentationWidth } from './styles';
16
- import { table } from './table';
17
- import { theme, type HeadingLevel } from '../../styles';
18
- import { type RenderCallback } from '../../types';
19
- import { wrapWithCatch } from '../../util';
20
-
21
- /**
22
- * Unicode characters.
23
- * NOTE: Depends on font.
24
- * https://www.compart.com/en/unicode (nice resource).
25
- * https://en.wikipedia.org/wiki/List_of_Unicode_characters
26
- */
27
- const Unicode = {
28
- emDash: '\u2014',
29
- bullet: '\u2022',
30
- bulletSmall: '\u2219',
31
- bulletSquare: '\u2b1d',
32
- };
33
-
34
- //
35
- // Widgets
36
- //
37
-
38
- class HorizontalRuleWidget extends WidgetType {
39
- override toDOM(): HTMLSpanElement {
40
- const el = document.createElement('span');
41
- el.className = 'cm-hr';
42
- return el;
43
- }
44
- }
45
-
46
- class LinkButton extends WidgetType {
47
- constructor(
48
- private readonly url: string,
49
- private readonly render: RenderCallback<{ url: string }>,
50
- ) {
51
- super();
52
- }
53
-
54
- override eq(other: this): boolean {
55
- return this.url === other.url;
56
- }
57
-
58
- // TODO(burdon): Create icon and link directly without react?
59
- override toDOM(view: EditorView): HTMLSpanElement {
60
- const el = document.createElement('span');
61
- this.render(el, { url: this.url }, view);
62
- return el;
63
- }
64
- }
65
-
66
- class CheckboxWidget extends WidgetType {
67
- constructor(private _checked: boolean) {
68
- super();
69
- }
70
-
71
- override eq(other: this): boolean {
72
- return this._checked === other._checked;
73
- }
74
-
75
- override toDOM(view: EditorView): HTMLSpanElement {
76
- const input = document.createElement('input');
77
- input.className = 'cm-task-checkbox dx-checkbox';
78
- input.type = 'checkbox';
79
- input.tabIndex = -1;
80
- input.checked = this._checked;
81
- if (view.state.readOnly) {
82
- input.setAttribute('disabled', 'true');
83
- } else {
84
- input.onmousedown = (event: Event) => {
85
- // Could be beginning of line.
86
- const line = view.state.doc.lineAt(view.posAtDOM(span));
87
- const text = view.state.sliceDoc(line.from, line.to);
88
- const match = text.match(/^\s*- (\[[xX ]]).*/);
89
- if (match) {
90
- const [, checked] = match;
91
- const pos = line.from + text.indexOf(checked);
92
- this._checked = checked !== '[ ]';
93
- view.dispatch({
94
- changes: { from: pos + 1, to: pos + 2, insert: this._checked ? ' ' : 'x' },
95
- });
96
-
97
- event.preventDefault();
98
- }
99
- };
100
- }
101
-
102
- const span = document.createElement('span');
103
- span.className = 'cm-task';
104
- span.appendChild(input);
105
- return span;
106
- }
107
-
108
- override ignoreEvent(): boolean {
109
- return false;
110
- }
111
- }
112
-
113
- class TextWidget extends WidgetType {
114
- constructor(
115
- private readonly text: string,
116
- private readonly className?: string,
117
- ) {
118
- super();
119
- }
120
-
121
- override toDOM(): HTMLSpanElement {
122
- const el = document.createElement('span');
123
- if (this.className) {
124
- el.className = this.className;
125
- }
126
- el.innerText = this.text;
127
- return el;
128
- }
129
- }
130
-
131
- const hide = Decoration.replace({});
132
- const blockQuote = Decoration.line({ class: 'cm-blockquote' });
133
- const fencedCodeLine = Decoration.line({ class: 'cm-code cm-codeblock-line' });
134
- const fencedCodeLineFirst = Decoration.line({ class: mx('cm-code cm-codeblock-line', 'cm-codeblock-start') });
135
- const fencedCodeLineLast = Decoration.line({ class: mx('cm-code cm-codeblock-line', 'cm-codeblock-end') });
136
- const commentBlockLine = fencedCodeLine;
137
- const commentBlockLineFirst = fencedCodeLineFirst;
138
- const commentBlockLineLast = fencedCodeLineLast;
139
- const horizontalRule = Decoration.replace({ widget: new HorizontalRuleWidget() });
140
- const checkedTask = Decoration.replace({ widget: new CheckboxWidget(true) });
141
- const uncheckedTask = Decoration.replace({ widget: new CheckboxWidget(false) });
142
-
143
- /**
144
- * Checks if cursor is inside text.
145
- */
146
- const editingRange = (state: EditorState, range: { from: number; to: number }, focus: boolean) => {
147
- const {
148
- readOnly,
149
- selection: {
150
- main: { head },
151
- },
152
- } = state;
153
- return focus && !readOnly && head >= range.from && head <= range.to;
154
- };
155
-
156
- const autoHideTags = new Set([
157
- 'CodeMark',
158
- 'CodeInfo',
159
- 'EmphasisMark',
160
- 'StrikethroughMark',
161
- 'SubscriptMark',
162
- 'SuperscriptMark',
163
- ]);
164
-
165
- /**
166
- * Markdown list level.
167
- */
168
- type NumberingLevel = { type: string; from: number; to: number; level: number; number: number };
169
-
170
- const buildDecorations = (view: EditorView, options: DecorateOptions, focus: boolean) => {
171
- const deco = new RangeSetBuilder<Decoration>();
172
- const atomicDeco = new RangeSetBuilder<Decoration>();
173
- const { state } = view;
174
-
175
- // Header numbering.
176
- // TODO(burdon): Pre-parse headers to allow virtualization.
177
- const headerLevels: (NumberingLevel | null)[] = [];
178
- const getHeaderLevels = (node: SyntaxNodeRef, level: number): (NumberingLevel | null)[] => {
179
- invariant(level > 0);
180
- if (level > headerLevels.length) {
181
- const len = headerLevels.length;
182
- headerLevels.length = level;
183
- headerLevels.fill(null, len);
184
- headerLevels[level - 1] = { type: node.name, from: node.from, to: node.to, level, number: 0 };
185
- } else {
186
- headerLevels.splice(level);
187
- }
188
-
189
- return headerLevels.slice(0, level);
190
- };
191
-
192
- // List numbering and indentation.
193
- const listLevels: NumberingLevel[] = [];
194
- const enterList = (node: SyntaxNodeRef) => {
195
- listLevels.push({ type: node.name, from: node.from, to: node.to, level: listLevels.length, number: 0 });
196
- };
197
- const leaveList = () => {
198
- listLevels.pop();
199
- };
200
- const getCurrentListLevel = (): NumberingLevel => {
201
- invariant(listLevels.length);
202
- return listLevels[listLevels.length - 1];
203
- };
204
-
205
- // let count = 0;
206
- const enterNode = (node: SyntaxNodeRef) => {
207
- // console.log(`[${count++}]`, { node: node.name, from: node.from, to: node.to });
208
- switch (node.name) {
209
- // ATXHeading > HeaderMark > Paragraph
210
- // NOTE: Numbering requires processing the entire document since otherwise only the visible range will be
211
- // processed and the numbering will be incorrect.
212
- case 'ATXHeading1':
213
- case 'ATXHeading2':
214
- case 'ATXHeading3':
215
- case 'ATXHeading4':
216
- case 'ATXHeading5':
217
- case 'ATXHeading6': {
218
- const level = parseInt(node.name['ATXHeading'.length]) as HeadingLevel;
219
- const headers = getHeaderLevels(node, level);
220
- if (options.numberedHeadings?.from !== undefined) {
221
- const header = headers[level - 1];
222
- // TODO(burdon): Header will be missing if headers are out of order (e.g., ## header then # header).
223
- if (header) {
224
- header.number++;
225
- }
226
- }
227
-
228
- const editing = editingRange(state, node, focus);
229
- if (editing) {
230
- break;
231
- }
232
-
233
- const mark = node.node.firstChild!;
234
- if (mark?.name === 'HeaderMark') {
235
- const { from, to = 6 } = options.numberedHeadings ?? {};
236
- const text = view.state.sliceDoc(node.from, node.to);
237
- const len = text.match(/[#\s]+/)![0].length;
238
- if (!from || level < from || level > to) {
239
- atomicDeco.add(mark.from, mark.from + len, hide);
240
- } else {
241
- // TODO(burdon): Number format/style.
242
- const num =
243
- headers
244
- .slice(from - 1)
245
- .map((level) => level?.number ?? 0)
246
- .join('.') + ' ';
247
-
248
- if (num.length) {
249
- atomicDeco.add(
250
- mark.from,
251
- mark.from + len,
252
- Decoration.replace({
253
- widget: new TextWidget(num, theme.heading(level)),
254
- }),
255
- );
256
- }
257
- }
258
- }
259
-
260
- return false;
261
- }
262
-
263
- //
264
- // Lists.
265
- // [BulletList | OrderedList] > (ListItem > ListMark) > (Task > TaskMarker)?
266
- //
267
-
268
- case 'BulletList':
269
- case 'OrderedList': {
270
- enterList(node);
271
- break;
272
- }
273
-
274
- case 'ListItem': {
275
- const line = state.doc.lineAt(node.from);
276
-
277
- // Set indentation.
278
- const list = getCurrentListLevel();
279
- const width = list.type === 'OrderedList' ? orderedListIndentationWidth : bulletListIndentationWidth;
280
- const offset = (options?.listPaddingLeft ?? 0) + ((list.level ?? 0) + 1) * width;
281
- if (node.from === line.to - 1) {
282
- // Abort if only the hyphen is typed.
283
- return false;
284
- }
285
-
286
- // Add line decoration for the continuation indent.
287
- // TODO(burdon): Bug if indentation is more than one indentation unit (e.g., 4 spaces) from the previous line.
288
- deco.add(
289
- line.from,
290
- line.from,
291
- Decoration.line({
292
- class: 'cm-list-item',
293
- attributes: {
294
- style: `padding-left: ${offset}px; text-indent: -${width}px;`,
295
- },
296
- }),
297
- );
298
-
299
- break;
300
- }
301
-
302
- case 'ListMark': {
303
- const list = getCurrentListLevel();
304
-
305
- // Look-ahead for task marker.
306
- // NOTE: Requires space to exist (otherwise the text is parsed as the start of a link).
307
- const next = tree.resolve(node.to + 1, 1);
308
- if (next?.name === 'TaskMarker') {
309
- break;
310
- }
311
-
312
- // TODO(burdon): Option to make hierarchical; or a), i), etc.
313
- const label = list.type === 'OrderedList' ? `${++list.number}.` : Unicode.bulletSmall;
314
- const line = state.doc.lineAt(node.from);
315
- const to = state.doc.sliceString(node.to, node.to + 1) === ' ' ? node.to + 1 : node.to;
316
- atomicDeco.add(
317
- line.from,
318
- to,
319
- Decoration.replace({
320
- widget: new TextWidget(
321
- label,
322
- list.type === 'OrderedList' ? 'cm-list-mark cm-list-mark-ordered' : 'cm-list-mark cm-list-mark-bullet',
323
- ),
324
- }),
325
- );
326
- break;
327
- }
328
-
329
- case 'TaskMarker': {
330
- const checked = state.doc.sliceString(node.from + 1, node.to - 1) === 'x';
331
- // Check if the next character is a space and if so, include it in the replacement.
332
- const line = state.doc.lineAt(node.from);
333
- const to = state.doc.sliceString(node.to, node.to + 1) === ' ' ? node.to + 1 : node.to;
334
- atomicDeco.add(line.from, to, checked ? checkedTask : uncheckedTask);
335
- break;
336
- }
337
-
338
- //
339
- // Blockquote > QuoteMark > Paragraph
340
- //
341
-
342
- case 'Blockquote': {
343
- const editing = editingRange(state, node, focus);
344
- const quoteMark = node.node.getChild('QuoteMark');
345
- const paragraph = node.node.getChild('Paragraph');
346
- if (!editing && quoteMark && paragraph) {
347
- atomicDeco.add(quoteMark.from, paragraph.from, hide);
348
- }
349
-
350
- for (const block of view.viewportLineBlocks) {
351
- if (block.to < node.from) {
352
- continue;
353
- }
354
- if (block.from > node.to) {
355
- break;
356
- }
357
-
358
- deco.add(block.from, block.from, blockQuote);
359
- }
360
-
361
- break;
362
- }
363
-
364
- //
365
- // CommentBlock
366
- //
367
-
368
- case 'CommentBlock': {
369
- const editing = editingRange(state, node, focus);
370
- for (const block of view.viewportLineBlocks) {
371
- if (block.to < node.from) {
372
- continue;
373
- }
374
- if (block.from > node.to) {
375
- break;
376
- }
377
-
378
- const isFirst = block.from <= node.from;
379
- const isLast = block.to >= node.to && /^(\s>)*-->$/.test(state.doc.sliceString(block.from, block.to));
380
-
381
- deco.add(
382
- block.from,
383
- block.from,
384
- isFirst ? commentBlockLineFirst : isLast ? commentBlockLineLast : commentBlockLine,
385
- );
386
-
387
- if (!editing && (isFirst || isLast)) {
388
- atomicDeco.add(block.from, block.to, hide);
389
- }
390
- }
391
- break;
392
- }
393
-
394
- //
395
- // FencedCode > CodeMark > [CodeInfo] > CodeText > CodeMark
396
- //
397
-
398
- case 'FencedCode': {
399
- for (const block of view.viewportLineBlocks) {
400
- if (block.to < node.from) {
401
- continue;
402
- }
403
- if (block.from > node.to) {
404
- break;
405
- }
406
-
407
- const first = block.from <= node.from;
408
- const last = block.to >= node.to && /```$/.test(state.doc.sliceString(block.from, block.to));
409
- deco.add(block.from, block.from, first ? fencedCodeLineFirst : last ? fencedCodeLineLast : fencedCodeLine);
410
-
411
- const editing = editingRange(state, node, focus);
412
- if (!editing && (first || last)) {
413
- atomicDeco.add(block.from, block.to, hide);
414
- }
415
- }
416
- return false;
417
- }
418
-
419
- //
420
- // Link > [LinkMark, URL]
421
- //
422
-
423
- case 'Link': {
424
- const marks = node.node.getChildren('LinkMark');
425
- const urlNode = node.node.getChild('URL');
426
- const editing = editingRange(state, node, focus);
427
- if (urlNode && marks.length >= 2) {
428
- const url = state.sliceDoc(urlNode.from, urlNode.to);
429
- if (!editing) {
430
- atomicDeco.add(node.from, marks[0].to, hide);
431
- }
432
-
433
- deco.add(
434
- marks[0].to,
435
- marks[1].from,
436
- Decoration.mark({
437
- tagName: 'a',
438
- attributes: {
439
- class: 'cm-link',
440
- href: url,
441
- rel: 'noreferrer',
442
- target: '_blank',
443
- },
444
- }),
445
- );
446
- if (!editing) {
447
- atomicDeco.add(
448
- marks[1].from,
449
- node.to,
450
- options.renderLinkButton
451
- ? Decoration.replace({ widget: new LinkButton(url, options.renderLinkButton) })
452
- : hide,
453
- );
454
- }
455
- }
456
- break;
457
- }
458
-
459
- //
460
- // HR
461
- //
462
-
463
- case 'HorizontalRule': {
464
- if (!editingRange(state, node, focus)) {
465
- deco.add(node.from, node.to, horizontalRule);
466
- }
467
- break;
468
- }
469
-
470
- default: {
471
- if (autoHideTags.has(node.name)) {
472
- if (!editingRange(state, node.node.parent!, focus)) {
473
- atomicDeco.add(node.from, node.to, hide);
474
- }
475
- }
476
- }
477
- }
478
- };
479
-
480
- const leaveNode = (node: SyntaxNodeRef) => {
481
- switch (node.name) {
482
- case 'BulletList':
483
- case 'OrderedList': {
484
- leaveList();
485
- break;
486
- }
487
- }
488
- };
489
-
490
- const tree = syntaxTree(state);
491
- if (options.numberedHeadings?.from === undefined) {
492
- for (const { from, to } of view.visibleRanges) {
493
- tree.iterate({
494
- from,
495
- to,
496
- enter: wrapWithCatch(enterNode),
497
- leave: wrapWithCatch(leaveNode),
498
- });
499
- }
500
- } else {
501
- // NOTE: If line numbering then we must iterate from the start of document.
502
- tree.iterate({
503
- enter: wrapWithCatch(enterNode),
504
- leave: wrapWithCatch(leaveNode),
505
- });
506
- }
507
-
508
- return {
509
- deco: deco.finish(),
510
- atomicDeco: atomicDeco.finish(),
511
- };
512
- };
513
-
514
- const forceUpdate = StateEffect.define<null>();
515
-
516
- export interface DecorateOptions {
517
- /**
518
- * Prevents triggering decorations as the cursor moves through the document.
519
- */
520
- selectionChangeDelay?: number;
521
- numberedHeadings?: { from: number; to?: number };
522
- renderLinkButton?: RenderCallback<{ url: string }>;
523
- // TODO(burdon): Additional padding for each line.
524
- listPaddingLeft?: number;
525
- }
526
-
527
- export const decorateMarkdown = (options: DecorateOptions = {}) => {
528
- return [
529
- ViewPlugin.fromClass(
530
- class {
531
- deco: DecorationSet;
532
- atomicDeco: DecorationSet;
533
- pendingUpdate?: NodeJS.Timeout;
534
-
535
- constructor(view: EditorView) {
536
- ({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations(view, options, view.hasFocus));
537
- }
538
-
539
- update(update: ViewUpdate) {
540
- if (
541
- update.docChanged ||
542
- update.viewportChanged ||
543
- update.focusChanged ||
544
- update.transactions.some((tr) => tr.effects.some((effect) => effect.is(forceUpdate))) ||
545
- (update.selectionSet && !options.selectionChangeDelay)
546
- ) {
547
- ({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations(
548
- update.view,
549
- options,
550
- update.view.hasFocus,
551
- ));
552
-
553
- this.clearUpdate();
554
- } else if (update.selectionSet) {
555
- this.scheduleUpdate(update.view);
556
- }
557
- }
558
-
559
- // Defer update in case moving through the document.
560
- scheduleUpdate(view: EditorView) {
561
- this.clearUpdate();
562
- this.pendingUpdate = setTimeout(() => {
563
- view.dispatch({ effects: forceUpdate.of(null) });
564
- }, options.selectionChangeDelay);
565
- }
566
-
567
- clearUpdate() {
568
- if (this.pendingUpdate) {
569
- clearTimeout(this.pendingUpdate);
570
- this.pendingUpdate = undefined;
571
- }
572
- }
573
-
574
- destroy() {
575
- this.clearUpdate();
576
- }
577
- },
578
- {
579
- provide: (plugin) => [
580
- EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? Decoration.none),
581
- EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? Decoration.none),
582
- EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? Decoration.none),
583
- ],
584
- },
585
- ),
586
- image(),
587
- table(),
588
- adjustChanges(),
589
- formattingStyles,
590
- ];
591
- };