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