edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -1,25 +1,15 @@
1
1
  import * as math from 'lib0-v14/math'
2
- import * as traits from 'lib0-v14/traits'
3
2
  import * as encoding from 'lib0-v14/encoding'
4
3
  import * as decoding from 'lib0-v14/decoding'
5
- import * as buf from 'lib0-v14/buffer'
6
- import * as rabin from 'lib0-v14/hash/rabin'
7
4
  import * as array from 'lib0-v14/array'
8
- import * as map from 'lib0-v14/map'
9
- import * as s from 'lib0-v14/schema'
10
5
 
11
- import { iterateStructs, findIndexSS, iterateStructsWithoutSplits } from './transaction-helpers.js'
12
- import { UpdateEncoderV2, IdSetEncoderV2 } from './UpdateEncoder.js'
13
- import { IdSetDecoderV2 } from './UpdateDecoder.js'
6
+ import { iterateStructs, findIndexSS } from './transaction-helpers.js'
7
+ import { UpdateEncoder } from './UpdateEncoder.js'
14
8
 
15
9
  /**
16
10
  * @typedef {{ inserts: IdSet, deletes: IdSet }} ContentIds
17
11
  */
18
12
 
19
- /**
20
- * @typedef {{ inserts: IdMap<any>, deletes: IdMap<any> }} ContentMap
21
- */
22
-
23
13
  export class IdRange {
24
14
  /**
25
15
  * @param {number} clock
@@ -43,47 +33,8 @@ export class IdRange {
43
33
  copyWith (clock, len) {
44
34
  return new IdRange(clock, len)
45
35
  }
46
-
47
- /**
48
- * Helper method making this compatible with IdMap.
49
- *
50
- * @return {Array<ContentAttribute<any>>}
51
- */
52
- get attrs () {
53
- return []
54
- }
55
- }
56
-
57
- export class MaybeIdRange {
58
- /**
59
- * @param {number} clock
60
- * @param {number} len
61
- * @param {boolean} exists
62
- */
63
- constructor (clock, len, exists) {
64
- /**
65
- * @type {number}
66
- */
67
- this.clock = clock
68
- /**
69
- * @type {number}
70
- */
71
- this.len = len
72
- /**
73
- * @type {boolean}
74
- */
75
- this.exists = exists
76
- }
77
36
  }
78
37
 
79
- /**
80
- * @param {number} clock
81
- * @param {number} len
82
- * @param {boolean} exists
83
- * @return {MaybeIdRange}
84
- */
85
- export const createMaybeIdRange = (clock, len, exists) => new MaybeIdRange(clock, len, exists)
86
-
87
38
  export class IdRanges {
88
39
  /**
89
40
  * @param {Array<IdRange>} ids
@@ -163,37 +114,8 @@ export class IdRanges {
163
114
  }
164
115
  return ids
165
116
  }
166
-
167
- /**
168
- * Test a predicate against every attribute held by these ranges. Does not mutate - see
169
- * {@link AttrRanges#everyAttr}.
170
- *
171
- * This exists because an `IdMap` may hold `IdRanges`: {@link insertIntoIdMap}'s `src` may be an
172
- * `IdSet`, and `_insertIntoIdSet` picks the container class from whichever `src` reaches a client
173
- * first. For a pure `IdRanges` the loop is vacuous ({@link IdRange#attrs} is always `[]`), but it
174
- * must *not* shortcut to `true`: the append branch of `_insertIntoIdSet` copies elements without
175
- * checking their class, so an `IdRanges` reached by an `IdSet` first and an `IdMap` second holds
176
- * real `AttrRange`s - which {@link $idMap} must still validate.
177
- *
178
- * @param {(attr:ContentAttribute<any>) => boolean} f
179
- * @return {boolean}
180
- */
181
- everyAttr (f) {
182
- const ids = this._ids
183
- for (let i = 0; i < ids.length; i++) {
184
- const attrs = ids[i].attrs
185
- if (attrs == null) continue
186
- for (let j = 0; j < attrs.length; j++) {
187
- if (!f(attrs[j])) return false
188
- }
189
- }
190
- return true
191
- }
192
117
  }
193
118
 
194
- /**
195
- * @implements {traits.EqualityTrait}
196
- */
197
119
  export class IdSet {
198
120
  constructor () {
199
121
  /**
@@ -206,17 +128,6 @@ export class IdSet {
206
128
  return this.clients.size === 0
207
129
  }
208
130
 
209
- /**
210
- * @param {(idrange:IdRange, client:number) => void} f
211
- */
212
- forEach (f) {
213
- this.clients.forEach((ranges, client) => {
214
- ranges.getIds().forEach((range) => {
215
- f(range, client)
216
- })
217
- })
218
- }
219
-
220
131
  /**
221
132
  * @param {ID} id
222
133
  * @return {boolean}
@@ -256,113 +167,6 @@ export class IdSet {
256
167
  return false
257
168
  }
258
169
 
259
- /**
260
- * Whether the entire range `[clock, clock+len)` of `client` is contained in this set.
261
- * Allocation-free (binary search). Because `getIds()` returns maximal, merged ranges, full
262
- * coverage of a range implies it lies within a single range.
263
- *
264
- * @param {number} client
265
- * @param {number} clock
266
- * @param {number} len
267
- * @return {boolean}
268
- */
269
- covers (client, clock, len) {
270
- const dr = this.clients.get(client)
271
- if (dr) {
272
- const ranges = dr.getIds()
273
- const index = findIndexInIdRanges(ranges, clock)
274
- if (index !== null) {
275
- const r = ranges[index]
276
- return clock + len <= r.clock + r.len
277
- }
278
- }
279
- return false
280
- }
281
-
282
- /**
283
- * Total number of ids in `[clock, clock+len)` of `client` contained in this set.
284
- * Allocation-free (binary search + linear scan of the overlapping ranges). Equivalent to
285
- * `slice(client, clock, len).reduce((s, r) => r.exists ? s + r.len : s, 0)` without allocating.
286
- *
287
- * @param {number} client
288
- * @param {number} clock
289
- * @param {number} len
290
- * @return {number}
291
- */
292
- coveredLength (client, clock, len) {
293
- const dr = this.clients.get(client)
294
- let covered = 0
295
- if (dr) {
296
- const ranges = dr.getIds()
297
- const end = clock + len
298
- let index = findRangeStartInIdRanges(ranges, clock)
299
- if (index !== null) {
300
- for (; index < ranges.length; index++) {
301
- const r = ranges[index]
302
- if (r.clock >= end) break
303
- const from = r.clock < clock ? clock : r.clock
304
- const rEnd = r.clock + r.len
305
- const to = rEnd > end ? end : rEnd
306
- covered += to - from
307
- }
308
- }
309
- }
310
- return covered
311
- }
312
-
313
- /**
314
- * Return slices of ids that exist in this idset.
315
- *
316
- * @param {number} client
317
- * @param {number} clock
318
- * @param {number} len
319
- * @return {Array<MaybeIdRange>}
320
- */
321
- slice (client, clock, len) {
322
- const dr = this.clients.get(client)
323
- /**
324
- * @type {Array<MaybeIdRange>}
325
- */
326
- const res = []
327
- if (dr) {
328
- /**
329
- * @type {Array<IdRange>}
330
- */
331
- const ranges = dr.getIds()
332
- let index = findRangeStartInIdRanges(ranges, clock)
333
- if (index !== null) {
334
- let prev = null
335
- while (index < ranges.length) {
336
- let r = ranges[index]
337
- if (r.clock < clock) {
338
- r = new IdRange(clock, r.len - (clock - r.clock))
339
- }
340
- if (r.clock + r.len > clock + len) {
341
- r = new IdRange(r.clock, clock + len - r.clock)
342
- }
343
- if (r.len <= 0) break
344
- const prevEnd = prev != null ? prev.clock + prev.len : clock
345
- if (prevEnd < r.clock) {
346
- res.push(createMaybeIdRange(prevEnd, r.clock - prevEnd, false))
347
- }
348
- prev = r
349
- res.push(createMaybeIdRange(r.clock, r.len, true))
350
- index++
351
- }
352
- }
353
- }
354
- if (res.length > 0) {
355
- const last = res[res.length - 1]
356
- const end = last.clock + last.len
357
- if (end < clock + len) {
358
- res.push(createMaybeIdRange(end, clock + len - end, false))
359
- }
360
- } else {
361
- res.push(createMaybeIdRange(clock, len, false))
362
- }
363
- return res
364
- }
365
-
366
170
  /**
367
171
  * @param {number} client
368
172
  * @param {number} clock
@@ -387,37 +191,10 @@ export class IdSet {
387
191
  _deleteRangeFromIdSet(this, client, clock, len)
388
192
  }
389
193
 
390
- /**
391
- * @param {any} other
392
- */
393
- [traits.EqualityTraitSymbol] (other) {
394
- return equalIdSets(this, other)
395
- }
396
- }
397
-
398
- /**
399
- * @param {IdSet} ds1
400
- * @param {IdSet} ds2
401
- */
402
- export const equalIdSets = (ds1, ds2) => {
403
- if (ds1.clients.size !== ds2.clients.size) return false
404
- for (const [client, _deleteItems1] of ds1.clients.entries()) {
405
- const deleteItems1 = _deleteItems1.getIds()
406
- const deleteItems2 = ds2.clients.get(client)?.getIds()
407
- if (deleteItems2 === undefined || deleteItems1.length !== deleteItems2.length) return false
408
- for (let i = 0; i < deleteItems1.length; i++) {
409
- const di1 = deleteItems1[i]
410
- const di2 = deleteItems2[i]
411
- if (di1.clock !== di2.clock || di1.len !== di2.len) {
412
- return false
413
- }
414
- }
415
- }
416
- return true
417
194
  }
418
195
 
419
196
  /**
420
- * @param {IdSet | IdMap<any>} set
197
+ * @param {IdSet} set
421
198
  * @param {number} client
422
199
  * @param {number} clock
423
200
  * @param {number} len
@@ -469,29 +246,6 @@ export const iterateStructsByIdSet = (transaction, ds, f) =>
469
246
  }
470
247
  })
471
248
 
472
- /**
473
- * Iterate over all structs that are mentioned by the IdSet, without spliting the items.
474
- *
475
- * @param {StructStore} store
476
- * @param {IdSet} ds
477
- * @param {(struct: GC|Item|Skip, offset:number, len:number)=>void} f
478
- */
479
- export const iterateStructsByIdSetWithoutSplits = (store, ds, f) =>
480
- ds.clients.forEach((idRanges, clientid) => {
481
- const ranges = idRanges.getIds()
482
- const structs = /** @type {Array<GC|Item>} */ (store.clients.get(clientid))
483
- if (structs != null) {
484
- const lastStruct = structs[structs.length - 1]
485
- const nextClock = lastStruct.id.clock + lastStruct.length
486
- for (let i = 0; i < ranges.length; i++) {
487
- const del = ranges[i]
488
- if (del.clock < nextClock) {
489
- iterateStructsWithoutSplits(structs, del.clock, del.len, f)
490
- }
491
- }
492
- }
493
- })
494
-
495
249
  /**
496
250
  * @param {Array<IdRange>} dis
497
251
  * @param {number} clock
@@ -574,9 +328,8 @@ export const mergeIdSets = idSets => {
574
328
  }
575
329
 
576
330
  /**
577
- * @template {IdSet | IdMap<any>} S
578
- * @param {S} dest
579
- * @param {S} src
331
+ * @param {IdSet} dest
332
+ * @param {IdSet} src
580
333
  */
581
334
  const _insertIntoIdSet = (dest, src) => {
582
335
  src.clients.forEach((srcRanges, client) => {
@@ -599,44 +352,17 @@ const _insertIntoIdSet = (dest, src) => {
599
352
  export const insertIntoIdSet = _insertIntoIdSet
600
353
 
601
354
  /**
602
- * Note that `src` may be an `IdSet`, in which case `dest` ends up holding `IdRanges` - which carry
603
- * no attributes ({@link IdRange#attrs} is `[]`). This is by design; {@link $idMap} tolerates it.
604
- *
605
- * @type {(dest: IdMap<any>, src: IdMap<any>|IdSet) => void}
606
- */
607
- export const insertIntoIdMap = _insertIntoIdSet
608
-
609
- /**
610
- * @todo rename to excludeIdSet | excludeIdMap
611
- *
612
- * @todo dispatch on the schema rather than `instanceof IdSet`: `const isMap = set.$type ===
613
- * $idMapAny`. Mind the polarity - it inverts. `instanceof IdSet` selects the "is a set" branch,
614
- * `$type === $idMapAny` selects the "is a map" branch, so both ternaries below flip. Compare
615
- * against `$idMapAny` (the interned tag), never `$idMap(attrs)` - that builds a fresh `s.$custom`
616
- * per call, so `===` against it is always false.
617
- *
618
- * The reason is soundness, not speed: `instanceof` walks the prototype chain and is per-install, so
619
- * an `IdSet` from a duplicate yjs install falls through to the IdMap branch and we silently build an
620
- * IdMap holding IdRanges. `$type` is a single inline-cached load and stays sound across installs -
621
- * the same reason `$renderer` uses `$type` over `$instanceOf`. Not a perf win either way: this runs
622
- * twice per call, outside both loops.
623
- *
624
- * Applies equally to `_intersectSets`.
355
+ * @todo rename to excludeIdSet
625
356
  *
626
357
  * Remove all ranges from `exclude` from `ds`. The result is a fresh IdSet containing all ranges from `idSet` that are not
627
358
  * in `exclude`.
628
359
  *
629
- * @template {IdSet | IdMap<any>} Set
630
- * @param {Set} set
631
- * @param {IdSet | IdMap<any>} exclude
632
- * @return {Set}
360
+ * @param {IdSet} set
361
+ * @param {IdSet} exclude
362
+ * @return {IdSet}
633
363
  */
634
364
  export const _diffSet = (set, exclude) => {
635
- /**
636
- * @type {Set}
637
- */
638
- const res = /** @type {any } */ (set instanceof IdSet ? new IdSet() : new IdMap())
639
- const Ranges = set instanceof IdSet ? IdRanges : AttrRanges
365
+ const res = new IdSet()
640
366
  set.clients.forEach((_setRanges, client) => {
641
367
  /**
642
368
  * @type {Array<IdRange>}
@@ -685,8 +411,7 @@ export const _diffSet = (set, exclude) => {
685
411
  resRanges.push(setRanges[i++])
686
412
  }
687
413
  }
688
- // @ts-ignore
689
- if (resRanges.length > 0) res.clients.set(client, /** @type {any} */ (new Ranges(resRanges)))
414
+ if (resRanges.length > 0) res.clients.set(client, new IdRanges(resRanges))
690
415
  })
691
416
  return res
692
417
  }
@@ -695,26 +420,17 @@ export const _diffSet = (set, exclude) => {
695
420
  * Remove all ranges from `exclude` from `idSet`. The result is a fresh IdSet containing all ranges from `idSet` that are not
696
421
  * in `exclude`.
697
422
  *
698
- * @type {(idSet: IdSet, exclude: IdSet|IdMap<any>) => IdSet}
423
+ * @type {(idSet: IdSet, exclude: IdSet) => IdSet}
699
424
  */
700
425
  export const diffIdSet = _diffSet
701
426
 
702
427
  /**
703
- * @todo dispatch on `setA.$type === $idMapAny` rather than `setA instanceof IdSet` - see the note
704
- * on `_diffSet`. The polarity inverts.
705
- *
706
- * @template {IdSet | IdMap<any>} SetA
707
- * @template {IdSet | IdMap<any>} SetB
708
- * @param {SetA} setA
709
- * @param {SetB} setB
710
- * @return {SetA extends IdMap<infer A> ? (SetB extends IdMap<infer B> ? IdMap<A | B> : IdMap<A>) : IdSet}
428
+ * @param {IdSet} setA
429
+ * @param {IdSet} setB
430
+ * @return {IdSet}
711
431
  */
712
432
  export const _intersectSets = (setA, setB) => {
713
- /**
714
- * @type {IdMap<any> | IdSet}
715
- */
716
- const res = /** @type {any } */ (setA instanceof IdSet ? new IdSet() : new IdMap())
717
- const Ranges = setA instanceof IdSet ? IdRanges : AttrRanges
433
+ const res = new IdSet()
718
434
  setA.clients.forEach((_aRanges, client) => {
719
435
  /**
720
436
  * @type {Array<IdRange>}
@@ -731,10 +447,7 @@ export const _intersectSets = (setA, setB) => {
731
447
  const clock = math.max(aRange.clock, bRange.clock)
732
448
  const len = math.min(aRange.len - (clock - aRange.clock), bRange.len - (clock - bRange.clock))
733
449
  if (len > 0) {
734
- resRanges.push(aRange instanceof AttrRange
735
- ? new AttrRange(clock, len, /** @type {Array<any>} */ (aRange.attrs).concat(bRange.attrs))
736
- : new IdRange(clock, len)
737
- )
450
+ resRanges.push(new IdRange(clock, len))
738
451
  }
739
452
  if (aRange.clock + aRange.len < bRange.clock + bRange.len) {
740
453
  a++
@@ -743,10 +456,9 @@ export const _intersectSets = (setA, setB) => {
743
456
  }
744
457
  }
745
458
  }
746
- // @ts-ignore
747
- if (resRanges.length > 0) res.clients.set(client, /** @type {any} */ (new Ranges(resRanges)))
459
+ if (resRanges.length > 0) res.clients.set(client, new IdRanges(resRanges))
748
460
  })
749
- return /** @type {any} */ (res)
461
+ return res
750
462
  }
751
463
 
752
464
  export const intersectSets = _intersectSets
@@ -788,7 +500,7 @@ export const createDeleteSetFromStructStore = ss => {
788
500
  }
789
501
 
790
502
  /**
791
- * @param {IdSetEncoderV1 | IdSetEncoderV2} encoder
503
+ * @param {IdSetEncoder} encoder
792
504
  * @param {IdSet} idSet
793
505
  *
794
506
  * @private
@@ -814,7 +526,7 @@ export const writeIdSet = (encoder, idSet) => {
814
526
  }
815
527
 
816
528
  /**
817
- * @param {IdSetDecoderV1 | IdSetDecoderV2} decoder
529
+ * @param {IdSetDecoder} decoder
818
530
  * @return {IdSet}
819
531
  *
820
532
  * @private
@@ -846,7 +558,7 @@ export const readIdSet = decoder => {
846
558
  */
847
559
 
848
560
  /**
849
- * @param {IdSetDecoderV1 | IdSetDecoderV2} decoder
561
+ * @param {IdSetDecoder} decoder
850
562
  * @param {Transaction} transaction
851
563
  * @param {StructStore} store
852
564
  * @return {Uint8Array<ArrayBuffer>|null} Returns a v2 update containing all deletes that couldn't be applied yet; or null if all deletes were applied successfully.
@@ -906,599 +618,10 @@ export const readAndApplyDeleteSet = (decoder, transaction, store) => {
906
618
  }
907
619
  }
908
620
  if (unappliedDS.clients.size > 0) {
909
- const ds = new UpdateEncoderV2()
621
+ const ds = new UpdateEncoder()
910
622
  encoding.writeVarUint(ds.restEncoder, 0) // encode 0 structs
911
623
  writeIdSet(ds, unappliedDS)
912
624
  return ds.toUint8Array()
913
625
  }
914
626
  return null
915
627
  }
916
-
917
- /**
918
- * @template Attrs
919
- */
920
- export class AttrRange {
921
- /**
922
- * @param {number} clock
923
- * @param {number} len
924
- * @param {Array<ContentAttribute<Attrs>>} attrs
925
- */
926
- constructor (clock, len, attrs) {
927
- /**
928
- * @readonly
929
- */
930
- this.clock = clock
931
- /**
932
- * @readonly
933
- */
934
- this.len = len
935
- /**
936
- * @readonly
937
- */
938
- this.attrs = attrs
939
- }
940
-
941
- /**
942
- * @param {number} clock
943
- * @param {number} len
944
- */
945
- copyWith (clock, len) {
946
- return new AttrRange(clock, len, this.attrs)
947
- }
948
- }
949
-
950
- /**
951
- * @todo rename this to `Attribute`
952
- * @template V
953
- */
954
- export class ContentAttribute {
955
- /**
956
- * @param {string} name
957
- * @param {V} val
958
- */
959
- constructor (name, val) {
960
- this.name = name
961
- this.val = val
962
- }
963
-
964
- hash () {
965
- const encoder = encoding.createEncoder()
966
- encoding.writeVarString(encoder, this.name)
967
- encoding.writeAny(encoder, /** @type {any} */ (this.val))
968
- return buf.toBase64(rabin.fingerprint(rabin.StandardIrreducible128, encoding.toUint8Array(encoder)))
969
- }
970
- }
971
-
972
- /**
973
- * @template V
974
- * @param {string} name
975
- * @param {V} val
976
- * @return {ContentAttribute<V>}
977
- */
978
- export const createContentAttribute = (name, val) => new ContentAttribute(name, val)
979
-
980
- /**
981
- * @template Attrs
982
- * @typedef {{ clock: number, len: number, attrs: Array<ContentAttribute<Attrs>>? }} MaybeAttrRange
983
- */
984
-
985
- /**
986
- * @template Attrs
987
- *
988
- * @param {number} clock
989
- * @param {number} len
990
- * @param {Array<ContentAttribute<Attrs>>?} attrs
991
- * @return {MaybeAttrRange<Attrs>}
992
- */
993
- export const createMaybeAttrRange = (clock, len, attrs) => new AttrRange(clock, len, /** @type {any} */ (attrs))
994
-
995
- /**
996
- * @template T
997
- * @param {Array<T>} a
998
- * @param {Array<T>} b
999
- */
1000
- const idmapAttrRangeJoin = (a, b) => a.concat(b.filter(attr => !idmapAttrsHas(a, attr)))
1001
-
1002
- /**
1003
- * Whenever this is instantiated, it must receive a fresh array of ops, not something copied.
1004
- *
1005
- * @template Attrs
1006
- */
1007
- export class AttrRanges {
1008
- /**
1009
- * @param {Array<AttrRange<Attrs>>} ids
1010
- */
1011
- constructor (ids) {
1012
- this.sorted = false
1013
- /**
1014
- * @private
1015
- */
1016
- this._ids = ids
1017
- }
1018
-
1019
- copy () {
1020
- const cpy = new AttrRanges(this._ids.slice())
1021
- cpy.sorted = this.sorted
1022
- return cpy
1023
- }
1024
-
1025
- /**
1026
- * @param {number} clock
1027
- * @param {number} length
1028
- * @param {Array<ContentAttribute<Attrs>>} attrs
1029
- */
1030
- add (clock, length, attrs) {
1031
- if (length === 0) return
1032
- this.sorted = false
1033
- this._ids.push(new AttrRange(clock, length, attrs))
1034
- }
1035
-
1036
- /**
1037
- * Return the list of id ranges, sorted and merged.
1038
- */
1039
- getIds () {
1040
- const ids = this._ids
1041
- if (!this.sorted) {
1042
- this.sorted = true
1043
- ids.sort((a, b) => a.clock - b.clock)
1044
- /**
1045
- * algorithm thoughts:
1046
- * - sort (by clock AND by length), bigger length is to the right (or not, we can't make
1047
- * assumptions abouth length after long length has been split)
1048
- * -- maybe better: sort by clock+length. Then split items from right to left. This way, items are always
1049
- * in the right order. But I also need to swap if left items is smaller after split
1050
- * --- thought: there is no way to go around swapping. Unless, for each item from left to
1051
- * right, when I have to split because one of the look-ahead items is overlapping, i split
1052
- * it and merge the attributes into the following ones (that I also need to split). Best is
1053
- * probably left to right with lookahead.
1054
- * - left to right, split overlapping items so that we can make the assumption that either an
1055
- * item is overlapping with the next 1-on-1 or it is not overlapping at all (when splitting,
1056
- * we can already incorporate the attributes)
1057
- * -- better: for each item, go left to right and add own attributes to overlapping items.
1058
- * Split them if necessary. After split, i must insert the retainer at a valid position.
1059
- * - merge items if neighbor has same attributes
1060
- */
1061
- for (let i = 0; i < ids.length - 1;) {
1062
- const range = ids[i]
1063
- const nextRange = ids[i + 1]
1064
- // find out how to split range. it must match with next range.
1065
- // 1) we have space. Split if necessary.
1066
- // 2) concat attributes in range to the next range. Split range and splice the remainder at
1067
- // the correct position.
1068
- if (range.clock < nextRange.clock) { // might need to split range
1069
- if (range.clock + range.len > nextRange.clock) {
1070
- // is overlapping
1071
- const diff = nextRange.clock - range.clock
1072
- ids[i] = new AttrRange(range.clock, diff, range.attrs)
1073
- ids.splice(i + 1, 0, new AttrRange(nextRange.clock, range.len - diff, range.attrs))
1074
- }
1075
- i++
1076
- continue
1077
- }
1078
- // now we know that range.clock === nextRange.clock
1079
- // merge range with nextRange
1080
- const largerRange = range.len > nextRange.len ? range : nextRange
1081
- const smallerLen = range.len < nextRange.len ? range.len : nextRange.len
1082
- ids[i] = new AttrRange(range.clock, smallerLen, idmapAttrRangeJoin(range.attrs, nextRange.attrs))
1083
- if (range.len === nextRange.len) {
1084
- ids.splice(i + 1, 1)
1085
- } else {
1086
- ids[i + 1] = new AttrRange(range.clock + smallerLen, largerRange.len - smallerLen, largerRange.attrs)
1087
- array.bubblesortItem(ids, i + 1, (a, b) => a.clock - b.clock)
1088
- }
1089
- if (smallerLen === 0) i++
1090
- }
1091
- while (ids.length > 0 && ids[0].len === 0) {
1092
- ids.splice(0, 1)
1093
- }
1094
- // merge items without filtering or splicing the array.
1095
- // i is the current pointer
1096
- // j refers to the current insert position for the pointed item
1097
- // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]
1098
- let i, j
1099
- for (i = 1, j = 1; i < ids.length; i++) {
1100
- const left = ids[j - 1]
1101
- const right = ids[i]
1102
- if (left.clock + left.len === right.clock && idmapAttrsEqual(left.attrs, right.attrs)) {
1103
- ids[j - 1] = new AttrRange(left.clock, left.len + right.len, left.attrs)
1104
- } else if (right.len !== 0) {
1105
- if (j < i) {
1106
- ids[j] = right
1107
- }
1108
- j++
1109
- }
1110
- }
1111
- ids.length = ids.length === 0 ? 0 : (ids[j - 1].len === 0 ? j - 1 : j)
1112
- }
1113
- return ids
1114
- }
1115
-
1116
- /**
1117
- * Test a predicate against every attribute held by these ranges.
1118
- *
1119
- * Unlike {@link AttrRanges#getIds} this does **not** sort/merge - i.e. it does not mutate its
1120
- * receiver, which matters because it backs {@link $idMap}`.check`. The *set* of attributes is
1121
- * invariant under sorting/merging (merging only ever concatenates existing attr arrays), so this
1122
- * observes exactly the attributes that `getIds()` would expose.
1123
- *
1124
- * @param {(attr:ContentAttribute<Attrs>) => boolean} f
1125
- * @return {boolean}
1126
- */
1127
- everyAttr (f) {
1128
- const ids = this._ids
1129
- for (let i = 0; i < ids.length; i++) {
1130
- const attrs = ids[i].attrs
1131
- // only `createMaybeAttrRange` yields null attrs, never `clients` - defensive
1132
- if (attrs == null) continue
1133
- for (let j = 0; j < attrs.length; j++) {
1134
- if (!f(attrs[j])) return false
1135
- }
1136
- }
1137
- return true
1138
- }
1139
- }
1140
-
1141
- /**
1142
- * @template Attrs
1143
- */
1144
- export class IdMap {
1145
- constructor () {
1146
- /**
1147
- * @type {Map<number,AttrRanges<Attrs>>}
1148
- */
1149
- this.clients = new Map()
1150
- /**
1151
- * @type {Map<string, ContentAttribute<Attrs>>}
1152
- */
1153
- this.attrsH = new Map()
1154
- /**
1155
- * @type {Set<ContentAttribute<Attrs>>}
1156
- */
1157
- this.attrs = new Set()
1158
- }
1159
-
1160
- /**
1161
- * @param {(attrRange:AttrRange<Attrs>, client:number) => void} f
1162
- */
1163
- forEach (f) {
1164
- this.clients.forEach((ranges, client) => {
1165
- ranges.getIds().forEach((range) => {
1166
- f(range, client)
1167
- })
1168
- })
1169
- }
1170
-
1171
- isEmpty () {
1172
- return this.clients.size === 0
1173
- }
1174
-
1175
- /**
1176
- * @param {ID} id
1177
- * @return {boolean}
1178
- */
1179
- hasId (id) {
1180
- return this.has(id.client, id.clock)
1181
- }
1182
-
1183
- /**
1184
- * @param {number} client
1185
- * @param {number} clock
1186
- * @return {boolean}
1187
- */
1188
- has (client, clock) {
1189
- const dr = this.clients.get(client)
1190
- if (dr) {
1191
- return findIndexInIdRanges(dr.getIds(), clock) !== null
1192
- }
1193
- return false
1194
- }
1195
-
1196
- /**
1197
- * Total number of ids in `[clock, clock+len)` of `client` contained in this map (i.e. carrying
1198
- * an attribution, incl. an empty `[]`). Allocation-free (binary search + linear scan).
1199
- * Equivalent to `slice(client, clock, len).reduce((s, r) => r.attrs != null ? s + r.len : s, 0)`
1200
- * without allocating.
1201
- *
1202
- * @param {number} client
1203
- * @param {number} clock
1204
- * @param {number} len
1205
- * @return {number}
1206
- */
1207
- coveredLength (client, clock, len) {
1208
- const dr = this.clients.get(client)
1209
- let covered = 0
1210
- if (dr) {
1211
- const ranges = dr.getIds()
1212
- const end = clock + len
1213
- let index = findRangeStartInIdRanges(ranges, clock)
1214
- if (index !== null) {
1215
- for (; index < ranges.length; index++) {
1216
- const r = ranges[index]
1217
- if (r.clock >= end) break
1218
- const from = r.clock < clock ? clock : r.clock
1219
- const rEnd = r.clock + r.len
1220
- const to = rEnd > end ? end : rEnd
1221
- covered += to - from
1222
- }
1223
- }
1224
- }
1225
- return covered
1226
- }
1227
-
1228
- /**
1229
- * Return attributions for a slice of ids.
1230
- *
1231
- * @param {ID} id
1232
- * @param {number} len
1233
- * @return {Array<MaybeAttrRange<Attrs>>}
1234
- */
1235
- sliceId (id, len) {
1236
- return this.slice(id.client, id.clock, len)
1237
- }
1238
-
1239
- /**
1240
- * Return attributions for a slice of ids.
1241
- *
1242
- * @param {number} client
1243
- * @param {number} clock
1244
- * @param {number} len
1245
- * @return {Array<MaybeAttrRange<Attrs>>}
1246
- */
1247
- slice (client, clock, len) {
1248
- const dr = this.clients.get(client)
1249
- /**
1250
- * @type {Array<MaybeAttrRange<Attrs>>}
1251
- */
1252
- const res = []
1253
- if (dr) {
1254
- /**
1255
- * @type {Array<AttrRange<Attrs>>}
1256
- */
1257
- const ranges = dr.getIds()
1258
- let index = findRangeStartInIdRanges(ranges, clock)
1259
- if (index !== null) {
1260
- let prev = null
1261
- while (index < ranges.length) {
1262
- let r = ranges[index]
1263
- if (r.clock < clock) {
1264
- r = new AttrRange(clock, r.len - (clock - r.clock), r.attrs)
1265
- }
1266
- if (r.clock + r.len > clock + len) {
1267
- r = new AttrRange(r.clock, clock + len - r.clock, r.attrs)
1268
- }
1269
- if (r.len <= 0) break
1270
- const prevEnd = prev != null ? prev.clock + prev.len : clock
1271
- if (prevEnd < r.clock) {
1272
- res.push(createMaybeAttrRange(prevEnd, r.clock - prevEnd, null))
1273
- }
1274
- prev = r
1275
- res.push(r)
1276
- index++
1277
- }
1278
- }
1279
- }
1280
- if (res.length > 0) {
1281
- const last = res[res.length - 1]
1282
- const end = last.clock + last.len
1283
- if (end < clock + len) {
1284
- res.push(createMaybeAttrRange(end, clock + len - end, null))
1285
- }
1286
- } else {
1287
- res.push(createMaybeAttrRange(clock, len, null))
1288
- }
1289
- return res
1290
- }
1291
-
1292
- /**
1293
- * @param {number} client
1294
- * @param {number} clock
1295
- * @param {number} len
1296
- * @param {Array<ContentAttribute<Attrs>>} attrs
1297
- */
1298
- add (client, clock, len, attrs) {
1299
- if (len === 0) return
1300
- attrs = _ensureAttrs(this, attrs)
1301
- const ranges = this.clients.get(client)
1302
- if (ranges == null) {
1303
- this.clients.set(client, new AttrRanges([new AttrRange(clock, len, attrs)]))
1304
- } else {
1305
- ranges.add(clock, len, attrs)
1306
- }
1307
- }
1308
-
1309
- /**
1310
- * @param {number} client
1311
- * @param {number} clock
1312
- * @param {number} len
1313
- */
1314
- delete (client, clock, len) {
1315
- _deleteRangeFromIdSet(this, client, clock, len)
1316
- }
1317
- }
1318
-
1319
- /**
1320
- * @template T
1321
- * @param {Array<T>} attrs
1322
- * @param {T} attr
1323
- *
1324
- */
1325
- const idmapAttrsHas = (attrs, attr) => attrs.find(a => a === attr)
1326
-
1327
- /**
1328
- * @template T
1329
- * @param {Array<T>} a
1330
- * @param {Array<T>} b
1331
- */
1332
- export const idmapAttrsEqual = (a, b) => a.length === b.length && a.every(v => idmapAttrsHas(b, v))
1333
-
1334
- /**
1335
- * Efficiently encodes IdMap to a binary form. Ensures that information is de-duplicated when
1336
- * written. Attribute.names are referenced by id. Attributes themselfs are also referenced by id.
1337
- *
1338
- * @template Attr
1339
- * @param {IdSetEncoderV1 | IdSetEncoderV2} encoder
1340
- * @param {IdMap<Attr>} idmap
1341
- *
1342
- * @private
1343
- * @function
1344
- */
1345
- export const writeIdMap = (encoder, idmap) => {
1346
- encoding.writeVarUint(encoder.restEncoder, idmap.clients.size)
1347
- let lastWrittenClientId = 0
1348
- /**
1349
- * @type {Map<ContentAttribute<Attr>, number>}
1350
- */
1351
- const visitedAttributions = map.create()
1352
- /**
1353
- * @type {Map<string, number>}
1354
- */
1355
- const visitedAttrNames = map.create()
1356
- // Ensure that the ids are written in a deterministic order (smaller clientids first)
1357
- array.from(idmap.clients.entries())
1358
- .sort((a, b) => a[0] - b[0])
1359
- .forEach(([client, _idRanges]) => {
1360
- const attrRanges = _idRanges.getIds()
1361
- encoder.resetIdSetCurVal()
1362
- const diff = client - lastWrittenClientId
1363
- encoding.writeVarUint(encoder.restEncoder, diff)
1364
- lastWrittenClientId = client
1365
- const len = attrRanges.length
1366
- encoding.writeVarUint(encoder.restEncoder, len)
1367
- for (let i = 0; i < len; i++) {
1368
- const item = attrRanges[i]
1369
- const attrs = item.attrs
1370
- const attrLen = attrs.length
1371
- encoder.writeIdSetClock(item.clock)
1372
- encoder.writeIdSetLen(item.len)
1373
- encoding.writeVarUint(encoder.restEncoder, attrLen)
1374
- for (let j = 0; j < attrLen; j++) {
1375
- const attr = attrs[j]
1376
- const attrId = visitedAttributions.get(attr)
1377
- if (attrId != null) {
1378
- encoding.writeVarUint(encoder.restEncoder, attrId)
1379
- } else {
1380
- const newAttrId = visitedAttributions.size
1381
- visitedAttributions.set(attr, newAttrId)
1382
- encoding.writeVarUint(encoder.restEncoder, newAttrId)
1383
- const attrNameId = visitedAttrNames.get(attr.name)
1384
- // write attr.name
1385
- if (attrNameId != null) {
1386
- encoding.writeVarUint(encoder.restEncoder, attrNameId)
1387
- } else {
1388
- const newAttrNameId = visitedAttrNames.size
1389
- encoding.writeVarUint(encoder.restEncoder, newAttrNameId)
1390
- encoding.writeVarString(encoder.restEncoder, attr.name)
1391
- visitedAttrNames.set(attr.name, newAttrNameId)
1392
- }
1393
- encoding.writeAny(encoder.restEncoder, /** @type {any} */ (attr.val))
1394
- }
1395
- }
1396
- }
1397
- })
1398
- }
1399
-
1400
- /**
1401
- * @param {IdMap<any>} idmap
1402
- */
1403
- export const encodeIdMap = idmap => {
1404
- const encoder = new IdSetEncoderV2()
1405
- writeIdMap(encoder, idmap)
1406
- return encoder.toUint8Array()
1407
- }
1408
-
1409
- /**
1410
- * @param {IdSetDecoderV1 | IdSetDecoderV2} decoder
1411
- * @return {IdMap<any>}
1412
- *
1413
- * @private
1414
- * @function
1415
- */
1416
- export const readIdMap = decoder => {
1417
- const idmap = new IdMap()
1418
- const numClients = decoding.readVarUint(decoder.restDecoder)
1419
- /**
1420
- * @type {Array<ContentAttribute<any>>}
1421
- */
1422
- const visitedAttributions = []
1423
- /**
1424
- * @type {Array<string>}
1425
- */
1426
- const visitedAttrNames = []
1427
- let lastClientId = 0
1428
- for (let i = 0; i < numClients; i++) {
1429
- decoder.resetDsCurVal()
1430
- const client = lastClientId + decoding.readVarUint(decoder.restDecoder)
1431
- lastClientId = client
1432
- const numberOfDeletes = decoding.readVarUint(decoder.restDecoder)
1433
- /**
1434
- * @type {Array<AttrRange<any>>}
1435
- */
1436
- const attrRanges = []
1437
- for (let i = 0; i < numberOfDeletes; i++) {
1438
- const rangeClock = decoder.readDsClock()
1439
- const rangeLen = decoder.readDsLen()
1440
- /**
1441
- * @type {Array<ContentAttribute<any>>}
1442
- */
1443
- const attrs = []
1444
- const attrsLen = decoding.readVarUint(decoder.restDecoder)
1445
- for (let j = 0; j < attrsLen; j++) {
1446
- const attrId = decoding.readVarUint(decoder.restDecoder)
1447
- if (attrId >= visitedAttributions.length) {
1448
- // attrId not known yet
1449
- const attrNameId = decoding.readVarUint(decoder.restDecoder)
1450
- if (attrNameId >= visitedAttrNames.length) {
1451
- visitedAttrNames.push(decoding.readVarString(decoder.restDecoder))
1452
- }
1453
- visitedAttributions.push(new ContentAttribute(visitedAttrNames[attrNameId], decoding.readAny(decoder.restDecoder)))
1454
- }
1455
- attrs.push(visitedAttributions[attrId])
1456
- }
1457
- attrRanges.push(new AttrRange(rangeClock, rangeLen, attrs))
1458
- }
1459
- idmap.clients.set(client, new AttrRanges(attrRanges))
1460
- }
1461
- visitedAttributions.forEach(attr => {
1462
- idmap.attrs.add(attr)
1463
- idmap.attrsH.set(attr.hash(), attr)
1464
- })
1465
- return idmap
1466
- }
1467
-
1468
- /**
1469
- * @param {Uint8Array} data
1470
- * @return {IdMap<any>}
1471
- */
1472
- export const decodeIdMap = data => readIdMap(new IdSetDecoderV2(decoding.createDecoder(data)))
1473
-
1474
- /**
1475
- * @template Attrs
1476
- * @param {IdMap<Attrs>} idmap
1477
- * @param {Array<ContentAttribute<Attrs>>} attrs
1478
- * @return {Array<ContentAttribute<Attrs>>}
1479
- */
1480
- const _ensureAttrs = (idmap, attrs) => attrs.map(attr =>
1481
- idmap.attrs.has(attr)
1482
- ? attr
1483
- : map.setIfUndefined(idmap.attrsH, attr.hash(), () => {
1484
- idmap.attrs.add(attr)
1485
- return attr
1486
- }))
1487
-
1488
- export const createIdMap = () => new IdMap()
1489
-
1490
- /**
1491
- * Schema of an {@link IdSet}.
1492
- *
1493
- * Nominal: `check` is a single identity compare against the globally interned `y:idSet` tag, so it
1494
- * stays sound across duplicate yjs installations (unlike `instanceof`) - the same reason
1495
- * {@link $renderer} uses `$type`.
1496
- */
1497
- export const $idSet = IdSet.prototype.$type = s.$type('y:idSet', IdSet)
1498
-
1499
- /**
1500
- * Schema of an {@link IdMap} with any mapped-value type. This is where the nominal `y:idMap` tag
1501
- * lives - {@link $idMap} builds on it. Mirrors lib0's `$deltaAny` / `$delta` split.
1502
- */
1503
- export const $idMapAny = /** @type {s.Schema<IdMap<any>>} */ (IdMap.prototype.$type = s.$type('y:idMap', IdMap))
1504
-