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,27 +1,100 @@
1
- /**
2
- * The document's history: the undo manager every view's history is (scope,
3
- * text delete marks, withdrawn creations, the attr repair, the step limit and
4
- * the purge horizon, lineage for undo and redo).
5
- */
6
- import type { EngineApi, EngineDoc, YUndoManager } from '../engine-api.js';
1
+ import type { EngineApi, EngineDoc, EngineNode } from '../engine-api.js';
7
2
  import type { TextDeletes } from '../text/deletes.js';
8
- import type { BlockAttributionApi } from '../attribution/block.js';
3
+ import { type IdSetOf, type StoreStruct } from '../structs.js';
9
4
  import { type WriteFunnel } from './funnel.js';
10
5
  import type { DocBase } from './reads.js';
11
6
  /** The undo steps a document's history keeps by default: older ones are released. */
12
7
  export declare const DEFAULT_HISTORY_LIMIT = 200;
8
+ /** One undo or redo step: what its transactions inserted and deleted, and what the views keep on it. */
9
+ export declare class StackItem {
10
+ inserts: IdSetOf;
11
+ deletes: IdSetOf;
12
+ /** Per-view metadata (`session/history.ts`: the selections around the step). */
13
+ readonly meta: Map<string, unknown>;
14
+ constructor(inserts: IdSetOf, deletes: IdSetOf);
15
+ }
16
+ /** A step taken into a stack: added (a new step) or updated (the open one took a transaction). */
17
+ export type StepEvent = {
18
+ stackItem: StackItem;
19
+ origin: unknown;
20
+ type: 'undo' | 'redo';
21
+ };
22
+ export type HistoryOptions = {
23
+ /** The origins whose transactions are captured (by identity, or by constructor). Default `{ null }`. */
24
+ trackedOrigins?: Set<unknown>;
25
+ /** Transactions closer together than this many milliseconds merge into one step. Default 500. */
26
+ captureTimeout?: number;
27
+ /** The undo steps kept; older ones are released. Default {@link DEFAULT_HISTORY_LIMIT}. */
28
+ limit?: number;
29
+ /** Whether a tracked transaction is captured at all. Default: every one. */
30
+ captureTransaction?: (tr: {
31
+ local?: boolean;
32
+ origin?: unknown;
33
+ }) => boolean;
34
+ };
35
+ /** What a history is made over: the document and the rules of its replay. */
36
+ type Rules = {
37
+ Y: EngineApi;
38
+ doc: EngineDoc;
39
+ scope: EngineNode[];
40
+ /** The text delete marks' restore and apply rules (`text/deletes.ts`). */
41
+ marks: {
42
+ restoreFilter(item: unknown): boolean;
43
+ onApply(tr: unknown, step: StackItem): void;
44
+ };
45
+ /** Whether an item a replay would delete is withdrawn instead (`hist.undo.withdraw`). */
46
+ withdraw(item: StoreStruct, step: StackItem): boolean;
47
+ /** Repair the attrs a replay left undefined. */
48
+ repair(step: StackItem): void;
49
+ };
50
+ /**
51
+ * A document's undo manager: the undo and redo stacks of the tracked local
52
+ * transactions in its scope. `undo()`/`redo()` replay the top step and
53
+ * return it (`null`: nothing changed); `stopCapturing()` closes the open
54
+ * step; `clear()` drops every step and releases what they kept.
55
+ */
56
+ export declare class UndoManager {
57
+ #private;
58
+ undoStack: StackItem[];
59
+ redoStack: StackItem[];
60
+ /** Whether an `undo()` is replaying (its transaction is captured into the redo stack). */
61
+ undoing: boolean;
62
+ redoing: boolean;
63
+ /** The step a replay applies, while its transaction runs. */
64
+ currStackItem: StackItem | null;
65
+ /** When the open step last took a transaction (ms since the epoch; 0: no open step). */
66
+ lastChange: number;
67
+ captureTimeout: number;
68
+ readonly trackedOrigins: Set<unknown>;
69
+ captureTransaction: (tr: {
70
+ local?: boolean;
71
+ origin?: unknown;
72
+ }) => boolean;
73
+ readonly limit: number;
74
+ readonly doc: EngineDoc;
75
+ constructor(rules: Rules, options?: HistoryOptions);
76
+ /** Be told of every step taken into a stack (added, or the open one updated). Returns the unsubscribe. */
77
+ observe(f: (event: StepEvent, added: boolean) => void): () => void;
78
+ /** The next transaction starts a step of its own. */
79
+ stopCapturing(): void;
80
+ canUndo(): boolean;
81
+ canRedo(): boolean;
82
+ /** Replay the top undo step; the step, or `null` when nothing changed. */
83
+ undo(): StackItem | null;
84
+ /** Replay the top redo step; the step, or `null` when nothing changed. */
85
+ redo(): StackItem | null;
86
+ /** Drop every step (undo and redo) and release what they kept for their replay. */
87
+ clear(): void;
88
+ destroy: () => void;
89
+ }
13
90
  /** What a facade's history is made over: its doc, the write funnel and the bound engine layers. */
14
- export type HistoryContext = DocBase & Pick<WriteFunnel, 'write' | 'disposed' | 'actorOf' | 'lineageDepth' | 'lineagePending'> & {
91
+ export type HistoryContext = DocBase & Pick<WriteFunnel, 'write' | 'disposed'> & {
15
92
  D: TextDeletes;
16
- BA: BlockAttributionApi;
17
- /** Each history's release of all its steps (`releaseHistory`). */
18
- releasers: WeakMap<YUndoManager, () => void>;
19
93
  /** Stamp the version record before the history attaches. */
20
94
  init: (doc: EngineDoc) => void;
21
95
  };
22
96
  /** The history factory of one facade. */
23
97
  export declare const docHistory: (c: HistoryContext) => {
24
- createUndoManager: (options?: ConstructorParameters<EngineApi["UndoManager"]>[1] & {
25
- limit?: number;
26
- }) => YUndoManager;
98
+ createUndoManager: (options?: HistoryOptions) => UndoManager;
27
99
  };
100
+ export {};
@@ -1,24 +1,320 @@
1
+ /**
2
+ * The document's history: the one undo manager (fork patch YP18 removed the
3
+ * engine's). It captures the tracked local transactions that write in its
4
+ * scope (the block registry, the text delete marks, the document's data)
5
+ * into steps, and an undo or a redo replays a step in one transaction over
6
+ * the engine's struct primitives (`redoItem`, `keepItem`). Its rules: text
7
+ * comes back as the delete marks allow (`hist.undo.restore`), an undone
8
+ * creation is withdrawn (`hist.undo.withdraw`), an overwritten attr is
9
+ * repaired, the stack keeps `limit` steps, and the purge horizon drops the
10
+ * steps below it (`hist.purge.horizon`).
11
+ */
12
+ import { getUnixTime } from 'lib0-v14/time';
1
13
  import { ownTextIds } from '../text/model.js';
2
14
  import { readHorizon } from '../purge.js';
3
- import { BLOCK_NODE, DATA, DATA_LEAF_PREFIX, DOC_DATA_ROOT, HORIZON_ROOT, ID, INLINE_NODE, isNodeLike, LAST_CHANGED_ATTR, TYPE } from '../schema.js';
4
- import { asYNode, collectable, collectNow, collects, engineOps, onTransaction, stepsOf, walkIdSetStructs } from '../structs.js';
15
+ import { BLOCK_NODE, DATA_LEAF_PREFIX, DOC_DATA_ROOT, HORIZON_ROOT, INLINE_NODE, LAST_CHANGED_ATTR, TYPE } from '../schema.js';
16
+ import { changedUnder, collectable, collectNow, collects, dropSearchMarkers, engineOps, walkIdSet } from '../structs.js';
5
17
  import { isInitialized } from './gate.js';
6
18
  import { EdytorDocDisposedError } from './funnel.js';
19
+ import { registryOf, withdrawOnUndo } from '../placement/model.js';
7
20
  /** The undo steps a document's history keeps by default: older ones are released. */
8
21
  export const DEFAULT_HISTORY_LIMIT = 200;
9
22
  /** The origin of the transaction that releases a dropped history step's content. */
10
23
  const HISTORY_TRIM = Symbol('edytor.history.trim');
24
+ /** One undo or redo step: what its transactions inserted and deleted, and what the views keep on it. */
25
+ export class StackItem {
26
+ inserts;
27
+ deletes;
28
+ /** Per-view metadata (`session/history.ts`: the selections around the step). */
29
+ meta = new Map();
30
+ constructor(inserts, deletes) {
31
+ this.inserts = inserts;
32
+ this.deletes = deletes;
33
+ }
34
+ }
35
+ /** The single-value attrs a history step must never leave undefined. */
36
+ const REPAIRED = {
37
+ [BLOCK_NODE]: [TYPE, LAST_CHANGED_ATTR],
38
+ [INLINE_NODE]: [TYPE]
39
+ };
40
+ /**
41
+ * A document's undo manager: the undo and redo stacks of the tracked local
42
+ * transactions in its scope. `undo()`/`redo()` replay the top step and
43
+ * return it (`null`: nothing changed); `stopCapturing()` closes the open
44
+ * step; `clear()` drops every step and releases what they kept.
45
+ */
46
+ export class UndoManager {
47
+ undoStack = [];
48
+ redoStack = [];
49
+ /** Whether an `undo()` is replaying (its transaction is captured into the redo stack). */
50
+ undoing = false;
51
+ redoing = false;
52
+ /** The step a replay applies, while its transaction runs. */
53
+ currStackItem = null;
54
+ /** When the open step last took a transaction (ms since the epoch; 0: no open step). */
55
+ lastChange = 0;
56
+ captureTimeout;
57
+ trackedOrigins;
58
+ captureTransaction;
59
+ limit;
60
+ doc;
61
+ #rules;
62
+ #ops;
63
+ #observers = new Set();
64
+ /** What dropped steps released (an item is released once every step that deleted it is gone). */
65
+ #released;
66
+ #horizon;
67
+ constructor(rules, options = {}) {
68
+ this.#rules = rules;
69
+ this.#ops = engineOps(rules.Y);
70
+ this.#released = this.#ops.idSet();
71
+ this.doc = rules.doc;
72
+ this.#horizon = rules.doc.get(HORIZON_ROOT);
73
+ this.captureTimeout = options.captureTimeout ?? 500;
74
+ this.limit = options.limit ?? DEFAULT_HISTORY_LIMIT;
75
+ this.captureTransaction = options.captureTransaction ?? (() => true);
76
+ this.trackedOrigins = options.trackedOrigins ?? new Set([null]);
77
+ // Its own replays are tracked: an undo's transaction becomes a redo step.
78
+ this.trackedOrigins.add(this);
79
+ this.#ops.on(rules.doc, 'afterTransaction', this.#afterTransaction);
80
+ this.#ops.on(rules.doc, 'destroy', this.destroy);
81
+ }
82
+ /** Be told of every step taken into a stack (added, or the open one updated). Returns the unsubscribe. */
83
+ observe(f) {
84
+ this.#observers.add(f);
85
+ return () => this.#observers.delete(f);
86
+ }
87
+ /** The next transaction starts a step of its own. */
88
+ stopCapturing() {
89
+ this.lastChange = 0;
90
+ }
91
+ canUndo() {
92
+ return this.undoStack.length > 0;
93
+ }
94
+ canRedo() {
95
+ return this.redoStack.length > 0;
96
+ }
97
+ /** Replay the top undo step; the step, or `null` when nothing changed. */
98
+ undo() {
99
+ this.undoing = true;
100
+ try {
101
+ return this.#pop(this.undoStack);
102
+ }
103
+ finally {
104
+ this.undoing = false;
105
+ }
106
+ }
107
+ /** Replay the top redo step; the step, or `null` when nothing changed. */
108
+ redo() {
109
+ this.redoing = true;
110
+ try {
111
+ return this.#pop(this.redoStack);
112
+ }
113
+ finally {
114
+ this.redoing = false;
115
+ }
116
+ }
117
+ /** Drop every step (undo and redo) and release what they kept for their replay. */
118
+ clear() {
119
+ this.#release([...this.undoStack.splice(0), ...this.redoStack.splice(0)]);
120
+ }
121
+ destroy = () => {
122
+ this.trackedOrigins.delete(this);
123
+ this.#ops.off(this.doc, 'afterTransaction', this.#afterTransaction);
124
+ this.#ops.off(this.doc, 'destroy', this.destroy);
125
+ this.#observers.clear();
126
+ };
127
+ #inScope(item) {
128
+ return this.#rules.scope.some((node) => this.#ops.inside(node, item));
129
+ }
130
+ #afterTransaction = (transaction) => {
131
+ const tr = transaction;
132
+ this.#capture(tr);
133
+ // The purge horizon arrived: the steps below it go (`hist.purge.horizon`).
134
+ if (tr.changed.has(this.#horizon))
135
+ this.#prune();
136
+ };
137
+ #capture(tr) {
138
+ const ops = this.#ops;
139
+ const origin = tr.origin;
140
+ if (!this.captureTransaction(tr) ||
141
+ !changedUnder(tr, this.#rules.scope) ||
142
+ (!this.trackedOrigins.has(origin) &&
143
+ (!origin || !this.trackedOrigins.has(origin.constructor))))
144
+ return;
145
+ const { undoing, redoing } = this;
146
+ const stack = undoing ? this.redoStack : this.undoStack;
147
+ // A replay's step is its own; a new edit ends what could be redone.
148
+ if (undoing)
149
+ this.lastChange = 0;
150
+ else if (!redoing)
151
+ this.#release(this.redoStack.splice(0));
152
+ const now = getUnixTime();
153
+ const open = stack.at(-1);
154
+ const merge = open !== undefined &&
155
+ !undoing &&
156
+ !redoing &&
157
+ this.lastChange > 0 &&
158
+ now - this.lastChange < this.captureTimeout;
159
+ if (merge) {
160
+ open.deletes = ops.merge([open.deletes, tr.deleteSet]);
161
+ open.inserts = ops.merge([open.inserts, tr.insertSet]);
162
+ }
163
+ else
164
+ stack.push(new StackItem(tr.insertSet, tr.deleteSet));
165
+ if (!undoing && !redoing)
166
+ this.lastChange = now;
167
+ // What the step deleted is kept from collection while a step may bring it back.
168
+ ops.iterate(tr, tr.deleteSet, (item) => {
169
+ if (ops.isItem(item) && this.#inScope(item))
170
+ ops.keep(item);
171
+ });
172
+ const step = stack.at(-1);
173
+ // A streamless block's own text is shared by every replica that
174
+ // typed into it first: no step captures it, so undoing the first
175
+ // typing removes the typing and keeps the text (and nonce).
176
+ const own = ownTextIds.get(this.doc);
177
+ if (own !== undefined)
178
+ step.inserts = ops.diff(step.inserts, own);
179
+ // The undo stack keeps its newest `limit` steps.
180
+ const over = this.undoStack.length - this.limit;
181
+ if (!merge && !undoing && over > 0)
182
+ this.#release(this.undoStack.splice(0, over));
183
+ const event = {
184
+ stackItem: step,
185
+ origin: tr.origin,
186
+ type: undoing ? 'redo' : 'undo'
187
+ };
188
+ for (const f of this.#observers)
189
+ f(event, !merge);
190
+ }
191
+ /**
192
+ * Replay the top step of `stack` in one transaction (origin: this
193
+ * manager): what it inserted is deleted (or withdrawn), what it deleted
194
+ * comes back (text as its delete marks allow), the overwritten attrs are
195
+ * repaired. A step that changes nothing is skipped for the one below.
196
+ */
197
+ #pop(stack) {
198
+ const ops = this.#ops;
199
+ const { marks, withdraw, repair } = this.#rules;
200
+ const deletedByHistory = (id) => [this.undoStack, this.redoStack].some((s) => s.some((step) => step.deletes.has(id.client, id.clock)));
201
+ this.doc.transact((transaction) => {
202
+ const tr = transaction;
203
+ while (stack.length > 0 && this.currStackItem === null) {
204
+ const step = stack.pop();
205
+ const restore = new Set();
206
+ const remove = [];
207
+ let changed = false;
208
+ ops.iterate(tr, step.inserts, (struct) => {
209
+ if (!ops.isItem(struct))
210
+ return;
211
+ const item = ops.latest(tr, struct);
212
+ if (!item.deleted && this.#inScope(item))
213
+ remove.push(item);
214
+ });
215
+ ops.iterate(tr, step.deletes, (struct) => {
216
+ if (!ops.isItem(struct) || !this.#inScope(struct))
217
+ return;
218
+ // Created and deleted within the step: nothing to bring back.
219
+ if (step.inserts.has(struct.id.client, struct.id.clock))
220
+ return;
221
+ // Text comes back through the delete marks (`onApply`): withheld here.
222
+ if (!marks.restoreFilter(struct))
223
+ changed = true;
224
+ else
225
+ restore.add(struct);
226
+ });
227
+ for (const item of restore)
228
+ changed = ops.redo(tr, item, restore, step.inserts, deletedByHistory) !== null || changed;
229
+ // Children before parents: more is known when an item is judged.
230
+ for (let i = remove.length - 1; i >= 0; i--) {
231
+ if (!withdraw(remove[i], step))
232
+ ops.remove(tr, remove[i]);
233
+ changed = true;
234
+ }
235
+ this.currStackItem = changed ? step : null;
236
+ if (changed) {
237
+ marks.onApply(tr, step);
238
+ repair(step);
239
+ }
240
+ }
241
+ tr.changed.forEach((keys, node) => {
242
+ if (keys.has(null))
243
+ dropSearchMarkers(node);
244
+ });
245
+ }, this);
246
+ const step = this.currStackItem;
247
+ this.currStackItem = null;
248
+ return step;
249
+ }
250
+ /**
251
+ * Release what dropped steps kept for their replay: the engine collects
252
+ * that content now, as it would have at the delete without a history
253
+ * (the doc's `gcFilter` still decides: a text copy another replica may
254
+ * have to copy again stays, `text/deletes.ts`). An item is released only
255
+ * once every step that deleted part of it was dropped (the engine merges
256
+ * deleted items across steps): never split, so the store keeps its
257
+ * merged items. Only the items themselves are released: a kept
258
+ * container's flag may guard a newer step's items inside it.
259
+ */
260
+ #release(dropped) {
261
+ if (dropped.length === 0)
262
+ return;
263
+ const { Y, doc } = this.#rules;
264
+ const released = this.#released;
265
+ for (const step of dropped)
266
+ this.#ops.insertInto(released, step.deletes);
267
+ const covered = (st) => {
268
+ const end = st.id.clock + st.length;
269
+ return (released.clients.get(st.id.client)?.getIds() ?? []).some((r) => r.clock <= st.id.clock && end <= r.clock + r.len);
270
+ };
271
+ const gc = collects(doc);
272
+ doc.transact((tr) => {
273
+ for (const step of dropped)
274
+ walkIdSet(Y, doc, step.deletes, (st) => {
275
+ const it = st;
276
+ if (it.content === undefined || it.keep !== true || !covered(it))
277
+ return;
278
+ it.keep = false;
279
+ if (gc && it.deleted && collectable(doc, it))
280
+ collectNow(it, tr);
281
+ });
282
+ }, HISTORY_TRIM);
283
+ }
284
+ /**
285
+ * The purge horizon (`hist.purge.horizon`): every step all of whose
286
+ * inserts the room stored before it is dropped and released — a replay
287
+ * of it would bring back content the purge removed. A step that inserted
288
+ * nothing is kept.
289
+ */
290
+ #prune() {
291
+ const horizon = readHorizon(this.doc);
292
+ if (horizon === null)
293
+ return;
294
+ const sv = this.#rules.Y.decodeStateVector(horizon.sv);
295
+ const past = (step) => {
296
+ let any = false;
297
+ for (const [client, ranges] of step.inserts.clients)
298
+ for (const r of ranges.getIds()) {
299
+ any = true;
300
+ if (r.clock + r.len > (sv.get(client) ?? 0))
301
+ return false;
302
+ }
303
+ return any;
304
+ };
305
+ const dropped = [];
306
+ for (const stack of [this.undoStack, this.redoStack]) {
307
+ const kept = stack.filter((step) => !past(step) || !dropped.push(step));
308
+ stack.splice(0, stack.length, ...kept);
309
+ }
310
+ this.#release(dropped);
311
+ }
312
+ }
11
313
  /** The history factory of one facade. */
12
314
  export const docHistory = (c) => {
13
- const { Y, doc, M, D, BA, releasers, init, write, disposed, actorOf, lineageDepth, lineagePending } = c;
14
- const ops = engineOps(Y);
15
- /** The single-value attrs a history step must never leave undefined. */
16
- const REPAIRED = {
17
- [BLOCK_NODE]: [TYPE, DATA, LAST_CHANGED_ATTR],
18
- [INLINE_NODE]: [TYPE, DATA]
19
- };
315
+ const { Y, doc, D, init, write, disposed } = c;
20
316
  /**
21
- * Undo repair, inside the history transaction. A popped step
317
+ * Undo repair, inside the replay's transaction. A replayed step
22
318
  * deletes its own attr write and re-creates the value that write
23
319
  * overwrote — unless a concurrent write sits between them, where the
24
320
  * engine refuses the restore (the peer's value was deleted at
@@ -30,7 +326,7 @@ export const docHistory = (c) => {
30
326
  */
31
327
  const repairAttrs = (step) => {
32
328
  const lost = new Map();
33
- walkIdSetStructs(Y, doc, step.deletes, (s) => {
329
+ walkIdSet(Y, doc, step.deletes, (s) => {
34
330
  const node = s.parent;
35
331
  const key = s.parentSub;
36
332
  // A collected struct (a node the room's purge removed) has no key.
@@ -54,153 +350,42 @@ export const docHistory = (c) => {
54
350
  node.setAttr(key, value);
55
351
  }
56
352
  };
353
+ /**
354
+ * The document's undo manager, SCOPED TO THE BLOCK REGISTRY (with the
355
+ * text delete marks and the document's data), attached only after the
356
+ * doc carries the schema version record:
357
+ *
358
+ * - the `meta` root (version stamp, schema name) is outside the scope,
359
+ * so `init`'s version write is undo-inert: undo can never strip
360
+ * `meta.v` or resurrect a stale schema version;
361
+ * - attach-after-init: the deterministic bootstrap insert IS inside the
362
+ * registry; this factory runs `init` first (a no-op on initialized
363
+ * docs), so the bootstrap always predates capture;
364
+ * - remote/provider writes never enter the stack: applied updates carry
365
+ * a foreign origin (and are non-local), which the tracked origins
366
+ * (and the document's `captureTransaction`) leave out.
367
+ */
57
368
  const createUndoManager = (options = {}) => {
58
369
  if (disposed()) {
59
370
  throw new EdytorDocDisposedError('createUndoManager');
60
371
  }
61
- const { limit = DEFAULT_HISTORY_LIMIT, ...opts } = options;
62
372
  write(() => {
63
373
  if (!isInitialized(doc))
64
374
  init(doc);
65
375
  });
66
- // Text delete marks (fork patch YP11): the marks are in scope (an undo removes the
67
- // undoer's own), and the history restores text only as the marks allow.
68
- // An undone creation withdraws the block instead of deleting it (fork patch YP12, `hist.undo.withdraw`).
376
+ // Text delete marks (`text/deletes.ts`): the marks are in scope (an undo
377
+ // removes the undoer's own), and the history restores text only as the
378
+ // marks allow. An undone creation withdraws the block instead of
379
+ // deleting it (`hist.undo.withdraw`).
69
380
  const marks = D.history(doc, () => um);
70
- const um = new Y.UndoManager([M.registryOf(doc), D.scope(doc), doc.get(DOC_DATA_ROOT)].map(asYNode), {
71
- ...opts,
72
- ...marks,
73
- onApply: (tr, step) => {
74
- marks.onApply(tr, step);
75
- repairAttrs(step);
76
- },
77
- withdraw: M.withdrawOnUndo(doc)
78
- });
79
- // A streamless block's own text is shared by every replica that
80
- // typed into it first: no history step captures it, so undoing the
81
- // first typing removes the typing and keeps the text (and nonce).
82
- const skipOwnText = ({ stackItem }) => {
83
- const ids = ownTextIds.get(doc);
84
- if (ids !== undefined)
85
- stackItem.inserts = ops.diff(stackItem.inserts, ids);
86
- };
87
- um.on('stack-item-added', skipOwnText);
88
- um.on('stack-item-updated', skipOwnText);
89
- // The undo stack keeps its newest `limit` steps. A step that
90
- // falls off releases what it kept for its undo (its deleted items),
91
- // and the engine collects their content now, as it would have at
92
- // the delete without a history (the doc's `gcFilter` still decides:
93
- // a text copy another replica may have to copy again stays, fork patch YP11).
94
- // An item is released only once every step that deleted part of it
95
- // fell off (the engine merges deleted items across steps): never
96
- // split, so the store keeps its merged items. Only the items
97
- // themselves are released: a kept container's flag may guard a
98
- // newer step's items inside it.
99
- const released = ops.idSet();
100
- const covered = (st) => {
101
- const end = st.id.clock + st.length;
102
- return (released.clients.get(st.id.client)?.getIds() ?? []).some((r) => r.clock <= st.id.clock && end <= r.clock + r.len);
103
- };
104
- const release = (dropped) => {
105
- if (dropped.length === 0)
106
- return;
107
- for (const step of dropped)
108
- ops.insertInto(released, step.deletes);
109
- const gc = collects(doc);
110
- doc.transact((tr) => {
111
- for (const step of dropped)
112
- walkIdSetStructs(Y, doc, step.deletes, (st) => {
113
- const it = st;
114
- if (it.content === undefined || it.keep !== true || !covered(it))
115
- return;
116
- it.keep = false;
117
- if (gc && it.deleted && collectable(doc, it))
118
- collectNow(it, tr);
119
- });
120
- }, HISTORY_TRIM);
121
- };
122
- const trim = ({ type }) => {
123
- const over = um.undoStack.length - limit;
124
- if (type !== 'undo' || !(over > 0))
125
- return;
126
- release(stepsOf(um.undoStack.splice(0, over)));
127
- };
128
- um.on('stack-item-added', trim);
129
- // `releaseHistory(um)`: every step dropped and released by the same rule.
130
- releasers.set(um, () => release(stepsOf([...um.undoStack.splice(0), ...um.redoStack.splice(0)])));
131
- // The purge horizon (`hist.purge.horizon`): when the room's purge horizon arrives,
132
- // every step all of whose inserts the room stored before it is
133
- // dropped and released — an undo of it would bring back content
134
- // the purge removed. A step that inserted nothing is kept.
135
- const horizonRoot = doc.get(HORIZON_ROOT);
136
- const pastHorizon = (step, sv) => {
137
- let any = false;
138
- for (const [client, ranges] of step.inserts.clients)
139
- for (const r of ranges.getIds()) {
140
- any = true;
141
- if (r.clock + r.len > (sv.get(client) ?? 0))
142
- return false;
143
- }
144
- return any;
145
- };
146
- const prune = () => {
147
- const horizon = readHorizon(doc);
148
- if (horizon === null)
149
- return;
150
- const sv = Y.decodeStateVector(horizon.sv);
151
- const dropped = [];
152
- for (const stack of [um.undoStack, um.redoStack].map((stepsOf))) {
153
- const kept = stack.filter((step) => !pastHorizon(step, sv) || !dropped.push(step));
154
- stack.splice(0, stack.length, ...kept);
155
- }
156
- release(dropped);
157
- };
158
- onTransaction(doc, 'afterTransaction', (tr) => {
159
- if (tr.changed.has(horizonRoot))
160
- prune();
161
- });
162
- // Lineage for undo/redo: the replay displaces the state
163
- // every block the popped stack item touches, so each one's subtree
164
- // is captured (`force`: lost whoever owns `l`) from the history
165
- // transaction's own `beforeTransaction`, before the replay writes.
166
- // The ring writes join that transaction — one update per undo —
167
- // and sit outside the manager's scope, so the replay never undoes
168
- // or re-captures them. Nothing else is stamped for undo/redo: the
169
- // engine's replay restores `l`, and `contributors` are add-only.
170
- // An undo run inside an enclosing transaction gets no lineage (it
171
- // is a defect of its own: it empties the redo stack).
172
- if (lineageDepth > 0) {
173
- const onBefore = (tr) => {
174
- const stack = um.undoing ? um.undoStack : um.redoing ? um.redoStack : [];
175
- const item = stack[stack.length - 1];
176
- if (tr.origin !== um || item === undefined || actorOf() === undefined)
177
- return;
178
- try {
179
- const touched = new Set();
180
- for (const idSet of [item.inserts, item.deletes]) {
181
- walkIdSetStructs(Y, doc, idSet, (s) => {
182
- let n = s.parent;
183
- while (isNodeLike(n)) {
184
- const bid = n.name === BLOCK_NODE ? n.getAttr(ID) : undefined;
185
- if (typeof bid === 'string')
186
- return void touched.add(bid);
187
- n = n._item?.parent;
188
- }
189
- });
190
- }
191
- for (const bid of touched) {
192
- const pending = lineagePending(bid, true);
193
- if (pending !== undefined)
194
- BA.appendLineage(doc, bid, pending, lineageDepth);
195
- }
196
- }
197
- catch (err) {
198
- // Throwing here would leave the engine's transaction open.
199
- console.error('[edytor-doc] undo lineage capture failed', err);
200
- }
201
- };
202
- onTransaction(doc, 'beforeTransaction', onBefore);
203
- }
381
+ const um = new UndoManager({
382
+ Y,
383
+ doc,
384
+ scope: [registryOf(doc), D.scope(doc), doc.get(DOC_DATA_ROOT)],
385
+ marks,
386
+ withdraw: withdrawOnUndo(doc),
387
+ repair: repairAttrs
388
+ }, options);
204
389
  return um;
205
390
  };
206
391
  return { createUndoManager };
@@ -3,7 +3,6 @@ import type { Prepared } from './types.js';
3
3
  import type { OpsContext } from './steps.js';
4
4
  /** The layout ops of one facade, prepared. */
5
5
  export declare const layoutOps: (c: OpsContext) => {
6
- layoutKind: (kind?: string) => string | undefined;
7
6
  besideAt: (target: BlockId, kind?: string) => BlockId;
8
7
  placeBeside: (ids: readonly BlockId[], target: BlockId, side: "left" | "right", kind?: string) => Prepared;
9
8
  wrapInLayout: (ids: readonly BlockId[], kind?: string, columns?: number) => Prepared;
@@ -16,6 +16,8 @@ export const layoutOps = (c) => {
16
16
  const kinds = [...roles.layoutKinds()];
17
17
  return kinds.length === 1 ? kinds[0] : undefined;
18
18
  };
19
+ /** A fresh empty block of `type`. */
20
+ const spec = (type) => sanitizeSpec({ id: newId('b'), type, data: {} });
19
21
  /**
20
22
  * The block a beside placement at `target` stands beside
21
23
  * (`layout.place-beside`): a layout or an item for itself; a block whose
@@ -95,7 +97,6 @@ export const layoutOps = (c) => {
95
97
  return REFUSED;
96
98
  if (layout !== null && (isIsland(layout) || insideIsland(layout, v)))
97
99
  return REFUSED;
98
- const spec = (type) => sanitizeSpec({ id: newId('b'), type, data: {} });
99
100
  const fresh = spec(item);
100
101
  const into = (parent) => moveTo(moved, parent, 0, ranksFor(parent, 0, moved.length));
101
102
  let writes;
@@ -160,7 +161,6 @@ export const layoutOps = (c) => {
160
161
  if (columns > blocks.length && !fitsIn(item, fill))
161
162
  return REFUSED;
162
163
  const ordered = blocks.toSorted((a, b) => positionOf(a).index - positionOf(b).index);
163
- const spec = (type) => sanitizeSpec({ id: newId('b'), type, data: {} });
164
164
  const items = Array.from({ length: columns }, (_, i) => i < ordered.length ? spec(item) : { ...spec(item), children: [spec(fill)] });
165
165
  const wrapper = { ...spec(wrap), children: items };
166
166
  const at = positionOf(ordered[0]).index;
@@ -182,7 +182,6 @@ export const layoutOps = (c) => {
182
182
  return plan([wrapper.id], emptied(ordered, writes, kept));
183
183
  };
184
184
  return {
185
- layoutKind,
186
185
  besideAt,
187
186
  placeBeside,
188
187
  wrapInLayout