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
@@ -13,8 +13,8 @@ export const bindProviders = (Y) => {
13
13
  provider.on('failed', failed);
14
14
  return () => provider.destroy();
15
15
  }, { bound: Infinity, target: `indexeddb:${name}` });
16
- /** A document stored only here: a generation-4 store of `name` converts into it (the cutover). */
17
- const createIndexeddbSync = (name) => localSync(name, { convertPrevious: true });
16
+ /** A document stored only here. */
17
+ const createIndexeddbSync = (name) => localSync(name);
18
18
  /**
19
19
  * The socket, and by default a local store beside it. The store is its
20
20
  * own provider on the document (`attach`), so the document's readiness
@@ -107,116 +107,7 @@ export const bindProviders = (Y) => {
107
107
  };
108
108
  return Object.assign(sync, { bound: Infinity, target: `websocket:${room}`, persistName });
109
109
  };
110
- /**
111
- * `[serverUrl (no trailing slash), room]` of a target, the room id checked.
112
- * The target is `{ server, room }`; the names before them are refused, in
113
- * a message that names the `caller` it was passed to.
114
- */
115
- const targetOf = (caller, options) => {
116
- const { server, room } = options;
117
- if (typeof server !== 'string' || typeof room !== 'string')
118
- throw new TypeError(`${caller}: the target is \`server\` and \`room\` (\`serverUrl\` and \`roomName\` are gone)`);
119
- assertRoomId(room);
120
- return [server.replace(/\/+$/, ''), room];
121
- };
122
- /**
123
- * Keep a document fresh without opening it: load its local store
124
- * (the one `createWebsocketSync` keeps, `edytor:<server>/<room>` unless
125
- * `persistName` names another), dial the room once, take what it lacks
126
- * and hand it what the store holds that the room lacks, wait until the
127
- * room stored it, then close. Resolves with whether the room sent
128
- * anything new; rejects with the room's refusal (`SyncRefusedError`),
129
- * after `timeout`, or where there is no IndexedDB.
130
- */
131
- const prefetch = (options) => {
132
- const [serverUrl, room] = targetOf('prefetch', options);
133
- if (typeof indexedDB === 'undefined') {
134
- return Promise.reject(new TypeError('prefetch needs IndexedDB to keep the document'));
135
- }
136
- const doc = keepingReplaced(new Y.Doc());
137
- const local = new idb.IndexeddbPersistence(options.persistName ?? `edytor:${serverUrl}/${room}`, doc, { disableBc: true });
138
- let socket = null;
139
- /** Prefetch's one timer: its deadline (`timeout`), cleared when it closes. */
140
- let deadline;
141
- const close = async () => {
142
- clearTimeout(deadline);
143
- socket?.destroy();
144
- await local.destroy();
145
- doc.destroy();
146
- };
147
- return new Promise((resolve, reject) => {
148
- const fail = (error) => void close().then(() => reject(error));
149
- deadline = setTimeout(() => fail(new Error(`prefetch of ${room} timed out`)), options.timeout ?? 30_000);
150
- local.whenSynced.then(() => {
151
- const before = Y.encodeStateVector(doc);
152
- const provider = (socket = new ws.WebsocketProvider(serverUrl, room, doc, {
153
- params: options.params,
154
- WebSocketPolyfill: options.WebSocketPolyfill,
155
- maxBackoffTime: options.maxBackoffTime,
156
- connectTimeout: options.connectTimeout,
157
- maxFrameBytes: options.maxFrameBytes,
158
- disableBc: true
159
- }));
160
- // A prefetch is nobody's presence.
161
- provider.awareness.setLocalState(null);
162
- const done = () => {
163
- if (!provider.synced || !provider.saved)
164
- return;
165
- const after = Y.encodeStateVector(doc);
166
- const updated = after.length !== before.length || after.some((b, i) => b !== before[i]);
167
- void close().then(() => resolve({ updated }));
168
- };
169
- provider.on('synced', done);
170
- provider.on('saved', done);
171
- provider.on('refused', (refusal) => fail(refusal));
172
- done();
173
- }, fail);
174
- });
175
- };
176
- /**
177
- * When the room last stored a change (ms since the epoch), or `null`:
178
- * one authorized HTTP `GET <server>/<room>?lastUpdated`, which
179
- * `routeDocumentSocket` answers without opening the document. Compare
180
- * it with when a document was last fetched to decide whether to
181
- * `prefetch` it. Throws on an HTTP error (`403` refused, `401` expired).
182
- */
183
- const lastUpdated = async (options) => {
184
- const [serverUrl, room] = targetOf('lastUpdated', options);
185
- const url = new URL(`${serverUrl.replace(/^ws/, 'http')}/${encodeURIComponent(room)}`);
186
- for (const [key, value] of Object.entries(options.params ?? {}))
187
- url.searchParams.set(key, value);
188
- url.searchParams.set('lastUpdated', '1');
189
- const response = await (options.fetch ?? fetch)(url.toString());
190
- if (!response.ok) {
191
- throw new Error(`lastUpdated of ${room}: ${response.status} ${await response.text()}`);
192
- }
193
- const { lastUpdated: at } = (await response.json());
194
- return typeof at === 'number' ? at : null;
195
- };
196
- /**
197
- * The room's document as JSON, or `null` when it stores nothing yet:
198
- * one authorized HTTP `GET <server>/<room>?snapshot`, which
199
- * `routeDocumentSocket` answers from the room's live document. Show it
200
- * while a view's own copy hydrates: `<Edytor snapshot>`. Throws on an
201
- * HTTP error (`403` refused, `401` expired).
202
- */
203
- const documentSnapshot = async (options) => {
204
- const [serverUrl, room] = targetOf('documentSnapshot', options);
205
- const url = new URL(`${serverUrl.replace(/^ws/, 'http')}/${encodeURIComponent(room)}`);
206
- for (const [key, value] of Object.entries(options.params ?? {}))
207
- url.searchParams.set(key, value);
208
- url.searchParams.set('snapshot', '1');
209
- const response = await (options.fetch ?? fetch)(url.toString());
210
- if (!response.ok) {
211
- throw new Error(`snapshot of ${room}: ${response.status} ${await response.text()}`);
212
- }
213
- const { lastUpdated: at, document } = (await response.json());
214
- return typeof at === 'number' ? document : null;
215
- };
216
110
  return {
217
- prefetch,
218
- lastUpdated,
219
- documentSnapshot,
220
111
  IndexeddbPersistence: idb.IndexeddbPersistence,
221
112
  WebsocketProvider: ws.WebsocketProvider,
222
113
  watchComments: ws.watchComments,
@@ -227,3 +118,107 @@ export const bindProviders = (Y) => {
227
118
  createWebsocketSync
228
119
  };
229
120
  };
121
+ /**
122
+ * `[serverUrl (no trailing slash), room]` of a target, the room id checked.
123
+ * The target is `{ server, room }`; the names before them are refused, in
124
+ * a message that names the `caller` it was passed to.
125
+ */
126
+ export const targetOf = (caller, options) => {
127
+ const { server, room } = options;
128
+ if (typeof server !== 'string' || typeof room !== 'string')
129
+ throw new TypeError(`${caller}: the target is \`server\` and \`room\``);
130
+ assertRoomId(room);
131
+ return [server.replace(/\/+$/, ''), room];
132
+ };
133
+ /**
134
+ * Keep a document fresh without opening it: load its local store
135
+ * (the one `createWebsocketSync` keeps, `edytor:<server>/<room>` unless
136
+ * `persistName` names another), dial the room once, take what it lacks
137
+ * and hand it what the store holds that the room lacks, wait until the
138
+ * room stored it, then close. Resolves with whether the room sent
139
+ * anything new; rejects with the room's refusal (`SyncRefusedError`),
140
+ * after `timeout`, or where there is no IndexedDB. Over the provider
141
+ * classes of `stack` (bound to `Y`).
142
+ */
143
+ export const prefetchWith = (Y, stack, options) => {
144
+ const [serverUrl, room] = targetOf('prefetch', options);
145
+ if (typeof indexedDB === 'undefined') {
146
+ return Promise.reject(new TypeError('prefetch needs IndexedDB to keep the document'));
147
+ }
148
+ const doc = keepingReplaced(new Y.Doc());
149
+ const local = new stack.IndexeddbPersistence(options.persistName ?? `edytor:${serverUrl}/${room}`, doc, { disableBc: true });
150
+ let socket = null;
151
+ /** Prefetch's one timer: its deadline (`timeout`), cleared when it closes. */
152
+ let deadline;
153
+ const close = async () => {
154
+ clearTimeout(deadline);
155
+ socket?.destroy();
156
+ await local.destroy();
157
+ doc.destroy();
158
+ };
159
+ return new Promise((resolve, reject) => {
160
+ const fail = (error) => void close().then(() => reject(error));
161
+ deadline = setTimeout(() => fail(new Error(`prefetch of ${room} timed out`)), options.timeout ?? 30_000);
162
+ local.whenSynced.then(() => {
163
+ const before = Y.encodeStateVector(doc);
164
+ const provider = (socket = new stack.WebsocketProvider(serverUrl, room, doc, {
165
+ params: options.params,
166
+ WebSocketPolyfill: options.WebSocketPolyfill,
167
+ maxBackoffTime: options.maxBackoffTime,
168
+ connectTimeout: options.connectTimeout,
169
+ maxFrameBytes: options.maxFrameBytes,
170
+ disableBc: true
171
+ }));
172
+ // A prefetch is nobody's presence.
173
+ provider.awareness.setLocalState(null);
174
+ const done = () => {
175
+ if (!provider.synced || !provider.saved)
176
+ return;
177
+ const after = Y.encodeStateVector(doc);
178
+ const updated = after.length !== before.length || after.some((b, i) => b !== before[i]);
179
+ void close().then(() => resolve({ updated }));
180
+ };
181
+ provider.on('synced', done);
182
+ provider.on('saved', done);
183
+ provider.on('refused', (refusal) => fail(refusal));
184
+ done();
185
+ }, fail);
186
+ });
187
+ };
188
+ /**
189
+ * One authorized HTTP `GET <server>/<room>?<key>` (`lastUpdated`,
190
+ * `snapshot`), which `routeDocumentSocket` answers without a socket: its
191
+ * JSON. Throws on an HTTP error (`403` refused, `401` expired).
192
+ */
193
+ const query = async (caller, key, options) => {
194
+ const [serverUrl, room] = targetOf(caller, options);
195
+ const url = new URL(`${serverUrl.replace(/^ws/, 'http')}/${encodeURIComponent(room)}`);
196
+ for (const [name, value] of Object.entries(options.params ?? {}))
197
+ url.searchParams.set(name, value);
198
+ url.searchParams.set(key, '1');
199
+ const response = await (options.fetch ?? fetch)(url.toString());
200
+ if (!response.ok) {
201
+ throw new Error(`${key} of ${room}: ${response.status} ${await response.text()}`);
202
+ }
203
+ return (await response.json());
204
+ };
205
+ /**
206
+ * When the room last stored a change (ms since the epoch), or `null`:
207
+ * `?lastUpdated`, answered without opening the document. Compare it with
208
+ * when a document was last fetched to decide whether to `prefetch` it.
209
+ * Throws on an HTTP error (`403` refused, `401` expired).
210
+ */
211
+ export const lastUpdated = async (options) => {
212
+ const { lastUpdated: at } = await query('lastUpdated', 'lastUpdated', options);
213
+ return typeof at === 'number' ? at : null;
214
+ };
215
+ /**
216
+ * The room's document as JSON, or `null` when it stores nothing yet:
217
+ * `?snapshot`, answered from the room's live document. Show it while a
218
+ * view's own copy hydrates: `<Edytor snapshot>`. Throws on an HTTP error
219
+ * (`403` refused, `401` expired).
220
+ */
221
+ export const documentSnapshot = async (options) => {
222
+ const { lastUpdated: at, document } = await query('documentSnapshot', 'snapshot', options);
223
+ return typeof at === 'number' ? document : null;
224
+ };
@@ -16,16 +16,6 @@ export type IndexeddbPersistenceOptions = {
16
16
  awareness?: Awareness;
17
17
  /** Stay off the BroadcastChannel room (no cross-tab sync): storage only. */
18
18
  disableBc?: boolean;
19
- /**
20
- * Convert the generation-4 store of the same name (`edytor-v14:<name>`)
21
- * into this one when this one is empty (the generation cutover): its
22
- * visible document is read as JSON and seeded as this generation's.
23
- * For a document stored only here; a document a room keeps takes its
24
- * state from the room instead (two replicas seeding different
25
- * conversions of one document would collide). Default `false`;
26
- * `createIndexeddbSync` sets it.
27
- */
28
- convertPrevious?: boolean;
29
19
  };
30
20
  export type IndexeddbProvider = ReturnType<typeof bindIndexeddbProvider>;
31
21
  /** Instance type of the bound provider class. */
@@ -60,7 +50,7 @@ export declare const bindIndexeddbProvider: (Y: EngineApi) => {
60
50
  bcconnected: boolean;
61
51
  disableBc: boolean;
62
52
  _ownsAwareness: boolean;
63
- _bcSubscriber: (data: ArrayBuffer, origin: unknown) => void;
53
+ _bcSubscriber: (data: ArrayBuffer | Uint8Array, origin: unknown) => void;
64
54
  _awarenessUpdateHandler: (updates: {
65
55
  added: number[];
66
56
  updated: number[];
@@ -201,6 +191,6 @@ export declare const bindIndexeddbProvider: (Y: EngineApi) => {
201
191
  };
202
192
  };
203
193
  storeState: (idbPersistence: IdbPersistenceLike, forceStore?: boolean) => Promise<undefined>;
204
- clearDocument: (name: string) => Promise<any>;
194
+ clearDocument: (name: string) => Promise<void>;
205
195
  PREFERRED_TRIM_SIZE: number;
206
196
  };
@@ -5,8 +5,8 @@
5
5
  *
6
6
  * Semantics preserved from the v13 provider:
7
7
  *
8
- * - `updates` object store (auto-increment keys) holds raw V1 update rows
9
- * wrapped in a fresh ArrayBuffer (`container.ts`); `custom` holds the
8
+ * - `updates` object store (auto-increment keys) holds update rows, each
9
+ * in a fresh ArrayBuffer (`container.ts`); `custom` holds the
10
10
  * generation record.
11
11
  * - `PREFERRED_TRIM_SIZE = 500`: past it, a debounced `storeState` appends a
12
12
  * compacted `encodeStateAsUpdate` snapshot and deletes prior rows. Every
@@ -21,8 +21,8 @@
21
21
  *
22
22
  * The generation gate (see `protocols/envelope.ts`):
23
23
  *
24
- * - STORAGE: the database name is `edytor-v14-g5:<name>` (`edytor-v14:<name>` up to schema generation 4); legacy v13
25
- * databases (`<name>`) are never opened here. A `generation` record
24
+ * - STORAGE: the database name is `edytor-v14-g<schema>:<name>`; another
25
+ * generation's database is never opened here. A `generation` record
26
26
  * (engine, protocol, schema) in `custom` is written on creation and
27
27
  * verified before any row is applied — a container of another
28
28
  * generation fails the load; nothing inside a row is inspected.
@@ -34,64 +34,20 @@
34
34
  * The engine module is injected (`bindIndexeddbProvider(Y)`) — `src/lib`
35
35
  * never runtime-imports the vendored `.js`.
36
36
  */
37
- import * as idb from 'lib0-v14/indexeddb';
38
37
  import * as promise from 'lib0-v14/promise';
39
- import * as bc from 'lib0-v14/broadcastchannel';
40
38
  import * as encoding from 'lib0-v14/encoding';
41
39
  import { Awareness } from '../protocols/awareness.js';
42
40
  import { IsolatedObservable } from '../protocols/observable.js';
43
41
  import { bindSync } from '../protocols/sync.js';
44
- import { GENERATION_KEY, generationDbName, PREVIOUS_GENERATION_PREFIX, STORED_GENERATION_RECORD } from '../protocols/envelope.js';
45
- import { bindGenerations } from '../migration/generation.js';
46
- import { CUSTOM as customStoreName, encodeRow, openContainer, openIfExists, readRow, snapshotRow, UPDATES as updatesStoreName, verifyOrStamp } from './container.js';
47
- import { beginDestroy, bindRoomProtocol, emitFailed, initLifecycle, markSynced, quarantined } from './room.js';
42
+ import { generationDbName } from '../protocols/envelope.js';
43
+ import { CUSTOM as customStoreName, encodeRow, lastKey, openContainer, readRow, rtop, snapshotRow, storesOf, UPDATES as updatesStoreName, verifyOrStamp } from './container.js';
44
+ import { beginDestroy, bindRoomProtocol, tabs, emitFailed, initLifecycle, markSynced, quarantined } from './room.js';
48
45
  export const PREFERRED_TRIM_SIZE = 500;
49
46
  /**
50
47
  * Bind the IndexedDB persistence provider to the vendored v14 engine module.
51
48
  */
52
49
  export const bindIndexeddbProvider = (Y) => {
53
50
  const syncProtocol = bindSync(Y);
54
- const generations = bindGenerations(Y);
55
- /**
56
- * The generation cutover of a local store (`IndexeddbPersistenceOptions.convertPrevious`):
57
- * when `db` is empty and the generation-4 store of `name` exists, its
58
- * visible document is read as JSON and this generation's seed of it is
59
- * written as `db`'s first row, with the generation record, in one
60
- * transaction. The generation-4 store is left as it was.
61
- */
62
- const convertPrevious = async (name, db) => {
63
- const [updates, custom] = idb.transact(db, [updatesStoreName, customStoreName], 'readonly');
64
- // Both requests before either settles: one transaction.
65
- const reads = [idb.get(custom, GENERATION_KEY), idb.count(updates)];
66
- const found = await reads[0];
67
- if (found !== undefined || (await reads[1]) > 0)
68
- return;
69
- const old = await openIfExists(PREVIOUS_GENERATION_PREFIX + name);
70
- if (old === null)
71
- return;
72
- try {
73
- if (!old.objectStoreNames.contains(customStoreName))
74
- return;
75
- const [oldUpdates, oldCustom] = idb.transact(old, [updatesStoreName, customStoreName], 'readonly');
76
- const reads = [idb.get(oldCustom, GENERATION_KEY), idb.getAll(oldUpdates)];
77
- const record = await reads[0];
78
- const stored = await reads[1];
79
- if (!generations.isPreviousGenerationRecord(record))
80
- return;
81
- const rows = await promise.all(stored.map(readRow));
82
- if (rows.length === 0)
83
- return;
84
- const seed = generations.seedOf(generations.previousJSONWith(rows));
85
- const [newUpdates, newCustom] = idb.transact(db, [updatesStoreName, customStoreName]);
86
- await promise.all([
87
- idb.rtop(newCustom.put({ ...STORED_GENERATION_RECORD }, GENERATION_KEY)),
88
- idb.addAutoKey(newUpdates, encodeRow(seed))
89
- ]);
90
- }
91
- finally {
92
- old.close();
93
- }
94
- };
95
51
  /**
96
52
  * The shared room protocol — dispatch, the join rule, awareness
97
53
  * flow, BC subscriber + join/leave, the lifecycle. This provider keeps
@@ -112,17 +68,15 @@ export const bindIndexeddbProvider = (Y) => {
112
68
  */
113
69
  const fetchUpdates = (idbPersistence, beforeApplyUpdatesCallback = () => { }, afterApplyUpdatesCallback = () => { }) => {
114
70
  const db = idbPersistence.db;
115
- const [updatesStore, customStore] = idb.transact(db, [updatesStoreName, customStoreName]);
71
+ const [updatesStore, customStore] = storesOf(db, [updatesStoreName, customStoreName]);
116
72
  return verifyOrStamp(idbPersistence.name, updatesStore, customStore)
117
- .then(() => idb.getAll(updatesStore, idb.createIDBKeyRangeLowerBound(idbPersistence._dbref, false)))
73
+ .then(() => rtop(updatesStore.getAll(IDBKeyRange.lowerBound(idbPersistence._dbref, false))))
118
74
  .then((rows) => {
119
75
  // The pre-hydration state row is written before the last key is read.
120
76
  if (!idbPersistence._destroyed)
121
77
  beforeApplyUpdatesCallback(updatesStore);
122
- return promise
123
- .all([idb.getLastKey(updatesStore), idb.count(updatesStore)])
124
- .then(([lastKey, cnt]) => {
125
- idbPersistence._dbref = lastKey + 1;
78
+ return Promise.all([lastKey(updatesStore), rtop(updatesStore.count())]).then(([last, cnt]) => {
79
+ idbPersistence._dbref = Number(last) + 1;
126
80
  idbPersistence._dbsize = cnt;
127
81
  return promise.all(rows.map(readRow));
128
82
  });
@@ -131,20 +85,16 @@ export const bindIndexeddbProvider = (Y) => {
131
85
  if (idbPersistence._destroyed)
132
86
  return;
133
87
  Y.transact(idbPersistence.doc, () => {
134
- for (const update of updates) {
135
- if (update instanceof Uint8Array)
136
- Y.applyUpdate(idbPersistence.doc, update);
137
- else
138
- Y.applyUpdateV2(idbPersistence.doc, update.v2);
139
- }
88
+ for (const update of updates)
89
+ Y.applyUpdate(idbPersistence.doc, update);
140
90
  }, idbPersistence, false);
141
91
  afterApplyUpdatesCallback();
142
92
  });
143
93
  };
144
- /** One transaction: the snapshot row, the rows below `below` deleted, the record stamped `'v2'`. */
94
+ /** One transaction: the snapshot row, the rows below `below` deleted. */
145
95
  const writeSnapshot = (idbPersistence, row, below) => {
146
96
  const db = idbPersistence.db;
147
- const [updatesStore, customStore] = idb.transact(db, [updatesStoreName, customStoreName]);
97
+ const [updatesStore] = storesOf(db, [updatesStoreName]);
148
98
  // Track transaction commit: listeners attach while it is still active.
149
99
  const tx = updatesStore.transaction;
150
100
  const transactionDone = promise.create((resolve, reject) => {
@@ -153,12 +103,9 @@ export const bindIndexeddbProvider = (Y) => {
153
103
  });
154
104
  return promise
155
105
  .all([
156
- idb
157
- // A structured-clone object row (lib0 types rows as binary).
158
- .addAutoKey(updatesStore, row)
159
- .then(() => idb.del(updatesStore, idb.createIDBKeyRangeUpperBound(below, true)))
160
- .then(() => idb.rtop(customStore.put({ ...STORED_GENERATION_RECORD }, GENERATION_KEY)))
161
- .then(() => idb.count(updatesStore).then((cnt) => {
106
+ rtop(updatesStore.add(row))
107
+ .then(() => rtop(updatesStore.delete(IDBKeyRange.upperBound(below, true))))
108
+ .then(() => rtop(updatesStore.count()).then((cnt) => {
162
109
  idbPersistence._dbsize = cnt;
163
110
  })),
164
111
  transactionDone
@@ -168,9 +115,8 @@ export const bindIndexeddbProvider = (Y) => {
168
115
  /**
169
116
  * Persist the current state: fetch pending rows, then (when `forceStore`
170
117
  * or past `PREFERRED_TRIM_SIZE`) append a compacted snapshot and delete
171
- * the rows it subsumes. The snapshot is v2, gzip-compressed where the
172
- * platform can, and the container's generation record is stamped
173
- * with its storage format in the same transaction.
118
+ * the rows it subsumes. The snapshot is gzip-compressed where the
119
+ * platform can and that makes it smaller.
174
120
  *
175
121
  * Every applied row is represented in the snapshot, so deleting
176
122
  * `key < _dbref` (read before the snapshot is compressed: rows stored
@@ -195,13 +141,13 @@ export const bindIndexeddbProvider = (Y) => {
195
141
  return undefined;
196
142
  }
197
143
  const below = idbPersistence._dbref;
198
- return snapshotRow(Y.encodeStateAsUpdateV2(idbPersistence.doc)).then((row) => idbPersistence._destroyed ? undefined : writeSnapshot(idbPersistence, row, below));
144
+ return snapshotRow(Y.encodeStateAsUpdate(idbPersistence.doc)).then((row) => idbPersistence._destroyed ? undefined : writeSnapshot(idbPersistence, row, below));
199
145
  });
200
146
  /**
201
- * Delete a v14 generation database by LOGICAL name (the `edytor-v14-g5:`
202
- * prefix is applied here; a generation-4 store, `edytor-v14:`, is left). Never touches the legacy v13 database.
147
+ * Delete this generation's database by LOGICAL name (the generation
148
+ * prefix is applied here; another generation's store is left).
203
149
  */
204
- const clearDocument = (name) => idb.deleteDB(generationDbName(name));
150
+ const clearDocument = (name) => rtop(indexedDB.deleteDatabase(generationDbName(name))).then(() => undefined);
205
151
  /**
206
152
  * Each provider's doc-`destroy` listener: it ends the provider (it never
207
153
  * rejects: the close is caught). Kept off the class, so it is not part
@@ -247,12 +193,7 @@ export const bindIndexeddbProvider = (Y) => {
247
193
  this.awareness = options.awareness ?? new Awareness(doc);
248
194
  this._ownsAwareness = !options.awareness;
249
195
  this.disableBc = options.disableBc === true;
250
- this._db = openContainer(this.dbName).then((db) => options.convertPrevious === true
251
- ? convertPrevious(name, db).then(() => db, (error) => {
252
- db.close();
253
- throw error;
254
- })
255
- : db);
196
+ this._db = openContainer(this.dbName);
256
197
  this.destroy = this.destroy.bind(this);
257
198
  initLifecycle(this, this.destroy, () => room.depart(this));
258
199
  this._bcSubscriber = room.bcSubscriber(this);
@@ -275,9 +216,7 @@ export const bindIndexeddbProvider = (Y) => {
275
216
  // A read-only doc's pre-hydration state is never persisted.
276
217
  const beforeApplyUpdatesCallback = (updatesStore) => {
277
218
  if (!quarantined(doc)) {
278
- idb
279
- .addAutoKey(updatesStore, encodeRow(Y.encodeStateAsUpdate(doc)))
280
- .catch((error) => this.emit('message-error', [error, this]));
219
+ rtop(updatesStore.add(encodeRow(Y.encodeStateAsUpdate(doc)))).catch((error) => this.emit('message-error', [error, this]));
281
220
  }
282
221
  };
283
222
  // Hydrated: join the room and claim `synced` (lifetime).
@@ -311,10 +250,10 @@ export const bindIndexeddbProvider = (Y) => {
311
250
  return;
312
251
  if (this.db) {
313
252
  try {
314
- const [updatesStore] = idb.transact(this.db, [updatesStoreName]);
253
+ const [updatesStore] = storesOf(this.db, [updatesStoreName]);
315
254
  // Storage failures must surface — never an unobserved
316
255
  // rejection (the error channel observes every failure mode).
317
- idb.addAutoKey(updatesStore, encodeRow(update)).catch((error) => {
256
+ rtop(updatesStore.add(encodeRow(update))).catch((error) => {
318
257
  this.emit('message-error', [error, this]);
319
258
  });
320
259
  if (++this._dbsize >= PREFERRED_TRIM_SIZE) {
@@ -362,7 +301,7 @@ export const bindIndexeddbProvider = (Y) => {
362
301
  readMessage = (buf, emitSynced) => room.readMessage(this, buf, emitSynced);
363
302
  broadcastMessage(buf) {
364
303
  if (this.bcconnected) {
365
- bc.publish(this.dbName, buf, this);
304
+ tabs.publish(this.dbName, buf, this);
366
305
  }
367
306
  }
368
307
  /** Join the BC room (after hydration; again after `disconnectBc`). */
@@ -1,3 +1,46 @@
1
+ /**
2
+ * Room protocol — the transport-agnostic half of the two providers.
3
+ *
4
+ * Both providers speak the same enveloped protocol
5
+ * (`protocols/envelope.ts`) — the IndexedDB provider on one
6
+ * BroadcastChannel room per document, the websocket provider on its
7
+ * socket plus the same BroadcastChannel room (cross-tab, on by default): the generation word,
8
+ * the message-type dispatch, the sync handler, and the awareness
9
+ * publish/query flow are identical between them — this module is their
10
+ * ONE owner. It owns:
11
+ *
12
+ * - the two schema rules that bytes of a proven generation
13
+ * still need: the inbound refusal of an update that writes a foreign
14
+ * schema stamp (reported, never integrated), and the outbound quarantine
15
+ * of a read-only document (it answers no state request, publishes no
16
+ * update);
17
+ * - ONE join rule, derived from state vectors, identical on the socket and
18
+ * the BroadcastChannel and correct behind an opaque relay: joining
19
+ * sends a hello (Step1 + presence); a Step1 is answered with a Step2 and,
20
+ * when the asker holds anything we lack, with our own Step1. Once two
21
+ * replicas have each received one Step1 from the other, each holds the
22
+ * other's state — no periodic resync is needed for that;
23
+ * - the provider lifecycle: `hasSynced` (lifetime) apart from a
24
+ * transport's `connected`/`synced` (transient), the terminal `failed`
25
+ * (once, never after `hasSynced`), `whenSynced`, the destroy guard, and
26
+ * the departure announcement (leaving the page destroys the provider,
27
+ * which announces its presence removal on every transport it speaks).
28
+ *
29
+ * `bindRoomProtocol(syncProtocol, behavior)` is bound once per provider
30
+ * class; the returned handle takes the provider instance on every call.
31
+ * Real per-provider differences stay in the behavior hooks:
32
+ *
33
+ * - `broadcast` — ws sends room traffic on its socket and the BC channel;
34
+ * idb's on the BC channel (`roomChannel`).
35
+ * - `tabOrigin` — ws applies an update heard from another tab under its own
36
+ * origin, so it can relay that update to the server (idb skips it: the
37
+ * other tab stored it in the same database).
38
+ * - `heard` — ws claims its connection's `synced` when it holds a member's
39
+ * state (an applied Step2, or a Step1 it covers, received on the
40
+ * socket); idb's `synced` is its local-hydration claim.
41
+ * - `handlers` — ws adds `messageAuth` (the auth reply exists only on a
42
+ * server socket — a BC room has no authority to deny).
43
+ */
1
44
  import * as encoding from 'lib0-v14/encoding';
2
45
  import * as decoding from 'lib0-v14/decoding';
3
46
  import { type Awareness, type AwarenessUpdate } from '../protocols/awareness.js';
@@ -69,6 +112,18 @@ export type SchemaMismatchDetail = {
69
112
  docName: string;
70
113
  problem: SchemaProblem;
71
114
  };
115
+ /** A tab channel's subscriber: the bytes and who published them (`null`: another tab). */
116
+ type TabSubscriber = (data: ArrayBuffer | Uint8Array, origin: unknown) => void;
117
+ /**
118
+ * The tabs of one browser, by room name: one `BroadcastChannel` per room,
119
+ * shared by this tab's subscribers. A publish reaches the other tabs and,
120
+ * at once, this tab's other subscribers (with the publisher as origin).
121
+ */
122
+ export declare const tabs: {
123
+ subscribe: (room: string, f: TabSubscriber) => void;
124
+ unsubscribe: (room: string, f: TabSubscriber) => void;
125
+ publish: (room: string, data: Uint8Array | ArrayBuffer, origin?: unknown) => void;
126
+ };
72
127
  /** The outbound quarantine: a read-only document does not spread. */
73
128
  export declare const quarantined: (doc: YDoc) => boolean;
74
129
  /** The lifecycle a provider carries — installed by {@link initLifecycle}. */
@@ -189,7 +244,7 @@ export type RoomProvider<P> = LifecycleHost & {
189
244
  /** A provider that joins the BroadcastChannel room. */
190
245
  export type BcMember = {
191
246
  bcconnected: boolean;
192
- _bcSubscriber: (data: ArrayBuffer, origin: unknown) => void;
247
+ _bcSubscriber: (data: ArrayBuffer | Uint8Array, origin: unknown) => void;
193
248
  };
194
249
  /** Per-provider hooks — the real differences between the two transports. */
195
250
  export type RoomBehavior<P> = {
@@ -220,7 +275,7 @@ export type RoomBehavior<P> = {
220
275
  export declare const bindRoomProtocol: <P extends RoomProvider<P>>(syncProtocol: SyncProtocol, behavior: RoomBehavior<P>) => {
221
276
  messageHandlers: Record<number, RoomMessageHandler<P>>;
222
277
  readMessage: (provider: P, buf: Uint8Array, emitSynced: boolean, send?: (frame: Uint8Array) => void) => encoding.Encoder;
223
- bcSubscriber: (provider: P) => (data: ArrayBuffer, origin: unknown) => void;
278
+ bcSubscriber: (provider: P) => (data: ArrayBuffer | Uint8Array, origin: unknown) => void;
224
279
  awarenessUpdateHandler: (provider: P) => ({ added, updated, removed }: AwarenessUpdate, origin: unknown) => void;
225
280
  broadcastUpdate: (provider: P, update: Uint8Array, via?: (provider: P, buf: Uint8Array) => void) => void;
226
281
  step1: (provider: P) => Uint8Array<ArrayBufferLike>;
@@ -229,3 +284,4 @@ export declare const bindRoomProtocol: <P extends RoomProvider<P>>(syncProtocol:
229
284
  connectBc: (provider: P & BcMember) => void;
230
285
  disconnectBc: (provider: P & BcMember) => void;
231
286
  };
287
+ export {};