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
@@ -69,11 +69,7 @@ export declare const encodeRank: (segs: readonly RankSeg[]) => string;
69
69
  * strictly-between key always exist (modulo the documented VMIN bound).
70
70
  */
71
71
  export declare const rankBetween: (left: string | undefined, right: string | undefined, clientId: number, rand?: () => number, compact?: boolean) => string;
72
- /**
73
- * The digit of the run marker data arrays wrote up to 0.1.0-next.21 (a run
74
- * of that form is the marker segment, then ranks of the client's own): still
75
- * read as a run, so what a client inserts there stays in it.
76
- */
72
+ /** The base of the run band: a run member's digit lies just above it. */
77
73
  export declare const RANK_RUN: number;
78
74
  /**
79
75
  * A rank in `(left, right)` for an insert right after `left` — one rule for
@@ -66,6 +66,10 @@ export class RankSpaceExhausted extends Error {
66
66
  this.name = 'RankSpaceExhausted';
67
67
  }
68
68
  }
69
+ /** A rank this module cannot encode, a malformed rank, or bounds out of order (a caller's error). */
70
+ const bad = (what) => {
71
+ throw new Error(`rank: ${what}`);
72
+ };
69
73
  /** `n` (≥ 0) as exactly `width` base-64 places. */
70
74
  const places = (n, width) => {
71
75
  let out = '';
@@ -74,7 +78,7 @@ const places = (n, width) => {
74
78
  n = Math.floor(n / BASE);
75
79
  }
76
80
  if (n > 0)
77
- throw new Error(`rank encode overflow: value exceeds ${width} places`);
81
+ bad('overflow');
78
82
  return out;
79
83
  };
80
84
  /** How many base-64 places `m` (≥ 1) takes. */
@@ -87,13 +91,13 @@ const width = (m) => {
87
91
  /** A signed integer as a self-delimiting, order-preserving string. */
88
92
  const encInt = (v) => {
89
93
  if (!Number.isSafeInteger(v))
90
- throw new Error(`rank encode: bad digit ${v}`);
94
+ bad('digit');
91
95
  if (v === 0)
92
96
  return 'H';
93
97
  const m = Math.abs(v);
94
98
  const k = width(m);
95
99
  if (k > MAX_PLACES)
96
- throw new Error(`rank encode overflow: ${v}`);
100
+ bad('overflow');
97
101
  if (v > 0)
98
102
  return String.fromCharCode(ZERO + k) + places(m, k);
99
103
  // Complemented: a greater magnitude sorts first.
@@ -102,16 +106,14 @@ const encInt = (v) => {
102
106
  /** The integer at `s[i]`, and where it ends. */
103
107
  const decInt = (s, i) => {
104
108
  const k = s.charCodeAt(i) - ZERO;
105
- if (Number.isNaN(k) || Math.abs(k) > MAX_PLACES)
106
- throw new Error(`rank decode: bad length at ${i}`);
107
109
  const n = Math.abs(k);
108
- if (i + 1 + n > s.length)
109
- throw new Error(`rank decode: truncated at ${i}`);
110
+ if (Number.isNaN(k) || n > MAX_PLACES || i + 1 + n > s.length)
111
+ bad('malformed');
110
112
  let x = 0;
111
113
  for (let j = i + 1; j <= i + n; j++) {
112
114
  const d = ALPHABET.indexOf(s[j]);
113
115
  if (d < 0)
114
- throw new Error(`rank decode: bad char ${s[j]}`);
116
+ bad('malformed');
115
117
  x = x * BASE + d;
116
118
  }
117
119
  const v = k === 0 ? 0 : k > 0 ? x : -(BASE ** n - 1 - x);
@@ -120,7 +122,7 @@ const decInt = (s, i) => {
120
122
  /** Decode a rank string into its segment array (`t: Infinity` where a segment has no tie). */
121
123
  export const decodeRank = (rank) => {
122
124
  if (rank.length === 0)
123
- throw new Error('rank decode: empty');
125
+ bad('malformed');
124
126
  const segs = [];
125
127
  for (let i = 0; i < rank.length;) {
126
128
  const [v, j] = decInt(rank, i);
@@ -131,7 +133,7 @@ export const decodeRank = (rank) => {
131
133
  segs.push({ v, t });
132
134
  }
133
135
  if (segs[segs.length - 1].t === Infinity)
134
- throw new Error('rank decode: untied last segment');
136
+ bad('malformed');
135
137
  return segs;
136
138
  };
137
139
  /** Encode segments back to the persisted string form. */
@@ -139,7 +141,7 @@ export const encodeRank = (segs) => {
139
141
  let out = '';
140
142
  for (const { v, t } of segs) {
141
143
  if (v < RANK_VMIN || v > RANK_VMAX)
142
- throw new Error(`rank encode overflow: digit ${v}`);
144
+ bad('overflow');
143
145
  out += encInt(v);
144
146
  if (t !== Infinity)
145
147
  out += TIE + encInt(t);
@@ -170,9 +172,8 @@ const APPEND_WINDOW = 2 ** 16;
170
172
  export const rankBetween = (left, right, clientId, rand = Math.random, compact = true) => {
171
173
  const L = left === undefined ? [] : decodeRank(left);
172
174
  const R = right === undefined ? [] : decodeRank(right);
173
- if (left !== undefined && right !== undefined && left >= right) {
174
- throw new Error(`rankBetween: left >= right (${left} !< ${right})`);
175
- }
175
+ if (left !== undefined && right !== undefined && left >= right)
176
+ bad('left >= right');
176
177
  const rightOpen = right === undefined;
177
178
  const path = [];
178
179
  // `locked`: the emitted prefix already sorts below the right bound.
@@ -209,9 +210,8 @@ export const rankBetween = (left, right, clientId, rand = Math.random, compact =
209
210
  // Right bound ended while left continues: valid only when `locked`
210
211
  // already holds (an earlier copied segment was < the right's). If not,
211
212
  // right is a proper prefix of left — i.e. right < left, caller error.
212
- if (!rightOpen && !locked) {
213
- throw new Error(`rankBetween: right bound is a prefix of left (right < left)`);
214
- }
213
+ if (!rightOpen && !locked)
214
+ bad('left >= right');
215
215
  // No right bound at this level (open, or `locked` below it): emit
216
216
  // within the bounded append window — dense growth, and one more
217
217
  // level per exhausted gap, not one per insert (SW12-crdt-2).
@@ -254,16 +254,12 @@ export const rankBetween = (left, right, clientId, rand = Math.random, compact =
254
254
  else if (c > 0 && !locked) {
255
255
  // Never locked and left's segment exceeds right's at the first
256
256
  // differing level → left > right (invalid bounds — caller error).
257
- throw new Error(`rankBetween: left >= right at level ${i}`);
257
+ bad('left >= right');
258
258
  }
259
259
  path.push(lSeg);
260
260
  }
261
261
  };
262
- /**
263
- * The digit of the run marker data arrays wrote up to 0.1.0-next.21 (a run
264
- * of that form is the marker segment, then ranks of the client's own): still
265
- * read as a run, so what a client inserts there stays in it.
266
- */
262
+ /** The base of the run band: a run member's digit lies just above it. */
267
263
  export const RANK_RUN = -(2 ** 30);
268
264
  /**
269
265
  * A run member's digit lies in `(RANK_RUN, RANK_RUN + RUN_BAND)`: below every
@@ -297,25 +293,25 @@ export const rankAfter = (left, right, client, rand = Math.random) => {
297
293
  const top = encodeRank([{ v: RANK_RUN + RUN_BAND, t: 0 }]);
298
294
  /**
299
295
  * `prefix` and a rank after `after` (`undefined`: the run opens) in the
300
- * run: inside the band when `band`. Opening, it takes the band's middle,
301
- * or a digit below the run's first member; at the run's end it appends as
302
- * an open end does (a window, not half the band); else between the two.
296
+ * run, inside the band. Opening, it takes the band's middle, or a digit
297
+ * below the run's first member; at the run's end it appends as an open
298
+ * end does (a window, not half the band); else between the two.
303
299
  */
304
- const own = (prefix, after, band) => {
300
+ const own = (prefix, after) => {
305
301
  const tail = (r) => r && r.length > prefix.length && r.startsWith(prefix) ? r.slice(prefix.length) : undefined;
306
302
  let next = tail(right);
307
- if (band && next !== undefined && next > top)
303
+ if (next !== undefined && next > top)
308
304
  next = undefined;
309
305
  let mine;
310
306
  if (after === undefined) {
311
307
  if (next === undefined)
312
308
  mine = encodeRank([{ v: RUN_START, t: client }]);
313
- else if (band && next > bottom)
309
+ else if (next > bottom)
314
310
  mine = rankBetween(bottom, next, client, rand, false);
315
311
  else
316
312
  return plain();
317
313
  }
318
- else if (next === undefined && band) {
314
+ else if (next === undefined) {
319
315
  const append = rankBetween(after, undefined, client, rand, false);
320
316
  mine = append < top ? append : rankBetween(after, top, client, rand, false);
321
317
  }
@@ -326,17 +322,11 @@ export const rankAfter = (left, right, client, rand = Math.random) => {
326
322
  };
327
323
  // A member of the client's run: the next member, inside the band.
328
324
  if (last.t === client && inRun(last.v))
329
- return own(encodeRank(segs.slice(0, -1)), encodeRank([last]), true);
330
- // A run of the earlier form (the marker, then the client's ranks): stays in it.
331
- const k = segs.findLastIndex((g) => g.v === RANK_RUN);
332
- if (k >= 0 && segs[k].t === client) {
333
- const prefix = encodeRank(segs.slice(0, k + 1));
334
- return own(prefix, left.length > prefix.length ? left.slice(prefix.length) : undefined, false);
335
- }
325
+ return own(encodeRank(segs.slice(0, -1)), encodeRank([last]));
336
326
  // A rank the client made: its run opens right after it. The prefix keeps
337
327
  // `left`'s tie: a peer's rank of the same digit and a greater tie
338
328
  // then sorts after the whole run, never between `left` and it.
339
329
  if (last.t === client)
340
- return own(left, undefined, true);
330
+ return own(left, undefined);
341
331
  return plain();
342
332
  };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Properties: the deep proxy behind `block.data`, `atom.data`,
3
+ * `edytor.data` and `document.data` (SyncedStore's feel, one small module).
4
+ * It is sugar over the one write path: every mutation is a data patch
5
+ * handed to `write`, which is the `patchData` operation (dispatched on a
6
+ * view, raw on a bare document).
7
+ *
8
+ * A read goes to `read()` every time (the live source), so a reactive
9
+ * reader of `block.data.title` re-runs when anyone changes it, and a key a
10
+ * peer deletes is gone. Plain objects read as nested proxies, arrays as
11
+ * array proxies, everything else as the raw value; a proxy is cached per
12
+ * path, so its identity is stable. An object or array held in an array
13
+ * item is that item's (its path names the item by id, from `ids`): it
14
+ * stays on its item wherever peers move it, so `{#each list as item (item)}`
15
+ * keeps a row on its item; once the item is removed, its writes are
16
+ * refused. A key is a path segment as `keySegment` writes it.
17
+ *
18
+ * Writes, each the patch of only what it changes (per-leaf storage, so
19
+ * concurrent edits of other keys and items merge): `obj.key = v`,
20
+ * `arr[i] = v` and `delete obj.key` patch that path; `push`, `pop`,
21
+ * `shift`, `unshift`, `splice` and `length` are one `splice` (the items
22
+ * kept keep their ids), `sort` and `reverse` one `order` (the items move),
23
+ * `fill` and `copyWithin` writes of the items they change. Assigning a
24
+ * value equal to the one there writes nothing. `JSON.stringify` and
25
+ * `$state.snapshot` read plain JSON through it.
26
+ */
27
+ import { type DataPatch } from './data.js';
28
+ type Json = Record<string, unknown>;
29
+ export declare const propsProxy: <T extends object = Json>(read: () => Json, write: (ops: DataPatch[]) => void,
30
+ /** The ids of the items of the array at a path (`facade.dataItemIds`). */
31
+ ids?: (path: readonly string[]) => string[]) => T;
32
+ export {};
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Properties: the deep proxy behind `block.data`, `atom.data`,
3
+ * `edytor.data` and `document.data` (SyncedStore's feel, one small module).
4
+ * It is sugar over the one write path: every mutation is a data patch
5
+ * handed to `write`, which is the `patchData` operation (dispatched on a
6
+ * view, raw on a bare document).
7
+ *
8
+ * A read goes to `read()` every time (the live source), so a reactive
9
+ * reader of `block.data.title` re-runs when anyone changes it, and a key a
10
+ * peer deletes is gone. Plain objects read as nested proxies, arrays as
11
+ * array proxies, everything else as the raw value; a proxy is cached per
12
+ * path, so its identity is stable. An object or array held in an array
13
+ * item is that item's (its path names the item by id, from `ids`): it
14
+ * stays on its item wherever peers move it, so `{#each list as item (item)}`
15
+ * keeps a row on its item; once the item is removed, its writes are
16
+ * refused. A key is a path segment as `keySegment` writes it.
17
+ *
18
+ * Writes, each the patch of only what it changes (per-leaf storage, so
19
+ * concurrent edits of other keys and items merge): `obj.key = v`,
20
+ * `arr[i] = v` and `delete obj.key` patch that path; `push`, `pop`,
21
+ * `shift`, `unshift`, `splice` and `length` are one `splice` (the items
22
+ * kept keep their ids), `sort` and `reverse` one `order` (the items move),
23
+ * `fill` and `copyWithin` writes of the items they change. Assigning a
24
+ * value equal to the one there writes nothing. `JSON.stringify` and
25
+ * `$state.snapshot` read plain JSON through it.
26
+ */
27
+ import { isObject, keySegment, segmentKey } from './data.js';
28
+ import { jsonEquals } from '../utils/json.js';
29
+ /** A plain JSON copy (proxies included), or `undefined`. */
30
+ const plain = (v) => (v === undefined ? v : JSON.parse(JSON.stringify(v)));
31
+ /** The items of `now` that differ from `was`, as writes of those items. */
32
+ const changed = (_, __, was, now) => now.flatMap((value, i) => JSON.stringify(value) === JSON.stringify(was[i]) ? [] : [{ at: `${i}`, value }]);
33
+ /**
34
+ * Each array mutator as the patches of the array (or of its items `at`),
35
+ * from its length `n`, the call's `args`, the array `was` and the result `out`.
36
+ */
37
+ const MUTATORS = {
38
+ push: (n, args) => ({ splice: [n, 0, ...args] }),
39
+ pop: (n) => ({ splice: [Math.max(n - 1, 0), n && 1] }),
40
+ shift: () => ({ splice: [0, 1] }),
41
+ unshift: (_, args) => ({ splice: [0, 0, ...args] }),
42
+ // The start and count `splice` resolved (negative, fractional, past the end).
43
+ splice: (n, [start, , ...items], _, out) => {
44
+ const s = Math.trunc(Number(start)) || 0;
45
+ return { splice: [s < 0 ? Math.max(n + s, 0) : Math.min(s, n), out.length, ...items] };
46
+ },
47
+ sort: (n, [compare], was) => ({ order: sorted(n, was, compare) }),
48
+ reverse: (n) => ({ order: Array.from({ length: n }, (_, i) => n - 1 - i) }),
49
+ fill: changed,
50
+ copyWithin: changed
51
+ };
52
+ /** The indexes `Array.prototype.sort` puts `values` in (stable, `undefined` compare: by string). */
53
+ const sorted = (n, values, compare) => {
54
+ const by = typeof compare === 'function'
55
+ ? compare
56
+ : (a, b) => (`${a}` < `${b}` ? -1 : `${a}` > `${b}` ? 1 : 0);
57
+ return Array.from({ length: n }, (_, i) => i).sort((a, b) => by(values[a], values[b]));
58
+ };
59
+ export const propsProxy = (read, write,
60
+ /** The ids of the items of the array at a path (`facade.dataItemIds`). */
61
+ ids = () => []) => {
62
+ const cache = new Map();
63
+ // Item ids per array path, for the value `read()` last gave.
64
+ let seen;
65
+ const known = new Map();
66
+ const idsOf = (path) => {
67
+ const now = read();
68
+ if (now !== seen) {
69
+ seen = now;
70
+ known.clear();
71
+ }
72
+ const key = JSON.stringify(path);
73
+ return known.get(key) ?? known.set(key, ids(path)).get(key);
74
+ };
75
+ const at = (path) => path.reduce((v, k, n) => /^~[a-z]/.test(k)
76
+ ? Array.isArray(v)
77
+ ? v[idsOf(path.slice(0, n)).indexOf(k)]
78
+ : undefined // its array is gone
79
+ : v !== null && typeof v === 'object'
80
+ ? v[segmentKey(k)]
81
+ : undefined, read());
82
+ const put = (path, value) => {
83
+ const next = plain(value);
84
+ if (jsonEquals(at(path), next))
85
+ return;
86
+ write([{ path, ...(next !== undefined && { value: next }) }]);
87
+ };
88
+ const wrap = (path, v) => Array.isArray(v) || isObject(v) ? proxy(path, Array.isArray(v)) : v;
89
+ const proxy = (path, array) => {
90
+ const key = `${array ? '[' : '{'}${JSON.stringify(path)}`;
91
+ const cached = cache.get(key);
92
+ if (cached)
93
+ return cached;
94
+ const current = () => {
95
+ const v = at(path);
96
+ return array ? (Array.isArray(v) ? v : []) : isObject(v) ? v : {};
97
+ };
98
+ /** The path of child `k`: an item by its id, a key as its segment. */
99
+ const child = (k) => [...path, (array && idsOf(path)[Number(k)]) || keySegment(k)];
100
+ const items = () => current().map((v, i) => wrap(child(`${i}`), v));
101
+ const own = (k) => Object.prototype.hasOwnProperty.call(current(), k);
102
+ const made = new Proxy(array ? [] : {}, {
103
+ get(target, k) {
104
+ if (typeof k === 'symbol')
105
+ return array && k === Symbol.iterator
106
+ ? () => items()[Symbol.iterator]()
107
+ : Reflect.get(target, k);
108
+ if (array && k === 'length')
109
+ return current().length;
110
+ if (own(k))
111
+ return wrap(child(k), current()[k]);
112
+ if (array && Object.hasOwn(MUTATORS, k))
113
+ return (...args) => {
114
+ const was = plain(current());
115
+ const next = [...was];
116
+ const fn = Array.prototype[k];
117
+ args = args.map((a) => (a !== null && typeof a === 'object' ? plain(a) : a));
118
+ const out = fn.apply(next, args);
119
+ const ops = [MUTATORS[k](was.length, args, was, out)].flat();
120
+ if (!jsonEquals(was, next))
121
+ write(ops.map(({ at, ...op }) => ({ ...op, path: at ? [...path, at] : path })));
122
+ return out === next ? made : out;
123
+ };
124
+ const method = array ? Array.prototype[k] : undefined;
125
+ if (typeof method === 'function')
126
+ return (...args) => method.apply(items(), args);
127
+ return Reflect.get(target, k);
128
+ },
129
+ set(_, k, value) {
130
+ if (typeof k === 'symbol')
131
+ return false;
132
+ if (array && k === 'length') {
133
+ const n = current().length;
134
+ const nulls = Array.from({ length: Math.max(value - n, 0) }, () => null);
135
+ write([{ path, splice: [Math.min(value, n), Math.max(n - value, 0), ...nulls] }]);
136
+ }
137
+ else
138
+ put([...path, keySegment(k)], value);
139
+ return true;
140
+ },
141
+ deleteProperty(_, k) {
142
+ if (typeof k === 'symbol')
143
+ return false;
144
+ if (own(k))
145
+ put([...path, keySegment(k)], undefined);
146
+ return true;
147
+ },
148
+ has: (target, k) => (typeof k === 'string' && own(k)) || Reflect.has(target, k),
149
+ ownKeys: () => [...Object.keys(current()), ...(array ? ['length'] : [])],
150
+ getOwnPropertyDescriptor(target, k) {
151
+ if (array && k === 'length')
152
+ return (Reflect.getOwnPropertyDescriptor(target, k) && {
153
+ value: current().length,
154
+ writable: true,
155
+ enumerable: false,
156
+ configurable: false
157
+ });
158
+ if (typeof k !== 'string' || !own(k))
159
+ return undefined;
160
+ return {
161
+ value: wrap(child(k), current()[k]),
162
+ writable: true,
163
+ enumerable: true,
164
+ configurable: true
165
+ };
166
+ }
167
+ });
168
+ cache.set(key, made);
169
+ return made;
170
+ };
171
+ return proxy([], false);
172
+ };
@@ -16,7 +16,7 @@
16
16
  * codec that needs no `Awareness` instance (whose sweep timer blocks
17
17
  * hibernation);
18
18
  * - the admission gates (`assertAdmission`, `inspectAdmission`, …) that
19
- * diagnostics and migration tooling read;
19
+ * diagnostics read;
20
20
  * - the raw provider classes behind `createIndexeddbSync` and
21
21
  * `createWebsocketSync` (`IndexeddbPersistence`, `WebsocketProvider`)
22
22
  * and `storeState`.
@@ -24,15 +24,14 @@
24
24
  * `pnpm check:worker` keeps this graph Worker-safe; the site's
25
25
  * `server/protocol` page documents the contract.
26
26
  */
27
- export { bindCrdt, type Crdt, type EngineApi, type EngineDoc, type EngineNode, type EngineDeepEvent, type EngineTransaction, type EngineItemRef, type YNode, type YItem, type YDoc, type YUndoManager, type YTransaction } from './index.js';
27
+ export { bindCrdt, type Crdt, type EngineApi, type EngineDoc, type EngineNode, type EngineTransaction, type EngineItemRef, type YNode, type YItem, type YDoc, type YUndoManager, type YTransaction } from './index.js';
28
28
  export { SCHEMA_VERSION, META_KEY } from './edytor-doc.js';
29
- export { GENERATION, generationWord, frame, PROTOCOL_VERSION, GENERATION_RECORD, STORED_GENERATION_RECORD, STORAGE_FORMAT, GenerationMismatchError, readProtocolVersion, type GenerationRecord, type StorageFormat } from './protocols/envelope.js';
30
- export { PREVIOUS_SCHEMA, isPreviousGenerationRecord } from './migration/generation.js';
29
+ export { GENERATION, generationWord, frame, PROTOCOL_VERSION, GENERATION_RECORD, GenerationMismatchError, readProtocolVersion, type GenerationRecord } from './protocols/envelope.js';
31
30
  export { messageSync, messageAwareness, messageAuth, messageQueryAwareness, messageSaved, messageChunk, messageComments, MAX_FRAME_BYTES, chunkFrame, createChunkReader, ChunkLimitError, type ChunkReader, CLOSE } from './providers/room.js';
32
31
  export { messageYjsSyncStep1, messageYjsSyncStep2, messageYjsUpdate, type SyncProtocol } from './protocols/sync.js';
33
32
  export { messagePermissionDenied, messageReadOnly, writePermissionDenied, writeReadOnly } from './protocols/auth.js';
34
33
  export { commentsSubscribe, commentsSnapshot, commentsChange, writeCommentsSubscribe, writeCommentsSnapshot, writeCommentsChange, readCommentsMessage, type CommentChange, type CommentMessage, type CommentSnapshot, type CommentThread, type ThreadComment } from './protocols/comments.js';
35
- export { applyAwarenessUpdate, encodeAwarenessUpdate, modifyAwarenessUpdate, readAwarenessEntries, writeAwarenessEntries, type AwarenessEntry } from './protocols/awareness.js';
34
+ export { applyAwarenessUpdate, encodeAwarenessUpdate, readAwarenessEntries, writeAwarenessEntries, type AwarenessEntry } from './protocols/awareness.js';
36
35
  export { createDecoder, readVarUint, readVarUint8Array, type Decoder } from 'lib0-v14/decoding';
37
36
  export { writeVarUint8Array, type Encoder } from 'lib0-v14/encoding';
38
37
  export { assertAdmission, assertSchema, assertUsableDoc, checkSchema, inspectAdmission, isInitialized, registryEmpty, schemaVersion, SchemaMismatchError, UndecodableUpdateError, UnsupportedDocError, type AdmissionResult, type AdmissionVerdict, type SchemaProblem } from './admission.js';
@@ -16,7 +16,7 @@
16
16
  * codec that needs no `Awareness` instance (whose sweep timer blocks
17
17
  * hibernation);
18
18
  * - the admission gates (`assertAdmission`, `inspectAdmission`, …) that
19
- * diagnostics and migration tooling read;
19
+ * diagnostics read;
20
20
  * - the raw provider classes behind `createIndexeddbSync` and
21
21
  * `createWebsocketSync` (`IndexeddbPersistence`, `WebsocketProvider`)
22
22
  * and `storeState`.
@@ -28,14 +28,13 @@
28
28
  export { bindCrdt } from './index.js';
29
29
  // ── The frame contract and the generation ──────────────────────────────
30
30
  export { SCHEMA_VERSION, META_KEY } from './edytor-doc.js';
31
- export { GENERATION, generationWord, frame, PROTOCOL_VERSION, GENERATION_RECORD, STORED_GENERATION_RECORD, STORAGE_FORMAT, GenerationMismatchError, readProtocolVersion } from './protocols/envelope.js';
32
- export { PREVIOUS_SCHEMA, isPreviousGenerationRecord } from './migration/generation.js';
31
+ export { GENERATION, generationWord, frame, PROTOCOL_VERSION, GENERATION_RECORD, GenerationMismatchError, readProtocolVersion } from './protocols/envelope.js';
33
32
  // ── Message types, acknowledgements and chunks ─────────────────────────
34
33
  export { messageSync, messageAwareness, messageAuth, messageQueryAwareness, messageSaved, messageChunk, messageComments, MAX_FRAME_BYTES, chunkFrame, createChunkReader, ChunkLimitError, CLOSE } from './providers/room.js';
35
34
  export { messageYjsSyncStep1, messageYjsSyncStep2, messageYjsUpdate } from './protocols/sync.js';
36
35
  export { messagePermissionDenied, messageReadOnly, writePermissionDenied, writeReadOnly } from './protocols/auth.js';
37
36
  export { commentsSubscribe, commentsSnapshot, commentsChange, writeCommentsSubscribe, writeCommentsSnapshot, writeCommentsChange, readCommentsMessage } from './protocols/comments.js';
38
- export { applyAwarenessUpdate, encodeAwarenessUpdate, modifyAwarenessUpdate, readAwarenessEntries, writeAwarenessEntries } from './protocols/awareness.js';
37
+ export { applyAwarenessUpdate, encodeAwarenessUpdate, readAwarenessEntries, writeAwarenessEntries } from './protocols/awareness.js';
39
38
  // Minimal wire codec for frame bodies (lib0 — the codec the frames are
40
39
  // written with): read the header/subtype/payload, write a payload into a
41
40
  // `frame` callback's encoder.
@@ -32,12 +32,12 @@ type AwarenessEvents = {
32
32
  * outdated, and remote states expire after {@link outdatedTimeout}.
33
33
  */
34
34
  export declare class Awareness extends IsolatedObservable<AwarenessEvents> {
35
+ #private;
35
36
  doc: AwarenessDoc;
36
37
  clientID: number;
37
38
  /** Maps from client id to client state */
38
39
  states: AwarenessStates;
39
40
  meta: Map<number, MetaClientState>;
40
- private _checkInterval;
41
41
  /**
42
42
  * Idempotence guard — `destroy()` is reachable twice through the
43
43
  * OWNED-doc + OWNED-awareness composition: `EdytorDocument.destroy()`
@@ -59,6 +59,7 @@ export declare class Awareness extends IsolatedObservable<AwarenessEvents> {
59
59
  * peers. This change is propagated to remote clients.
60
60
  */
61
61
  export declare const removeAwarenessStates: (awareness: Awareness, clients: number[], origin: unknown) => void;
62
+ /** The update carrying `clients`' entries of `awareness` (their states in `states`). */
62
63
  export declare const encodeAwarenessUpdate: (awareness: Awareness, clients: number[], states?: AwarenessStates) => Uint8Array;
63
64
  /** One awareness entry on the wire: a client's clock and state (`null` = removed). */
64
65
  export type AwarenessEntry = {
@@ -72,13 +73,8 @@ export type AwarenessEntry = {
72
73
  * must not hold timers (a hibernating Durable Object) can track presence.
73
74
  */
74
75
  export declare const readAwarenessEntries: (update: Uint8Array) => AwarenessEntry[];
75
- /** Instance-free awareness codec: encode entries as an update (the wire format of {@link encodeAwarenessUpdate}). */
76
+ /** Instance-free awareness codec: encode entries as an update. */
76
77
  export declare const writeAwarenessEntries: (entries: readonly AwarenessEntry[]) => Uint8Array;
77
- /**
78
- * Modify the content of an awareness update before re-encoding it to an
79
- * awareness update — e.g. a central server preventing identity hijacking.
80
- */
81
- export declare const modifyAwarenessUpdate: (update: Uint8Array, modify: (state: Record<string, unknown> | null) => Record<string, unknown> | null) => Uint8Array;
82
78
  /**
83
79
  * Apply an encoded awareness update. `origin` is forwarded on the emitted
84
80
  * change/update events.
@@ -14,11 +14,11 @@
14
14
  * wire compatibility is not peer compatibility (presence payload versioning
15
15
  * is the presence layer's concern).
16
16
  */
17
+ import { jsonEquals } from '../../utils/json.js';
17
18
  import * as encoding from 'lib0-v14/encoding';
18
19
  import * as decoding from 'lib0-v14/decoding';
19
20
  import * as time from 'lib0-v14/time';
20
21
  import * as math from 'lib0-v14/math';
21
- import * as f from 'lib0-v14/function';
22
22
  import { IsolatedObservable } from './observable.js';
23
23
  export const outdatedTimeout = 30000;
24
24
  /**
@@ -33,7 +33,7 @@ export class Awareness extends IsolatedObservable {
33
33
  /** Maps from client id to client state */
34
34
  states;
35
35
  meta;
36
- _checkInterval;
36
+ #checkInterval;
37
37
  /**
38
38
  * Idempotence guard — `destroy()` is reachable twice through the
39
39
  * OWNED-doc + OWNED-awareness composition: `EdytorDocument.destroy()`
@@ -49,7 +49,7 @@ export class Awareness extends IsolatedObservable {
49
49
  this.clientID = doc.clientID;
50
50
  this.states = new Map();
51
51
  this.meta = new Map();
52
- this._checkInterval = setInterval(() => {
52
+ this.#checkInterval = setInterval(() => {
53
53
  const now = time.getUnixTime();
54
54
  const localMeta = this.meta.get(this.clientID);
55
55
  if (this.getLocalState() !== null &&
@@ -73,7 +73,7 @@ export class Awareness extends IsolatedObservable {
73
73
  // Node returns a `Timeout` (has `unref`), browsers a number — a stale-
74
74
  // state sweep must never be the thing keeping a node/SSR process alive
75
75
  // (a server-rendered component can't run its client teardown path).
76
- this._checkInterval.unref?.();
76
+ this.#checkInterval.unref?.();
77
77
  doc.on('destroy', () => {
78
78
  this.destroy();
79
79
  });
@@ -87,7 +87,7 @@ export class Awareness extends IsolatedObservable {
87
87
  this.emit('destroy', [this]);
88
88
  this.setLocalState(null);
89
89
  super.destroy();
90
- clearInterval(this._checkInterval);
90
+ clearInterval(this.#checkInterval);
91
91
  }
92
92
  getLocalState() {
93
93
  return this.states.get(this.clientID) || null;
@@ -121,7 +121,7 @@ export class Awareness extends IsolatedObservable {
121
121
  }
122
122
  else {
123
123
  updated.push(clientID);
124
- if (!f.equalityDeep(prevState, state)) {
124
+ if (!jsonEquals(prevState, state)) {
125
125
  filteredUpdated.push(clientID);
126
126
  }
127
127
  }
@@ -168,20 +168,12 @@ export const removeAwarenessStates = (awareness, clients, origin) => {
168
168
  awareness.emit('update', [{ added: [], updated: [], removed }, origin]);
169
169
  }
170
170
  };
171
- export const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {
172
- const len = clients.length;
173
- const encoder = encoding.createEncoder();
174
- encoding.writeVarUint(encoder, len);
175
- for (let i = 0; i < len; i++) {
176
- const clientID = clients[i];
177
- const state = states.get(clientID) || null;
178
- const clock = awareness.meta.get(clientID).clock;
179
- encoding.writeVarUint(encoder, clientID);
180
- encoding.writeVarUint(encoder, clock);
181
- encoding.writeVarString(encoder, JSON.stringify(state));
182
- }
183
- return encoding.toUint8Array(encoder);
184
- };
171
+ /** The update carrying `clients`' entries of `awareness` (their states in `states`). */
172
+ export const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => writeAwarenessEntries(clients.map((clientID) => ({
173
+ clientID,
174
+ clock: awareness.meta.get(clientID).clock,
175
+ state: states.get(clientID) || null
176
+ })));
185
177
  /**
186
178
  * Instance-free awareness codec: decode an update into its entries. Pure —
187
179
  * no `Awareness` (whose constructor starts an interval), so a relay that
@@ -195,7 +187,7 @@ export const readAwarenessEntries = (update) => {
195
187
  state: JSON.parse(decoding.readVarString(decoder))
196
188
  }));
197
189
  };
198
- /** Instance-free awareness codec: encode entries as an update (the wire format of {@link encodeAwarenessUpdate}). */
190
+ /** Instance-free awareness codec: encode entries as an update. */
199
191
  export const writeAwarenessEntries = (entries) => encoding.encode((encoder) => {
200
192
  encoding.writeVarUint(encoder, entries.length);
201
193
  for (const { clientID, clock, state } of entries) {
@@ -204,27 +196,19 @@ export const writeAwarenessEntries = (entries) => encoding.encode((encoder) => {
204
196
  encoding.writeVarString(encoder, JSON.stringify(state));
205
197
  }
206
198
  });
207
- /**
208
- * Modify the content of an awareness update before re-encoding it to an
209
- * awareness update — e.g. a central server preventing identity hijacking.
210
- */
211
- export const modifyAwarenessUpdate = (update, modify) => writeAwarenessEntries(readAwarenessEntries(update).map((entry) => ({ ...entry, state: modify(entry.state) })));
212
199
  /**
213
200
  * Apply an encoded awareness update. `origin` is forwarded on the emitted
214
201
  * change/update events.
215
202
  */
216
203
  export const applyAwarenessUpdate = (awareness, update, origin) => {
217
- const decoder = decoding.createDecoder(update);
218
204
  const timestamp = time.getUnixTime();
219
205
  const added = [];
220
206
  const updated = [];
221
207
  const filteredUpdated = [];
222
208
  const removed = [];
223
- const len = decoding.readVarUint(decoder);
224
- for (let i = 0; i < len; i++) {
225
- const clientID = decoding.readVarUint(decoder);
226
- let clock = decoding.readVarUint(decoder);
227
- const state = JSON.parse(decoding.readVarString(decoder));
209
+ for (const entry of readAwarenessEntries(update)) {
210
+ const { clientID, state } = entry;
211
+ let { clock } = entry;
228
212
  const clientMeta = awareness.meta.get(clientID);
229
213
  const prevState = awareness.states.get(clientID);
230
214
  const currClock = clientMeta === undefined ? 0 : clientMeta.clock;
@@ -255,7 +239,7 @@ export const applyAwarenessUpdate = (awareness, update, origin) => {
255
239
  removed.push(clientID);
256
240
  }
257
241
  else if (state !== null) {
258
- if (!f.equalityDeep(state, prevState)) {
242
+ if (!jsonEquals(state, prevState)) {
259
243
  filteredUpdated.push(clientID);
260
244
  }
261
245
  updated.push(clientID);