edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -1,9 +1,10 @@
1
1
  <script lang="ts">
2
2
  import { getContext } from 'svelte';
3
3
  import type { Edytor } from '../edytor.svelte.js';
4
- import type { RenderDelta } from '../surface/cells.js';
4
+ import { rendersMark, type RenderDelta } from '../surface/cells.js';
5
5
  import { Text } from '../text/text.svelte.js';
6
- import Mark from './Mark.svelte';
6
+ import Mark, { customAt } from './Mark.svelte';
7
+ import CustomMark from './CustomMark.svelte';
7
8
 
8
9
  /**
9
10
  * One segment of a cell: its render deltas, the empty filler, the
@@ -53,11 +54,39 @@
53
54
  `${index}:${JSON.stringify(delta.marks)}`;
54
55
  /**
55
56
  * An empty text renders the filler as its first unmarked delta: the same
56
- * keyed item, so the first character typed or composed into an empty
57
+ * text node, so the first character typed or composed into an empty
57
58
  * block lands in the node the browser (and the IME) already holds.
58
59
  */
59
60
  const FILLER: readonly RenderDelta[] = [{ text: '\u200B', marks: [] }];
60
61
 
62
+ /** A delta's marks this view renders (an unknown mark renders its text only). */
63
+ const rendered = (delta: RenderDelta): RenderDelta => {
64
+ const known = delta.marks.filter(([name]) => rendersMark(edytor.marks, name));
65
+ return known.length === delta.marks.length ? delta : { text: delta.text, marks: known };
66
+ };
67
+ const shown = $derived(empty ? FILLER : deltas);
68
+ /**
69
+ * The first delta's text when it is unmarked: the element's own first
70
+ * text node, never re-created while the text starts unmarked (a plain
71
+ * text is this node and two anchors: none per delta, `render.markers`).
72
+ * A text that starts marked has no such node: an empty text node before
73
+ * its first mark would be a caret position of its own, outside the mark
74
+ * (a DOM caret there survives a render that re-creates the mark).
75
+ */
76
+ const head = $derived(shown[0] && !shown[0].marks.length ? shown[0].text : null);
77
+ /**
78
+ * The deltas after it, keyed by position and marks, then the trailing
79
+ * newline's marker (`delta: null`): one keyed list.
80
+ */
81
+ const tail = $derived.by(() => {
82
+ const from = head === null ? 0 : 1;
83
+ const items: { key: string; delta: RenderDelta | null }[] = [];
84
+ for (let index = from; index < shown.length; index++)
85
+ items.push({ key: getDeltaKey(shown[index]!, index), delta: rendered(shown[index]!) });
86
+ if (newline) items.push({ key: 'newline', delta: null });
87
+ return items;
88
+ });
89
+
61
90
  /** A plain click (no drag, no Shift, a single press) places the caret at the pointer. */
62
91
  const restoreTextSelectionFromClick = (node: HTMLElement) => {
63
92
  let pointerStart: { clientX: number; clientY: number } | null = null;
@@ -93,24 +122,29 @@
93
122
  data-placeholder={placeholder ?? undefined}
94
123
  data-edytor-composition-rest={rest || undefined}
95
124
  style:white-space="break-spaces"
96
- ><!--
97
- -->{#each empty ? FILLER : deltas as delta, index (getDeltaKey(delta, index))}<!--
98
- -->{#if delta.marks.length}<!--
125
+ >{#if head !== null}{head}{/if}<!--
126
+ -->{#each tail as item (item.key)}<!--
127
+ -->{#if item.delta === null}<!--
128
+ --><span
129
+ class="newline"
130
+ data-edytor-trailing-newline>&#8203;</span
131
+ ><!--
132
+ -->{:else if customAt(edytor, item.delta, 0)}<!--
133
+ --><CustomMark
134
+ delta={item.delta}
135
+ index={0}
136
+ {text}
137
+ /><!--
138
+ -->{:else if item.delta.marks.length}<!--
99
139
  --><Mark
100
- {delta}
140
+ delta={item.delta}
101
141
  index={0}
102
142
  {text}
103
143
  /><!--
104
144
  -->{:else}<!--
105
- -->{delta.text}<!--
145
+ -->{item.delta.text}<!--
106
146
  -->{/if}<!--
107
147
  -->{/each}<!--
108
- -->{#if newline}<!--
109
- --><span
110
- class="newline"
111
- data-edytor-trailing-newline>&#8203;</span
112
- ><!--
113
- -->{/if}<!--
114
148
  --></span
115
149
  >
116
150
 
@@ -1,4 +1,4 @@
1
- import type { RenderDelta } from '../surface/cells.js';
1
+ import { type RenderDelta } from '../surface/cells.js';
2
2
  import { Text } from '../text/text.svelte.js';
3
3
  type $$ComponentProps = {
4
4
  text: Text | undefined;
@@ -5,8 +5,7 @@
5
5
  * gate here, in the same order, with the same refusal semantics:
6
6
  *
7
7
  * 1. **`assertUsableDoc`** — is this a v14 engine doc at all
8
- * ({@link UnsupportedDocError} `'foreign'`), and is it a v13-era
9
- * layout that must be migrated rather than adopted (`'legacy'`)?
8
+ * ({@link UnsupportedDocError} `'foreign'`)?
10
9
  * 2. **`assertSchema`** — does the committed schema manifest allow
11
10
  * this build to own the doc ({@link SchemaMismatchError}:
12
11
  * `'unversioned'` content with no version stamp, `'unsupported'`
@@ -43,8 +42,6 @@
43
42
  * from the engine's pending store pending store discarded; a
44
43
  * stamp that got in anyway (raw
45
44
  * apply) makes the doc read-only
46
- * v13 migration `bindLegacyReader` gate → rebuild via legacy DB byte-identical; no
47
- * document-level `init` → `loadDocument` v14 generation activated
48
45
  *
49
46
  * TWO LAYERS. The transport layer (`providers/*`, `protocols/*`) proves
50
47
  * the generation of every frame and container and refuses updates that
@@ -108,8 +105,6 @@ export declare class UndecodableUpdateError extends Error {
108
105
  * - {@link UnsupportedDocError} `'foreign'` — not a v14 engine doc
109
106
  * (foreign roots/engines may still attach *content* later; this is
110
107
  * about doc shape);
111
- * - {@link UnsupportedDocError} `'legacy'` — v13-era layout present;
112
- * route through `crdt/migration` instead of attaching;
113
108
  * - {@link SchemaMismatchError} `'unversioned' | 'unsupported' |
114
109
  * 'foreign'` — a schema claim this build cannot own.
115
110
  *
@@ -137,9 +132,7 @@ export declare const bindAdmission: (Y: EngineApi) => {
137
132
  * Throws {@link UndecodableUpdateError} for payloads that fail to
138
133
  * decode/integrate at all, then the usual typed refusals.
139
134
  */
140
- admitUpdate: (update: Uint8Array | ReadonlyArray<Uint8Array | {
141
- v2: Uint8Array;
142
- }>, docName?: string, options?: {
135
+ admitUpdate: (update: Uint8Array | ReadonlyArray<Uint8Array>, docName?: string, options?: {
143
136
  /** Prepare the scratch doc before anything is applied (e.g. its `gcFilter`). */
144
137
  prepare?: (doc: YDoc) => void;
145
138
  }) => YDoc;
@@ -5,8 +5,7 @@
5
5
  * gate here, in the same order, with the same refusal semantics:
6
6
  *
7
7
  * 1. **`assertUsableDoc`** — is this a v14 engine doc at all
8
- * ({@link UnsupportedDocError} `'foreign'`), and is it a v13-era
9
- * layout that must be migrated rather than adopted (`'legacy'`)?
8
+ * ({@link UnsupportedDocError} `'foreign'`)?
10
9
  * 2. **`assertSchema`** — does the committed schema manifest allow
11
10
  * this build to own the doc ({@link SchemaMismatchError}:
12
11
  * `'unversioned'` content with no version stamp, `'unsupported'`
@@ -43,8 +42,6 @@
43
42
  * from the engine's pending store pending store discarded; a
44
43
  * stamp that got in anyway (raw
45
44
  * apply) makes the doc read-only
46
- * v13 migration `bindLegacyReader` gate → rebuild via legacy DB byte-identical; no
47
- * document-level `init` → `loadDocument` v14 generation activated
48
45
  *
49
46
  * TWO LAYERS. The transport layer (`providers/*`, `protocols/*`) proves
50
47
  * the generation of every frame and container and refuses updates that
@@ -92,8 +89,6 @@ export class UndecodableUpdateError extends Error {
92
89
  * - {@link UnsupportedDocError} `'foreign'` — not a v14 engine doc
93
90
  * (foreign roots/engines may still attach *content* later; this is
94
91
  * about doc shape);
95
- * - {@link UnsupportedDocError} `'legacy'` — v13-era layout present;
96
- * route through `crdt/migration` instead of attaching;
97
92
  * - {@link SchemaMismatchError} `'unversioned' | 'unsupported' |
98
93
  * 'foreign'` — a schema claim this build cannot own.
99
94
  *
@@ -138,10 +133,9 @@ export const bindAdmission = (Y) => ({
138
133
  admitUpdate: (update, docName = 'loaded document', options = {}) => {
139
134
  const doc = keepingReplaced(new Y.Doc());
140
135
  options.prepare?.(doc);
141
- const apply = (part) => part instanceof Uint8Array ? Y.applyUpdate(doc, part) : Y.applyUpdateV2(doc, part.v2);
136
+ const apply = (part) => Y.applyUpdate(doc, part);
142
137
  try {
143
- // Several updates (`{ v2 }`: in the v2 encoding) are applied in one
144
- // transaction, with no merge pass.
138
+ // Several updates are applied in one transaction, with no merge pass.
145
139
  if (update instanceof Uint8Array)
146
140
  apply(update);
147
141
  else
@@ -1,6 +1,5 @@
1
1
  /**
2
- * Legacy attribution surface: actor dictionary + inert reads over
3
- * pre-existing per-edit records.
2
+ * Attribution surface: the actor dictionary and the per-block records.
4
3
  *
5
4
  * The per-edit capture pipeline of earlier builds (immutable `a/<nonce>/<seq>` ContentMap records
6
5
  * written in a follow-up transaction per committed edit, projected onto
@@ -23,25 +22,15 @@
23
22
  * also travel inside `encode()` output, so `loadDocument` restores the
24
23
  * dictionary without republishing.
25
24
  *
26
- * LEGACY RECORDS — documents saved by pre-U2 builds carry `a/` records
27
- * under the same root. They are plain replicated state: preserved
28
- * verbatim by `encode()`/sync and readable through `legacy()`, which
29
- * decodes and merges them with the native `decodeContentMap` codecs.
30
- * This build never writes new `a/` records; old replicas that still do
31
- * simply append more keys — reads stay total and convergence is the
32
- * ordinary attribute-record merge.
33
- *
34
- * RETENTION — `a/` state is retained as long as it exists in the
35
- * document (no GC of the records themselves); `live()`/renderer
36
- * projections are gone, and the engine no longer ships concrete
37
- * renderers (fork patch YP8, UPSTREAM.md) — consumers that need a rendered view over
38
- * legacy records implement the engine's `AbstractRenderer` over the
39
- * `ContentMap` `legacy()` returns and pass it to `toDelta({renderer})`.
25
+ * LEGACY RECORDS — documents saved by early builds carry `a/` per-edit
26
+ * records under the same root. They are plain replicated state, preserved
27
+ * verbatim by `encode()`/sync (no GC of the records themselves); nothing
28
+ * reads them. This build never writes new `a/` records; old replicas that
29
+ * still do simply append more keys — convergence is the ordinary
30
+ * attribute-record merge.
40
31
  */
41
32
  import type { EngineApi, EngineDoc } from '../engine-api.js';
42
- import type * as Engine from '../vendor/yjs/dts/index.js';
43
33
  import { ATTRIBUTION_ROOT } from '../schema.js';
44
- import { type JSONBlock } from '../../utils/json.js';
45
34
  import { type BlockAttribution } from './block.js';
46
35
  /** Reserved replicated root for all attribution metadata (`SCHEMA.roots.attribution`). */
47
36
  export { ATTRIBUTION_ROOT };
@@ -63,7 +52,7 @@ export type ActorProfile = {
63
52
  color?: string;
64
53
  };
65
54
  /**
66
- * The document-level attribution surface. `actors`/`actorOf`/`legacy`
55
+ * The document-level attribution surface. `actors`/`actorOf`/`block`
67
56
  * read replicated doc state directly — they resolve remote-applied
68
57
  * records identically and stay correct as old replicas append records.
69
58
  */
@@ -78,16 +67,6 @@ export type DocumentAttribution = {
78
67
  * actor id; only the resolvable profile changes.
79
68
  */
80
69
  setProfile(profile: ActorProfile): void;
81
- /**
82
- * Merged read over the pre-existing `a/` records written by the
83
- * retired per-edit capture pipeline: `{inserts, deletes}` IdMaps in
84
- * the native ContentMap shape, decoded fresh per call. Returns `null`
85
- * when the document carries no legacy records. For a rendered history
86
- * view, implement the engine's `AbstractRenderer` over it (the engine
87
- * ships no concrete renderer); the ordinary
88
- * runs/projection surface does not consult it.
89
- */
90
- legacy(): Engine.ContentMap | null;
91
70
  /**
92
71
  * Compact per-block attribution for `blockId`
93
72
  * (`{createdBy, contributors, lastChangedBy}` — durable actor ids,
@@ -103,48 +82,6 @@ export type DocumentAttribution = {
103
82
  * present it as "written by" for visible text.
104
83
  */
105
84
  block(blockId: string): BlockAttribution | undefined;
106
- /**
107
- * Opt-in bounded lineage ring for `blockId` — the block's subtree
108
- * snapshots captured just BEFORE displacing events: another actor's
109
- * first write (an `l` handoff), a delete, or an undo/redo touching the
110
- * block. Oldest → newest, capped at the document's configured
111
- * `lineage.depth`; `undefined` when the block carries no record (and
112
- * empty when the feature is off or nothing has been displaced yet).
113
- *
114
- * The cap is enforced HERE, at read: concurrent appends under
115
- * partition can transiently store `depth + n` entries (the
116
- * append-side trim only sees the writer's own ring) until the
117
- * replicated watermark trim converges the stored ring — this view
118
- * never returns more than `depth`. A replica configured `depth: 0`
119
- * (writes off) instead sees the ring's own retention bound — the
120
- * deepest depth any surviving entry's writer used.
121
- *
122
- * Each entry's `block` is a deep-copied `JSONBlock` — restoring an
123
- * entry is an ordinary `setBlock`-class edit (which itself lands a
124
- * new entry, displacing the state it overwrote). Entries on a dead
125
- * block stay readable here — the record survives deletion — but a
126
- * reincarnated block id starts a FRESH ring: old history never
127
- * contaminates the new incarnation.
128
- */
129
- history(blockId: string): BlockLineageEntry[] | undefined;
130
- };
131
- /** A public lineage entry — the expanded form of the compact wire record. */
132
- export type BlockLineageEntry = {
133
- /** The displaced owner (absent when the block was unattributed at capture). */
134
- actor?: string;
135
- /** The actor whose edit displaced the state (or whose undo/redo touched the block). */
136
- by: string;
137
- /**
138
- * Ring position at append — a display aid only. It can REPEAT (a trim
139
- * rewinds the position counter, and concurrent replicas assign the
140
- * same position independently): never an entry id — array order is
141
- * the truth.
142
- */
143
- seq: number;
144
- /** Wall-clock capture time — display only, never ordering. */
145
- time?: number;
146
- /** The displaced subtree snapshot (deep-copied — safe to keep/mutate). */
147
- block: JSONBlock;
148
85
  };
149
86
  export type AttributionController = {
150
87
  /** The public read surface handed to `EdytorDocument.attribution`. */
@@ -157,13 +94,15 @@ export type AttributionController = {
157
94
  type AttachOptions = {
158
95
  actor: AttributionActor;
159
96
  };
97
+ /** The display profile of `actor`: its name and color, those it has. */
98
+ export declare const profileOf: (actor: AttributionActor) => ActorProfile;
160
99
  /**
161
100
  * Bind the attribution service to a concrete engine — same injection
162
101
  * pattern as `bindEdytorDoc`/`bindDocument`. Lifecycle is owned by the
163
102
  * calling document: one controller per `EdytorDocument`, attached in the
164
103
  * constructor, released on destroy.
165
104
  */
166
- export declare const bindAttribution: (Y: EngineApi) => {
105
+ export declare const bindAttribution: (_Y: EngineApi) => {
167
106
  attach: (doc: EngineDoc, opts: AttachOptions) => AttributionController;
168
107
  };
169
108
  export type AttributionBinding = ReturnType<typeof bindAttribution>;
@@ -1,6 +1,5 @@
1
1
  import { ATTRIBUTION_ROOT } from '../schema.js';
2
- import { cloneJson } from '../../utils/json.js';
3
- import { blockAttributionOf, lineageOf, lineageWatermarkOf } from './block.js';
2
+ import { blockAttributionOf } from './block.js';
4
3
  /** Reserved replicated root for all attribution metadata (`SCHEMA.roots.attribution`). */
5
4
  export { ATTRIBUTION_ROOT };
6
5
  /**
@@ -9,7 +8,6 @@ export { ATTRIBUTION_ROOT };
9
8
  * out of undo capture; tooling classifies it as bookkeeping.
10
9
  */
11
10
  export const ATTRIBUTION_ORIGIN = Symbol('edytor.attribution');
12
- const RECORD_PREFIX = 'a/'; // legacy immutable per-transaction ContentMap records
13
11
  const ACTOR_PREFIX = 'u/'; // actorId → profile records
14
12
  const CLIENT_PREFIX = 'c/'; // replica clientID → actorId records
15
13
  const sanitizeProfile = (value) => {
@@ -21,7 +19,8 @@ const sanitizeProfile = (value) => {
21
19
  out.color = v.color;
22
20
  return out;
23
21
  };
24
- const profileOf = (actor) => ({
22
+ /** The display profile of `actor`: its name and color, those it has. */
23
+ export const profileOf = (actor) => ({
25
24
  ...(actor.name !== undefined ? { name: actor.name } : {}),
26
25
  ...(actor.color !== undefined ? { color: actor.color } : {})
27
26
  });
@@ -31,7 +30,7 @@ const profileOf = (actor) => ({
31
30
  * calling document: one controller per `EdytorDocument`, attached in the
32
31
  * constructor, released on destroy.
33
32
  */
34
- export const bindAttribution = (Y) => {
33
+ export const bindAttribution = (_Y) => {
35
34
  /**
36
35
  * Attach the actor dictionary to `doc`: publishes this replica's
37
36
  * `c/`+`u/` records and returns the read-through view. No listeners —
@@ -74,55 +73,9 @@ export const bindAttribution = (Y) => {
74
73
  return typeof value === 'string' && value.length > 0 ? value : undefined;
75
74
  },
76
75
  setProfile,
77
- legacy: () => {
78
- const inserts = Y.createIdMap();
79
- const deletes = Y.createIdMap();
80
- let found = false;
81
- for (const key of root.attrKeys()) {
82
- if (!key.startsWith(RECORD_PREFIX))
83
- continue;
84
- const value = root.getAttr(key);
85
- if (!(value instanceof Uint8Array))
86
- continue;
87
- let change;
88
- try {
89
- change = Y.decodeContentMap(value);
90
- }
91
- catch {
92
- continue; // malformed record — skip, never poison the merged map
93
- }
94
- Y.insertIntoIdMap(inserts, change.inserts);
95
- Y.insertIntoIdMap(deletes, change.deletes);
96
- found = true;
97
- }
98
- return found ? Y.createContentMap(inserts, deletes) : null;
99
- },
100
76
  // `b/<id>` records live on the `blockattr` root and `l` on
101
77
  // the block node — plain replicated reads, no observer needed.
102
- block: (blockId) => blockAttributionOf(doc, blockId),
103
- // Opt-in ring (`lineage.depth`): read the record's list items
104
- // capped at the ring's watermark — the max depth of surviving
105
- // entries, identical to the bound appends and the receive-side
106
- // trim enforce, so every replica reads the SAME ring for the
107
- // same stored state regardless of its own `lineage.depth`.
108
- // (Concurrent appends can store a transient excess until the
109
- // trim converges it.) Deep-copy each entry — the stored `j`
110
- // snapshot is shared replicated state and must not be mutable
111
- // through this view.
112
- history: (blockId) => {
113
- const entries = lineageOf(doc, blockId);
114
- if (entries === undefined)
115
- return undefined;
116
- const cap = lineageWatermarkOf(entries);
117
- const visible = entries.length > cap ? entries.slice(entries.length - cap) : entries;
118
- return visible.map((e) => ({
119
- ...(e.a !== undefined ? { actor: e.a } : {}),
120
- by: e.by,
121
- seq: e.s,
122
- ...(e.t !== undefined ? { time: e.t } : {}),
123
- block: cloneJson(e.j)
124
- }));
125
- }
78
+ block: (blockId) => blockAttributionOf(doc, blockId)
126
79
  };
127
80
  return {
128
81
  view,
@@ -77,51 +77,6 @@ export type BlockAttribution = {
77
77
  /** The actor whose state change currently wins the LWW resolution. */
78
78
  lastChangedBy?: ActorId;
79
79
  };
80
- /**
81
- * One bounded-lineage checkpoint on a block's `brec` record — the block's
82
- * subtree JSON captured JUST BEFORE a displacing edit: an `l` handoff
83
- * (another actor's first write), a delete, or an undo/redo touching the
84
- * block. Entries live as list items on the record node itself, appended
85
- * and ring-trimmed to the document's configured depth inside the owning
86
- * op's transaction — they die with the record on reincarnation. Compact
87
- * wire keys keep the replicated payload small; the public surface
88
- * (`attribution.history`) re-expands them.
89
- */
90
- export type LineageEntry = {
91
- /** The displaced owner — the `l` winner when captured (absent when unattributed). */
92
- a?: ActorId;
93
- /** The actor whose edit displaced the state (or whose undo/redo touched the block). */
94
- by: ActorId;
95
- /**
96
- * Ring position at append — a display aid only. It can REPEAT (after a
97
- * trim the position counter rewinds, and concurrent replicas assign
98
- * the same position independently): never an entry id — list order is
99
- * the truth.
100
- */
101
- s: number;
102
- /** Wall-clock capture time — display only, never ordering. */
103
- t?: number;
104
- /** The displaced subtree snapshot (a `JSONBlock`). */
105
- j: unknown;
106
- /**
107
- * The appending writer's configured ring depth. THE retention bound is
108
- * the MAX of surviving entries' `d` — enforced identically by
109
- * `appendLineage` (same-tx trim), `attachRingTrim` (receive-side
110
- * repair), and `history()` (read view), so a shallow replica can never
111
- * evict a deeper writer's surviving history on ANY path. Entries
112
- * written before `d` existed leave it absent → the ring is exempt from
113
- * trimming entirely (the writers' bound is unknowable — evict
114
- * nothing).
115
- */
116
- d?: number;
117
- };
118
- /**
119
- * The ring's retention bound — the deepest `lineage.depth` any surviving
120
- * entry's writer was configured with. `POSITIVE_INFINITY` when ANY entry
121
- * lacks `d` (pre-watermark data): without knowing every writer's bound,
122
- * no entry may be evicted on their behalf.
123
- */
124
- export declare const lineageWatermarkOf: (entries: LineageEntry[]) => number;
125
80
  export { BLOCK_ATTR_ROOT, LAST_CHANGED_ATTR };
126
81
  /** The `k/` member set on a `b/` record node. */
127
82
  export declare const contributorsOfRecord: (rec: EngineNode | null) => Set<ActorId>;
@@ -131,12 +86,6 @@ export declare const contributorsOfRecord: (rec: EngineNode | null) => Set<Actor
131
86
  * carries no attribution at all (system/foreign content stays unlabeled).
132
87
  */
133
88
  export declare const blockAttributionOf: (doc: EngineDoc, id: BlockId) => BlockAttribution | undefined;
134
- /**
135
- * Read one block's lineage ring, oldest → newest — or `undefined` when
136
- * the block carries no record. Entries are the stored content values;
137
- * callers deep-copy before exposing them publicly.
138
- */
139
- export declare const lineageOf: (doc: EngineDoc, id: BlockId) => LineageEntry[] | undefined;
140
89
  /**
141
90
  * Bound write helpers. `stampChange`/`stampCreated`/`unionContributors`
142
91
  * must be called INSIDE the operation's `doc.transact` — they perform
@@ -169,32 +118,5 @@ export declare const bindBlockAttribution: (Y: EngineApi) => {
169
118
  * The merger itself lands via `stampChange` on the survivor.
170
119
  */
171
120
  unionContributors: (doc: EngineDoc, intoId: BlockId, fromId: BlockId) => void;
172
- /**
173
- * Append a displaced-state checkpoint to the block's ring and trim
174
- * to the ring's watermark — `max` of surviving entries' `d`,
175
- * including the fresh one. The caller captures `entry.j` BEFORE its
176
- * model write (see `lineagePending` in `edytor-doc.ts`) and calls
177
- * this only after the write proves out, so a refused write appends
178
- * nothing. The watermark is THE retention policy — identical on
179
- * append, on receive (`attachRingTrim`), and on read — so a shallow
180
- * replica never evicts a deeper writer's surviving history, and the
181
- * bound shrinks only once the deepest entries have themselves
182
- * aged out. Concurrent appends under partition can still merge a
183
- * ring past the watermark — neither side saw the other's entry —
184
- * which the receive-side repair converges back.
185
- */
186
- appendLineage: (doc: EngineDoc, id: BlockId, entry: Omit<LineageEntry, "s" | "d">, depth: number) => void;
187
- /**
188
- * The block's lineage ring, oldest → newest — or `undefined` when
189
- * the block has no record at all. Entries are the stored content
190
- * values; the public surface copies them before handing them out.
191
- */
192
- lineageOf: (doc: EngineDoc, id: BlockId) => LineageEntry[] | undefined;
193
- /**
194
- * Attach the doc's shared ring-watermark repair — once per doc for
195
- * the doc's lifetime (module-level dedupe). See the module-level comment
196
- * below.
197
- */
198
- attachRingTrim: (doc: EngineDoc) => void;
199
121
  };
200
122
  export type BlockAttributionApi = ReturnType<typeof bindBlockAttribution>;
@@ -1,22 +1,6 @@
1
1
  import { REGISTRY_KEY } from '../placement/model.js';
2
2
  import { BLOCK_ATTR_ROOT, isNodeLike, LAST_CHANGED_ATTR, NONCE, REC_PREFIX } from '../schema.js';
3
- import { attrItems, newNode as makeNode, onTransaction } from '../structs.js';
4
- /**
5
- * The ring's retention bound — the deepest `lineage.depth` any surviving
6
- * entry's writer was configured with. `POSITIVE_INFINITY` when ANY entry
7
- * lacks `d` (pre-watermark data): without knowing every writer's bound,
8
- * no entry may be evicted on their behalf.
9
- */
10
- export const lineageWatermarkOf = (entries) => {
11
- let wm = 0;
12
- for (const e of entries) {
13
- if (typeof e.d !== 'number' || !Number.isFinite(e.d))
14
- return Number.POSITIVE_INFINITY;
15
- if (e.d > wm)
16
- wm = e.d;
17
- }
18
- return wm;
19
- };
3
+ import { attrItems, newNode as makeNode } from '../structs.js';
20
4
  // `BLOCK_ATTR_ROOT`/`LAST_CHANGED_ATTR`/`REC_PREFIX` live in the shared
21
5
  // `../schema.js` leaf — re-exported so existing import sites stay.
22
6
  export { BLOCK_ATTR_ROOT, LAST_CHANGED_ATTR };
@@ -82,15 +66,6 @@ export const blockAttributionOf = (doc, id) => {
82
66
  lastChangedBy: typeof l === 'string' ? l : undefined
83
67
  };
84
68
  };
85
- /**
86
- * Read one block's lineage ring, oldest → newest — or `undefined` when
87
- * the block carries no record. Entries are the stored content values;
88
- * callers deep-copy before exposing them publicly.
89
- */
90
- export const lineageOf = (doc, id) => {
91
- const rec = recordOf(doc, id);
92
- return rec === null ? undefined : rec.toArray();
93
- };
94
69
  /**
95
70
  * Bound write helpers. `stampChange`/`stampCreated`/`unionContributors`
96
71
  * must be called INSIDE the operation's `doc.transact` — they perform
@@ -205,124 +180,6 @@ export const bindBlockAttribution = (Y) => {
205
180
  const into = ensureRecord(doc, intoId, blockNodeOf(doc, intoId));
206
181
  for (const a of contributorsOfRecord(from))
207
182
  addContributor(into, a);
208
- },
209
- /**
210
- * Append a displaced-state checkpoint to the block's ring and trim
211
- * to the ring's watermark — `max` of surviving entries' `d`,
212
- * including the fresh one. The caller captures `entry.j` BEFORE its
213
- * model write (see `lineagePending` in `edytor-doc.ts`) and calls
214
- * this only after the write proves out, so a refused write appends
215
- * nothing. The watermark is THE retention policy — identical on
216
- * append, on receive (`attachRingTrim`), and on read — so a shallow
217
- * replica never evicts a deeper writer's surviving history, and the
218
- * bound shrinks only once the deepest entries have themselves
219
- * aged out. Concurrent appends under partition can still merge a
220
- * ring past the watermark — neither side saw the other's entry —
221
- * which the receive-side repair converges back.
222
- */
223
- appendLineage: (doc, id, entry, depth) => {
224
- const rec = ensureRecord(doc, id);
225
- rec.insert(rec.length, [{ ...entry, s: rec.length, d: depth }]);
226
- const wm = lineageWatermarkOf(rec.toArray());
227
- if (rec.length > wm)
228
- rec.delete(0, rec.length - wm);
229
- },
230
- /**
231
- * The block's lineage ring, oldest → newest — or `undefined` when
232
- * the block has no record at all. Entries are the stored content
233
- * values; the public surface copies them before handing them out.
234
- */
235
- lineageOf,
236
- /**
237
- * Attach the doc's shared ring-watermark repair — once per doc for
238
- * the doc's lifetime (module-level dedupe). See the module-level comment
239
- * below.
240
- */
241
- attachRingTrim: (doc) => {
242
- if (ringTrimAttached.has(doc))
243
- return;
244
- ringTrimAttached.set(doc, true);
245
- const trimToWatermark = (rec) => {
246
- const wm = lineageWatermarkOf(rec.toArray());
247
- if (rec.length > wm)
248
- rec.delete(0, rec.length - wm);
249
- };
250
- onTransaction(doc, 'afterTransaction', (transaction) => {
251
- try {
252
- const changed = transaction?.changed;
253
- if (changed === undefined)
254
- return;
255
- let over;
256
- for (const type of changed.keys()) {
257
- const rec = type;
258
- if (rec?.name === REC_NODE &&
259
- rec.length > lineageWatermarkOf(rec.toArray())) {
260
- (over ??= []).push(rec);
261
- }
262
- }
263
- if (over === undefined)
264
- return;
265
- // A follow-up transaction in the same cleanup sweep — the
266
- // trim deletes exactly the items the next append would
267
- // evict, so concurrent trims (each replica runs this on
268
- // the same merged state) delete the SAME items and stay
269
- // convergent. The watermark never goes below a surviving
270
- // entry's own configured depth.
271
- doc.transact(() => {
272
- for (const rec of over)
273
- trimToWatermark(rec);
274
- }, LINEAGE_TRIM_ORIGIN);
275
- }
276
- catch (err) {
277
- // A failure here must never propagate — throwing inside
278
- // `afterTransaction` would break the host transaction's
279
- // cleanup sweep. An untrimmed ring still converges.
280
- console.error('[edytor-doc] lineage ring trim failed; leaving over-cap state', err);
281
- }
282
- });
283
- // Install-time sweep: a doc that arrived over-cap BEFORE this
284
- // listener existed — `loadDocument`/`attachDocument` integrate
285
- // the payload before the facade composes — never fires the
286
- // hook above for that data. One O(records) pass converges it.
287
- try {
288
- const root = doc.get(BLOCK_ATTR_ROOT);
289
- let over;
290
- for (const key of root.attrKeys()) {
291
- if (!key.startsWith(REC_PREFIX))
292
- continue;
293
- const rec = root.getAttr(key);
294
- if (isNodeLike(rec) &&
295
- rec.name === REC_NODE &&
296
- rec.length > lineageWatermarkOf(rec.toArray())) {
297
- (over ??= []).push(rec);
298
- }
299
- }
300
- if (over !== undefined) {
301
- doc.transact(() => {
302
- for (const rec of over)
303
- trimToWatermark(rec);
304
- }, LINEAGE_TRIM_ORIGIN);
305
- }
306
- }
307
- catch (err) {
308
- console.error('[edytor-doc] lineage ring sweep failed; leaving over-cap state', err);
309
- }
310
183
  }
311
184
  };
312
185
  };
313
- /**
314
- * Per-doc attach table for the shared ring-trim listener — module level
315
- * (not binding- or facade-scoped) so the listener is installed ONCE per
316
- * doc across every binding's facade `create()`, and never detached: a
317
- * ring pushed over its watermark by concurrent appends is converged even
318
- * after the last facade disposes. The `WeakMap` entry and the doc-held
319
- * listener die with the doc — no leak.
320
- */
321
- const ringTrimAttached = new WeakMap();
322
- /**
323
- * Origin of the ring-trim's delete writes — an origin no UndoManager
324
- * tracks, so trims never enter an undo stack and never recurse (the trim
325
- * only deletes ring items: the follow-up `afterTransaction` pass finds
326
- * the ring at exactly the watermark and stops).
327
- */
328
- const LINEAGE_TRIM_ORIGIN = Symbol('edytor.lineage-trim');