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
@@ -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
-