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,6 +1,6 @@
1
1
  import { type JSONBlock } from '../../utils/json.js';
2
- import type { BlockId, BlockSpec, Destination } from '../placement/model.js';
3
- import type { Prepared, PlanStep, Plan } from './types.js';
2
+ import { type BlockId, type BlockSpec, type Destination } from '../placement/model.js';
3
+ import type { Prepared } from './types.js';
4
4
  import type { OpsContext } from './steps.js';
5
5
  /** The moves ops of one facade, prepared. */
6
6
  export declare const moveOps: (c: OpsContext) => {
@@ -12,10 +12,10 @@ export declare const moveOps: (c: OpsContext) => {
12
12
  parent: string | null;
13
13
  levels: string[];
14
14
  };
15
- splitOut: (ids: readonly BlockId[], levels: readonly BlockId[], specs: BlockSpec[], keep: boolean, retype?: readonly PlanStep[]) => Plan;
16
15
  liftOut: (id: BlockId, kind: string, { keep, after }?: {
17
16
  keep?: boolean;
18
17
  after?: readonly BlockSpec[];
19
18
  }) => Prepared;
20
- duplicateBlock: (id: BlockId, freshId: (oldId: string, kind: "block" | "inline") => string) => Prepared;
19
+ duplicateBlock: (id: BlockId, freshId?: (oldId: string, kind: "block" | "inline") => string) => Prepared;
21
20
  };
21
+ export type MoveOps = ReturnType<typeof moveOps>;
@@ -5,10 +5,11 @@
5
5
  */
6
6
  import { id as newId } from '../../utils.js';
7
7
  import { asBlockSpec, sanitizeSpec } from '../../utils/json.js';
8
+ import { collides } from '../placement/model.js';
8
9
  import { ref } from './plan.js';
9
10
  /** The moves ops of one facade, prepared. */
10
11
  export const moveOps = (c) => {
11
- const { doc, M, blockTypeOf, blockDataOf, childrenIds, positionOf, isVoid, isIsland, isLine, contentItems, live, canPlace, isContainer, fits, kindToCopy, REFUSED, HEAD, KEPT, WITH, SELF, AFTER, plan, ranksFor, moveTo, move, exitRanks, leaving, settledKind, settle, landing, emptying, emptied } = c;
12
+ const { doc, blockTypeOf, blockDataOf, childrenIds, positionOf, isVoid, isIsland, isLine, contentItems, live, canPlace, isContainer, fits, kindToCopy, REFUSED, HEAD, KEPT, WITH, SELF, AFTER, plan, ranksFor, moveTo, move, exitRanks, leaving, settledKind, settle, landing, emptying, emptied } = c;
12
13
  /**
13
14
  * Insert blocks (specs may carry children/content/data; the batch is
14
15
  * all-or-nothing). A spec is a `BlockSpec` or the `JSONBlock` that
@@ -26,7 +27,7 @@ export const moveOps = (c) => {
26
27
  return REFUSED;
27
28
  if (clean.length === 0)
28
29
  return plan([], []);
29
- if ((parent !== null && !live(parent)) || M.collides(doc, clean))
30
+ if ((parent !== null && !live(parent)) || collides(doc, clean))
30
31
  return REFUSED;
31
32
  const ranks = ranksFor(parent, dest.index, clean.length, [], true);
32
33
  return plan(clean.map((s) => s.id), [{ op: 'insertBlocks', parent, index: dest.index, specs: clean, ranks }]);
@@ -198,7 +199,7 @@ export const moveOps = (c) => {
198
199
  kind = ref(kind);
199
200
  const specs = after.map(sanitizeSpec);
200
201
  const { parent, levels } = landingOf(id, kind, keep);
201
- if (!positionOf(id) || M.collides(doc, specs) || !canPlace([id], parent, () => kind))
202
+ if (!positionOf(id) || collides(doc, specs) || !canPlace([id], parent, () => kind))
202
203
  return REFUSED;
203
204
  return splitOut([id], levels, specs, keep);
204
205
  };
@@ -211,7 +212,7 @@ export const moveOps = (c) => {
211
212
  * minted; a block id it does not answer refuses the copy. `ids`: the
212
213
  * copy's root.
213
214
  */
214
- const duplicateBlock = (id, freshId) => {
215
+ const duplicateBlock = (id, freshId = (_, kind) => newId(kind === 'block' ? 'b' : 'i')) => {
215
216
  id = ref(id);
216
217
  const pos = positionOf(id);
217
218
  if (pos === null)
@@ -247,7 +248,6 @@ export const moveOps = (c) => {
247
248
  unNestBlocks,
248
249
  unNestBlock,
249
250
  landingOf,
250
- splitOut,
251
251
  liftOut,
252
252
  duplicateBlock
253
253
  };
@@ -11,6 +11,8 @@ export declare const EMPTY_IDS: readonly BlockId[];
11
11
  export type Refusal = null | string;
12
12
  export declare const NOOP: OpResult;
13
13
  export declare const refused: (reason: Refusal) => OpResult;
14
+ /** A refusal that names no reason (one shared value). */
15
+ export declare const REFUSED: OpResult;
14
16
  /** Each prepared op, applied: the op itself. */
15
17
  export type Applied<P> = {
16
18
  [K in keyof P]: P[K] extends (...args: infer A) => Prepared ? (...args: A) => OpResult : never;
@@ -3,6 +3,8 @@ import { sanitizeWireJson, sanitizeWireString } from '../../utils/json.js';
3
3
  export const EMPTY_IDS = Object.freeze([]);
4
4
  export const NOOP = Object.freeze({ status: 'noop', ids: EMPTY_IDS });
5
5
  export const refused = (reason) => Object.freeze({ status: 'refused', ids: EMPTY_IDS, ...(reason !== null && { reason }) });
6
+ /** A refusal that names no reason (one shared value). */
7
+ export const REFUSED = refused(null);
6
8
  export const applied = (prepare, apply) => Object.fromEntries(Object.entries(prepare).map(([name, op]) => [name, (...args) => apply(op(...args))]));
7
9
  /** The effect summary of `writes`. */
8
10
  export const effectOf = (writes) => {
@@ -1,15 +1,13 @@
1
1
  import type { EngineApi, EngineDoc, EngineNode } from '../engine-api.js';
2
- import { type BlockId, type ContentItem, type Destination, type ModelView, type PlacementModel } from '../placement/model.js';
3
- import { type TextEngine } from '../text/model.js';
2
+ import { type BlockId, type ContentItem, type Destination, type ModelView } from '../placement/model.js';
4
3
  import type { DisplayRoles, RunView } from '../text/runs.js';
4
+ import { type DataPatch } from '../data.js';
5
5
  import { type JSONBlock } from '../../utils/json.js';
6
6
  import type { BlockRole, DataTarget, JsonObj, OrderPolicy } from './types.js';
7
7
  /** What every part of a document facade is built over: one doc, its engine layers, its index and its roles. */
8
8
  export type DocBase = {
9
9
  Y: EngineApi;
10
10
  doc: EngineDoc;
11
- M: PlacementModel;
12
- T: TextEngine;
13
11
  /** The doc's index (`text/runs.ts`): the one owner of derived state. */
14
12
  runsView: RunView;
15
13
  /** The role table the display and every guard ask of a block's shown kind. */
@@ -28,6 +26,12 @@ export declare const docReads: (c: DocBase) => {
28
26
  blockDataOf: (id: BlockId) => Record<string, unknown> | undefined;
29
27
  docData: () => JsonObj;
30
28
  dataItemIds: (target: DataTarget, path: readonly string[]) => string[];
29
+ dataPreview: (target: DataTarget, pending: readonly DataPatch[]) => {
30
+ data: {
31
+ [x: string]: unknown;
32
+ };
33
+ ids: (path: readonly string[]) => string[];
34
+ } | null;
31
35
  childrenIds: (parent: BlockId | null) => BlockId[];
32
36
  positionOf: (id: BlockId) => Destination | null;
33
37
  pathOf: (id: BlockId) => number[] | null;
@@ -48,7 +52,6 @@ export declare const docReads: (c: DocBase) => {
48
52
  isLayoutItem: (id: BlockId) => boolean;
49
53
  holdsLayout: (id: BlockId) => boolean;
50
54
  insideItem: (id: BlockId, v?: ModelView) => boolean;
51
- rowKindOf: (id: BlockId) => string | undefined;
52
55
  isTable: (id: BlockId) => boolean;
53
56
  isRowKind: (type: string | undefined) => boolean;
54
57
  isCellKind: (type: string | undefined) => boolean;
@@ -6,28 +6,28 @@
6
6
  */
7
7
  import { DEV } from 'esm-env';
8
8
  import { DOC_DATA_ROOT, TYPE } from '../schema.js';
9
- import { displayParentOf, displaySlotOf, isLiveIn } from '../placement/model.js';
10
- import { DEAD, ownedLength } from '../text/model.js';
9
+ import { blockNodeOf, displayParentOf, displaySlotOf, isLive, isLiveIn, positionInView, positionOf as modelPositionOf } from '../placement/model.js';
10
+ import { DEAD, findAtom, ownedLength } from '../text/model.js';
11
11
  import { holdsPending } from '../structs.js';
12
- import { itemIds, readData } from '../data.js';
13
- import { unlistedOrder } from '../tables.js';
12
+ import { itemIds, previewData, readData } from '../data.js';
13
+ import { columnIds, listedColumns, unlistedOrder } from '../tables.js';
14
14
  import { cloneJsonSafe } from '../../utils/json.js';
15
15
  import { ref } from './plan.js';
16
16
  /** The reads of the facade over `c.doc`. */
17
17
  export const docReads = (c) => {
18
- const { doc, M, T, runsView, roles } = c;
18
+ const { doc, runsView, roles } = c;
19
19
  /** The node a data patch writes: block `id`, its atom `inlineId`, or the document's data root. */
20
20
  const dataNode = (id, inlineId) => id === undefined
21
21
  ? doc.get(DOC_DATA_ROOT)
22
22
  : inlineId === undefined
23
- ? (M.blockNodeOf(doc, id) ?? undefined)
24
- : T.findAtom(view().own, id, inlineId)?.node;
23
+ ? (blockNodeOf(doc, id) ?? undefined)
24
+ : findAtom(view().own, id, inlineId)?.node;
25
25
  /** The one serializer: `id`'s subtree in the public `JSONBlock` shape. */
26
26
  const blockJSON = (id) => {
27
27
  const type = blockTypeOf(id);
28
28
  // A registered block always has a type once its updates are all in:
29
29
  // `''` is the absent-id shape, or an out-of-order delivery's transient.
30
- if (DEV && type === undefined && M.blockNodeOf(doc, id) !== null && !holdsPending(doc))
30
+ if (DEV && type === undefined && blockNodeOf(doc, id) !== null && !holdsPending(doc))
31
31
  throw new Error(`[edytor-doc] block ${id} has no type`);
32
32
  const block = {
33
33
  type: type ?? '',
@@ -46,11 +46,11 @@ export const docReads = (c) => {
46
46
  const view = () => runsView.view();
47
47
  // ── reads ────────────────────────────────────────────────────────
48
48
  const blockTypeOf = (id) => {
49
- const t = runsView.displayType(id) ?? M.blockNodeOf(doc, id)?.getAttr(TYPE);
49
+ const t = runsView.displayType(id) ?? blockNodeOf(doc, id)?.getAttr(TYPE);
50
50
  return typeof t === 'string' ? t : undefined;
51
51
  };
52
52
  const blockDataOf = (id) => {
53
- const node = M.blockNodeOf(doc, id);
53
+ const node = blockNodeOf(doc, id);
54
54
  const d = node && readData(node);
55
55
  // `cloneJsonSafe`: the read path stays total even when the stored
56
56
  // attr holds a non-JSON value that bypassed boundary validation
@@ -69,16 +69,25 @@ export const docReads = (c) => {
69
69
  const node = dataNode(id && ref(id), atom && ref(atom));
70
70
  return node && Array.isArray(path) ? itemIds(node, path) : [];
71
71
  };
72
+ /**
73
+ * A block's, an atom's or the document's data once `pending` patches are
74
+ * applied, without writing them, and its array items' ids (`previewData`):
75
+ * what a view reads of its data writes not yet dispatched.
76
+ */
77
+ const dataPreview = (target, pending) => {
78
+ const [id, atom] = typeof target === 'object' && target ? [target.block, target.atom] : [target ?? undefined];
79
+ return previewData(dataNode(id && ref(id), atom && ref(atom)), pending);
80
+ };
72
81
  /** Ordered visible children of `parent` (`null` = root) — canonical read. */
73
82
  const childrenIds = (parent) => (view().kids.get(parent) ?? []).map((k) => k.id);
74
- const positionOf = (id) => M.positionOf(doc, id);
83
+ const positionOf = (id) => modelPositionOf(doc, id);
75
84
  /** Index path from the root (`[i, j, …]`), or null when hidden/absent. */
76
85
  const pathOf = (id) => {
77
86
  const v = view();
78
87
  const path = [];
79
88
  let cur = id;
80
89
  while (cur !== null) {
81
- const pos = M.positionInView(v, cur);
90
+ const pos = positionInView(v, cur);
82
91
  if (!pos)
83
92
  return null;
84
93
  path.unshift(pos.index);
@@ -130,28 +139,29 @@ export const docReads = (c) => {
130
139
  const parent = positionOf(id)?.parent;
131
140
  return parent != null && isLines(parent);
132
141
  };
133
- /** The item kind of `id` when it is a layout (its role says `layout`): its default child. */
134
- const itemKindOf = (id) => {
142
+ /** The child kind `role` gives `id`'s kind: a layout's item kind, a table's row kind. */
143
+ const childKindOf = (role) => (id) => {
135
144
  const type = blockTypeOf(id);
136
- return type === undefined ? undefined : roles.layout(type);
145
+ return type === undefined ? undefined : roles[role](type);
137
146
  };
147
+ /** `id` is of its parent's `kindOf` kind, directly in it (a column, a row). */
148
+ const childOf = (kindOf) => (id) => {
149
+ const parent = positionOf(id)?.parent;
150
+ return parent != null && blockTypeOf(id) === kindOf(parent);
151
+ };
152
+ /** The item kind of `id` when it is a layout (its role says `layout`): its default child. */
153
+ const itemKindOf = childKindOf('layout');
138
154
  /** `id` is a layout (`layout.*`). */
139
155
  const isLayout = (id) => itemKindOf(id) !== undefined;
140
156
  /** `id` is a layout item: of its layout's item kind, directly in it (a column). */
141
- const isLayoutItem = (id) => {
142
- const parent = positionOf(id)?.parent;
143
- return parent != null && blockTypeOf(id) === itemKindOf(parent);
144
- };
157
+ const isLayoutItem = childOf(itemKindOf);
145
158
  /** `id` is a layout or holds one in its shown subtree (`layout.nest`). */
146
159
  const holdsLayout = (id) => isLayout(id) || childrenIds(id).some(holdsLayout);
147
160
  /** `id` is a layout item or sits inside one. */
148
161
  const insideItem = (id, v) => [id, ...ancestorsOf(id, v)].some(isLayoutItem);
149
162
  // ── tables (`table.*`) ────────────────────────────────────────────
150
163
  /** The row kind of `id` when it is a table (its role says `table`): its default child. */
151
- const rowKindOf = (id) => {
152
- const type = blockTypeOf(id);
153
- return type === undefined ? undefined : roles.table(type);
154
- };
164
+ const rowKindOf = childKindOf('table');
155
165
  /** `id` is a table (`table.*`). */
156
166
  const isTable = (id) => rowKindOf(id) !== undefined;
157
167
  /** `type` is a row kind of a table kind the roles declare (`tableRow`). */
@@ -163,10 +173,7 @@ export const docReads = (c) => {
163
173
  return row !== undefined && roles.defaultChild(row) === type;
164
174
  });
165
175
  /** `id` is a table's row: of its table's row kind, directly in it. */
166
- const isTableRow = (id) => {
167
- const parent = positionOf(id)?.parent;
168
- return parent != null && blockTypeOf(id) === rowKindOf(parent);
169
- };
176
+ const isTableRow = childOf(rowKindOf);
170
177
  /** `id` is a table's cell: of its row's cell kind, directly in a row of a table. */
171
178
  const isTableCell = (id) => {
172
179
  const row = positionOf(id)?.parent;
@@ -188,20 +195,13 @@ export const docReads = (c) => {
188
195
  * (its cells show in their own order, `table.columns`).
189
196
  */
190
197
  const tableColumns = (table) => {
191
- const columns = blockDataOf(table)?.columns;
192
- if (!Array.isArray(columns))
193
- return null;
194
- const seen = new Set();
195
- const out = [];
196
- for (const c of columns) {
197
- const id = c?.id;
198
- if (typeof id !== 'string' || seen.has(id))
199
- continue;
200
- seen.add(id);
201
- const width = c.width;
202
- out.push(typeof width === 'number' && Number.isFinite(width) ? { id, width } : { id });
203
- }
204
- return out;
198
+ const data = blockDataOf(table);
199
+ const ids = columnIds(data);
200
+ return (ids &&
201
+ listedColumns(data).map((id) => {
202
+ const width = data.columns[ids.indexOf(id)].width;
203
+ return typeof width === 'number' && Number.isFinite(width) ? { id, width } : { id };
204
+ }));
205
205
  };
206
206
  /**
207
207
  * `table` as a grid (`table.pad`): its column ids in order and each shown
@@ -291,17 +291,16 @@ export const docReads = (c) => {
291
291
  * absent/deleted blocks. This is the transaction-aware counterpart
292
292
  * of the commit-synced {@link runsView} read surface.
293
293
  *
294
- * The range reader emits BORROWED `marks`/`data` (cursor format
295
- * state / the replicated inline attr) — every item's payload is
296
- * swapped for the view's canonical frozen instance before it crosses
297
- * the public boundary, so callers can't mutate engine state through
298
- * the snapshot. Item wrappers and the array stay fresh and mutable.
294
+ * The items are the block's maintained runs: their payloads are the
295
+ * index's canonical frozen instances (`===` the ones `runs` publishes),
296
+ * so callers can't mutate engine state through the snapshot. Item
297
+ * wrappers and the array stay fresh and mutable.
299
298
  */
300
299
  const contentItems = (id) => runsView.contentItems(id);
301
300
  /** Registry membership — the block exists (may be delete-marked or merged away). */
302
- const hasBlock = (id) => M.blockNodeOf(doc, id) !== null;
303
- /** The one liveness answer (`M.isLive`): `id` renders in `project()`. O(depth). */
304
- const live = (id) => M.isLive(doc, id);
301
+ const hasBlock = (id) => blockNodeOf(doc, id) !== null;
302
+ /** The one liveness answer (`isLive`): `id` renders in `project()`. O(depth). */
303
+ const live = (id) => isLive(doc, id);
305
304
  /** A live block that can hold content: it has a claims list (a streamless block gets its own text on first write). */
306
305
  const contentTarget = (id) => live(id) && view().blocks.get(id)?.claimsNode !== undefined;
307
306
  return {
@@ -312,6 +311,7 @@ export const docReads = (c) => {
312
311
  blockDataOf,
313
312
  docData,
314
313
  dataItemIds,
314
+ dataPreview,
315
315
  childrenIds,
316
316
  positionOf,
317
317
  pathOf,
@@ -329,7 +329,6 @@ export const docReads = (c) => {
329
329
  isLayoutItem,
330
330
  holdsLayout,
331
331
  insideItem,
332
- rowKindOf,
333
332
  isTable,
334
333
  isRowKind,
335
334
  isCellKind,
@@ -19,20 +19,29 @@
19
19
  * Seeding is explicit: reads never create or normalize state.
20
20
  */
21
21
  import type { EngineApi, EngineDoc } from '../engine-api.js';
22
- import type { PlacementModel, BlockSpec } from '../placement/model.js';
22
+ import { type BlockSpec } from '../placement/model.js';
23
23
  import type { BlockAttributionApi } from '../attribution/block.js';
24
24
  import type { JsonObj } from './types.js';
25
25
  import { type JSONBlock } from '../../utils/json.js';
26
26
  /** Origin of the seed update's apply — non-local, like any integrated update. */
27
27
  export declare const SEED_ORIGIN: unique symbol;
28
- /** The version record and seed writers over the bound engine layers. */
29
- export declare const bindSeed: (Y: EngineApi, M: PlacementModel, BA: BlockAttributionApi) => {
30
- stamp: (doc: EngineDoc) => void;
31
- restore: (doc: EngineDoc, content: BlockSpec[]) => void;
28
+ /**
29
+ * Stamp the version record, absent only: never downgrade a higher
30
+ * version written by a newer peer — the version gate decides compatibility.
31
+ */
32
+ export declare const stamp: (doc: EngineDoc) => void;
33
+ /**
34
+ * Restore definition (migration only): stamp the version
35
+ * record (absent only) and make `content` the whole document under its
36
+ * own ids, rewritten in place where they exist (the model's
37
+ * `restoreBlocks`). Writes no attribution.
38
+ */
39
+ export declare const restore: (doc: EngineDoc, content: BlockSpec[]) => void;
40
+ /** The seed writers over the engine's block attribution. */
41
+ export declare const bindSeed: (Y: EngineApi, BA: BlockAttributionApi) => {
32
42
  init: (doc: EngineDoc, opts?: {
33
43
  content?: BlockSpec[];
34
44
  defaultType?: string;
35
45
  }) => void;
36
- seedUpdate: (value: JSONBlock[], defaultType?: string, data?: JsonObj) => Uint8Array;
37
46
  seed: (doc: EngineDoc, value?: JSONBlock[], defaultType?: string, data?: JsonObj) => void;
38
47
  };
@@ -1,3 +1,4 @@
1
+ import { insertBlock, insertBlocks, restoreBlocks } from '../placement/model.js';
1
2
  import { hash32, setDocRand } from '../rand.js';
2
3
  import { keepingReplaced } from '../incarnations.js';
3
4
  import { asEngineDoc, asYDoc } from '../structs.js';
@@ -7,29 +8,29 @@ import { jsonBlockToSpec, sanitizeSpec, sanitizeWireJson, sanitizeWireString } f
7
8
  import { isInitialized, META_KEY, registryEmpty, SCHEMA_NAME, SCHEMA_VERSION } from './gate.js';
8
9
  /** Origin of the seed update's apply — non-local, like any integrated update. */
9
10
  export const SEED_ORIGIN = Symbol('edytor:seed');
10
- /** The version record and seed writers over the bound engine layers. */
11
- export const bindSeed = (Y, M, BA) => {
12
- /**
13
- * Stamp the version record, absent only: never downgrade a higher
14
- * version written by a newer peer — the version gate decides compatibility.
15
- */
16
- const stamp = (doc) => {
17
- const meta = doc.get(META_KEY);
18
- if (meta.getAttr(SCHEMA.metaAttrs.version) !== undefined)
19
- return;
20
- meta.setAttr(SCHEMA.metaAttrs.version, SCHEMA_VERSION);
21
- meta.setAttr(SCHEMA.metaAttrs.schema, SCHEMA_NAME);
22
- };
23
- /**
24
- * Restore definition (migration only): stamp the version
25
- * record (absent only) and make `content` the whole document under its
26
- * own ids, rewritten in place where they exist (the model's
27
- * `restoreBlocks`). Writes no attribution.
28
- */
29
- const restore = (doc, content) => doc.transact(() => {
30
- stamp(doc);
31
- M.restoreBlocks(doc, content.map(sanitizeSpec));
32
- });
11
+ /**
12
+ * Stamp the version record, absent only: never downgrade a higher
13
+ * version written by a newer peer — the version gate decides compatibility.
14
+ */
15
+ export const stamp = (doc) => {
16
+ const meta = doc.get(META_KEY);
17
+ if (meta.getAttr(SCHEMA.metaAttrs.version) !== undefined)
18
+ return;
19
+ meta.setAttr(SCHEMA.metaAttrs.version, SCHEMA_VERSION);
20
+ meta.setAttr(SCHEMA.metaAttrs.schema, SCHEMA_NAME);
21
+ };
22
+ /**
23
+ * Restore definition (migration only): stamp the version
24
+ * record (absent only) and make `content` the whole document under its
25
+ * own ids, rewritten in place where they exist (the model's
26
+ * `restoreBlocks`). Writes no attribution.
27
+ */
28
+ export const restore = (doc, content) => doc.transact(() => {
29
+ stamp(doc);
30
+ restoreBlocks(doc, content.map(sanitizeSpec));
31
+ });
32
+ /** The seed writers over the engine's block attribution. */
33
+ export const bindSeed = (Y, BA) => {
33
34
  /**
34
35
  * Stamp the version record (absent only) and, into an EMPTY registry,
35
36
  * bulk-insert `content` — the local materializer: the seed's scratch
@@ -48,12 +49,12 @@ export const bindSeed = (Y, M, BA) => {
48
49
  return;
49
50
  // Bulk path: one sibling read + a local rank chain for the
50
51
  // whole batch. All-or-nothing: a dup spec id refuses the batch.
51
- if (!M.insertBlocks(doc, { parent: null, index: Number.MAX_SAFE_INTEGER }, specs)) {
52
+ if (!insertBlocks(doc, { parent: null, index: Number.MAX_SAFE_INTEGER }, specs)) {
52
53
  // Malformed initial content (e.g. a duplicated id) — fall back
53
54
  // to per-spec insertion so valid blocks still load.
54
55
  console.error('[edytor-doc] initial content refused by bulk insert; retrying per-spec (duplicate block ids are skipped)');
55
56
  for (const spec of specs) {
56
- M.insertBlock(doc, { parent: null, index: Number.MAX_SAFE_INTEGER }, spec);
57
+ insertBlock(doc, { parent: null, index: Number.MAX_SAFE_INTEGER }, spec);
57
58
  }
58
59
  }
59
60
  });
@@ -105,5 +106,5 @@ export const bindSeed = (Y, M, BA) => {
105
106
  };
106
107
  /** Apply the deterministic seed of `value` with the non-local {@link SEED_ORIGIN}. */
107
108
  const seed = (doc, value = [], defaultType, data) => Y.applyUpdate(asYDoc(doc), seedUpdate(value, defaultType, data), SEED_ORIGIN);
108
- return { stamp, restore, init, seedUpdate, seed };
109
+ return { init, seed };
109
110
  };
@@ -1,12 +1,10 @@
1
- import type { BlockId, SplitTail } from '../placement/model.js';
1
+ import { type BlockId, type SplitTail } from '../placement/model.js';
2
2
  import type { Prepared } from './types.js';
3
3
  import type { OpsContext } from './steps.js';
4
4
  /** The split-merge ops of one facade, prepared. */
5
5
  export declare const splitMergeOps: (c: OpsContext) => {
6
6
  splitBlock: (id: BlockId, offset: number, newId: BlockId, tail?: SplitTail) => Prepared;
7
7
  mergeBlocks: (fromId: BlockId, intoId: BlockId) => Prepared;
8
- mergeUnnesting: (from: BlockId, into: BlockId) => Prepared;
9
- gone: (id: BlockId, container: BlockId) => Prepared;
10
8
  mergeBackward: (id: BlockId) => Prepared;
11
9
  mergeForward: (id: BlockId) => Prepared;
12
10
  };
@@ -7,10 +7,11 @@
7
7
  import { isIncarnationId } from '../incarnations.js';
8
8
  import { sanitizeWireJson } from '../../utils/json.js';
9
9
  import { readData } from '../data.js';
10
+ import { blockNodeOf, isSelfOrDescendant } from '../placement/model.js';
10
11
  import { ref } from './plan.js';
11
12
  /** The split-merge ops of one facade, prepared. */
12
13
  export const splitMergeOps = (c) => {
13
- const { doc, M, view, childrenIds, positionOf, isVoid, isCellKind, blockTypeOf, insideIsland, isLayoutItem, next, previous, displayLength, contentTarget, isContainer, fits, canMerge, rendersContent, kindToCopy, REFUSED, plan, ranksFor, moveTo, move, pieceRanks, leaving, settledKind, settle, landing, emptying, emptied, merge, clamp } = c;
14
+ const { doc, view, childrenIds, positionOf, isVoid, isCellKind, blockTypeOf, insideIsland, isLayoutItem, next, previous, displayLength, contentTarget, isContainer, fits, canMerge, rendersContent, kindToCopy, REFUSED, plan, ranksFor, moveTo, move, pieceRanks, leaving, settledKind, settle, landing, emptying, emptied, merge, clamp } = c;
14
15
  /**
15
16
  * Split `id` at content `offset` into a new sibling `newId` (one boundary
16
17
  * item and the claims that follow it, no text copied; children follow).
@@ -30,7 +31,7 @@ export const splitMergeOps = (c) => {
30
31
  // A table's cell holds its lines as line breaks: it never splits (`table.split`).
31
32
  if (isCellKind(blockTypeOf(id)))
32
33
  return REFUSED;
33
- if (isIncarnationId(born) || M.blockNodeOf(doc, born) !== null)
34
+ if (isIncarnationId(born) || blockNodeOf(doc, born) !== null)
34
35
  return REFUSED;
35
36
  const [at] = clamp(id, offset, 0);
36
37
  // An empty tail type is the one a view reads mid-retype: copy the kind.
@@ -69,7 +70,7 @@ export const splitMergeOps = (c) => {
69
70
  const v = view();
70
71
  if (!canMerge(from, into) || !contentTarget(into))
71
72
  return REFUSED;
72
- if (M.isSelfOrDescendant(v.placements, v.own, into, from))
73
+ if (isSelfOrDescendant(v.placements, v.own, into, from))
73
74
  return REFUSED;
74
75
  const kids = childrenIds(from);
75
76
  const retype = settle(from, kids, into);
@@ -175,8 +176,6 @@ export const splitMergeOps = (c) => {
175
176
  return {
176
177
  splitBlock,
177
178
  mergeBlocks,
178
- mergeUnnesting,
179
- gone,
180
179
  mergeBackward,
181
180
  mergeForward
182
181
  };
@@ -1,5 +1,5 @@
1
1
  import { TYPE } from '../schema.js';
2
- import { type BlockId } from '../placement/model.js';
2
+ import { type BlockId, type ContentItem } from '../placement/model.js';
3
3
  import type { Plan, PlanStep } from './types.js';
4
4
  import type { DocBase, DocReads } from './reads.js';
5
5
  import type { DocCapability } from './capability.js';
@@ -36,13 +36,8 @@ export declare const planSteps: (c: StepsContext) => {
36
36
  remove: (id: BlockId, kept?: readonly BlockId[]) => PlanStep;
37
37
  merge: (from: BlockId, into: BlockId) => PlanStep;
38
38
  clamp: (id: BlockId, offset: number, length: number) => [number, number];
39
- spans: (id: BlockId) => {
40
- item: import("../index.js").ContentItem;
41
- at: number;
42
- end: number;
43
- }[];
44
39
  atomOf: (id: BlockId, atom: string) => {
45
- item: import("../index.js").ContentItem;
40
+ item: ContentItem;
46
41
  at: number;
47
42
  end: number;
48
43
  } | undefined;
@@ -51,6 +46,7 @@ export declare const planSteps: (c: StepsContext) => {
51
46
  text: string;
52
47
  marks?: Record<string, unknown>;
53
48
  }[];
49
+ writeContent: (writes: PlanStep[], id: BlockId, at: number, items?: readonly ContentItem[]) => number;
54
50
  };
55
51
  export type PlanSteps = ReturnType<typeof planSteps>;
56
52
  /** What every op family is prepared over: the reads, the capability and the step writers. */
@@ -7,11 +7,11 @@
7
7
  */
8
8
  import { randOf } from '../rand.js';
9
9
  import { TYPE } from '../schema.js';
10
- import { promotedRank, sourceRank, SOURCE_SIDE } from '../placement/model.js';
11
- import { refused, effectOf } from './plan.js';
10
+ import { blockNodeOf, positionInView, promotedRank, ranksAt, SOURCE_SIDE, sourceRank } from '../placement/model.js';
11
+ import { REFUSED, effectOf } from './plan.js';
12
12
  /** The step writers of one facade. */
13
13
  export const planSteps = (c) => {
14
- const { doc, M, runsView, roles, rendersContentOf, view, blockTypeOf, childrenIds, positionOf, ancestorsOf, is, isIsland, itemKindOf, isLayout, displayLength, contentItems, live, isContainer, fitted, emptiable, rendersContent, defaultChild } = c;
14
+ const { doc, runsView, roles, rendersContentOf, view, blockTypeOf, childrenIds, positionOf, ancestorsOf, is, isIsland, itemKindOf, isLayout, displayLength, contentItems, live, isContainer, fitted, emptiable, rendersContent, defaultChild } = c;
15
15
  // ── prepared ops ─────────────────────────────────────────────
16
16
  // Every op is `prepare` (pure: `refused`, or a plan of named steps plus
17
17
  // its effect summary, against the current version) then `apply(plan)`;
@@ -19,7 +19,6 @@ export const planSteps = (c) => {
19
19
  // whole command before any write and a refusal refuses before one.
20
20
  // Each prepare normalizes its inputs once, here at ingress: ids
21
21
  // and strings as the wire would deliver them, payloads cloned.
22
- const REFUSED = refused(null);
23
22
  /** `exitRanks` parts, in their order at one block. */
24
23
  const [HEAD, KEPT, WITH, SELF, AFTER] = [0, 1, 2, 3, 5];
25
24
  const plan = (ids, writes) => ({
@@ -41,7 +40,7 @@ export const planSteps = (c) => {
41
40
  const all = v.kids.get(parent) ?? [];
42
41
  // The moving blocks' own slots left out: index → the list's index past them.
43
42
  const gone = exclude
44
- .map((id) => M.positionInView(v, id))
43
+ .map((id) => positionInView(v, id))
45
44
  .filter((p) => p !== null && p.parent === parent)
46
45
  .map((p) => p.index)
47
46
  .sort((a, b) => a - b);
@@ -53,7 +52,7 @@ export const planSteps = (c) => {
53
52
  };
54
53
  const at = Math.max(0, Math.min(index, all.length - gone.length));
55
54
  const pair = [at > 0 ? all[raw(at - 1)] : undefined, all[raw(at)]];
56
- return M.ranksAt(pair, 1, count, doc.clientID, randOf(doc), run);
55
+ return ranksAt(pair, 1, count, doc.clientID, randOf(doc), run);
57
56
  };
58
57
  /**
59
58
  * Move `ids` to `ranks` under `parent` (`index`: the slot hooks see).
@@ -146,7 +145,7 @@ export const planSteps = (c) => {
146
145
  * an outdent settles back to a paragraph is written back.
147
146
  */
148
147
  const attr = (id, key, value) => {
149
- const same = M.blockNodeOf(doc, id).getAttr(key) === value;
148
+ const same = blockNodeOf(doc, id).getAttr(key) === value;
150
149
  if (same && (runsView.displayType(id) ?? value) === value)
151
150
  return [];
152
151
  return [{ op: 'setBlockType', id, type: value }];
@@ -334,6 +333,18 @@ export const planSteps = (c) => {
334
333
  const atomOf = (id, atom) => live(id) ? spans(id).find(({ item }) => item.kind === 'inline' && item.id === atom) : undefined;
335
334
  /** Text items overlapping `[at, end)` of `id` (inline atoms carry no marks). */
336
335
  const textIn = (id, at, end) => spans(id).flatMap((s) => (s.item.kind === 'text' && s.at < end && s.end > at ? [s.item] : []));
336
+ /** Push the steps writing `items` into `id` from `at` (text runs and atoms in order); the end offset. */
337
+ const writeContent = (writes, id, at, items = []) => {
338
+ for (const item of items) {
339
+ if (item.kind === 'inline')
340
+ writes.push({ op: 'insertInline', id, offset: at++, atom: item });
341
+ else if (item.text !== '') {
342
+ writes.push({ op: 'insertText', id, offset: at, text: item.text, marks: item.marks });
343
+ at += item.text.length;
344
+ }
345
+ }
346
+ return at;
347
+ };
337
348
  /** `writes`, then every container the `leaving` blocks leave with no child removed. */
338
349
  const emptied = (leaving, writes, kept) => emptyingAll(leaving.map((id) => positionOf(id).parent), leaving, writes, kept);
339
350
  return {
@@ -363,8 +374,8 @@ export const planSteps = (c) => {
363
374
  remove,
364
375
  merge,
365
376
  clamp,
366
- spans,
367
377
  atomOf,
368
- textIn
378
+ textIn,
379
+ writeContent
369
380
  };
370
381
  };
@@ -91,16 +91,6 @@ export type EdytorDocConfig = {
91
91
  * stay byte-identical to the unattributed schema.
92
92
  */
93
93
  actor?: () => AttributionActor | undefined;
94
- /**
95
- * Opt-in per-block lineage depth (`attribution.history`). `> 0` captures
96
- * a subtree checkpoint just before a write displaces the block's current
97
- * `lastChangedBy` owner — handoffs, deletes, and undo/redo touches —
98
- * ring-trimmed to this many entries on the block's `b/<id>` record.
99
- * `0`/absent disables the feature entirely: no captures, no list items,
100
- * byte-identical writes. Requires `actor` — unattributed facades never
101
- * capture.
102
- */
103
- lineageDepth?: number;
104
94
  /**
105
95
  * The document's `writable` guard — called at the write funnel;
106
96
  * throws while the document is read-only, so an edit is refused rather