edytor 1.0.0-rc.2 → 1.0.0

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 (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -1,7 +1,8 @@
1
- import { isLonePress, takeKeys } from '../../events/onFocus.js';
1
+ import { pin } from '../../surface/overlay.js';
2
+ import { BandDrag, bandKey } from '../bands.svelte.js';
2
3
  import { bandOf, gapBefore } from './gaps.js';
3
4
  import { stacks } from './stacking.js';
4
- import { englishLabels } from '../../labels.js';
5
+ import { columnsEnglish, labelsOf } from '../../labels.js';
5
6
  /** The guide line's width (the hover guide's and the drag's). */
6
7
  export const GUIDE = 2;
7
8
  /** A column's weight: `data.width`, a positive number, else 1. */
@@ -24,7 +25,7 @@ export const weightOf = (data) => {
24
25
  * release writes the two columns' `data.width` weights, keeping their sum,
25
26
  * in one `edytor.transact` (two `setData` commands: one undo step), and
26
27
  * drops the preview in the same flush; Escape, a cancel or the view turning
27
- * readonly drops it alone, at once.
28
+ * readonly drops it alone, at once (`band`).
28
29
  * Neither column goes under `minWidth` × the layout's width, in the view
29
30
  * only (the document stores weights). Positions are read in the overlay's
30
31
  * measure, once per frame.
@@ -38,7 +39,6 @@ export const weightOf = (data) => {
38
39
  export class ColumnResize {
39
40
  edytor;
40
41
  minWidth;
41
- labels;
42
42
  /** The layout under the pointer. */
43
43
  hovered = $state(null);
44
44
  /** The layout whose band holds the focus. */
@@ -46,48 +46,45 @@ export class ColumnResize {
46
46
  /** A block drag is in progress: no strip takes the pointer. */
47
47
  dragging = $state(false);
48
48
  /** The measured strips of the hovered layout. */
49
- strips = $state([]);
50
- /** The strip being dragged. */
51
- drag = $state(null);
49
+ strips = $state.raw([]);
50
+ /** The strip's drag in progress (`band.drag`). */
51
+ band;
52
52
  /** The guide's layer-relative box while a strip drags. */
53
53
  guide = $state(null);
54
- /** Ends the drag in progress without a write (Escape, a cancel, the view turning readonly). */
55
- #cancel = null;
56
54
  /** The two dragged columns' weights at the pointer, by id, while a strip drags (view only). */
57
55
  preview = $state.raw(null);
58
- constructor(edytor, minWidth,
59
- /** The words the bands say (the plugin's `labels`). */
60
- labels = englishLabels.columns) {
56
+ constructor(edytor, minWidth) {
61
57
  this.edytor = edytor;
62
58
  this.minWidth = minWidth;
63
- this.labels = labels;
59
+ this.band = new BandDrag(edytor);
60
+ }
61
+ /** The words the bands say (the view's `columns` labels). */
62
+ get labels() {
63
+ return labelsOf(this.edytor, 'columns', columnsEnglish);
64
64
  }
65
65
  /** The view is readonly (reactive). */
66
66
  get readonly() {
67
67
  return this.edytor.readonly;
68
68
  }
69
- /** A text selection is in progress (`selection.dragging`): the strips take no pointer. */
70
- get selecting() {
71
- return this.drag === null && this.edytor.selection.dragging;
72
- }
73
69
  /**
74
70
  * The layout whose bands show: the one a strip drags, else the one under
75
- * the pointer, the one a band holds the focus of, the one holding the caret.
71
+ * the pointer, the one a band holds the focus of, the innermost one
72
+ * holding the selection's start (the keyboard's).
76
73
  */
77
- get layout() {
78
- return this.drag?.left.parent?.id ?? this.hovered ?? this.focused ?? this.caretLayout;
79
- }
80
- /** The innermost layout holding the selection's start (the keyboard's). */
81
- get caretLayout() {
82
- const { facade, selection } = this.edytor;
83
- for (let block = selection.state.startBlock; block && !block.isRoot; block = block.parent)
84
- if (block.id && facade.isLayout(block.id))
85
- return block.id;
74
+ get #layout() {
75
+ const { facade, selection, idToBlock } = this.edytor;
76
+ const layout = this.band.drag?.left.parent?.id ?? this.hovered ?? this.focused;
77
+ if (layout)
78
+ return layout;
79
+ const start = selection.projection.start?.block;
80
+ for (let at = start && idToBlock.get(start); at && !at.isRoot; at = at.parent)
81
+ if (at.id && facade.isLayout(at.id))
82
+ return at.id;
86
83
  return null;
87
84
  }
88
- /** Whether the strips show: for a layout of an editable view (`layout`), or while one drags. */
85
+ /** Whether the strips show: for a layout of an editable view, or while one drags. */
89
86
  get shown() {
90
- return this.drag !== null || (!this.edytor.readonly && !this.dragging && !!this.layout);
87
+ return this.band.drag !== null || (!this.edytor.readonly && !this.dragging && !!this.#layout);
91
88
  }
92
89
  /** A column's weight as shown: the drag's preview while a strip drags it, else its stored one. */
93
90
  weight = (id, data) => (id === undefined ? undefined : this.preview?.[id]) ?? weightOf(data);
@@ -95,12 +92,10 @@ export class ColumnResize {
95
92
  hover = (target) => {
96
93
  const { facade } = this.edytor;
97
94
  let layout = null;
98
- for (let node = target?.closest?.('[data-edytor-block="true"]'); node; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
95
+ for (let node = target?.closest?.('[data-edytor-block="true"]'); node && !layout; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
99
96
  const id = node.dataset.edytorId;
100
- if (id && facade.isLayout(id)) {
97
+ if (id && facade.isLayout(id))
101
98
  layout = id;
102
- break;
103
- }
104
99
  }
105
100
  if (layout === this.hovered)
106
101
  return;
@@ -109,23 +104,24 @@ export class ColumnResize {
109
104
  };
110
105
  /**
111
106
  * The pointer left for `to`: the bands stay while it is over the editor
112
- * or its overlay (a band, a column block's handle in the gap).
107
+ * or its overlay (a band, a column block's handle in the gap), or a strip drags.
113
108
  */
114
109
  leave = (to) => {
115
110
  const node = to instanceof Node ? to : null;
116
111
  const { edytor } = this;
117
- if (node && (edytor.overlay.layer?.contains(node) || edytor.node?.contains(node)))
112
+ if (this.band.drag ||
113
+ (node && (edytor.overlay.layer?.contains(node) || edytor.node?.contains(node))))
118
114
  return;
119
115
  this.hovered = null;
120
116
  };
121
117
  /** The overlay measure: the hovered layout's gaps, and the guide of a drag. */
122
118
  measure = (host, origin) => {
123
- const strips = this.shown ? this.gaps(origin) : [];
124
- const drag = this.drag;
119
+ const strips = this.shown ? this.#gaps(origin) : [];
120
+ const drag = this.band.drag;
125
121
  const guide = drag && {
126
122
  // Where the hover guide showed: the band's middle, never the gap's (it would jump onto the `+`).
127
123
  x: drag.start +
128
- this.widthAt(drag) +
124
+ this.#widthAt(drag) +
129
125
  bandOf({ left: 0, right: drag.gap }).width / 2 -
130
126
  GUIDE / 2 -
131
127
  origin.left,
@@ -134,21 +130,18 @@ export class ColumnResize {
134
130
  };
135
131
  return () => {
136
132
  // Layer-relative, as the rest of the overlay's chrome.
137
- Object.assign(host.style, { position: 'absolute', left: '0px', top: '0px' });
138
- if (!sameStrips(strips, this.strips))
133
+ pin(host);
134
+ if (JSON.stringify(strips) !== JSON.stringify(this.strips))
139
135
  this.strips = strips;
140
136
  this.guide = guide;
141
137
  };
142
138
  };
143
139
  /** The bands of the hovered layout (`bandOf` each gap): none when it stacks or shows fewer than two columns. */
144
- gaps(origin) {
145
- const id = this.layout;
140
+ #gaps(origin) {
141
+ const id = this.#layout;
146
142
  const layout = id ? this.edytor.idToBlock.get(id) : undefined;
147
- const node = layout?.node;
148
- if (!layout || !node?.isConnected)
149
- return [];
150
- const box = node.getBoundingClientRect();
151
- if (stacks(box.width))
143
+ const box = layout?.node?.isConnected ? layout.node.getBoundingClientRect() : undefined;
144
+ if (!layout || !box || stacks(box.width))
152
145
  return [];
153
146
  const shown = layout.children.filter((item) => (item.node?.getBoundingClientRect().width ?? 0) > 0);
154
147
  return shown.slice(1).flatMap((item, index) => {
@@ -156,11 +149,12 @@ export class ColumnResize {
156
149
  if (!gap)
157
150
  return [];
158
151
  const band = bandOf(gap);
159
- const [left, right] = [shown[index], item].map((column) => this.weight(column.id, column.data));
152
+ const before = shown[index];
153
+ const [left, right] = [before, item].map((column) => this.weight(column.id, column.data));
160
154
  return [
161
155
  {
162
156
  layout: layout.id,
163
- left: shown[index].id,
157
+ left: before.id,
164
158
  right: item.id,
165
159
  value: Math.round((100 * left) / (left + right)),
166
160
  x: band.left - origin.left,
@@ -172,98 +166,35 @@ export class ColumnResize {
172
166
  });
173
167
  }
174
168
  /** The left column's width at the drag's pointer, held to the minimum on both sides. */
175
- widthAt({ width, sum, min, from, at }) {
169
+ #widthAt({ width, sum, min, from, at }) {
176
170
  const lo = Math.min(min, width);
177
171
  const hi = Math.max(sum - min, width);
178
172
  return Math.min(hi, Math.max(lo, width + at - from));
179
173
  }
180
174
  /**
181
- * A `mousedown` on `strip`: no native selection starts there; the press
182
- * itself when no `pointerdown` came before it (`isLonePress`: WebKit's
183
- * first press after a block drag), which starts the drag as one would.
184
- */
185
- mousedown = (event, strip) => {
186
- event.preventDefault();
187
- if (isLonePress(this.edytor, event))
188
- this.start(event, strip);
189
- };
190
- /**
191
- * Press on `strip`: the drag starts, nothing is written until the release.
192
- * A `pointerdown` tracks its pointer (captured, on the document); a lone
193
- * `mousedown` (`mousedown`) tracks the mouse on the window, its
194
- * `mousemove`s and its `mouseup`, with the same preview, minimum, Escape
195
- * and release.
175
+ * Press on `strip` (`band.press`): the drag starts (`trackDrag`), nothing
176
+ * is written until the release.
196
177
  */
197
178
  start = (event, strip) => {
198
- const { edytor } = this;
199
- if (event.button !== 0 || edytor.readonly || this.drag)
200
- return;
201
- const pair = this.pair(strip, event.clientX);
179
+ const pair = this.band.drag ? null : this.#pair(strip, event.clientX);
202
180
  if (!pair)
203
181
  return;
204
- event.preventDefault();
205
- event.stopPropagation();
206
- const target = event.currentTarget;
207
- const pointer = event.type === 'pointerdown';
208
- if (pointer)
209
- target?.setPointerCapture?.(event.pointerId);
210
- this.drag = pair;
211
- const document = target?.ownerDocument ?? edytor.node?.ownerDocument;
212
- const tracked = pointer ? document : document?.defaultView;
213
- const [moves, ups] = pointer ? ['pointermove', 'pointerup'] : ['mousemove', 'mouseup'];
214
- const move = (moved) => {
215
- if (!this.drag)
216
- return;
217
- if (!edytor.dispatcher.permits())
218
- return end(moved);
219
- this.drag.at = moved.clientX;
220
- this.preview = this.weights(this.drag);
221
- edytor.overlay.invalidate();
222
- };
223
- const end = (ended) => {
224
- tracked?.removeEventListener(moves, move);
225
- tracked?.removeEventListener(ups, end);
226
- tracked?.removeEventListener('pointercancel', end);
227
- document?.removeEventListener('keydown', escape, true);
228
- const drag = this.drag;
229
- this.drag = null;
182
+ this.band.start(event, pair, (drag) => {
230
183
  this.guide = null;
231
- this.#cancel = null;
232
- edytor.overlay.invalidate();
233
- if (drag && ended.type === ups) {
234
- drag.at = ended.clientX;
235
- this.release(drag);
236
- // The editor holds the keys after the release (Notion: Mod+Z right after).
237
- takeKeys(edytor);
238
- }
184
+ if (drag)
185
+ this.#release(drag);
239
186
  // After the release's write: the stored weights replace the preview in one flush.
240
187
  this.preview = null;
241
- };
242
- const escape = (key) => {
243
- if (key.key !== 'Escape')
244
- return;
245
- key.preventDefault();
246
- key.stopPropagation();
247
- end(key);
248
- };
249
- this.#cancel = () => end(new Event('cancel'));
250
- tracked?.addEventListener(moves, move);
251
- tracked?.addEventListener(ups, end);
252
- if (pointer)
253
- tracked?.addEventListener('pointercancel', end);
254
- document?.addEventListener('keydown', escape, true);
255
- edytor.overlay.invalidate();
188
+ }, () => (this.preview = this.#weights(this.band.drag)));
256
189
  };
257
190
  /** `strip`'s two columns as they are now, measured, a drag from `from`; `null` when one is gone. */
258
- pair(strip, from) {
191
+ #pair(strip, from) {
259
192
  const left = this.edytor.idToBlock.get(strip.left);
260
193
  const right = this.edytor.idToBlock.get(strip.right);
261
- const layout = left?.parent;
262
- const [a, b, box] = [left, right, layout].map((block) => block?.node?.getBoundingClientRect());
194
+ const [a, b, box] = [left, right, left?.parent].map((block) => block?.node?.getBoundingClientRect());
263
195
  if (!left || !right || !a || !b || !box)
264
196
  return null;
265
197
  return {
266
- strip,
267
198
  left,
268
199
  right,
269
200
  from,
@@ -282,47 +213,31 @@ export class ColumnResize {
282
213
  * A key on a focused band: ArrowRight/ArrowLeft move the gap by 1% of the
283
214
  * layout's width (Shift: 10%), Home/End to the narrowest either column
284
215
  * may get (the drag's minimum); each press writes both weights, keeping
285
- * their sum, as one undo step (`release`). Every key there is the band's,
216
+ * their sum, as one undo step (`#release`). Every key there is the band's,
286
217
  * never the editor's; Escape gives the keys back to the editor.
287
218
  */
288
219
  key = (event, strip) => {
289
- const { edytor } = this;
290
- event.stopPropagation();
291
- if (event.key === 'Escape') {
292
- event.preventDefault();
293
- return takeKeys(edytor);
294
- }
295
- const step = { ArrowLeft: -1, ArrowRight: 1 }[event.key];
296
- const edge = { Home: -Infinity, End: Infinity }[event.key];
297
- if (step === undefined && edge === undefined)
298
- return;
299
- event.preventDefault();
300
- if (this.drag || !edytor.dispatcher.permits())
301
- return;
302
- const pair = this.pair(strip, 0);
220
+ const step = bandKey(this.edytor, this.band, event, {
221
+ ArrowLeft: -1,
222
+ ArrowRight: 1,
223
+ Home: -Infinity,
224
+ End: Infinity
225
+ });
226
+ const pair = step && this.#pair(strip, 0);
303
227
  if (!pair)
304
228
  return;
305
- pair.at = edge ?? step * (event.shiftKey ? 0.1 : 0.01) * pair.span;
306
- this.release(pair);
307
- edytor.overlay.invalidate();
229
+ pair.at = Number.isFinite(step) ? step * (event.shiftKey ? 0.1 : 0.01) * pair.span : step;
230
+ this.#release(pair);
231
+ this.edytor.overlay.invalidate();
308
232
  };
309
233
  /** A band took (`true`) or lost the focus: its layout's bands stay while it holds it. */
310
234
  focus = (strip, focused) => {
311
235
  this.focused = focused ? strip.layout : null;
312
236
  this.edytor.overlay.invalidate();
313
237
  };
314
- /**
315
- * The view turned readonly (or the document read-only): a drag in progress
316
- * ends at once, its preview dropped, nothing written (its release would be
317
- * refused anyway). Called by the strips' component when `readonly` flips.
318
- */
319
- lock = () => {
320
- if (this.drag && !this.edytor.dispatcher.permits())
321
- this.#cancel?.();
322
- };
323
238
  /** The two columns' weights at the drag's pointer, keeping their stored sum; `null` before it moved. */
324
- weights(drag) {
325
- const width = this.widthAt(drag);
239
+ #weights(drag) {
240
+ const width = this.#widthAt(drag);
326
241
  const { left, right, sum } = drag;
327
242
  if (Math.abs(width - drag.width) < 0.5 || sum <= 0)
328
243
  return null;
@@ -331,23 +246,14 @@ export class ColumnResize {
331
246
  return { [left.id]: weight, [right.id]: pair - weight };
332
247
  }
333
248
  /** The release: both weights, keeping their sum, one undo step; nothing when nothing moved. */
334
- release(drag) {
335
- const weights = this.weights(drag);
249
+ #release(drag) {
250
+ const weights = this.#weights(drag);
336
251
  const { left, right } = drag;
337
252
  if (!weights || !left.isInTree || !right.isInTree)
338
253
  return;
339
254
  this.edytor.transact(() => {
340
- left.setData({ ...left.data, width: weights[left.id] });
341
- right.setData({ ...right.data, width: weights[right.id] });
255
+ for (const column of [left, right])
256
+ this.edytor.patchData(column.id, [{ path: ['width'], value: weights[column.id] }]);
342
257
  });
343
258
  }
344
259
  }
345
- const sameStrips = (a, b) => a.length === b.length &&
346
- a.every((strip, index) => strip.layout === b[index].layout &&
347
- strip.value === b[index].value &&
348
- strip.left === b[index].left &&
349
- strip.right === b[index].right &&
350
- strip.x === b[index].x &&
351
- strip.top === b[index].top &&
352
- strip.width === b[index].width &&
353
- strip.height === b[index].height);
@@ -2,7 +2,6 @@ import type { Edytor } from '../../edytor.svelte.js';
2
2
  import type { DocAnchor } from '../../crdt/index.js';
3
3
  import { type CommentChange, type CommentRun, type CommentThread } from '../../crdt/protocols/comments.js';
4
4
  import type { CommentsClient } from '../../collaboration/comments/client.js';
5
- import { type CommentsLabels } from '../../labels.js';
6
5
  /** Who a comment's author is, as the sidebar shows them. */
7
6
  export type CommentUser = {
8
7
  id: string;
@@ -40,7 +39,6 @@ export type CommentsControllerOptions = {
40
39
  user: CommentUser;
41
40
  users?: (id: string) => Omit<CommentUser, 'id'> | undefined;
42
41
  onComment?: (change: CommentChange, notice: CommentNotice) => void;
43
- labels?: CommentsLabels;
44
42
  };
45
43
  /**
46
44
  * The comments plugin's state and actions (`plugins/comments`): the
@@ -65,7 +63,6 @@ export declare class CommentsController {
65
63
  error: string | null;
66
64
  readonly client: CommentsClient;
67
65
  readonly user: CommentUser;
68
- readonly labels: CommentsLabels;
69
66
  constructor(edytor: Edytor, options: CommentsControllerOptions);
70
67
  /** Every thread's anchor runs, in document order (maintained per commit). */
71
68
  readonly anchors: Map<string, CommentRun[]>;
@@ -81,7 +78,7 @@ export declare class CommentsController {
81
78
  get canComment(): boolean;
82
79
  /** One thread, by id. */
83
80
  thread(id: string): PlacedThread | undefined;
84
- /** A user as the sidebar shows them: their name, avatar and color. */
81
+ /** A user as the sidebar shows them: their name (else their id), avatar and color. */
85
82
  userOf: (id: string) => CommentUser;
86
83
  /** Whether the current user may delete `comment` of `thread` (its author). */
87
84
  mayDelete: (thread: CommentThread, comment: {
@@ -1,9 +1,9 @@
1
1
  import { selectedTextSpans } from '../../selection/visibility.js';
2
2
  import { Text } from '../../text/text.svelte.js';
3
- import { reveal } from '../../selection/replaceSelection.js';
3
+ import { showText } from '../planned.js';
4
4
  import { COMMENT_MARK, blockCommentRuns, commentId, joinAnchors } from '../../crdt/protocols/comments.js';
5
5
  import { CommentThreads } from '../../collaboration/comments/threads.js';
6
- import { englishLabels } from '../../labels.js';
6
+ import { takeKeys } from '../../events/onFocus.js';
7
7
  const avatarColors = ['#e16259', '#d9730d', '#cb912f', '#448361', '#337ea9', '#9065b0', '#c14c8a'];
8
8
  /**
9
9
  * The comments plugin's state and actions (`plugins/comments`): the
@@ -33,13 +33,11 @@ export class CommentsController {
33
33
  #off = [];
34
34
  client;
35
35
  user;
36
- labels;
37
36
  constructor(edytor, options) {
38
37
  this.edytor = edytor;
39
38
  this.options = options;
40
39
  this.client = options.client;
41
40
  this.user = options.user;
42
- this.labels = options.labels ?? englishLabels.comments;
43
41
  }
44
42
  /**
45
43
  * The blocks holding an anchor, and their runs by thread: read once at
@@ -102,10 +100,10 @@ export class CommentsController {
102
100
  thread(id) {
103
101
  return this.threads.find((thread) => thread.id === id);
104
102
  }
105
- /** A user as the sidebar shows them: their name, avatar and color. */
103
+ /** A user as the sidebar shows them: their name (else their id), avatar and color. */
106
104
  userOf = (id) => {
107
105
  const known = id === this.user.id ? this.user : { id, ...this.options.users?.(id) };
108
- const name = known.name ?? (id === this.user.id ? this.labels.you : id);
106
+ const name = known.name ?? id;
109
107
  let hash = 0;
110
108
  for (const char of id)
111
109
  hash = (hash * 31 + char.charCodeAt(0)) | 0;
@@ -133,7 +131,7 @@ export class CommentsController {
133
131
  const detach = client.attach?.({
134
132
  order: () => edytor.facade.order(),
135
133
  contentItems: (id) => edytor.facade.contentItems(id),
136
- unsetMark: (block, offset, length, mark) => edytor.facade.unsetMark(block, offset, length, mark),
134
+ formatRange: (block, offset, length, marks) => edytor.facade.formatRange(block, offset, length, marks),
137
135
  // A store's removal is no step of this view's history.
138
136
  transact: (fn) => (edytor.doc._transaction ? fn() : edytor.dispatcher.outside(() => fn()))
139
137
  });
@@ -203,7 +201,9 @@ export class CommentsController {
203
201
  if (!this.canComment)
204
202
  return false;
205
203
  const { facade, selection } = edytor;
206
- const { isCollapsed, startBlock } = selection.state;
204
+ const { startText } = selection.textRange();
205
+ const { isCollapsed } = selection.projection;
206
+ const startBlock = startText?.parent;
207
207
  const spans = isCollapsed
208
208
  ? (startBlock?.content ?? []).flatMap((part) => part instanceof Text && part.length > 0
209
209
  ? [{ text: part, start: 0, end: part.length }]
@@ -273,17 +273,13 @@ export class CommentsController {
273
273
  };
274
274
  /** The one write of a thread's anchor: its mark over `runs`, one command. */
275
275
  #anchor = (thread, runs) => {
276
- const { facade, dispatcher, idToBlock } = this.edytor;
276
+ const { facade } = this.edytor;
277
277
  if (runs.length === 0)
278
278
  return 'noop';
279
279
  const mark = `${COMMENT_MARK}:${thread}`;
280
280
  const prepare = (payload) => facade.compose(...payload.runs.map(({ block, offset, length }) => facade.prepare.formatRange(block, offset, length, { [mark]: { id: payload.thread } })));
281
- const block = idToBlock.get(runs[0].block) ?? this.edytor.root;
282
- dispatcher.dispatch('addComment', { thread, runs }, { block }, (payload, plan = prepare(payload)) => {
283
- if ('writes' in plan)
284
- facade.apply(plan);
285
- }, prepare);
286
- return dispatcher.last?.operation === 'addComment' ? dispatcher.last.status : 'refused';
281
+ const block = this.edytor.idToBlock.get(runs[0].block);
282
+ return this.edytor.dispatcher.plan('addComment', { thread, runs }, prepare, block).status;
287
283
  };
288
284
  // ── A thread's actions ───────────────────────────────────────────────
289
285
  reply = async (thread, body) => body.trim() ? (await this.#send({ op: 'reply', thread, body })) !== null : false;
@@ -301,14 +297,8 @@ export class CommentsController {
301
297
  focus = (thread) => {
302
298
  this.active = thread;
303
299
  const run = thread ? this.anchors.get(thread)?.[0] : undefined;
304
- const block = run && this.edytor.idToBlock.get(run.block);
305
- if (block) {
306
- reveal(block);
307
- block.textAtOffset(run.offset)?.text.node?.scrollIntoView?.({
308
- block: 'nearest',
309
- inline: 'nearest'
310
- });
311
- }
300
+ if (run)
301
+ showText(this.edytor, run.block, run.offset);
312
302
  this.edytor.overlay.invalidate();
313
303
  };
314
304
  /**
@@ -344,8 +334,7 @@ export class CommentsController {
344
334
  ].join('');
345
335
  });
346
336
  #refocus = () => {
347
- this.edytor.expectInternalFocus();
348
- this.edytor.node?.focus({ preventScroll: true });
337
+ takeKeys(this.edytor);
349
338
  this.edytor.overlay.invalidate();
350
339
  };
351
340
  }