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
@@ -5,7 +5,6 @@
5
5
  * and undoing that restore. The stores themselves are `../history.ts`.
6
6
  */
7
7
  import { Y } from '../../crdt/engine.js';
8
- import * as E from '../../crdt/protocol.js';
9
8
  import { gunzip, packed } from '../../crdt/storage.js';
10
9
  import { asEngineDoc, collectable, collectNow, collects, engineOps, stepsOf } from '../../crdt/structs.js';
11
10
  import { PURGE_ORIGIN, RESTORE_ORIGIN, noTimers } from './shared.js';
@@ -21,9 +20,9 @@ export class RoomHistory {
21
20
  /** Who the room writes for while a restore or its undo runs (the slot's editor). */
22
21
  writer = null;
23
22
  /** The last restore's step (`room.history.undo`), read from the `restore` table at load. */
24
- restoreStep = null;
23
+ #restoreStep = null;
25
24
  /** The history recording restores (`RESTORE_ORIGIN`), on the live facade. */
26
- restoreManager = null;
25
+ #restoreManager = null;
27
26
  /** The version writes in flight (`historyWritten()`). */
28
27
  writing = Promise.resolve();
29
28
  _config;
@@ -94,24 +93,24 @@ export class RoomHistory {
94
93
  const room = this.room;
95
94
  if ((room.scheduler.due('history') ?? Infinity) > room.clock())
96
95
  return;
97
- const captured = this.captureSlot();
96
+ const captured = this.#captureSlot();
98
97
  if (captured === null)
99
98
  return;
100
- const job = this.putSlot(captured);
99
+ const job = this.#putSlot(captured);
101
100
  this.writing = Promise.all([this.writing, job]);
102
101
  room.ctx.waitUntil?.(job);
103
102
  }
104
103
  /** Close the open slot: capture it now, write it (the alarm, a start past its end). */
105
104
  async closeSlot() {
106
- const captured = this.captureSlot();
105
+ const captured = this.#captureSlot();
107
106
  if (captured !== null)
108
- await this.putSlot(captured);
107
+ await this.#putSlot(captured);
109
108
  }
110
109
  /**
111
110
  * The open slot's version, read now (synchronous: nothing writes
112
111
  * between the read and the slot's close), and the slot closed.
113
112
  */
114
- captureSlot() {
113
+ #captureSlot() {
115
114
  const room = this.room;
116
115
  const { scheduler } = room;
117
116
  const end = scheduler.due('history');
@@ -125,7 +124,7 @@ export class RoomHistory {
125
124
  if (room.live === null) {
126
125
  // No document to read (its rows unreadable, or refused): that slot is skipped.
127
126
  scheduler.unschedule('history');
128
- this.skipVersion({
127
+ this.#skipVersion({
129
128
  key: historyKey(this.room.roomId, slotAt(end - 1, config.timeZone)),
130
129
  error: 'room unavailable'
131
130
  });
@@ -144,20 +143,20 @@ export class RoomHistory {
144
143
  this.slotEditors.clear();
145
144
  scheduler.unschedule('history');
146
145
  if (key === null) {
147
- this.skipVersion({ room: this.room.roomId, reason: 'key longer than 512 bytes' });
146
+ this.#skipVersion({ room: this.room.roomId, reason: 'key longer than 512 bytes' });
148
147
  return null;
149
148
  }
150
149
  return { key, raw, blocks, editors, at: room.clock() };
151
150
  });
152
151
  }
153
152
  /** Write a captured version (`room.history.value`); a failure is noted `history` and the slot skipped. */
154
- async putSlot(version) {
153
+ async #putSlot(version) {
155
154
  const room = this.room;
156
155
  const config = this.config;
157
156
  try {
158
157
  const bytes = await packed(version.raw);
159
158
  if (bytes.length > config.maxValueBytes) {
160
- return this.skipVersion({
159
+ return this.#skipVersion({
161
160
  key: version.key,
162
161
  bytes: bytes.length,
163
162
  limit: config.maxValueBytes
@@ -184,15 +183,15 @@ export class RoomHistory {
184
183
  });
185
184
  }
186
185
  catch (error) {
187
- this.skipVersion({ key: version.key, error: String(error) });
186
+ this.#skipVersion({ key: version.key, error: String(error) });
188
187
  }
189
188
  }
190
- skipVersion(detail) {
189
+ #skipVersion(detail) {
191
190
  this.room.counters.history.skipped++;
192
191
  this.room.note({ reason: 'history', detail });
193
192
  }
194
193
  /** The history settings, or a throw: the room keeps no history. */
195
- requireHistory() {
194
+ #requireHistory() {
196
195
  const config = this.config;
197
196
  if (config === null)
198
197
  throw new Error('this room keeps no history (the `history` option)');
@@ -205,10 +204,10 @@ export class RoomHistory {
205
204
  // ── Versions ─────────────────────────────────────────────────────────
206
205
  /** The room's versions, newest first (`AttachedDocument.listHistory`). */
207
206
  async list() {
208
- const config = this.requireHistory();
207
+ const config = this.#requireHistory();
209
208
  const now = this.room.clock();
210
209
  const out = [];
211
- for await (const { key, expiresAt, metadata } of this.storedVersions(config.store)) {
210
+ for await (const { key, expiresAt, metadata } of this.#storedVersions(config.store)) {
212
211
  // Past its expiry it is gone, whether or not the store deleted it yet.
213
212
  if (expiresAt !== null && expiresAt <= now)
214
213
  continue;
@@ -219,7 +218,7 @@ export class RoomHistory {
219
218
  return out.sort((a, b) => (a.key < b.key ? 1 : a.key > b.key ? -1 : 0));
220
219
  }
221
220
  /** Every version key the store holds under this room's prefix, page by page. */
222
- async *storedVersions(store) {
221
+ async *#storedVersions(store) {
223
222
  const prefix = historyPrefix(this.room.roomId);
224
223
  let cursor;
225
224
  do {
@@ -244,7 +243,7 @@ export class RoomHistory {
244
243
  let next = Infinity;
245
244
  try {
246
245
  const expired = [];
247
- for await (const { key, expiresAt } of this.storedVersions(config.store)) {
246
+ for await (const { key, expiresAt } of this.#storedVersions(config.store)) {
248
247
  if (expiresAt === null || parseHistoryKey(this.room.roomId, key) === null)
249
248
  continue;
250
249
  if (expiresAt <= now)
@@ -267,7 +266,7 @@ export class RoomHistory {
267
266
  /** Version `key` as JSON (`AttachedDocument.readHistory`). */
268
267
  async read(key) {
269
268
  const room = this.room;
270
- const config = this.requireHistory();
269
+ const config = this.#requireHistory();
271
270
  if (parseHistoryKey(this.room.roomId, key) === null)
272
271
  return null;
273
272
  const found = await config.store.get(key);
@@ -275,17 +274,7 @@ export class RoomHistory {
275
274
  return null;
276
275
  const bytes = await gunzip(found.value);
277
276
  return noTimers(() => {
278
- let doc;
279
- try {
280
- doc = admit([{ v2: bytes }], `room ${room.ctx.id} version ${key}`, () => null);
281
- }
282
- catch (error) {
283
- // A version written by generation 4 reads through its JSON (`room.generation.convert`).
284
- const problem = error.problem;
285
- if (problem?.kind !== 'unsupported' || problem.version !== E.PREVIOUS_SCHEMA)
286
- throw error;
287
- return crdt.generations.previousJSON([{ v2: bytes }], (d) => room.facadeOf(d));
288
- }
277
+ const doc = admit(bytes, `room ${room.ctx.id} version ${key}`, () => null);
289
278
  const facade = room.facadeOf(doc);
290
279
  try {
291
280
  return facade.toJSON();
@@ -299,7 +288,7 @@ export class RoomHistory {
299
288
  // ── Restores (`room.history.restore`, `room.history.undo`) ───────────
300
289
  /** The last restore's deleted content, kept for its undo (`prepareRoomDoc`). */
301
290
  get restoreKeep() {
302
- return this.restoreStep?.deletes ?? null;
291
+ return this.#restoreStep?.deletes ?? null;
303
292
  }
304
293
  /** Restore version `key` as a forward edit (`AttachedDocument.restoreHistory`). */
305
294
  async restore(key, options = {}) {
@@ -315,9 +304,9 @@ export class RoomHistory {
315
304
  room.storage.heal();
316
305
  const doc = room.requireDoc();
317
306
  this.closeSlotIfPast();
318
- const history = this.restoreHistoryOf();
307
+ const history = this.#restoreHistoryOf();
319
308
  // One level: the previous restore's step goes.
320
- this.dropRestore();
309
+ this.#dropRestore();
321
310
  this.writer = options.user ?? null;
322
311
  let report;
323
312
  room.transacting = true;
@@ -346,7 +335,7 @@ export class RoomHistory {
346
335
  deletes: step.deletes
347
336
  };
348
337
  room.sql.exec(`INSERT OR REPLACE INTO ${room.tables.restore} (id, key, user, at, inserts, deletes) VALUES (0, ?, ?, ?, ?, ?)`, kept.key, kept.user, kept.at, deletesUpdate(kept.inserts), deletesUpdate(kept.deletes));
349
- this.restoreStep = kept;
338
+ this.#restoreStep = kept;
350
339
  room.log({ edytor: 'restore', key, user: kept.user, undo: false });
351
340
  room.storage.compactIfDue();
352
341
  return { status: 'applied', key, ...report };
@@ -362,10 +351,10 @@ export class RoomHistory {
362
351
  }
363
352
  room.storage.heal();
364
353
  room.requireDoc();
365
- const step = this.restoreStep;
354
+ const step = this.#restoreStep;
366
355
  if (step === null)
367
356
  return { status: 'noop' };
368
- const history = this.restoreHistoryOf();
357
+ const history = this.#restoreHistoryOf();
369
358
  // A woken room rebuilds the step from its table.
370
359
  if (history.undoStack.length === 0) {
371
360
  stepsOf(history.undoStack).push({
@@ -390,15 +379,15 @@ export class RoomHistory {
390
379
  room.storage.heal();
391
380
  throw error;
392
381
  }
393
- this.dropRestore();
382
+ this.#dropRestore();
394
383
  room.log({ edytor: 'restore', key: step.key, user: options.user ?? null, undo: true });
395
384
  room.storage.compactIfDue();
396
385
  return { status: undone ? 'applied' : 'noop' };
397
386
  });
398
387
  }
399
388
  /** The history recording restores, on the live facade (`RESTORE_ORIGIN` only, one step each). */
400
- restoreHistoryOf() {
401
- return (this.restoreManager ??= this.room.facade.createUndoManager({
389
+ #restoreHistoryOf() {
390
+ return (this.#restoreManager ??= this.room.facade.createUndoManager({
402
391
  captureTimeout: 0,
403
392
  trackedOrigins: new Set([RESTORE_ORIGIN])
404
393
  }));
@@ -408,7 +397,7 @@ export class RoomHistory {
408
397
  const row = this.room.sql
409
398
  .exec(`SELECT key, user, at, inserts, deletes FROM ${this.room.tables.restore} WHERE id = 0`)
410
399
  .toArray()[0];
411
- this.restoreStep =
400
+ this.#restoreStep =
412
401
  row === undefined
413
402
  ? null
414
403
  : {
@@ -419,38 +408,34 @@ export class RoomHistory {
419
408
  deletes: Y.decodeUpdate(new Uint8Array(row.deletes)).ds
420
409
  };
421
410
  }
422
- /** Forget the last restore's step (its table was emptied: a conversion). */
423
- clearRestore() {
424
- this.restoreStep = null;
425
- }
426
411
  /** Forget the restore's step and the open slot's editors (a reset dropped their tables). */
427
412
  forget() {
428
- this.restoreStep = null;
413
+ this.#restoreStep = null;
429
414
  this.slotEditors.clear();
430
415
  }
431
416
  /** The live document was replaced: the restore history recorded the old one. */
432
417
  detach() {
433
- this.restoreManager = null;
418
+ this.#restoreManager = null;
434
419
  }
435
420
  /** A restore past the purge horizon `at` can no longer be undone. */
436
421
  expireRestore(at) {
437
- if (this.restoreStep !== null && this.restoreStep.at <= at)
438
- this.dropRestore();
422
+ if (this.#restoreStep !== null && this.#restoreStep.at <= at)
423
+ this.#dropRestore();
439
424
  }
440
425
  /**
441
426
  * Forget the last restore's step: its table row goes, then what it kept
442
427
  * is released and collected (the next compaction stores it collected).
443
428
  */
444
- dropRestore() {
429
+ #dropRestore() {
445
430
  const room = this.room;
446
- const step = this.restoreStep;
431
+ const step = this.#restoreStep;
447
432
  if (step === null)
448
433
  return;
449
- this.restoreStep = null;
434
+ this.#restoreStep = null;
450
435
  room.sql.exec(`DELETE FROM ${room.tables.restore}`);
451
- const history = this.restoreManager;
436
+ const history = this.#restoreManager;
452
437
  if (history !== null)
453
- room.facade.releaseHistory(history);
438
+ history.clear();
454
439
  const doc = room.live;
455
440
  if (doc === null)
456
441
  return;
@@ -1,15 +1,13 @@
1
1
  import { type CommitResult, type ExportedBlocks, type ImportReceipt, type ImportRequest, type LateEditBatch } from '../move.js';
2
2
  import { type RoomContext } from './context.js';
3
3
  export declare class RoomMoves {
4
+ #private;
4
5
  private readonly room;
5
6
  /** The blocks moved out and watched for late edits, by id → their move (`null`: not read yet). */
6
7
  private watched;
7
8
  constructor(room: RoomContext);
8
9
  /** Forget the watched blocks (a reset dropped the moves table). */
9
10
  forget(): void;
10
- private ensureMoves;
11
- /** One move's row. */
12
- private moveRow;
13
11
  /** Days a moved-out block is watched for late edits: the purge horizon, else {@link DEFAULT_MOVE_GRACE_DAYS}. */
14
12
  private get graceMs();
15
13
  /** Export blocks `ids` for a move (`AttachedDocument.exportBlocks`). */
@@ -35,12 +33,6 @@ export declare class RoomMoves {
35
33
  applied: number;
36
34
  skipped: string[];
37
35
  };
38
- /** One block's late edit, merged into what it holds (inside a room transaction). */
39
- private mergeLateEdit;
40
- /** The registry entries carrying a `del.<marker>` mark written between clocks `c0` and `c1`. */
41
- private markedBetween;
42
- /** The moved-out blocks watched for late edits (`room.move.late`), by id → their move. */
43
- private watchedBlocks;
44
36
  /** A transaction that changed a watched block marks its move dirty (inside the `update` emit: no doc write). */
45
37
  noteLateEdits(tr: {
46
38
  changed?: Map<unknown, Set<string | null>>;
@@ -53,8 +45,4 @@ export declare class RoomMoves {
53
45
  * grace period. A forward that fails runs again a minute later.
54
46
  */
55
47
  forwardMoves(): Promise<void>;
56
- /** The document's blocks as they show without the deletes of `moves`' commits: a copy, read once. */
57
- private withoutMoveDeletes;
58
- /** One dirty move's changes since its last batch, as a new batch of late edits (or a report). */
59
- private collectLateEdits;
60
48
  }
@@ -7,9 +7,10 @@
7
7
  import { Y } from '../../crdt/engine.js';
8
8
  import { DEL_PREFIX, REGISTRY_KEY } from '../../crdt/schema.js';
9
9
  import { asEngineDoc, attrItems } from '../../crdt/structs.js';
10
- import { toBlockSpec } from '../../utils/json.js';
10
+ import { jsonContentToItems, toBlockSpec } from '../../utils/json.js';
11
+ import { rewriteContent, unitsOf } from '../../crdt/restore.js';
11
12
  import { noTimers } from './shared.js';
12
- import { DEFAULT_MOVE_GRACE_DAYS, contentOf, flattenMoved, hunk, mergeData, subtreesOf, threeWay, unitsOf } from '../move.js';
13
+ import { DEFAULT_MOVE_GRACE_DAYS, flattenMoved, mergeData, subtreesOf, threeWay } from '../move.js';
13
14
  import { DAY, crdt } from './context.js';
14
15
  /** A forward of late edits that failed runs again this much later (`room.move.late`). */
15
16
  const FORWARD_RETRY = 60_000;
@@ -24,7 +25,7 @@ export class RoomMoves {
24
25
  forget() {
25
26
  this.watched = null;
26
27
  }
27
- ensureMoves() {
28
+ #ensureMoves() {
28
29
  const { sql, tables } = this.room;
29
30
  sql.exec(`CREATE TABLE IF NOT EXISTS ${tables.moves} (
30
31
  id TEXT PRIMARY KEY,
@@ -45,8 +46,8 @@ export class RoomMoves {
45
46
  sql.exec(`CREATE TABLE IF NOT EXISTS ${tables.late} (move TEXT NOT NULL, seq INTEGER NOT NULL, edits TEXT NOT NULL, PRIMARY KEY (move, seq))`);
46
47
  }
47
48
  /** One move's row. */
48
- moveRow(id, role) {
49
- this.ensureMoves();
49
+ #moveRow(id, role) {
50
+ this.#ensureMoves();
50
51
  return this.room.sql
51
52
  .exec(`SELECT * FROM ${this.room.tables.moves} WHERE id = ? AND role = ?`, id, role)
52
53
  .toArray()[0];
@@ -65,7 +66,7 @@ export class RoomMoves {
65
66
  if (blocks.length === 0)
66
67
  throw new Error('exportBlocks: none of these blocks shows');
67
68
  const moveId = crypto.randomUUID();
68
- this.ensureMoves();
69
+ this.#ensureMoves();
69
70
  room.sql.exec(`INSERT INTO ${room.tables.moves} (id, role, state, roots, sent, at) VALUES (?, 'out', 'exported', ?, ?, ?)`, moveId, JSON.stringify(blocks.map((b) => b.id)), JSON.stringify(blocks), room.clock());
70
71
  return { moveId, blocks };
71
72
  });
@@ -74,7 +75,7 @@ export class RoomMoves {
74
75
  importBlocks(request) {
75
76
  const room = this.room;
76
77
  return noTimers(() => {
77
- const known = this.moveRow(request.moveId, 'in');
78
+ const known = this.#moveRow(request.moveId, 'in');
78
79
  if (known !== undefined)
79
80
  return { moveId: request.moveId, status: 'applied', ids: JSON.parse(known.map) };
80
81
  const facade = room.facade;
@@ -118,7 +119,7 @@ export class RoomMoves {
118
119
  commitMove(moveId, receipt) {
119
120
  const room = this.room;
120
121
  return noTimers(() => {
121
- const row = this.moveRow(moveId, 'out');
122
+ const row = this.#moveRow(moveId, 'out');
122
123
  if (row === undefined)
123
124
  return { moveId, status: 'refused', reason: 'unknown move' };
124
125
  if (row.state === 'moved' || row.state === 'done')
@@ -135,7 +136,7 @@ export class RoomMoves {
135
136
  f.apply(f.prepare.deleteBlock(id, { keepChildren: false }));
136
137
  });
137
138
  const c1 = doc.store.getClock(marker);
138
- const watched = this.markedBetween(room.requireDoc(), marker, c0, c1);
139
+ const watched = this.#markedBetween(room.requireDoc(), marker, c0, c1);
139
140
  room.sql.exec(`UPDATE ${room.tables.moves} SET state = 'moved', peer = ?, map = ?, marker = ?, c0 = ?, c1 = ?, watched = ?, at = ?, dirty = 1 WHERE id = ? AND role = 'out'`, receipt.to, JSON.stringify(receipt.ids), marker, c0, c1, JSON.stringify(watched), room.clock(), moveId);
140
141
  this.watched = null;
141
142
  room.scheduler.schedule('forward', room.clock(), 'earlier');
@@ -145,8 +146,8 @@ export class RoomMoves {
145
146
  }
146
147
  /** Drop an export that was not committed (`AttachedDocument.abortMove`). */
147
148
  abortMove(moveId) {
148
- this.ensureMoves();
149
- const row = this.moveRow(moveId, 'out');
149
+ this.#ensureMoves();
150
+ const row = this.#moveRow(moveId, 'out');
150
151
  if (row?.state !== 'exported')
151
152
  return { moveId, status: 'noop' };
152
153
  this.room.sql.exec(`UPDATE ${this.room.tables.moves} SET state = 'aborted', sent = '[]' WHERE id = ? AND role = 'out'`, moveId);
@@ -155,7 +156,7 @@ export class RoomMoves {
155
156
  /** The late edits waiting to reach their destination, oldest first. */
156
157
  lateEdits() {
157
158
  const { sql, tables } = this.room;
158
- this.ensureMoves();
159
+ this.#ensureMoves();
159
160
  return sql
160
161
  .exec(`SELECT l.move AS move, l.seq AS seq, l.edits AS edits, m.peer AS peer FROM ${tables.late} l JOIN ${tables.moves} m ON m.id = l.move AND m.role = 'out' ORDER BY l.move, l.seq`)
161
162
  .toArray()
@@ -169,13 +170,13 @@ export class RoomMoves {
169
170
  }
170
171
  /** The destination applied a move's late edits through `seq`: they are dropped here. */
171
172
  ackLateEdits(moveId, seq) {
172
- this.ensureMoves();
173
+ this.#ensureMoves();
173
174
  this.room.sql.exec(`DELETE FROM ${this.room.tables.late} WHERE move = ? AND seq <= ?`, moveId, seq);
174
175
  }
175
176
  /** Apply a batch of late edits (`AttachedDocument.applyLateEdits`). */
176
177
  applyLateEdits(batch) {
177
178
  return noTimers(() => {
178
- const row = this.moveRow(batch.moveId, 'in');
179
+ const row = this.#moveRow(batch.moveId, 'in');
179
180
  if (row === undefined)
180
181
  return { applied: 0, skipped: batch.edits.map((e) => e.block) };
181
182
  if (row.seq >= batch.seq)
@@ -187,7 +188,7 @@ export class RoomMoves {
187
188
  skipped.push(edit.block);
188
189
  continue;
189
190
  }
190
- this.mergeLateEdit(f, edit);
191
+ this.#mergeLateEdit(f, edit);
191
192
  }
192
193
  });
193
194
  this.room.sql.exec(`UPDATE ${this.room.tables.moves} SET seq = ? WHERE id = ? AND role = 'in'`, batch.seq, batch.moveId);
@@ -195,45 +196,20 @@ export class RoomMoves {
195
196
  });
196
197
  }
197
198
  /** One block's late edit, merged into what it holds (inside a room transaction). */
198
- mergeLateEdit(f, edit) {
199
+ #mergeLateEdit(f, edit) {
199
200
  const id = edit.block;
200
- const dst = unitsOf(f.contentItems(id).map((item) => item.kind === 'text'
201
- ? { text: item.text, ...(item.marks === undefined ? {} : { marks: item.marks }) }
202
- : {
203
- id: item.id,
204
- type: item.type,
205
- ...(item.data === undefined ? {} : { data: item.data })
206
- }));
207
- const merged = threeWay(unitsOf(edit.base.content), unitsOf(edit.src.content), dst);
208
- const { p, e, mid } = hunk(dst, merged);
209
- const width = (u) => (u.text === undefined ? 1 : u.text.length);
210
- let at = dst.slice(0, p).reduce((n, u) => n + width(u), 0);
211
- const gone = dst.slice(p, e).reduce((n, u) => n + width(u), 0);
212
- if (gone > 0)
213
- f.apply(f.prepare.deleteText(id, at, gone));
214
- for (const item of contentOf(mid)) {
215
- if ('text' in item && typeof item.text === 'string') {
216
- f.apply(f.prepare.insertText(id, at, item.text, item.marks));
217
- at += item.text.length;
218
- }
219
- else {
220
- const atom = item;
221
- f.apply(f.prepare.insertInline(id, at, {
222
- id: atom.id ?? crypto.randomUUID(),
223
- type: atom.type,
224
- ...(atom.data === undefined ? {} : { data: atom.data })
225
- }));
226
- at += 1;
227
- }
228
- }
201
+ const dst = unitsOf(f.contentItems(id));
202
+ // An atom the late edit names no id of keys as the empty id.
203
+ const units = (content) => unitsOf(jsonContentToItems(content ?? [], false, () => ''));
204
+ rewriteContent(f, id, dst, threeWay(units(edit.base.content), units(edit.src.content), dst));
229
205
  const now = subtreesOf(f.toJSON().children, new Set([id]))[0];
230
206
  const data = (now?.data ?? {});
231
207
  const next = mergeData(edit.base.data, edit.src.data, data);
232
208
  if (JSON.stringify(next) !== JSON.stringify(data))
233
- f.apply(f.prepare.setBlockData(id, next));
209
+ f.apply(f.prepare.patchData(id, [{ path: [], value: next }]));
234
210
  }
235
211
  /** The registry entries carrying a `del.<marker>` mark written between clocks `c0` and `c1`. */
236
- markedBetween(doc, marker, c0, c1) {
212
+ #markedBetween(doc, marker, c0, c1) {
237
213
  const out = [];
238
214
  const key = `${DEL_PREFIX}${marker}`;
239
215
  asEngineDoc(doc)
@@ -249,10 +225,10 @@ export class RoomMoves {
249
225
  return out;
250
226
  }
251
227
  /** The moved-out blocks watched for late edits (`room.move.late`), by id → their move. */
252
- watchedBlocks() {
228
+ #watchedBlocks() {
253
229
  if (this.watched !== null)
254
230
  return this.watched;
255
- this.ensureMoves();
231
+ this.#ensureMoves();
256
232
  const out = new Map();
257
233
  for (const row of this.room.sql
258
234
  .exec(`SELECT id, watched FROM ${this.room.tables.moves} WHERE role = 'out' AND state = 'moved'`)
@@ -275,7 +251,7 @@ export class RoomMoves {
275
251
  let key = null;
276
252
  if (type === registry) {
277
253
  for (const sub of subs) {
278
- watched ??= this.watchedBlocks();
254
+ watched ??= this.#watchedBlocks();
279
255
  const move = sub === null ? undefined : watched.get(sub);
280
256
  if (move !== undefined)
281
257
  dirty.add(move);
@@ -294,7 +270,7 @@ export class RoomMoves {
294
270
  }
295
271
  if (key === null)
296
272
  continue;
297
- watched ??= this.watchedBlocks();
273
+ watched ??= this.#watchedBlocks();
298
274
  if (watched.size === 0)
299
275
  return;
300
276
  const move = watched.get(key);
@@ -318,7 +294,7 @@ export class RoomMoves {
318
294
  const room = this.room;
319
295
  const { scheduler, sql, tables } = room;
320
296
  scheduler.unschedule('forward');
321
- this.ensureMoves();
297
+ this.#ensureMoves();
322
298
  const now = room.clock();
323
299
  // Past the grace period: no longer watched.
324
300
  sql.exec(`UPDATE ${tables.moves} SET state = 'done', sent = '[]', watched = '[]' WHERE role = 'out' AND state = 'moved' AND at <= ?`, now - this.graceMs);
@@ -327,9 +303,9 @@ export class RoomMoves {
327
303
  .exec(`SELECT id, roots, sent, map, watched, marker, c0, c1, seq FROM ${tables.moves} WHERE role = 'out' AND state = 'moved' AND dirty = 1`)
328
304
  .toArray();
329
305
  if (dirty.length > 0 && room.live !== null) {
330
- const children = noTimers(() => this.withoutMoveDeletes(dirty));
306
+ const children = noTimers(() => this.#withoutMoveDeletes(dirty));
331
307
  for (const row of dirty)
332
- this.collectLateEdits(row, children);
308
+ this.#collectLateEdits(row, children);
333
309
  }
334
310
  const rooms = room.options.rooms?.();
335
311
  let retry = false;
@@ -356,9 +332,9 @@ export class RoomMoves {
356
332
  scheduler.schedule('forward', next + this.graceMs, 'earlier');
357
333
  }
358
334
  /** The document's blocks as they show without the deletes of `moves`' commits: a copy, read once. */
359
- withoutMoveDeletes(moves) {
335
+ #withoutMoveDeletes(moves) {
360
336
  const copy = crdt.createDoc();
361
- Y.applyUpdateV2(copy, Y.encodeStateAsUpdateV2(this.room.requireDoc()));
337
+ Y.applyUpdate(copy, Y.encodeStateAsUpdate(this.room.requireDoc()));
362
338
  const facade = this.room.facadeOf(copy);
363
339
  try {
364
340
  const registry = asEngineDoc(copy).get(REGISTRY_KEY);
@@ -385,7 +361,7 @@ export class RoomMoves {
385
361
  }
386
362
  }
387
363
  /** One dirty move's changes since its last batch, as a new batch of late edits (or a report). */
388
- collectLateEdits(row, children) {
364
+ #collectLateEdits(row, children) {
389
365
  const room = this.room;
390
366
  const roots = new Set(JSON.parse(row.roots));
391
367
  const now = subtreesOf(children, roots);
@@ -3,9 +3,8 @@ import type { YDoc } from '../../crdt/index.js';
3
3
  import type { Attachment } from '../DocumentRoom.js';
4
4
  import { type RoomContext } from './context.js';
5
5
  export declare class RoomPresence {
6
+ #private;
6
7
  private readonly room;
7
- /** Each socket's presence allowance, a bucket of its own. */
8
- private readonly allowances;
9
8
  /** Sockets in a burst past their presence rate, logged once (`overRate`). */
10
9
  private readonly bursts;
11
10
  /**
@@ -64,15 +63,6 @@ export declare class RoomPresence {
64
63
  * presence every 15 s).
65
64
  */
66
65
  private drain;
67
- /**
68
- * The dev-time roles check: a client's presence advertises the
69
- * digest of its document's roles (`semantics`, development builds); one
70
- * naming kinds, marks or a default type the room reads otherwise is
71
- * logged (`semantics`), once per digest the client advertises. Never a
72
- * refusal: a client without a plugin, or with roles the room lacks, is
73
- * the host's to fix, in `semantics`.
74
- */
75
- private compareSemantics;
76
66
  /**
77
67
  * A presence message past the socket's rate (`room.presence.quota`):
78
68
  * never closed. A burst is one log entry, its first message's (the
@@ -35,7 +35,7 @@ const verifiedPresence = (entry, user) => {
35
35
  export class RoomPresence {
36
36
  room;
37
37
  /** Each socket's presence allowance, a bucket of its own. */
38
- allowances = new WeakMap();
38
+ #allowances = new WeakMap();
39
39
  /** Sockets in a burst past their presence rate, logged once (`overRate`). */
40
40
  bursts = new WeakSet();
41
41
  /**
@@ -68,7 +68,7 @@ export class RoomPresence {
68
68
  * on a bucket of the socket's own. `false`: over it.
69
69
  */
70
70
  allow(ws) {
71
- if (!allowance(this.allowances, ws, this.room.limits.maxPresencePerSecond))
71
+ if (!allowance(this.#allowances, ws, this.room.limits.maxPresencePerSecond))
72
72
  return false;
73
73
  this.bursts.delete(ws);
74
74
  return true;
@@ -113,7 +113,7 @@ export class RoomPresence {
113
113
  });
114
114
  }
115
115
  }
116
- this.compareSemantics(attachment.user, known, entry);
116
+ this.#compareSemantics(attachment.user, known, entry);
117
117
  if (entry.state === null)
118
118
  this.entries.delete(replica);
119
119
  else
@@ -219,7 +219,7 @@ export class RoomPresence {
219
219
  * refusal: a client without a plugin, or with roles the room lacks, is
220
220
  * the host's to fix, in `semantics`.
221
221
  */
222
- compareSemantics(user, known, entry) {
222
+ #compareSemantics(user, known, entry) {
223
223
  const advertised = entry.state?.semantics;
224
224
  if (advertised === undefined)
225
225
  return;
@@ -1,6 +1,7 @@
1
1
  import type { PurgeReport } from '../../crdt/purge.js';
2
2
  import { type RoomContext } from './context.js';
3
3
  export declare class RoomPurge {
4
+ #private;
4
5
  private readonly room;
5
6
  constructor(room: RoomContext);
6
7
  /** Days after which deleted content is purged (`null`: never), `room.purge.timing`. */
@@ -11,6 +12,4 @@ export declare class RoomPurge {
11
12
  tick(): (PurgeReport & {
12
13
  horizon: number;
13
14
  }) | null;
14
- /** Purge what was deleted before `horizon`, as the room's own transaction, then compact. */
15
- private purgeTo;
16
15
  }
@@ -59,7 +59,7 @@ export class RoomPurge {
59
59
  .toArray()[0];
60
60
  let result = null;
61
61
  if (horizon !== undefined && horizon.at > purged) {
62
- result = this.purgeTo({ at: horizon.at, sv: new Uint8Array(horizon.sv) });
62
+ result = this.#purgeTo({ at: horizon.at, sv: new Uint8Array(horizon.sv) });
63
63
  }
64
64
  // The next epoch to pass the horizon, or the next change, arms it again.
65
65
  const next = sql
@@ -73,7 +73,7 @@ export class RoomPurge {
73
73
  });
74
74
  }
75
75
  /** Purge what was deleted before `horizon`, as the room's own transaction, then compact. */
76
- purgeTo(horizon) {
76
+ #purgeTo(horizon) {
77
77
  const room = this.room;
78
78
  const doc = room.requireDoc();
79
79
  // A restore past the horizon can no longer be undone (`room.history.undo`).
@@ -5,6 +5,7 @@ import type { RoomContext } from './context.js';
5
5
  export declare class StorageFault extends Error {
6
6
  }
7
7
  export declare class ReplicaRegistry {
8
+ #private;
8
9
  private readonly room;
9
10
  constructor(room: RoomContext);
10
11
  /** A registry read or write, its SQLite fault tagged (the socket closes 1011, never 1008). */
@@ -35,13 +36,6 @@ export declare class ReplicaRegistry {
35
36
  * Ownership never moves to a relayer.
36
37
  */
37
38
  attribute({ user, replica }: Attachment, writers: Set<number>, sv: Map<number, number>, orphans: Set<number>): Set<number>;
38
- /**
39
- * A claimed orphan (an id relayed by another user, whose binding the
40
- * relay could not carry): the room binds it to its claimer, when the
41
- * room holds content of it. A failed write is healed here, the claim
42
- * kept (the binding then stays as it was).
43
- */
44
- private bindOrphan;
45
39
  /**
46
40
  * Bind the sender's replicas whose `c/<n>` a frame set to another actor
47
41
  * to its verified user (`room.attribution.trust`): one room write after the frame's, which