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
@@ -62,7 +62,7 @@ export class ReplicaRegistry {
62
62
  return true;
63
63
  this.register([{ replica, user }]);
64
64
  this.room.note({ reason: 'orphan', detail: { replica, user } });
65
- this.bindOrphan(replica, user);
65
+ this.#bindOrphan(replica, user);
66
66
  return true;
67
67
  }
68
68
  if (owner !== undefined || (sv.get(replica) ?? 0) > 0)
@@ -120,7 +120,7 @@ export class ReplicaRegistry {
120
120
  * room holds content of it. A failed write is healed here, the claim
121
121
  * kept (the binding then stays as it was).
122
122
  */
123
- bindOrphan(replica, user) {
123
+ #bindOrphan(replica, user) {
124
124
  const room = this.room;
125
125
  const doc = room.live;
126
126
  if (doc === null || (stateVector(doc).get(replica) ?? 0) === 0)
@@ -3,6 +3,7 @@ import { type Decoded, type RoomContext } from './context.js';
3
3
  /** A stored record's kind. `pending`: deletes of items the room does not hold yet (they wait for them). */
4
4
  type RowKind = StoredRecord['kind'];
5
5
  export declare class RoomStorage {
6
+ #private;
6
7
  private readonly room;
7
8
  /** The failure is the storage's (a failed read, `onLoad`'s store down): the next dial starts again. */
8
9
  retryable: boolean;
@@ -10,8 +11,6 @@ export declare class RoomStorage {
10
11
  updates: number;
11
12
  /** What the records hold, uncompressed (the generation record aside): the document quota's measure. */
12
13
  documentBytes: number;
13
- /** The size passed `documentWarning` of the quota and was logged (memory: a wake logs it again). */
14
- private warned;
15
14
  /**
16
15
  * Log the document's size when it passes `documentWarning` of its quota
17
16
  * (`room.quota.warning`): once per crossing; under it again, the next
@@ -26,13 +25,8 @@ export declare class RoomStorage {
26
25
  * would write is closed before it is applied, so an outage rebuilds once.
27
26
  */
28
27
  outage: unknown;
29
- private nextRecord;
30
- /** The snapshot compression in flight (`compressed()`). */
31
- private compressing;
32
28
  /** The raw bytes of the compressed snapshot record (`records` reads it; only `start` can inflate). */
33
29
  private inflated;
34
- /** Alarms in a row that found the rows unreadable: each re-arms later. */
35
- private saveRetries;
36
30
  constructor(room: RoomContext);
37
31
  /**
38
32
  * Restore from storage, or seed from `onLoad`. Never throws: a throw
@@ -69,24 +63,12 @@ export declare class RoomStorage {
69
63
  * engine refuses) is refused for good.
70
64
  */
71
65
  private load;
72
- /**
73
- * The generation cutover at load (`room.generation.convert`): the
74
- * records of a generation-4 container are read as JSON
75
- * (`crdt.generations.previousJSON`), which this generation seeds as
76
- * `onLoad`'s JSON is (deterministic: every replica converting the same
77
- * state writes the same update), and the container is replaced by it in
78
- * one storage transaction: rows, replicas, purge epochs, slot editors
79
- * and the stored restore go; the document data, the alarm's due tasks
80
- * and `lastUpdated` stay. What a generation-4 client never sent is not
81
- * in it; history, attribution and CRDT identity do not cross.
82
- */
83
- private convert;
84
66
  /** The bytes of the stored `pending` records (uncompressed, as every record but a snapshot). */
85
67
  pendingBytes(): number;
86
68
  /**
87
69
  * Reassembled logical records in write order (of one kind, with
88
- * `only`); a torn record throws. A v2 container's snapshot is v2
89
- * (`v2`), inflated when it is stored compressed.
70
+ * `only`); a torn record throws. A snapshot stored compressed is
71
+ * inflated (gzip's magic never starts an update nor the record's JSON).
90
72
  */
91
73
  records(only?: RowKind): StoredRecord[];
92
74
  /**
@@ -95,17 +77,6 @@ export declare class RoomStorage {
95
77
  * generation record with it.
96
78
  */
97
79
  insert(kind: RowKind, bytes: Uint8Array): number;
98
- /** Record `record`'s rows (at the row positions `seqs`, when given). */
99
- private writeRecord;
100
- /**
101
- * Compress snapshot `record` in place once it is stored: gzip is
102
- * asynchronous, and the store-before-ack path is not. Its rows are
103
- * rewritten (at their positions) only while it is still the stored
104
- * snapshot and only when that shrinks it; the raw bytes stay in memory
105
- * (`inflated`) for a rebuild's synchronous read. A platform without
106
- * `CompressionStream` keeps it raw.
107
- */
108
- private compressLater;
109
80
  /** Resolves once the snapshot compression in flight, if any, is stored. */
110
81
  compressed(): Promise<void>;
111
82
  /** Compaction (`AttachedDocument.compact`). */
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import { Y } from '../../crdt/engine.js';
10
10
  import * as E from '../../crdt/protocol.js';
11
- import { isGenerationRecord, STORED_GENERATION_RECORD, storageOf } from '../../crdt/protocols/envelope.js';
11
+ import { GENERATION_RECORD, isGenerationRecord } from '../../crdt/protocols/envelope.js';
12
12
  import { gunzip, isGzip, packed } from '../../crdt/storage.js';
13
13
  import { SOCKET_TAG, noTimers } from './shared.js';
14
14
  import { parseReplica } from './access.js';
@@ -55,8 +55,6 @@ const loadedUpdate = (found, seed) => {
55
55
  }
56
56
  throw new TypeError('onLoad returned neither a JSONDoc, a v14 update nor { update, replicas }');
57
57
  };
58
- /** How many blocks `children` holds, nested ones included. */
59
- const countBlocks = (children) => children.reduce((n, block) => n + 1 + countBlocks(block.children ?? []), 0);
60
58
  /** Rows grouped into their records, in write order; a record missing rows throws. */
61
59
  const reassemble = (rows) => {
62
60
  const byRecord = new Map();
@@ -94,7 +92,7 @@ export class RoomStorage {
94
92
  /** What the records hold, uncompressed (the generation record aside): the document quota's measure. */
95
93
  documentBytes = 0;
96
94
  /** The size passed `documentWarning` of the quota and was logged (memory: a wake logs it again). */
97
- warned = false;
95
+ #warned = false;
98
96
  /**
99
97
  * Log the document's size when it passes `documentWarning` of its quota
100
98
  * (`room.quota.warning`): once per crossing; under it again, the next
@@ -104,12 +102,12 @@ export class RoomStorage {
104
102
  const room = this.room;
105
103
  const { maxDocumentBytes: limit, documentWarning: share } = room.limits;
106
104
  if (this.documentBytes < limit * share) {
107
- this.warned = false;
105
+ this.#warned = false;
108
106
  return;
109
107
  }
110
- if (this.warned)
108
+ if (this.#warned)
111
109
  return;
112
- this.warned = true;
110
+ this.#warned = true;
113
111
  room.log({ edytor: 'size', bytes: this.documentBytes, limit, share });
114
112
  }
115
113
  /** The waiting deletes stored as `pending` records (the engine may hold more, in memory). */
@@ -120,13 +118,13 @@ export class RoomStorage {
120
118
  * would write is closed before it is applied, so an outage rebuilds once.
121
119
  */
122
120
  outage = null;
123
- nextRecord = 0;
121
+ #nextRecord = 0;
124
122
  /** The snapshot compression in flight (`compressed()`). */
125
- compressing = Promise.resolve();
123
+ #compressing = Promise.resolve();
126
124
  /** The raw bytes of the compressed snapshot record (`records` reads it; only `start` can inflate). */
127
125
  inflated = null;
128
126
  /** Alarms in a row that found the rows unreadable: each re-arms later. */
129
- saveRetries = 0;
127
+ #saveRetries = 0;
130
128
  constructor(room) {
131
129
  this.room = room;
132
130
  }
@@ -290,7 +288,7 @@ export class RoomStorage {
290
288
  room.live?.destroy();
291
289
  this.adopt(doc);
292
290
  this.storedWaiting = waiting;
293
- this.compressLater(record, snapshot);
291
+ this.#compressLater(record, snapshot);
294
292
  });
295
293
  }
296
294
  /**
@@ -329,7 +327,7 @@ export class RoomStorage {
329
327
  )`);
330
328
  room.scheduler.readDues();
331
329
  room.history.loadRestore();
332
- this.nextRecord = 0;
330
+ this.#nextRecord = 0;
333
331
  records = this.records();
334
332
  }
335
333
  catch (error) {
@@ -346,16 +344,12 @@ export class RoomStorage {
346
344
  }
347
345
  const [generation, ...rest] = records;
348
346
  const found = JSON.parse(new TextDecoder().decode(generation.bytes));
349
- // A container of generation 4 converts through its JSON (`room.generation.convert`).
350
- if (generation.kind === 'generation' && E.isPreviousGenerationRecord(found)) {
351
- return this.convert(rest);
352
- }
353
347
  if (generation.kind !== 'generation' || !isGenerationRecord(found)) {
354
348
  throw new E.GenerationMismatchError(`room ${room.ctx.id}`, found);
355
349
  }
356
350
  // Applied in one transaction, never merged first: a merge of the
357
351
  // records keeps every keystroke's struct and the deleted content.
358
- const doc = admit(rest.map((record) => (record.v2 ? { v2: record.bytes } : record.bytes)), `room ${room.ctx.id}`, () => room.history.restoreKeep);
352
+ const doc = admit(rest.map((record) => record.bytes), `room ${room.ctx.id}`, () => room.history.restoreKeep);
359
353
  this.documentBytes = rest.reduce((n, record) => n + record.bytes.length, 0);
360
354
  this.watch();
361
355
  this.adopt(doc);
@@ -368,59 +362,6 @@ export class RoomStorage {
368
362
  this.fail(error, false);
369
363
  }
370
364
  }
371
- /**
372
- * The generation cutover at load (`room.generation.convert`): the
373
- * records of a generation-4 container are read as JSON
374
- * (`crdt.generations.previousJSON`), which this generation seeds as
375
- * `onLoad`'s JSON is (deterministic: every replica converting the same
376
- * state writes the same update), and the container is replaced by it in
377
- * one storage transaction: rows, replicas, purge epochs, slot editors
378
- * and the stored restore go; the document data, the alarm's due tasks
379
- * and `lastUpdated` stay. What a generation-4 client never sent is not
380
- * in it; history, attribution and CRDT identity do not cross.
381
- */
382
- convert(records) {
383
- const room = this.room;
384
- const { sql, tables } = room;
385
- const json = crdt.generations.previousJSON(records.map((record) => (record.v2 ? { v2: record.bytes } : record.bytes)), (doc) => room.facadeOf(doc));
386
- const scratch = crdt.createDoc();
387
- const facade = room.facadeOf(scratch);
388
- facade.seed(json.children, json.data);
389
- facade.dispose();
390
- const update = Y.encodeStateAsUpdate(scratch);
391
- scratch.destroy();
392
- const doc = admit(update, `room ${room.ctx.id} conversion`, () => room.history.restoreKeep);
393
- const snapshot = liveState(doc);
394
- room.ctx.storage.transactionSync(() => {
395
- for (const table of [
396
- tables.rows,
397
- tables.replicas,
398
- tables.epochs,
399
- tables.editors,
400
- tables.restore
401
- ])
402
- sql.exec(`DELETE FROM ${table}`);
403
- this.nextRecord = 0;
404
- this.insert('snapshot', snapshot);
405
- this.touch();
406
- for (const replica of stateVector(doc).keys())
407
- sql.exec(`INSERT OR IGNORE INTO ${tables.replicas} (replica, user) VALUES (?, '')`, replica);
408
- });
409
- room.history.clearRestore();
410
- this.documentBytes = snapshot.length;
411
- this.watch();
412
- this.updates = 0;
413
- this.storedWaiting = Y.createIdSet();
414
- this.adopt(doc);
415
- room.state.origin = { kind: 'converted', from: E.PREVIOUS_SCHEMA, records: records.length };
416
- room.log({
417
- edytor: 'convert',
418
- from: E.PREVIOUS_SCHEMA,
419
- to: E.SCHEMA_VERSION,
420
- blocks: countBlocks(json.children),
421
- bytes: snapshot.length
422
- });
423
- }
424
365
  /** The bytes of the stored `pending` records (uncompressed, as every record but a snapshot). */
425
366
  pendingBytes() {
426
367
  return (this.room.sql
@@ -429,35 +370,21 @@ export class RoomStorage {
429
370
  }
430
371
  /**
431
372
  * Reassembled logical records in write order (of one kind, with
432
- * `only`); a torn record throws. A v2 container's snapshot is v2
433
- * (`v2`), inflated when it is stored compressed.
373
+ * `only`); a torn record throws. A snapshot stored compressed is
374
+ * inflated (gzip's magic never starts an update nor the record's JSON).
434
375
  */
435
376
  records(only) {
436
377
  const rows = this.room.sql
437
378
  .exec(`SELECT kind, record, part, parts, bytes FROM ${this.room.tables.rows}${only ? ' WHERE kind = ?' : ''} ORDER BY seq`, ...(only ? [only] : []))
438
379
  .toArray();
439
380
  for (const row of rows)
440
- this.nextRecord = Math.max(this.nextRecord, row.record + 1);
441
- const records = reassemble(rows);
442
- // The container's storage format, from its generation record.
443
- let format = 'v1';
444
- if (records[0]?.kind === 'generation') {
445
- try {
446
- const found = JSON.parse(new TextDecoder().decode(records[0].bytes));
447
- if (isGenerationRecord(found) || E.isPreviousGenerationRecord(found))
448
- format = storageOf(found);
449
- }
450
- catch {
451
- // `load` refuses it
452
- }
453
- }
454
- return records.map((record) => {
455
- const v2 = format === 'v2' && record.kind === 'snapshot';
456
- if (!v2 || !isGzip(record.bytes))
457
- return { ...record, v2 };
381
+ this.#nextRecord = Math.max(this.#nextRecord, row.record + 1);
382
+ return reassemble(rows).map((record) => {
383
+ if (!isGzip(record.bytes))
384
+ return record;
458
385
  if (this.inflated?.record !== record.record)
459
386
  throw new CompressedRecord();
460
- return { ...record, bytes: this.inflated.bytes, v2 };
387
+ return { ...record, bytes: this.inflated.bytes };
461
388
  });
462
389
  }
463
390
  /**
@@ -466,11 +393,11 @@ export class RoomStorage {
466
393
  * generation record with it.
467
394
  */
468
395
  insert(kind, bytes) {
469
- if (this.nextRecord === 0 && kind !== 'generation') {
470
- this.insert('generation', encodeJSON(STORED_GENERATION_RECORD));
396
+ if (this.#nextRecord === 0 && kind !== 'generation') {
397
+ this.insert('generation', encodeJSON(GENERATION_RECORD));
471
398
  }
472
- const record = this.nextRecord++;
473
- this.writeRecord(kind, record, bytes);
399
+ const record = this.#nextRecord++;
400
+ this.#writeRecord(kind, record, bytes);
474
401
  if (kind !== 'generation') {
475
402
  this.documentBytes += bytes.length;
476
403
  this.watch();
@@ -478,7 +405,7 @@ export class RoomStorage {
478
405
  return record;
479
406
  }
480
407
  /** Record `record`'s rows (at the row positions `seqs`, when given). */
481
- writeRecord(kind, record, bytes, seqs) {
408
+ #writeRecord(kind, record, bytes, seqs) {
482
409
  const { sql, tables, limits } = this.room;
483
410
  const parts = Math.max(1, Math.ceil(bytes.length / limits.maxRowBytes));
484
411
  for (let part = 0; part < parts; part++) {
@@ -496,10 +423,9 @@ export class RoomStorage {
496
423
  * asynchronous, and the store-before-ack path is not. Its rows are
497
424
  * rewritten (at their positions) only while it is still the stored
498
425
  * snapshot and only when that shrinks it; the raw bytes stay in memory
499
- * (`inflated`) for a rebuild's synchronous read. A platform without
500
- * `CompressionStream` keeps it raw.
426
+ * (`inflated`) for a rebuild's synchronous read.
501
427
  */
502
- compressLater(record, raw) {
428
+ #compressLater(record, raw) {
503
429
  const room = this.room;
504
430
  const job = packed(raw)
505
431
  .then((bytes) => noTimers(() => {
@@ -513,17 +439,17 @@ export class RoomStorage {
513
439
  return;
514
440
  room.ctx.storage.transactionSync(() => {
515
441
  room.sql.exec(`DELETE FROM ${room.tables.rows} WHERE record = ?`, record);
516
- this.writeRecord('snapshot', record, bytes, rows.map((row) => row.seq));
442
+ this.#writeRecord('snapshot', record, bytes, rows.map((row) => row.seq));
517
443
  });
518
444
  this.inflated = { record, bytes: raw.slice() };
519
445
  }))
520
446
  .catch((error) => room.note({ reason: 'storage', detail: `compression: ${String(error)}` }));
521
- this.compressing = job;
447
+ this.#compressing = job;
522
448
  room.ctx.waitUntil?.(job);
523
449
  }
524
450
  /** Resolves once the snapshot compression in flight, if any, is stored. */
525
451
  async compressed() {
526
- await this.compressing;
452
+ await this.#compressing;
527
453
  }
528
454
  /** Compaction (`AttachedDocument.compact`). */
529
455
  compact() {
@@ -550,7 +476,7 @@ export class RoomStorage {
550
476
  .map(({ replica }) => replica);
551
477
  const known = new Set([...registered, ...sockets]);
552
478
  // Waiting deletes stay apart (a discarded forgery drops them,
553
- // `settleDeletes`): the stored ones the engine still holds waiting.
479
+ // `#settleDeletes`): the stored ones the engine still holds waiting.
554
480
  const all = pendingDeletes(doc);
555
481
  const stored = storedPending(pending);
556
482
  const waiting = Y.diffIdSet(stored, Y.diffIdSet(stored, all));
@@ -563,8 +489,7 @@ export class RoomStorage {
563
489
  room.ctx.storage.transactionSync(() => {
564
490
  sql.exec(`DELETE FROM ${tables.rows}`);
565
491
  this.documentBytes = 0;
566
- // The container is now this build's format (a v1 one migrates here).
567
- this.insert('generation', encodeJSON(STORED_GENERATION_RECORD));
492
+ this.insert('generation', encodeJSON(GENERATION_RECORD));
568
493
  record = this.insert('snapshot', snapshot);
569
494
  if (!still.isEmpty())
570
495
  this.insert('pending', deletesUpdate(still));
@@ -581,7 +506,7 @@ export class RoomStorage {
581
506
  }
582
507
  this.updates = 0;
583
508
  this.storedWaiting = still;
584
- this.compressLater(record, snapshot);
509
+ this.#compressLater(record, snapshot);
585
510
  // Unknown ids' deletes go, the ones waiting in memory with a rewrite too.
586
511
  forgetWaiting(doc, addIds(Y.createIdSet(), all, (client) => !known.has(client)));
587
512
  const rows = sql.exec(`SELECT COUNT(*) AS n FROM ${tables.rows}`).one().n;
@@ -778,10 +703,10 @@ export class RoomStorage {
778
703
  if (room.live === null) {
779
704
  if (!this.retryable)
780
705
  return scheduler.unschedule('save');
781
- const wait = Math.min(room.limits.saveAfter * 2 ** ++this.saveRetries, MAX_SAVE_RETRY);
706
+ const wait = Math.min(room.limits.saveAfter * 2 ** ++this.#saveRetries, MAX_SAVE_RETRY);
782
707
  return scheduler.schedule('save', room.clock() + wait, 'replace');
783
708
  }
784
- this.saveRetries = 0;
709
+ this.#saveRetries = 0;
785
710
  const due = scheduler.due('save');
786
711
  // Cleared first: a change during `onSave` arms the next one.
787
712
  scheduler.unschedule('save');
@@ -13,6 +13,8 @@ export declare const heldClock: (doc: YDoc, client: number) => number;
13
13
  export declare const storedStruct: (doc: YDoc, client: number, clock: number) => import("../../crdt/vendor/yjs/dts/index.js").Item | import("../../crdt/vendor/yjs/dts/index.js").GC | null;
14
14
  /** The struct of `run` (one client's, in clock order) at `clock`, or `undefined`. */
15
15
  export declare const structAt: (run: Struct[], clock: number) => Struct | undefined;
16
+ /** A frame's structs by client, each run in clock order. */
17
+ export declare const runsOf: (structs: Struct[]) => Map<number, Struct[]>;
16
18
  /**
17
19
  * The map entries that the rewrites among `structs` which `pick` selects
18
20
  * replace (a rewrite deletes the entry it replaces: storing that delete
@@ -56,7 +58,7 @@ export declare const pendingDeletes: (doc: YDoc) => Decoded["ds"];
56
58
  export declare const addIds: (into: Decoded["ds"], from: Decoded["ds"], keep?: (client: number) => boolean) => Decoded["ds"];
57
59
  /** Whether two byte strings are equal. */
58
60
  export declare const sameBytes: (a: Uint8Array, b: Uint8Array) => boolean;
59
- /** A V1 update carrying only `deletes`. */
61
+ /** An update carrying only `deletes`. */
60
62
  export declare const deletesUpdate: (deletes: Decoded["ds"]) => Uint8Array;
61
63
  /** The engine forgets `ids` of its waiting deletes: it re-reads the others, which wait again. */
62
64
  export declare const forgetWaiting: (doc: YDoc, ids: Decoded["ds"]) => void;
@@ -84,6 +86,4 @@ export declare const liveState: (doc: YDoc) => Uint8Array;
84
86
  /** A fresh room document (`prepareRoomDoc`'s collection rules). */
85
87
  export declare const roomDoc: (keep: () => Decoded["ds"] | null) => YDoc;
86
88
  /** Admit stored or loaded updates into a room document (`prepareRoomDoc`'s collection rules). */
87
- export declare const admit: (updates: Uint8Array | Array<Uint8Array | {
88
- v2: Uint8Array;
89
- }>, name: string, keep: () => Decoded["ds"] | null) => YDoc;
89
+ export declare const admit: (updates: Uint8Array | Uint8Array[], name: string, keep: () => Decoded["ds"] | null) => YDoc;
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import * as encoding from 'lib0-v14/encoding';
7
7
  import { Y } from '../../crdt/engine.js';
8
- import { asEngineDoc, keepFromCollection } from '../../crdt/structs.js';
8
+ import { asEngineDoc, keepFromCollection, structAt as storeStructAt } from '../../crdt/structs.js';
9
9
  import { ROOM_ORIGIN } from './shared.js';
10
10
  import { crdt } from './context.js';
11
11
  export const stateVector = (doc) => Y.decodeStateVector(Y.encodeStateVector(doc));
@@ -39,18 +39,16 @@ export const storedStruct = (doc, client, clock) => {
39
39
  return struct instanceof Y.Skip ? null : struct;
40
40
  };
41
41
  /** The struct of `run` (one client's, in clock order) at `clock`, or `undefined`. */
42
- export const structAt = (run, clock) => {
43
- for (let lo = 0, hi = run.length - 1; lo <= hi;) {
44
- const mid = (lo + hi) >> 1;
45
- const { id, length } = run[mid];
46
- if (clock < id.clock)
47
- hi = mid - 1;
48
- else if (clock >= id.clock + length)
49
- lo = mid + 1;
50
- else
51
- return run[mid];
42
+ export const structAt = (run, clock) => storeStructAt(Y, run, clock) ?? undefined;
43
+ /** A frame's structs by client, each run in clock order. */
44
+ export const runsOf = (structs) => {
45
+ const runs = new Map();
46
+ for (const struct of structs) {
47
+ const run = runs.get(struct.id.client) ?? [];
48
+ run.push(struct);
49
+ runs.set(struct.id.client, run);
52
50
  }
53
- return undefined;
51
+ return runs;
54
52
  };
55
53
  /**
56
54
  * The map entries that the rewrites among `structs` which `pick` selects
@@ -63,12 +61,7 @@ export const structAt = (run, clock) => {
63
61
  * or the frame holds collected, may be an entry.
64
62
  */
65
63
  export const replacedEntries = (doc, structs, pick) => {
66
- const frame = new Map();
67
- for (const struct of structs) {
68
- const run = frame.get(struct.id.client) ?? [];
69
- run.push(struct);
70
- frame.set(struct.id.client, run);
71
- }
64
+ const frame = runsOf(structs);
72
65
  const known = new Map();
73
66
  const isEntry = (id) => {
74
67
  const chain = new Set();
@@ -130,8 +123,8 @@ export const withoutClients = ({ structs, ds }, clients, doc, dropped = Y.create
130
123
  run.push(struct);
131
124
  kept.set(client, run);
132
125
  }
133
- // The v1 layout: #clients, then per client #structs, client, first clock, structs.
134
- const encoder = new Y.UpdateEncoderV1();
126
+ // The update layout: #clients, then per client #structs, client, first clock, structs.
127
+ const encoder = new Y.UpdateEncoder();
135
128
  encoding.writeVarUint(encoder.restEncoder, kept.size);
136
129
  for (const [client, run] of kept) {
137
130
  encoding.writeVarUint(encoder.restEncoder, run.length);
@@ -222,7 +215,7 @@ export const releasedWaiting = (structs, stripped, before, after) => {
222
215
  return false;
223
216
  };
224
217
  /** The deletes `doc`'s engine holds pending: of items it does not hold yet. */
225
- export const pendingDeletes = (doc) => doc.store.pendingDs ? Y.decodeUpdateV2(doc.store.pendingDs).ds : Y.createIdSet();
218
+ export const pendingDeletes = (doc) => doc.store.pendingDs ? Y.decodeUpdate(doc.store.pendingDs).ds : Y.createIdSet();
226
219
  /** `into` with the ranges of `from` added — of the clients `keep` selects. */
227
220
  export const addIds = (into, from, keep = () => true) => {
228
221
  for (const [client, ranges] of from.clients) {
@@ -235,9 +228,9 @@ export const addIds = (into, from, keep = () => true) => {
235
228
  };
236
229
  /** Whether two byte strings are equal. */
237
230
  export const sameBytes = (a, b) => a.length === b.length && a.every((byte, i) => byte === b[i]);
238
- /** A V1 update carrying only `deletes`. */
231
+ /** An update carrying only `deletes`. */
239
232
  export const deletesUpdate = (deletes) => {
240
- const encoder = new Y.UpdateEncoderV1();
233
+ const encoder = new Y.UpdateEncoder();
241
234
  encoding.writeVarUint(encoder.restEncoder, 0); // no structs
242
235
  Y.writeIdSet(encoder, deletes);
243
236
  return encoder.toUint8Array();
@@ -307,7 +300,7 @@ export const withoutPending = (doc, read) => {
307
300
  * waits (`withoutPending`). Memory never runs ahead of storage, so it
308
301
  * holds exactly what the stored records hold, collected.
309
302
  */
310
- export const liveState = (doc) => withoutPending(doc, () => Y.encodeStateAsUpdateV2(doc));
303
+ export const liveState = (doc) => withoutPending(doc, () => Y.encodeStateAsUpdate(doc));
311
304
  /**
312
305
  * A room document's collection rules, before any update applies: it keeps
313
306
  * what an editing replica keeps, and the content the last restore
@@ -24,10 +24,10 @@ export type Validation = {
24
24
  off: () => void;
25
25
  };
26
26
  export declare class RoomValidation {
27
+ #private;
27
28
  private readonly room;
28
29
  /** The index `validate` reads (built at its first frame, for the live document). */
29
30
  private validation;
30
- private _validator;
31
31
  constructor(room: RoomContext);
32
32
  /**
33
33
  * The frame check, resolved at first use: per-block locks (`locks`),
@@ -38,8 +38,6 @@ export declare class RoomValidation {
38
38
  get active(): boolean;
39
39
  /** The live document was replaced: the index read the old one. */
40
40
  reset(): void;
41
- /** A shown block's state, read from the facade (`null`: it does not show). */
42
- private blockState;
43
41
  /**
44
42
  * The index `validate` reads, for `doc`, set to record the frame of
45
43
  * `origin`: every shown block's state and each parent's children, built
@@ -48,8 +46,6 @@ export declare class RoomValidation {
48
46
  * records the frame for its compensation.
49
47
  */
50
48
  begin(doc: YDoc, origin: unknown): Validation;
51
- /** Keep the index from one change report, recording what the frame being validated touched. */
52
- private indexChange;
53
49
  /**
54
50
  * Ask `validate` about the frame just applied; a denial is
55
51
  * compensated by the room's own transaction: the history undo of that
@@ -1,40 +1,19 @@
1
1
  import { asEngineDoc } from '../../crdt/structs.js';
2
+ import { common } from '../../crdt/data.js';
2
3
  import { ROOM_ORIGIN } from './shared.js';
3
4
  import { lockedBlocks } from '../locks.js';
4
5
  import { crdt } from './context.js';
5
- /** The ids of `next` that left their order relative to the others both lists hold (a longest increasing run kept). */
6
+ /** The ids of `next` that left their order relative to the others both lists hold (a longest common run kept). */
6
7
  const reordered = (previous, next) => {
7
- const at = new Map(previous.map((id, i) => [id, i]));
8
- const common = next.filter((id) => at.has(id));
9
- // Longest increasing run of previous positions (patience sorting).
10
- const tails = [];
11
- const links = new Array(common.length).fill(-1);
12
- const tailAt = [];
13
- common.forEach((id, i) => {
14
- const position = at.get(id);
15
- let lo = 0;
16
- let hi = tails.length;
17
- while (lo < hi) {
18
- const mid = (lo + hi) >> 1;
19
- if (tails[mid] < position)
20
- lo = mid + 1;
21
- else
22
- hi = mid;
23
- }
24
- tails[lo] = position;
25
- tailAt[lo] = i;
26
- links[i] = lo > 0 ? tailAt[lo - 1] : -1;
27
- });
28
- const kept = new Set();
29
- for (let i = tails.length ? tailAt[tails.length - 1] : -1; i !== -1; i = links[i])
30
- kept.add(i);
31
- return common.filter((_, i) => !kept.has(i));
8
+ const kept = new Set(common(previous, next).map(([, j]) => next[j]));
9
+ const held = new Set(previous);
10
+ return next.filter((id) => held.has(id) && !kept.has(id));
32
11
  };
33
12
  export class RoomValidation {
34
13
  room;
35
14
  /** The index `validate` reads (built at its first frame, for the live document). */
36
15
  validation = null;
37
- _validator;
16
+ #_validator;
38
17
  constructor(room) {
39
18
  this.room = room;
40
19
  }
@@ -43,12 +22,12 @@ export class RoomValidation {
43
22
  * then `validate`; `null` when neither is set (no block index is kept).
44
23
  */
45
24
  get validator() {
46
- if (this._validator !== undefined)
47
- return this._validator;
25
+ if (this.#_validator !== undefined)
26
+ return this.#_validator;
48
27
  const locks = this.room.options.locks;
49
28
  const validate = this.room.options.validate;
50
29
  const locked = locks ? lockedBlocks(locks) : null;
51
- return (this._validator =
30
+ return (this.#_validator =
52
31
  locked === null
53
32
  ? (validate ?? null)
54
33
  : validate === undefined
@@ -65,7 +44,7 @@ export class RoomValidation {
65
44
  this.validation = null;
66
45
  }
67
46
  /** A shown block's state, read from the facade (`null`: it does not show). */
68
- blockState(id) {
47
+ #blockState(id) {
69
48
  const facade = this.room.facade;
70
49
  if (!facade.isVisibleBlock(id))
71
50
  return null;
@@ -95,7 +74,7 @@ export class RoomValidation {
95
74
  const ids = facade.childrenIds(parent);
96
75
  children.set(parent, ids);
97
76
  for (const id of ids) {
98
- const state = this.blockState(id);
77
+ const state = this.#blockState(id);
99
78
  if (state !== null)
100
79
  states.set(id, state);
101
80
  walk(id);
@@ -110,7 +89,7 @@ export class RoomValidation {
110
89
  frame: null,
111
90
  off: () => { }
112
91
  };
113
- created.off = facade.onChange((change) => this.indexChange(created, change));
92
+ created.off = facade.onChange((change) => this.#indexChange(created, change));
114
93
  v = this.validation = created;
115
94
  }
116
95
  if (v.history === null && crdt.doc.isInitialized(asEngineDoc(doc))) {
@@ -123,7 +102,7 @@ export class RoomValidation {
123
102
  return v;
124
103
  }
125
104
  /** Keep the index from one change report, recording what the frame being validated touched. */
126
- indexChange(v, change) {
105
+ #indexChange(v, change) {
127
106
  const frame = v.frame?.origin === change.origin ? v.frame : null;
128
107
  const touch = (id) => {
129
108
  if (frame === null)
@@ -141,7 +120,7 @@ export class RoomValidation {
141
120
  };
142
121
  const read = (id, moved) => {
143
122
  const was = v.states.get(id);
144
- const state = this.blockState(id);
123
+ const state = this.#blockState(id);
145
124
  if (state === null)
146
125
  return drop(id);
147
126
  if (!moved || was === undefined || was.parent !== state.parent)
@@ -186,7 +165,7 @@ export class RoomValidation {
186
165
  v.frame = null;
187
166
  if (frame === null || (frame.touched.size === 0 && !frame.data)) {
188
167
  if (v.history)
189
- room.facade.releaseHistory(v.history);
168
+ v.history.clear();
190
169
  return;
191
170
  }
192
171
  const touched = [...frame.touched];
@@ -223,6 +202,6 @@ export class RoomValidation {
223
202
  }
224
203
  }
225
204
  if (v.history)
226
- room.facade.releaseHistory(v.history);
205
+ v.history.clear();
227
206
  }
228
207
  }