edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -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,6 +11,12 @@ 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;
14
+ /**
15
+ * Log the document's size when it passes `documentWarning` of its quota
16
+ * (`room.quota.warning`): once per crossing; under it again, the next
17
+ * crossing logs again.
18
+ */
19
+ private watch;
13
20
  /** The waiting deletes stored as `pending` records (the engine may hold more, in memory). */
14
21
  storedWaiting: Decoded['ds'];
15
22
  /**
@@ -18,13 +25,8 @@ export declare class RoomStorage {
18
25
  * would write is closed before it is applied, so an outage rebuilds once.
19
26
  */
20
27
  outage: unknown;
21
- private nextRecord;
22
- /** The snapshot compression in flight (`compressed()`). */
23
- private compressing;
24
28
  /** The raw bytes of the compressed snapshot record (`records` reads it; only `start` can inflate). */
25
29
  private inflated;
26
- /** Alarms in a row that found the rows unreadable: each re-arms later. */
27
- private saveRetries;
28
30
  constructor(room: RoomContext);
29
31
  /**
30
32
  * Restore from storage, or seed from `onLoad`. Never throws: a throw
@@ -61,24 +63,12 @@ export declare class RoomStorage {
61
63
  * engine refuses) is refused for good.
62
64
  */
63
65
  private load;
64
- /**
65
- * The generation cutover at load (`room.generation.convert`): the
66
- * records of a generation-4 container are read as JSON
67
- * (`crdt.generations.previousJSON`), which this generation seeds as
68
- * `onLoad`'s JSON is (deterministic: every replica converting the same
69
- * state writes the same update), and the container is replaced by it in
70
- * one storage transaction: rows, replicas, purge epochs, slot editors
71
- * and the stored restore go; the document data, the alarm's due tasks
72
- * and `lastUpdated` stay. What a generation-4 client never sent is not
73
- * in it; history, attribution and CRDT identity do not cross.
74
- */
75
- private convert;
76
66
  /** The bytes of the stored `pending` records (uncompressed, as every record but a snapshot). */
77
67
  pendingBytes(): number;
78
68
  /**
79
69
  * Reassembled logical records in write order (of one kind, with
80
- * `only`); a torn record throws. A v2 container's snapshot is v2
81
- * (`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).
82
72
  */
83
73
  records(only?: RowKind): StoredRecord[];
84
74
  /**
@@ -87,17 +77,6 @@ export declare class RoomStorage {
87
77
  * generation record with it.
88
78
  */
89
79
  insert(kind: RowKind, bytes: Uint8Array): number;
90
- /** Record `record`'s rows (at the row positions `seqs`, when given). */
91
- private writeRecord;
92
- /**
93
- * Compress snapshot `record` in place once it is stored: gzip is
94
- * asynchronous, and the store-before-ack path is not. Its rows are
95
- * rewritten (at their positions) only while it is still the stored
96
- * snapshot and only when that shrinks it; the raw bytes stay in memory
97
- * (`inflated`) for a rebuild's synchronous read. A platform without
98
- * `CompressionStream` keeps it raw.
99
- */
100
- private compressLater;
101
80
  /** Resolves once the snapshot compression in flight, if any, is stored. */
102
81
  compressed(): Promise<void>;
103
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();
@@ -93,6 +91,25 @@ export class RoomStorage {
93
91
  updates = 0;
94
92
  /** What the records hold, uncompressed (the generation record aside): the document quota's measure. */
95
93
  documentBytes = 0;
94
+ /** The size passed `documentWarning` of the quota and was logged (memory: a wake logs it again). */
95
+ #warned = false;
96
+ /**
97
+ * Log the document's size when it passes `documentWarning` of its quota
98
+ * (`room.quota.warning`): once per crossing; under it again, the next
99
+ * crossing logs again.
100
+ */
101
+ watch() {
102
+ const room = this.room;
103
+ const { maxDocumentBytes: limit, documentWarning: share } = room.limits;
104
+ if (this.documentBytes < limit * share) {
105
+ this.#warned = false;
106
+ return;
107
+ }
108
+ if (this.#warned)
109
+ return;
110
+ this.#warned = true;
111
+ room.log({ edytor: 'size', bytes: this.documentBytes, limit, share });
112
+ }
96
113
  /** The waiting deletes stored as `pending` records (the engine may hold more, in memory). */
97
114
  storedWaiting = Y.createIdSet();
98
115
  /**
@@ -101,13 +118,13 @@ export class RoomStorage {
101
118
  * would write is closed before it is applied, so an outage rebuilds once.
102
119
  */
103
120
  outage = null;
104
- nextRecord = 0;
121
+ #nextRecord = 0;
105
122
  /** The snapshot compression in flight (`compressed()`). */
106
- compressing = Promise.resolve();
123
+ #compressing = Promise.resolve();
107
124
  /** The raw bytes of the compressed snapshot record (`records` reads it; only `start` can inflate). */
108
125
  inflated = null;
109
126
  /** Alarms in a row that found the rows unreadable: each re-arms later. */
110
- saveRetries = 0;
127
+ #saveRetries = 0;
111
128
  constructor(room) {
112
129
  this.room = room;
113
130
  }
@@ -271,7 +288,7 @@ export class RoomStorage {
271
288
  room.live?.destroy();
272
289
  this.adopt(doc);
273
290
  this.storedWaiting = waiting;
274
- this.compressLater(record, snapshot);
291
+ this.#compressLater(record, snapshot);
275
292
  });
276
293
  }
277
294
  /**
@@ -310,7 +327,7 @@ export class RoomStorage {
310
327
  )`);
311
328
  room.scheduler.readDues();
312
329
  room.history.loadRestore();
313
- this.nextRecord = 0;
330
+ this.#nextRecord = 0;
314
331
  records = this.records();
315
332
  }
316
333
  catch (error) {
@@ -327,17 +344,14 @@ export class RoomStorage {
327
344
  }
328
345
  const [generation, ...rest] = records;
329
346
  const found = JSON.parse(new TextDecoder().decode(generation.bytes));
330
- // A container of generation 4 converts through its JSON (`room.generation.convert`).
331
- if (generation.kind === 'generation' && E.isPreviousGenerationRecord(found)) {
332
- return this.convert(rest);
333
- }
334
347
  if (generation.kind !== 'generation' || !isGenerationRecord(found)) {
335
348
  throw new E.GenerationMismatchError(`room ${room.ctx.id}`, found);
336
349
  }
337
350
  // Applied in one transaction, never merged first: a merge of the
338
351
  // records keeps every keystroke's struct and the deleted content.
339
- 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);
340
353
  this.documentBytes = rest.reduce((n, record) => n + record.bytes.length, 0);
354
+ this.watch();
341
355
  this.adopt(doc);
342
356
  // Every delete the engine holds waiting came from the rows.
343
357
  this.storedWaiting = pendingDeletes(doc);
@@ -348,58 +362,6 @@ export class RoomStorage {
348
362
  this.fail(error, false);
349
363
  }
350
364
  }
351
- /**
352
- * The generation cutover at load (`room.generation.convert`): the
353
- * records of a generation-4 container are read as JSON
354
- * (`crdt.generations.previousJSON`), which this generation seeds as
355
- * `onLoad`'s JSON is (deterministic: every replica converting the same
356
- * state writes the same update), and the container is replaced by it in
357
- * one storage transaction: rows, replicas, purge epochs, slot editors
358
- * and the stored restore go; the document data, the alarm's due tasks
359
- * and `lastUpdated` stay. What a generation-4 client never sent is not
360
- * in it; history, attribution and CRDT identity do not cross.
361
- */
362
- convert(records) {
363
- const room = this.room;
364
- const { sql, tables } = room;
365
- const json = crdt.generations.previousJSON(records.map((record) => (record.v2 ? { v2: record.bytes } : record.bytes)), (doc) => room.facadeOf(doc));
366
- const scratch = crdt.createDoc();
367
- const facade = room.facadeOf(scratch);
368
- facade.seed(json.children, json.data);
369
- facade.dispose();
370
- const update = Y.encodeStateAsUpdate(scratch);
371
- scratch.destroy();
372
- const doc = admit(update, `room ${room.ctx.id} conversion`, () => room.history.restoreKeep);
373
- const snapshot = liveState(doc);
374
- room.ctx.storage.transactionSync(() => {
375
- for (const table of [
376
- tables.rows,
377
- tables.replicas,
378
- tables.epochs,
379
- tables.editors,
380
- tables.restore
381
- ])
382
- sql.exec(`DELETE FROM ${table}`);
383
- this.nextRecord = 0;
384
- this.insert('snapshot', snapshot);
385
- this.touch();
386
- for (const replica of stateVector(doc).keys())
387
- sql.exec(`INSERT OR IGNORE INTO ${tables.replicas} (replica, user) VALUES (?, '')`, replica);
388
- });
389
- room.history.clearRestore();
390
- this.documentBytes = snapshot.length;
391
- this.updates = 0;
392
- this.storedWaiting = Y.createIdSet();
393
- this.adopt(doc);
394
- room.state.origin = { kind: 'converted', from: E.PREVIOUS_SCHEMA, records: records.length };
395
- room.log({
396
- edytor: 'convert',
397
- from: E.PREVIOUS_SCHEMA,
398
- to: E.SCHEMA_VERSION,
399
- blocks: countBlocks(json.children),
400
- bytes: snapshot.length
401
- });
402
- }
403
365
  /** The bytes of the stored `pending` records (uncompressed, as every record but a snapshot). */
404
366
  pendingBytes() {
405
367
  return (this.room.sql
@@ -408,35 +370,21 @@ export class RoomStorage {
408
370
  }
409
371
  /**
410
372
  * Reassembled logical records in write order (of one kind, with
411
- * `only`); a torn record throws. A v2 container's snapshot is v2
412
- * (`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).
413
375
  */
414
376
  records(only) {
415
377
  const rows = this.room.sql
416
378
  .exec(`SELECT kind, record, part, parts, bytes FROM ${this.room.tables.rows}${only ? ' WHERE kind = ?' : ''} ORDER BY seq`, ...(only ? [only] : []))
417
379
  .toArray();
418
380
  for (const row of rows)
419
- this.nextRecord = Math.max(this.nextRecord, row.record + 1);
420
- const records = reassemble(rows);
421
- // The container's storage format, from its generation record.
422
- let format = 'v1';
423
- if (records[0]?.kind === 'generation') {
424
- try {
425
- const found = JSON.parse(new TextDecoder().decode(records[0].bytes));
426
- if (isGenerationRecord(found) || E.isPreviousGenerationRecord(found))
427
- format = storageOf(found);
428
- }
429
- catch {
430
- // `load` refuses it
431
- }
432
- }
433
- return records.map((record) => {
434
- const v2 = format === 'v2' && record.kind === 'snapshot';
435
- if (!v2 || !isGzip(record.bytes))
436
- 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;
437
385
  if (this.inflated?.record !== record.record)
438
386
  throw new CompressedRecord();
439
- return { ...record, bytes: this.inflated.bytes, v2 };
387
+ return { ...record, bytes: this.inflated.bytes };
440
388
  });
441
389
  }
442
390
  /**
@@ -445,17 +393,19 @@ export class RoomStorage {
445
393
  * generation record with it.
446
394
  */
447
395
  insert(kind, bytes) {
448
- if (this.nextRecord === 0 && kind !== 'generation') {
449
- this.insert('generation', encodeJSON(STORED_GENERATION_RECORD));
396
+ if (this.#nextRecord === 0 && kind !== 'generation') {
397
+ this.insert('generation', encodeJSON(GENERATION_RECORD));
450
398
  }
451
- const record = this.nextRecord++;
452
- this.writeRecord(kind, record, bytes);
453
- if (kind !== 'generation')
399
+ const record = this.#nextRecord++;
400
+ this.#writeRecord(kind, record, bytes);
401
+ if (kind !== 'generation') {
454
402
  this.documentBytes += bytes.length;
403
+ this.watch();
404
+ }
455
405
  return record;
456
406
  }
457
407
  /** Record `record`'s rows (at the row positions `seqs`, when given). */
458
- writeRecord(kind, record, bytes, seqs) {
408
+ #writeRecord(kind, record, bytes, seqs) {
459
409
  const { sql, tables, limits } = this.room;
460
410
  const parts = Math.max(1, Math.ceil(bytes.length / limits.maxRowBytes));
461
411
  for (let part = 0; part < parts; part++) {
@@ -473,10 +423,9 @@ export class RoomStorage {
473
423
  * asynchronous, and the store-before-ack path is not. Its rows are
474
424
  * rewritten (at their positions) only while it is still the stored
475
425
  * snapshot and only when that shrinks it; the raw bytes stay in memory
476
- * (`inflated`) for a rebuild's synchronous read. A platform without
477
- * `CompressionStream` keeps it raw.
426
+ * (`inflated`) for a rebuild's synchronous read.
478
427
  */
479
- compressLater(record, raw) {
428
+ #compressLater(record, raw) {
480
429
  const room = this.room;
481
430
  const job = packed(raw)
482
431
  .then((bytes) => noTimers(() => {
@@ -490,17 +439,17 @@ export class RoomStorage {
490
439
  return;
491
440
  room.ctx.storage.transactionSync(() => {
492
441
  room.sql.exec(`DELETE FROM ${room.tables.rows} WHERE record = ?`, record);
493
- this.writeRecord('snapshot', record, bytes, rows.map((row) => row.seq));
442
+ this.#writeRecord('snapshot', record, bytes, rows.map((row) => row.seq));
494
443
  });
495
444
  this.inflated = { record, bytes: raw.slice() };
496
445
  }))
497
446
  .catch((error) => room.note({ reason: 'storage', detail: `compression: ${String(error)}` }));
498
- this.compressing = job;
447
+ this.#compressing = job;
499
448
  room.ctx.waitUntil?.(job);
500
449
  }
501
450
  /** Resolves once the snapshot compression in flight, if any, is stored. */
502
451
  async compressed() {
503
- await this.compressing;
452
+ await this.#compressing;
504
453
  }
505
454
  /** Compaction (`AttachedDocument.compact`). */
506
455
  compact() {
@@ -527,7 +476,7 @@ export class RoomStorage {
527
476
  .map(({ replica }) => replica);
528
477
  const known = new Set([...registered, ...sockets]);
529
478
  // Waiting deletes stay apart (a discarded forgery drops them,
530
- // `settleDeletes`): the stored ones the engine still holds waiting.
479
+ // `#settleDeletes`): the stored ones the engine still holds waiting.
531
480
  const all = pendingDeletes(doc);
532
481
  const stored = storedPending(pending);
533
482
  const waiting = Y.diffIdSet(stored, Y.diffIdSet(stored, all));
@@ -540,8 +489,7 @@ export class RoomStorage {
540
489
  room.ctx.storage.transactionSync(() => {
541
490
  sql.exec(`DELETE FROM ${tables.rows}`);
542
491
  this.documentBytes = 0;
543
- // The container is now this build's format (a v1 one migrates here).
544
- this.insert('generation', encodeJSON(STORED_GENERATION_RECORD));
492
+ this.insert('generation', encodeJSON(GENERATION_RECORD));
545
493
  record = this.insert('snapshot', snapshot);
546
494
  if (!still.isEmpty())
547
495
  this.insert('pending', deletesUpdate(still));
@@ -558,7 +506,7 @@ export class RoomStorage {
558
506
  }
559
507
  this.updates = 0;
560
508
  this.storedWaiting = still;
561
- this.compressLater(record, snapshot);
509
+ this.#compressLater(record, snapshot);
562
510
  // Unknown ids' deletes go, the ones waiting in memory with a rewrite too.
563
511
  forgetWaiting(doc, addIds(Y.createIdSet(), all, (client) => !known.has(client)));
564
512
  const rows = sql.exec(`SELECT COUNT(*) AS n FROM ${tables.rows}`).one().n;
@@ -755,10 +703,10 @@ export class RoomStorage {
755
703
  if (room.live === null) {
756
704
  if (!this.retryable)
757
705
  return scheduler.unschedule('save');
758
- 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);
759
707
  return scheduler.schedule('save', room.clock() + wait, 'replace');
760
708
  }
761
- this.saveRetries = 0;
709
+ this.#saveRetries = 0;
762
710
  const due = scheduler.due('save');
763
711
  // Cleared first: a change during `onSave` arms the next one.
764
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
  }