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,21 +0,0 @@
1
- import type { BlockId } from '../placement/model.js';
2
- import type { DataPatch } from '../data.js';
3
- import type { DataTarget, PlanStep, Prepared } from './types.js';
4
- import type { OpsContext } from './steps.js';
5
- /** One column of a table's `data.columns`. */
6
- export type TableColumn = {
7
- id: string;
8
- width?: number;
9
- };
10
- /** The table ops of one facade, prepared. */
11
- export declare const tableOps: (c: OpsContext & {
12
- dataSteps: (target: DataTarget, patches: DataPatch[]) => PlanStep[] | null;
13
- }) => {
14
- insertTableRow: (table: BlockId, index: number) => Prepared;
15
- deleteTableRows: (rows: readonly BlockId[]) => Prepared;
16
- insertTableColumn: (table: BlockId, index: number, width?: number) => Prepared;
17
- deleteTableColumn: (table: BlockId, column: string | number) => Prepared;
18
- moveTableColumn: (table: BlockId, column: string | number, to: number) => Prepared;
19
- moveTableRows: (rows: readonly BlockId[], to: number) => Prepared;
20
- fillTableCell: (row: BlockId, column: string | number) => Prepared;
21
- };
@@ -1,288 +0,0 @@
1
- /**
2
- * Table ops (`table.*`): a table (a kind whose role says `table`) holds
3
- * rows, a row cells, each cell names its column (`data.column`) and the
4
- * table lists its columns in order (`data.columns`: `{ id, width? }`). The
5
- * columns are data: inserting, deleting or moving one writes the table's
6
- * `columns` array (and the cells of the rows it shows) in one plan, and
7
- * the index shows every row's cells in that order (`table.columns`); a
8
- * cell of no listed column does not display (`table.cell`), and the view
9
- * pads a row that shows fewer cells than the table's columns
10
- * (`table.pad`). Rows are blocks: a row moves among its table's rows by
11
- * placement.
12
- */
13
- import { id as newId } from '../../utils.js';
14
- import { ref } from './plan.js';
15
- /** The table ops of one facade, prepared. */
16
- export const tableOps = (c) => {
17
- const { roles, childrenIds, positionOf, live, isTable, isTableRow, rowKindOf, tableColumns, tableGrid, blockDataOf, dataItemIds, REFUSED, plan, ranksFor, move, remove, emptied, dataSteps } = c;
18
- /** The cell kind of `table`'s rows. */
19
- const cellKindOf = (table) => roles.defaultChild(rowKindOf(table));
20
- const cellSpec = (table, column) => ({
21
- id: newId('b'),
22
- type: cellKindOf(table),
23
- data: { column }
24
- });
25
- /**
26
- * The table's columns and grid. A table listing none gets one column
27
- * per column of its widest row, with ids from their positions (`c1`,
28
- * `c2`, … as `tableBlock`'s), and `adopt` names each shown
29
- * cell's column: two peers adopting one table write the same array
30
- * items and the same cells' columns. The op then writes that array
31
- * first, in its plan ({@link columnsSteps}).
32
- */
33
- const adopted = (table) => {
34
- const grid = tableGrid(table);
35
- if (grid === null)
36
- return null;
37
- const listed = tableColumns(table);
38
- if (listed !== null) {
39
- const stored = blockDataOf(table)?.columns;
40
- const raw = stored.map((col) => {
41
- const id = col?.id;
42
- return typeof id === 'string' ? id : null;
43
- });
44
- return { columns: listed, raw, adopt: [], first: [], grid };
45
- }
46
- const columns = grid.columns.map((_, i) => ({ id: `c${i + 1}` }));
47
- const adopt = [];
48
- for (const row of grid.rows)
49
- row.cells.forEach((cell, i) => {
50
- if (cell === null)
51
- return;
52
- const steps = dataSteps(cell, [{ path: ['column'], value: columns[i].id }]);
53
- if (steps)
54
- adopt.push(...steps);
55
- });
56
- return {
57
- columns,
58
- raw: columns.map((col) => col.id),
59
- adopt,
60
- first: [{ path: ['columns'], value: columns }],
61
- grid: { columns: columns.map((col) => col.id), rows: grid.rows }
62
- };
63
- };
64
- /** The adoption's steps, then `patches` of the table's `data.columns`. */
65
- const columnsSteps = (table, a, patches = []) => {
66
- const all = [...a.first, ...patches];
67
- const steps = all.length === 0 ? [] : dataSteps(table, all);
68
- return steps === null ? null : [...a.adopt, ...steps];
69
- };
70
- /**
71
- * The position among the grid's columns of `column`: a position, or an
72
- * id (a table listing no columns names them by position until it adopts
73
- * them); `-1` when none.
74
- */
75
- const positionIn = (a, listed, column) => {
76
- const at = typeof column === 'number'
77
- ? column
78
- : listed
79
- ? a.grid.columns.indexOf(column)
80
- : Number(column);
81
- return Number.isInteger(at) && at >= 0 && at < a.grid.columns.length ? at : -1;
82
- };
83
- /**
84
- * The stored entry (its index in `data.columns`) the listed column at
85
- * position `at` is: the first naming it; the array's length past them.
86
- */
87
- const rawIndex = (a, at) => {
88
- const id = a.columns[at]?.id;
89
- const i = id === undefined ? -1 : a.raw.indexOf(id);
90
- return i < 0 ? a.raw.length : i;
91
- };
92
- /**
93
- * Insert a row at `index` among `table`'s rows (`table.insert-row`): one
94
- * empty cell per column, in one plan. An insert's rank (it extends this
95
- * client's run, `order.insert.run`). `ids`: the new row.
96
- */
97
- const insertTableRow = (table, index) => {
98
- table = ref(table);
99
- if (!isTable(table) || !live(table))
100
- return REFUSED;
101
- const a = adopted(table);
102
- if (a === null)
103
- return REFUSED;
104
- const rows = childrenIds(table);
105
- const at = Math.max(0, Math.min(Math.trunc(index) || 0, rows.length));
106
- const row = {
107
- id: newId('b'),
108
- type: rowKindOf(table),
109
- data: {},
110
- children: a.columns.map((col) => cellSpec(table, col.id))
111
- };
112
- const ranks = ranksFor(table, at, 1, [], true);
113
- const data = columnsSteps(table, a);
114
- if (data === null)
115
- return REFUSED;
116
- return plan([row.id], [...data, { op: 'insertBlocks', parent: table, index: at, specs: [row], ranks }]);
117
- };
118
- /**
119
- * Delete `rows` with their cells (`table.delete-row`): one plan; a table
120
- * left with no row goes with them.
121
- */
122
- const deleteTableRows = (rows) => {
123
- const ids = [...new Set(rows.map(ref))];
124
- if (ids.length === 0 || ids.some((id) => !live(id) || !isTableRow(id)))
125
- return REFUSED;
126
- return plan(ids, emptied(ids, ids.map((id) => remove(id))));
127
- };
128
- /**
129
- * Insert a column at `index` among `table`'s listed columns
130
- * (`table.insert-column`): a new id in `data.columns` and an empty cell
131
- * for it in every row the table shows, in one plan. `width`: the new
132
- * column's. `ids`: the table.
133
- */
134
- const insertTableColumn = (table, index, width) => {
135
- table = ref(table);
136
- if (!isTable(table) || !live(table))
137
- return REFUSED;
138
- const a = adopted(table);
139
- if (a === null)
140
- return REFUSED;
141
- const at = Math.max(0, Math.min(Math.trunc(index) || 0, a.columns.length));
142
- const column = typeof width === 'number' && Number.isFinite(width) && width > 0
143
- ? { id: newId('c'), width }
144
- : { id: newId('c') };
145
- const data = columnsSteps(table, a, [
146
- { path: ['columns'], splice: [rawIndex(a, at), 0, column] }
147
- ]);
148
- if (data === null)
149
- return REFUSED;
150
- const cells = a.grid.rows.map((row) => {
151
- const kids = childrenIds(row.id);
152
- const slot = Math.min(row.cells.slice(0, at).filter((x) => x !== null).length, kids.length);
153
- return {
154
- op: 'insertBlocks',
155
- parent: row.id,
156
- index: slot,
157
- specs: [cellSpec(table, column.id)],
158
- ranks: ranksFor(row.id, slot, 1)
159
- };
160
- });
161
- return plan([table], [...data, ...cells]);
162
- };
163
- /**
164
- * Delete a column (`table.delete-column`, by id or position among the
165
- * grid's): it leaves `data.columns` (every entry naming it) and every
166
- * shown cell of it is deleted, in one plan; a table left with no column
167
- * goes with it. A column the table shows but no longer lists
168
- * (`table.cell`) loses its cells. `ids`: the table.
169
- */
170
- const deleteTableColumn = (table, column) => {
171
- table = ref(table);
172
- if (!isTable(table) || !live(table))
173
- return REFUSED;
174
- const listed = tableColumns(table) !== null;
175
- const a = adopted(table);
176
- if (a === null)
177
- return REFUSED;
178
- const at = positionIn(a, listed, column);
179
- if (at < 0)
180
- return REFUSED;
181
- if (a.grid.columns.length === 1)
182
- return plan([table], [remove(table)]);
183
- const id = a.grid.columns[at];
184
- const items = listed ? dataItemIds(table, ['columns']) : [];
185
- const entries = listed
186
- ? a.raw.flatMap((c, i) => (c === id && items[i] ? [items[i]] : []))
187
- : [];
188
- const data = columnsSteps(table, a, listed
189
- ? entries.map((item) => ({ path: ['columns', item] }))
190
- : [{ path: ['columns'], splice: [at, 1] }]);
191
- if (data === null)
192
- return REFUSED;
193
- const gone = a.grid.rows.flatMap((row) => {
194
- const cell = row.cells[at];
195
- return cell === null || cell === undefined ? [] : [cell];
196
- });
197
- return plan([table], emptied(gone, [...data, ...gone.map((cell) => remove(cell))]));
198
- };
199
- /**
200
- * Move a listed column to position `to` among them (`table.move-column`):
201
- * one `order` patch of `data.columns`; no cell moves, every row shows its
202
- * cells in the new order. `ids`: the table.
203
- */
204
- const moveTableColumn = (table, column, to) => {
205
- table = ref(table);
206
- if (!isTable(table) || !live(table))
207
- return REFUSED;
208
- const listed = tableColumns(table) !== null;
209
- const a = adopted(table);
210
- if (a === null)
211
- return REFUSED;
212
- const from = positionIn(a, listed, column);
213
- const dest = Math.trunc(to);
214
- if (from < 0 || from >= a.columns.length || !(dest >= 0 && dest < a.columns.length))
215
- return REFUSED;
216
- if (from === dest) {
217
- const same = columnsSteps(table, a);
218
- return same === null ? REFUSED : plan([table], same);
219
- }
220
- const moved = a.columns.map((_, i) => i);
221
- moved.splice(from, 1);
222
- moved.splice(dest, 0, from);
223
- // Over the stored entries: the listed ones in their new order, then the rest as they were.
224
- const firsts = moved.map((i) => rawIndex(a, i));
225
- const rest = a.raw.map((_, i) => i).filter((i) => !firsts.includes(i));
226
- const data = columnsSteps(table, a, [{ path: ['columns'], order: [...firsts, ...rest] }]);
227
- return data === null ? REFUSED : plan([table], data);
228
- };
229
- /**
230
- * Move rows to position `to` among their table's rows
231
- * (`table.move-row`): a move (plain ranks). Refused unless every one is
232
- * a row of `table`. `ids`: the rows.
233
- */
234
- const moveTableRows = (rows, to) => {
235
- const ids = rows.map(ref);
236
- const table = ids.length > 0 ? positionOf(ids[0])?.parent : null;
237
- if (table == null || ids.some((id) => !isTableRow(id) || positionOf(id).parent !== table))
238
- return REFUSED;
239
- const at = Math.max(0, Math.min(Math.trunc(to) || 0, childrenIds(table).length));
240
- return plan(ids, move(ids, table, at));
241
- };
242
- /**
243
- * Create the cell `row` shows none of for `column` (an id, or a
244
- * position among the grid's; `table.pad`: the first edit in a padded
245
- * cell), empty, in one plan. A column the table shows but no longer
246
- * lists (`table.cell`) is listed again, last. `ids`: the new cell.
247
- */
248
- const fillTableCell = (row, column) => {
249
- row = ref(row);
250
- if (!isTableRow(row) || !live(row))
251
- return REFUSED;
252
- const table = positionOf(row).parent;
253
- const listed = tableColumns(table) !== null;
254
- const a = adopted(table);
255
- if (a === null)
256
- return REFUSED;
257
- const at = positionIn(a, listed, column);
258
- const shown = a.grid.rows.find((r) => r.id === row);
259
- if (at < 0 || shown === undefined || shown.cells[at] !== null)
260
- return REFUSED;
261
- const kids = childrenIds(row);
262
- const slot = Math.min(shown.cells.slice(0, at).filter((x) => x !== null).length, kids.length);
263
- const id = a.grid.columns[at];
264
- const spec = cellSpec(table, id);
265
- const data = columnsSteps(table, a, at < a.columns.length ? [] : [{ path: ['columns'], splice: [a.raw.length, 0, { id }] }]);
266
- if (data === null)
267
- return REFUSED;
268
- return plan([spec.id], [
269
- ...data,
270
- {
271
- op: 'insertBlocks',
272
- parent: row,
273
- index: slot,
274
- specs: [spec],
275
- ranks: ranksFor(row, slot, 1)
276
- }
277
- ]);
278
- };
279
- return {
280
- insertTableRow,
281
- deleteTableRows,
282
- insertTableColumn,
283
- deleteTableColumn,
284
- moveTableColumn,
285
- moveTableRows,
286
- fillTableCell
287
- };
288
- };
@@ -1,58 +0,0 @@
1
- /**
2
- * The generation cutover (schema generation 4 → 5, 0.1.0-next.25).
3
- *
4
- * Generation 5 changed the format of what a document stores: marks are
5
- * paired operations (fork patch YP13), ranks are variable-length
6
- * and a SyncStep2 is v2 on the wire. Bytes of generation 4 are never
7
- * integrated beside generation 5's (every frame and container names its
8
- * generation, `protocols/envelope.ts`): a container of generation 4 is
9
- * READ — its records applied to a scratch document, no admission, no
10
- * write — and its visible document taken as JSON, which generation 5
11
- * seeds again (a deterministic seed: two replicas converting the same
12
- * state write the same update). Reading needs no conversion of its own:
13
- * generation 4's plain format items fold as upstream formats, its ranks
14
- * order as strings, its delete records read as they are.
15
- *
16
- * What a conversion keeps: the visible document (blocks with their ids,
17
- * kinds, data and content, marks, the document's data). What it does not:
18
- * CRDT identity, history (undo), attribution, waiting deletes, and edits
19
- * a replica never sent before the cutover.
20
- *
21
- * Worker-safe: the room converts its container at load.
22
- */
23
- import type { EngineApi, YDoc } from '../engine-api.js';
24
- import { type GenerationRecord } from '../protocols/envelope.js';
25
- import type { DocumentSemanticsConfig } from '../document.js';
26
- import type { JSONDoc } from '../../utils/json.js';
27
- /** The schema generation this build converts from. */
28
- export declare const PREVIOUS_SCHEMA = 4;
29
- /** Whether container record `v` is generation 4's (`{engine, protocol, schema: 4}`). */
30
- export declare const isPreviousGenerationRecord: (v: unknown) => v is GenerationRecord;
31
- /** A facade that reads (`toJSON`) and is let go (`dispose`). */
32
- type Reader = {
33
- toJSON(): JSONDoc;
34
- dispose(): void;
35
- };
36
- export declare const bindGenerations: (Y: EngineApi) => {
37
- isPreviousGenerationRecord: (v: unknown) => v is GenerationRecord;
38
- /**
39
- * The visible document a state of generation 4 holds, as JSON: `updates`
40
- * (v1 updates, or `{ v2 }` snapshots, in order) applied to a scratch
41
- * document, read through `facadeOf` (a facade of this build, with the
42
- * semantics the document is read with).
43
- */
44
- previousJSON: (updates: ReadonlyArray<Uint8Array | {
45
- v2: Uint8Array;
46
- }>, facadeOf: (doc: YDoc) => Reader) => JSONDoc;
47
- /**
48
- * This generation's seed of `value` — the update a document seeds it
49
- * with (deterministic: the same value writes the same update anywhere),
50
- * read with `semantics`.
51
- */
52
- seedOf: (value: JSONDoc, semantics?: DocumentSemanticsConfig) => Uint8Array;
53
- /** {@link previousJSON} read with `semantics` (the bundled kinds' by default). */
54
- previousJSONWith: (updates: ReadonlyArray<Uint8Array | {
55
- v2: Uint8Array;
56
- }>, semantics?: DocumentSemanticsConfig) => JSONDoc;
57
- };
58
- export {};
@@ -1,70 +0,0 @@
1
- import { asEngineDoc } from '../structs.js';
2
- import { bindEdytorDoc } from '../edytor-doc.js';
3
- import { keepingReplaced } from '../incarnations.js';
4
- import { PROTOCOL_VERSION } from '../protocols/envelope.js';
5
- import { defaultSemantics, facadeConfigOf } from '../semantics.js';
6
- /** The schema generation this build converts from. */
7
- export const PREVIOUS_SCHEMA = 4;
8
- /** Whether container record `v` is generation 4's (`{engine, protocol, schema: 4}`). */
9
- export const isPreviousGenerationRecord = (v) => typeof v === 'object' &&
10
- v !== null &&
11
- v.engine === 'yjs-v14' &&
12
- v.protocol === PROTOCOL_VERSION &&
13
- v.schema === PREVIOUS_SCHEMA &&
14
- [undefined, 'v1', 'v2'].includes(v.storage);
15
- export const bindGenerations = (Y) => {
16
- const docs = bindEdytorDoc(Y);
17
- /** A facade reading with `semantics` (the bundled kinds' by default). */
18
- const facadeWith = (semantics = defaultSemantics) => (doc) => docs.create(asEngineDoc(doc), facadeConfigOf(semantics));
19
- const generations = {
20
- isPreviousGenerationRecord,
21
- /**
22
- * The visible document a state of generation 4 holds, as JSON: `updates`
23
- * (v1 updates, or `{ v2 }` snapshots, in order) applied to a scratch
24
- * document, read through `facadeOf` (a facade of this build, with the
25
- * semantics the document is read with).
26
- */
27
- previousJSON: (updates, facadeOf) => {
28
- const doc = keepingReplaced(new Y.Doc());
29
- try {
30
- Y.transact(doc, () => {
31
- for (const u of updates)
32
- if (u instanceof Uint8Array)
33
- Y.applyUpdate(doc, u);
34
- else
35
- Y.applyUpdateV2(doc, u.v2);
36
- });
37
- const facade = facadeOf(doc);
38
- try {
39
- return facade.toJSON();
40
- }
41
- finally {
42
- facade.dispose();
43
- }
44
- }
45
- finally {
46
- doc.destroy();
47
- }
48
- },
49
- /**
50
- * This generation's seed of `value` — the update a document seeds it
51
- * with (deterministic: the same value writes the same update anywhere),
52
- * read with `semantics`.
53
- */
54
- seedOf: (value, semantics) => {
55
- const doc = keepingReplaced(new Y.Doc());
56
- try {
57
- const facade = facadeWith(semantics)(doc);
58
- facade.seed(value.children, value.data);
59
- facade.dispose();
60
- return Y.encodeStateAsUpdate(doc);
61
- }
62
- finally {
63
- doc.destroy();
64
- }
65
- },
66
- /** {@link previousJSON} read with `semantics` (the bundled kinds' by default). */
67
- previousJSONWith: (updates, semantics) => generations.previousJSON(updates, facadeWith(semantics))
68
- };
69
- return generations;
70
- };
@@ -1,61 +0,0 @@
1
- /**
2
- * Legacy (v13 Edytor) document reader.
3
- *
4
- * A v13 Edytor document is a `doc.getMap('content')` root whose attrs are
5
- * `{id:'root', type:'root', data, children: Y.Array<YMap>, content:
6
- * Y.Array<YText|YMap>}`; each block Y.Map carries `{type, id, data,
7
- * children, content}`; content arrays mix `Y.Text` parts (marks = format
8
- * attributes) and `Y.Map` inline atoms (`{id, type, data}`). A separate
9
- * `doc.getText('INITIALIZED')` root marks initialization.
10
- *
11
- * When those v1 updates are applied to the vendored v14 engine, every legacy
12
- * shared type decodes as a unified `Y.Node` with `_legacyTypeRef` recording
13
- * the original class:
14
- *
15
- * | v13 type | `_legacyTypeRef` | read as |
16
- * | --------- | ---------------- | -------------------------------- |
17
- * | `Y.Array` | 0 | sequence children (`get`/`length`) |
18
- * | `Y.Map` | 1 | attrs (`getAttr`/`attrKeys`) |
19
- * | `Y.Text` | 2 | delta children: `{insert, format}` |
20
- * | fragment | 4 | root shared types |
21
- *
22
- * Tombstoned content never appears — deleted blocks are absent from the
23
- * children sequence, deleted/format-removed text is absent from the delta —
24
- * so the materialized JSON is the logical doc exactly as a v13 reader saw
25
- * it (the same contract the v13 fixtures pin).
26
- */
27
- import type { EngineApi, EngineDoc } from '../engine-api.js';
28
- import { type JSONDoc } from '../../utils/json.js';
29
- /** v13 root key for the document tree. */
30
- export declare const LEGACY_ROOT_KEY = "content";
31
- /**
32
- * Raised when legacy update rows carry structs whose CRDT dependencies are
33
- * absent from the stored set — i.e. a peer's update never reached this
34
- * browser's IndexedDB before cutover. Applying such rows leaves
35
- * `store.pendingStructs`/`pendingDs` non-null and the materialized JSON
36
- * would silently omit the un-integrated content, so the reader fails closed
37
- * instead of producing a truncated document (gate-2 migration probe).
38
- */
39
- export declare class PendingLegacyUpdatesError extends Error {
40
- /** Clients whose structs are still missing (`client → clock` needed). */
41
- readonly missing: ReadonlyMap<number, number>;
42
- constructor(missing: ReadonlyMap<number, number>, hasPendingDs: boolean);
43
- }
44
- /**
45
- * True iff the doc carries the v13 Edytor schema: a `content` root whose
46
- * `children` attr is a sequence node. Anything else (empty doc, v14 schema,
47
- * foreign document) is rejected by the migration path — it is not a legacy
48
- * document we know how to read.
49
- */
50
- export declare const isLegacyDoc: (doc: EngineDoc) => boolean;
51
- /**
52
- * Bind the legacy reader to the engine module. `readLegacyJSON(updates)`
53
- * applies the stored v1 update rows to a scratch doc (in order — pending
54
- * offline rows are simply later rows) and materializes the logical JSONDoc.
55
- * The scratch doc is discarded; nothing is written back to any store.
56
- */
57
- export declare const bindLegacyReader: (Y: EngineApi) => {
58
- readLegacyJSON: (updates: Uint8Array[]) => JSONDoc;
59
- readLegacyJSONFromDoc: (doc: EngineDoc) => JSONDoc;
60
- isLegacyDoc: (doc: EngineDoc) => boolean;
61
- };
@@ -1,151 +0,0 @@
1
- import { asEngineDoc } from '../structs.js';
2
- import { cloneJson } from '../../utils/json.js';
3
- // Legacy type refs (vendored `structs/Item.js` — not re-exported publicly).
4
- const Y_ARRAY_REF = 0;
5
- const Y_MAP_REF = 1;
6
- const Y_TEXT_REF = 2;
7
- /** v13 root key for the document tree. */
8
- export const LEGACY_ROOT_KEY = 'content';
9
- /**
10
- * Raised when legacy update rows carry structs whose CRDT dependencies are
11
- * absent from the stored set — i.e. a peer's update never reached this
12
- * browser's IndexedDB before cutover. Applying such rows leaves
13
- * `store.pendingStructs`/`pendingDs` non-null and the materialized JSON
14
- * would silently omit the un-integrated content, so the reader fails closed
15
- * instead of producing a truncated document (gate-2 migration probe).
16
- */
17
- export class PendingLegacyUpdatesError extends Error {
18
- /** Clients whose structs are still missing (`client → clock` needed). */
19
- missing;
20
- constructor(missing, hasPendingDs) {
21
- const clients = [...missing.keys()].join(', ');
22
- super(`Legacy update rows have unmet CRDT dependencies (pending structs` +
23
- `${clients.length > 0 ? ` waiting on client(s) ${clients}` : ''}` +
24
- `${hasPendingDs ? ', pending delete set' : ''}). ` +
25
- `Materializing now would silently drop content that has not integrated.`);
26
- this.name = 'PendingLegacyUpdatesError';
27
- this.missing = missing;
28
- }
29
- }
30
- /**
31
- * True iff the doc carries the v13 Edytor schema: a `content` root whose
32
- * `children` attr is a sequence node. Anything else (empty doc, v14 schema,
33
- * foreign document) is rejected by the migration path — it is not a legacy
34
- * document we know how to read.
35
- */
36
- export const isLegacyDoc = (doc) => {
37
- const root = doc.get(LEGACY_ROOT_KEY);
38
- const children = root.getAttr('children');
39
- return children != null && children._legacyTypeRef === Y_ARRAY_REF;
40
- };
41
- const readText = (node) => {
42
- const out = [];
43
- const children = node.delta?.toJSON?.()?.children;
44
- for (const op of children ?? []) {
45
- if (typeof op?.insert !== 'string')
46
- continue;
47
- if (op.insert.length === 0)
48
- continue;
49
- const t = { text: op.insert };
50
- if (op.format && Object.keys(op.format).length > 0) {
51
- t.marks = { ...op.format };
52
- }
53
- out.push(t);
54
- }
55
- return out;
56
- };
57
- const readInline = (node) => {
58
- const inline = { type: String(node.getAttr('type') ?? 'inline') };
59
- const id = node.getAttr('id');
60
- if (id !== undefined)
61
- inline.id = String(id);
62
- const data = node.getAttr('data');
63
- if (data != null && typeof data === 'object') {
64
- inline.data = cloneJson(data);
65
- }
66
- return inline;
67
- };
68
- const readBlock = (node) => {
69
- const block = { type: String(node.getAttr('type') ?? 'paragraph') };
70
- const id = node.getAttr('id');
71
- if (id !== undefined)
72
- block.id = String(id);
73
- const data = node.getAttr('data');
74
- if (data != null && typeof data === 'object') {
75
- block.data = cloneJson(data);
76
- }
77
- else {
78
- block.data = {};
79
- }
80
- const content = node.getAttr('content');
81
- if (content != null && content._legacyTypeRef === Y_ARRAY_REF) {
82
- const items = [];
83
- for (let i = 0; i < content.length; i++) {
84
- const part = content.get(i);
85
- if (part._legacyTypeRef === Y_TEXT_REF) {
86
- items.push(...readText(part));
87
- }
88
- else if (part._legacyTypeRef === Y_MAP_REF) {
89
- items.push(readInline(part));
90
- }
91
- }
92
- if (items.length > 0)
93
- block.content = items;
94
- }
95
- const children = node.getAttr('children');
96
- if (children != null && children._legacyTypeRef === Y_ARRAY_REF && children.length > 0) {
97
- const kids = [];
98
- for (let i = 0; i < children.length; i++) {
99
- kids.push(readBlock(children.get(i)));
100
- }
101
- block.children = kids;
102
- }
103
- return block;
104
- };
105
- /**
106
- * Bind the legacy reader to the engine module. `readLegacyJSON(updates)`
107
- * applies the stored v1 update rows to a scratch doc (in order — pending
108
- * offline rows are simply later rows) and materializes the logical JSONDoc.
109
- * The scratch doc is discarded; nothing is written back to any store.
110
- */
111
- export const bindLegacyReader = (Y) => {
112
- /**
113
- * Materialize the logical JSON of a legacy v13 document from its stored
114
- * update rows. Throws when the decoded doc is not the v13 Edytor schema.
115
- */
116
- const readLegacyJSON = (updates) => {
117
- const raw = new Y.Doc();
118
- Y.transact(raw, () => {
119
- for (const update of updates) {
120
- Y.applyUpdate(raw, update);
121
- }
122
- });
123
- const doc = asEngineDoc(raw);
124
- // Fail closed on un-integratable rows: pendingStructs/pendingDs are
125
- // non-null while CRDT dependencies are missing — the materialized
126
- // JSON would silently omit that content (gate-2 migration probe).
127
- const pending = doc.store?.pendingStructs ?? null;
128
- const pendingDs = doc.store?.pendingDs ?? null;
129
- if (pending !== null || pendingDs !== null) {
130
- throw new PendingLegacyUpdatesError(pending?.missing ?? new Map(), pendingDs !== null);
131
- }
132
- return readLegacyJSONFromDoc(doc);
133
- };
134
- /**
135
- * Materialize from an already-populated doc (e.g. one built by tests).
136
- * Throws when the doc is not the v13 Edytor schema.
137
- */
138
- const readLegacyJSONFromDoc = (doc) => {
139
- if (!isLegacyDoc(doc)) {
140
- throw new Error('Not a legacy v13 Edytor document: missing `content` root with a sequence `children` attribute.');
141
- }
142
- const root = doc.get(LEGACY_ROOT_KEY);
143
- const children = root.getAttr('children');
144
- const out = [];
145
- for (let i = 0; i < children.length; i++) {
146
- out.push(readBlock(children.get(i)));
147
- }
148
- return { children: out };
149
- };
150
- return { readLegacyJSON, readLegacyJSONFromDoc, isLegacyDoc };
151
- };