edytor 1.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +21 -39
  2. package/dist/block/block.svelte.d.ts +11 -84
  3. package/dist/block/block.svelte.js +30 -134
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +11 -9
  9. package/dist/block/inlineBlock.svelte.js +18 -21
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +25 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/awarenessSelection.d.ts +22 -1
  49. package/dist/collaboration/awarenessSelection.js +42 -0
  50. package/dist/collaboration/comments/client.d.ts +2 -2
  51. package/dist/collaboration/comments/client.js +1 -1
  52. package/dist/collaboration/history/index.d.ts +5 -5
  53. package/dist/collaboration/history/index.js +5 -5
  54. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  55. package/dist/collaboration/history/panel.svelte.js +223 -0
  56. package/dist/collaboration/providers.d.ts +12 -3
  57. package/dist/collaboration/providers.js +5 -4
  58. package/dist/components/Block.svelte +42 -56
  59. package/dist/components/Block.svelte.d.ts +7 -5
  60. package/dist/components/Content.svelte +1 -5
  61. package/dist/components/Edytor.svelte +82 -99
  62. package/dist/components/Edytor.svelte.d.ts +16 -13
  63. package/dist/components/InlineBlock.svelte +1 -1
  64. package/dist/components/Ranges.svelte +96 -0
  65. package/dist/components/Ranges.svelte.d.ts +19 -0
  66. package/dist/components/Suggestion.svelte +3 -2
  67. package/dist/components/Text.svelte +2 -5
  68. package/dist/components/Text.svelte.d.ts +1 -1
  69. package/dist/crdt/admission.d.ts +2 -9
  70. package/dist/crdt/admission.js +3 -9
  71. package/dist/crdt/attribution/attribution.d.ts +11 -72
  72. package/dist/crdt/attribution/attribution.js +5 -52
  73. package/dist/crdt/attribution/block.d.ts +0 -78
  74. package/dist/crdt/attribution/block.js +1 -144
  75. package/dist/crdt/data.d.ts +18 -13
  76. package/dist/crdt/data.js +49 -71
  77. package/dist/crdt/doc/anchors.js +4 -4
  78. package/dist/crdt/doc/content.d.ts +5 -1
  79. package/dist/crdt/doc/content.js +3 -1
  80. package/dist/crdt/doc/delete.d.ts +1 -0
  81. package/dist/crdt/doc/funnel.d.ts +0 -23
  82. package/dist/crdt/doc/funnel.js +34 -85
  83. package/dist/crdt/doc/gate.d.ts +8 -9
  84. package/dist/crdt/doc/gate.js +7 -17
  85. package/dist/crdt/doc/history.d.ts +87 -14
  86. package/dist/crdt/doc/history.js +334 -149
  87. package/dist/crdt/doc/layout.d.ts +0 -1
  88. package/dist/crdt/doc/layout.js +2 -3
  89. package/dist/crdt/doc/meta.d.ts +4 -4
  90. package/dist/crdt/doc/meta.js +10 -21
  91. package/dist/crdt/doc/moves.d.ts +4 -4
  92. package/dist/crdt/doc/moves.js +5 -5
  93. package/dist/crdt/doc/plan.d.ts +2 -0
  94. package/dist/crdt/doc/plan.js +2 -0
  95. package/dist/crdt/doc/reads.d.ts +8 -5
  96. package/dist/crdt/doc/reads.js +49 -50
  97. package/dist/crdt/doc/seed.d.ts +15 -6
  98. package/dist/crdt/doc/seed.js +27 -26
  99. package/dist/crdt/doc/split-merge.d.ts +1 -3
  100. package/dist/crdt/doc/split-merge.js +4 -5
  101. package/dist/crdt/doc/steps.d.ts +3 -7
  102. package/dist/crdt/doc/steps.js +20 -9
  103. package/dist/crdt/doc/types.d.ts +0 -10
  104. package/dist/crdt/document.d.ts +32 -115
  105. package/dist/crdt/document.js +216 -302
  106. package/dist/crdt/edytor-doc.d.ts +689 -90
  107. package/dist/crdt/edytor-doc.js +74 -149
  108. package/dist/crdt/engine-api.d.ts +15 -47
  109. package/dist/crdt/engine.d.ts +7 -17
  110. package/dist/crdt/engine.js +9 -19
  111. package/dist/crdt/flow.d.ts +9 -37
  112. package/dist/crdt/flow.js +260 -238
  113. package/dist/crdt/index.d.ts +32 -85
  114. package/dist/crdt/index.js +21 -47
  115. package/dist/crdt/operations.d.ts +24 -33
  116. package/dist/crdt/operations.js +8 -17
  117. package/dist/crdt/placement/display.d.ts +0 -2
  118. package/dist/crdt/placement/display.js +0 -15
  119. package/dist/crdt/placement/model.d.ts +160 -12
  120. package/dist/crdt/placement/model.js +413 -414
  121. package/dist/crdt/placement/rank.d.ts +1 -5
  122. package/dist/crdt/placement/rank.js +28 -38
  123. package/dist/crdt/props.d.ts +32 -0
  124. package/dist/crdt/props.js +172 -0
  125. package/dist/crdt/protocol.d.ts +4 -5
  126. package/dist/crdt/protocol.js +3 -4
  127. package/dist/crdt/protocols/awareness.d.ts +3 -7
  128. package/dist/crdt/protocols/awareness.js +17 -33
  129. package/dist/crdt/protocols/envelope.d.ts +9 -29
  130. package/dist/crdt/protocols/envelope.js +8 -25
  131. package/dist/crdt/protocols/sync.d.ts +15 -30
  132. package/dist/crdt/protocols/sync.js +27 -89
  133. package/dist/crdt/providers/bound.d.ts +3 -1
  134. package/dist/crdt/providers/bound.js +3 -1
  135. package/dist/crdt/providers/container.d.ts +11 -17
  136. package/dist/crdt/providers/container.js +39 -27
  137. package/dist/crdt/providers/index.d.ts +34 -6
  138. package/dist/crdt/providers/index.js +106 -111
  139. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  140. package/dist/crdt/providers/indexeddb.js +29 -90
  141. package/dist/crdt/providers/room.d.ts +58 -2
  142. package/dist/crdt/providers/room.js +38 -21
  143. package/dist/crdt/providers/websocket.d.ts +1 -1
  144. package/dist/crdt/providers/websocket.js +3 -4
  145. package/dist/crdt/purge.d.ts +2 -2
  146. package/dist/crdt/purge.js +69 -6
  147. package/dist/crdt/rangeDelete.d.ts +4 -42
  148. package/dist/crdt/rangeDelete.js +7 -6
  149. package/dist/crdt/restore.d.ts +21 -1
  150. package/dist/crdt/restore.js +54 -59
  151. package/dist/crdt/schema.d.ts +2 -2
  152. package/dist/crdt/schema.js +4 -5
  153. package/dist/crdt/semantics.d.ts +10 -15
  154. package/dist/crdt/semantics.js +22 -21
  155. package/dist/crdt/storage.d.ts +7 -13
  156. package/dist/crdt/storage.js +10 -24
  157. package/dist/crdt/structs.d.ts +42 -47
  158. package/dist/crdt/structs.js +76 -67
  159. package/dist/crdt/tables.d.ts +9 -0
  160. package/dist/crdt/tables.js +20 -0
  161. package/dist/crdt/text/delete-index.d.ts +0 -13
  162. package/dist/crdt/text/delete-index.js +7 -14
  163. package/dist/crdt/text/deletes.d.ts +9 -22
  164. package/dist/crdt/text/deletes.js +11 -74
  165. package/dist/crdt/text/index/cache.js +3 -3
  166. package/dist/crdt/text/index/fold.d.ts +1 -2
  167. package/dist/crdt/text/index/fold.js +15 -10
  168. package/dist/crdt/text/index/layout.d.ts +0 -10
  169. package/dist/crdt/text/index/layout.js +6 -20
  170. package/dist/crdt/text/index/records.js +2 -1
  171. package/dist/crdt/text/index/report.js +5 -6
  172. package/dist/crdt/text/index/shared.d.ts +11 -4
  173. package/dist/crdt/text/index/shared.js +8 -7
  174. package/dist/crdt/text/index/state.d.ts +3 -33
  175. package/dist/crdt/text/index/state.js +2 -4
  176. package/dist/crdt/text/model.d.ts +82 -2
  177. package/dist/crdt/text/model.js +344 -354
  178. package/dist/crdt/text/rows.d.ts +0 -2
  179. package/dist/crdt/text/rows.js +0 -11
  180. package/dist/crdt/text/runs.d.ts +6 -3
  181. package/dist/crdt/text/runs.js +132 -137
  182. package/dist/crdt/text/streams.d.ts +1 -1
  183. package/dist/crdt/text/streams.js +1 -1
  184. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  185. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  186. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  187. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  188. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  189. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  190. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  191. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  193. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  194. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  195. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  196. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  197. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  198. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  199. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  200. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  201. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  202. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  203. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  204. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  205. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  206. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  207. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  208. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  209. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  211. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  213. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  214. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  216. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  217. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  218. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  219. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  220. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  221. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  222. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  223. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  224. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  225. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  226. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  227. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  228. package/dist/dnd/autoScroll.js +1 -2
  229. package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
  230. package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
  231. package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
  232. package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
  233. package/dist/dnd/placement.d.ts +200 -0
  234. package/dist/dnd/placement.js +426 -0
  235. package/dist/dnd/pragmatic.d.ts +4 -22
  236. package/dist/dnd/pragmatic.js +7 -26
  237. package/dist/dnd/track.d.ts +14 -0
  238. package/dist/dnd/track.js +55 -0
  239. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  242. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  243. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  302. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  303. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  304. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  305. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  306. package/dist/edytor.svelte.d.ts +46 -63
  307. package/dist/edytor.svelte.js +126 -181
  308. package/dist/events/beforeInputCommands.d.ts +6 -11
  309. package/dist/events/beforeInputCommands.js +189 -181
  310. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  311. package/dist/events/beforeInputDeleteCommands.js +153 -204
  312. package/dist/events/domTextOffset.d.ts +9 -9
  313. package/dist/events/domTextOffset.js +20 -48
  314. package/dist/events/events.utils.d.ts +0 -2
  315. package/dist/events/events.utils.js +0 -4
  316. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  317. package/dist/events/nativeInteractiveControl.js +28 -56
  318. package/dist/events/onBeforeInput.d.ts +6 -1
  319. package/dist/events/onBeforeInput.js +207 -331
  320. package/dist/events/onCopy.js +1 -5
  321. package/dist/events/onDrop.d.ts +7 -1
  322. package/dist/events/onDrop.js +64 -78
  323. package/dist/events/onFocus.d.ts +9 -4
  324. package/dist/events/onFocus.js +45 -67
  325. package/dist/events/onInput.d.ts +8 -4
  326. package/dist/events/onInput.js +34 -147
  327. package/dist/events/onKeyDown.js +55 -122
  328. package/dist/events/onPaste.d.ts +14 -1
  329. package/dist/events/onPaste.js +51 -76
  330. package/dist/index.d.ts +11 -15
  331. package/dist/index.js +3 -3
  332. package/dist/kinds.d.ts +4 -6
  333. package/dist/kinds.js +28 -27
  334. package/dist/labels.d.ts +83 -320
  335. package/dist/labels.js +181 -408
  336. package/dist/plugins/Chrome.svelte +29 -0
  337. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  338. package/dist/plugins/Control.svelte +23 -0
  339. package/dist/plugins/Control.svelte.d.ts +30 -0
  340. package/dist/plugins/anchored.svelte.d.ts +47 -0
  341. package/dist/plugins/anchored.svelte.js +73 -0
  342. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  343. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  344. package/dist/plugins/bands.svelte.d.ts +57 -0
  345. package/dist/plugins/bands.svelte.js +95 -0
  346. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  347. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  348. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
  349. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
  350. package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
  351. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  352. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  353. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
  354. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  355. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  356. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  358. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  359. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  360. package/dist/plugins/brand.d.ts +8 -0
  361. package/dist/plugins/brand.js +8 -0
  362. package/dist/plugins/chrome.d.ts +45 -38
  363. package/dist/plugins/chrome.js +59 -36
  364. package/dist/plugins/code/CodeHeader.svelte +8 -38
  365. package/dist/plugins/code/CodePlugin.svelte +53 -56
  366. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  367. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  368. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  369. package/dist/plugins/code/code.css +5 -117
  370. package/dist/plugins/code/header.svelte.d.ts +2 -11
  371. package/dist/plugins/code/header.svelte.js +11 -38
  372. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  373. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  374. package/dist/plugins/code/languages.d.ts +9 -22
  375. package/dist/plugins/code/languages.js +39 -128
  376. package/dist/plugins/columns/ColumnResize.svelte +16 -27
  377. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  378. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  379. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  380. package/dist/plugins/columns/columns.css +7 -26
  381. package/dist/plugins/columns/gaps.d.ts +7 -5
  382. package/dist/plugins/columns/gaps.js +11 -6
  383. package/dist/plugins/columns/resize.svelte.d.ts +17 -54
  384. package/dist/plugins/columns/resize.svelte.js +80 -173
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  389. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  393. package/dist/plugins/equation/EquationPlugin.svelte +109 -172
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.css +7 -0
  397. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  398. package/dist/plugins/equation/equation.svelte.js +20 -94
  399. package/dist/plugins/equation/katex.js +6 -9
  400. package/dist/plugins/fileDrop.d.ts +28 -0
  401. package/dist/plugins/fileDrop.js +116 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +6 -167
  407. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  408. package/dist/plugins/image/ImagePlugin.svelte +71 -151
  409. package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
  410. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  411. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  412. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  413. package/dist/plugins/image/controls.svelte.js +43 -212
  414. package/dist/plugins/image/image.css +17 -0
  415. package/dist/plugins/image/image.d.ts +0 -5
  416. package/dist/plugins/image/image.js +0 -3
  417. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  418. package/dist/plugins/image/toolbar.svelte.js +145 -0
  419. package/dist/plugins/index.d.ts +30 -26
  420. package/dist/plugins/index.js +28 -22
  421. package/dist/plugins/list.svelte.d.ts +128 -0
  422. package/dist/plugins/list.svelte.js +217 -0
  423. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  424. package/dist/plugins/markdownShortcuts.js +10 -9
  425. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  426. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  427. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  428. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  429. package/dist/plugins/marquee/marquee.js +4 -21
  430. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  431. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  432. package/dist/plugins/media/AudioPlugin.svelte +13 -88
  433. package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
  434. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  435. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  436. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  437. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  438. package/dist/plugins/media/EmptySlot.svelte +44 -0
  439. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  440. package/dist/plugins/media/FilePlugin.svelte +45 -113
  441. package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
  442. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  443. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  444. package/dist/plugins/media/SourceBlock.svelte +200 -0
  445. package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
  446. package/dist/plugins/media/UploadPreview.svelte +32 -0
  447. package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
  448. package/dist/plugins/media/VideoPlugin.svelte +14 -97
  449. package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
  450. package/dist/plugins/media/empty.svelte.d.ts +47 -46
  451. package/dist/plugins/media/empty.svelte.js +67 -60
  452. package/dist/plugins/media/media.d.ts +97 -44
  453. package/dist/plugins/media/media.js +77 -99
  454. package/dist/plugins/media/upload.css +23 -0
  455. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  456. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  457. package/dist/plugins/mention/MentionPlugin.svelte +84 -126
  458. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
  459. package/dist/plugins/mention/mention.css +6 -0
  460. package/dist/plugins/page/PageLink.svelte +54 -38
  461. package/dist/plugins/page/PagePlugin.svelte +20 -18
  462. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  463. package/dist/plugins/page/page.d.ts +35 -9
  464. package/dist/plugins/page/page.js +3 -4
  465. package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
  466. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
  467. package/dist/plugins/pageLink/pageLink.css +6 -0
  468. package/dist/plugins/planned.d.ts +10 -0
  469. package/dist/plugins/planned.js +12 -0
  470. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  471. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  472. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  473. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  474. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  475. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  476. package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
  477. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
  478. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  479. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  480. package/dist/plugins/richtext/body.js +2 -2
  481. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  482. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  483. package/dist/plugins/richtext/callouts.d.ts +15 -0
  484. package/dist/plugins/richtext/callouts.js +23 -0
  485. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  486. package/dist/plugins/richtext/controls.svelte.js +126 -0
  487. package/dist/plugins/richtext/richTextOperations.js +37 -28
  488. package/dist/plugins/richtext/richtext.css +6 -0
  489. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  490. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  491. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  492. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  493. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  494. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  495. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  496. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  497. package/dist/plugins/table/TableChrome.svelte +40 -124
  498. package/dist/plugins/table/TablePlugin.svelte +106 -168
  499. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  500. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  501. package/dist/plugins/table/chrome.svelte.js +340 -589
  502. package/dist/plugins/table/ops.d.ts +47 -0
  503. package/dist/plugins/table/ops.js +233 -0
  504. package/dist/plugins/table/table.css +16 -152
  505. package/dist/plugins/table/table.d.ts +15 -14
  506. package/dist/plugins/table/table.js +22 -16
  507. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  508. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  509. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  510. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  511. package/dist/plugins/toc/toc.d.ts +41 -10
  512. package/dist/plugins/toc/toc.js +2 -3
  513. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  514. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  515. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  516. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  517. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  518. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  519. package/dist/plugins/triggers/place.d.ts +0 -9
  520. package/dist/plugins/triggers/place.js +1 -17
  521. package/dist/plugins/triggers/triggers.d.ts +31 -9
  522. package/dist/plugins/triggers/triggers.js +82 -62
  523. package/dist/plugins/uploads.svelte.d.ts +55 -24
  524. package/dist/plugins/uploads.svelte.js +123 -50
  525. package/dist/plugins.d.ts +187 -66
  526. package/dist/selection/domSelection.d.ts +13 -4
  527. package/dist/selection/domSelection.js +110 -183
  528. package/dist/selection/pointer.svelte.d.ts +8 -10
  529. package/dist/selection/pointer.svelte.js +32 -73
  530. package/dist/selection/replaceSelection.d.ts +21 -22
  531. package/dist/selection/replaceSelection.js +60 -69
  532. package/dist/selection/selection.svelte.d.ts +5 -73
  533. package/dist/selection/selection.svelte.js +224 -542
  534. package/dist/selection/selection.utils.d.ts +34 -11
  535. package/dist/selection/selection.utils.js +128 -247
  536. package/dist/selection/visibility.d.ts +3 -8
  537. package/dist/selection/visibility.js +7 -5
  538. package/dist/session/announcer.svelte.d.ts +2 -1
  539. package/dist/session/announcer.svelte.js +7 -3
  540. package/dist/session/attempt.d.ts +43 -39
  541. package/dist/session/attempt.js +62 -55
  542. package/dist/session/bindings.js +117 -145
  543. package/dist/session/commands.d.ts +47 -22
  544. package/dist/session/commands.js +208 -208
  545. package/dist/session/composition.svelte.d.ts +2 -4
  546. package/dist/session/composition.svelte.js +55 -65
  547. package/dist/session/editing/text.d.ts +6 -0
  548. package/dist/session/editing/text.js +17 -3
  549. package/dist/session/handles.d.ts +10 -1
  550. package/dist/session/handles.js +28 -0
  551. package/dist/session/history.d.ts +0 -4
  552. package/dist/session/history.js +16 -21
  553. package/dist/session/inputRules.d.ts +6 -3
  554. package/dist/session/inputRules.js +78 -83
  555. package/dist/session/keymap.d.ts +1 -6
  556. package/dist/session/keymap.js +17 -20
  557. package/dist/session/moves.d.ts +43 -10
  558. package/dist/session/moves.js +101 -59
  559. package/dist/session/navigation.d.ts +10 -2
  560. package/dist/session/navigation.js +140 -172
  561. package/dist/session/ports.d.ts +2 -7
  562. package/dist/session/props.d.ts +25 -25
  563. package/dist/session/props.js +62 -159
  564. package/dist/session/selection.d.ts +4 -3
  565. package/dist/session/selection.js +5 -0
  566. package/dist/session/suggestions.svelte.d.ts +1 -1
  567. package/dist/session/suggestions.svelte.js +42 -47
  568. package/dist/session/uploads.d.ts +29 -0
  569. package/dist/session/uploads.js +10 -0
  570. package/dist/session/virtual.d.ts +3 -3
  571. package/dist/session/virtual.js +18 -40
  572. package/dist/surface/attributes.d.ts +1 -0
  573. package/dist/surface/attributes.js +3 -26
  574. package/dist/surface/cells.d.ts +5 -0
  575. package/dist/surface/cells.js +5 -0
  576. package/dist/surface/lines.d.ts +2 -2
  577. package/dist/surface/lines.js +1 -1
  578. package/dist/surface/observer.svelte.d.ts +3 -20
  579. package/dist/surface/observer.svelte.js +52 -72
  580. package/dist/surface/overlay.d.ts +41 -3
  581. package/dist/surface/overlay.js +92 -37
  582. package/dist/surface/pin.svelte.d.ts +5 -0
  583. package/dist/surface/pin.svelte.js +5 -0
  584. package/dist/surface/projector.svelte.d.ts +4 -6
  585. package/dist/surface/projector.svelte.js +42 -69
  586. package/dist/text/text.svelte.d.ts +14 -40
  587. package/dist/text/text.svelte.js +35 -51
  588. package/dist/text/wordBoundary.d.ts +19 -0
  589. package/dist/text/wordBoundary.js +29 -44
  590. package/dist/themes/notion.css +272 -106
  591. package/dist/utils/json.d.ts +3 -1
  592. package/dist/utils/json.js +52 -51
  593. package/dist/utils/listen.d.ts +8 -0
  594. package/dist/utils/listen.js +19 -0
  595. package/package.json +4 -5
  596. package/dist/block/block.utils.d.ts +0 -340
  597. package/dist/block/block.utils.js +0 -356
  598. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  599. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  600. package/dist/collaboration/history/panel.d.ts +0 -61
  601. package/dist/collaboration/history/panel.js +0 -3
  602. package/dist/components/SuggestionRanges.svelte +0 -58
  603. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  604. package/dist/crdt/doc/table.d.ts +0 -21
  605. package/dist/crdt/doc/table.js +0 -288
  606. package/dist/crdt/migration/generation.d.ts +0 -58
  607. package/dist/crdt/migration/generation.js +0 -70
  608. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  609. package/dist/crdt/migration/legacy-schema.js +0 -151
  610. package/dist/crdt/migration/migrate.d.ts +0 -56
  611. package/dist/crdt/migration/migrate.js +0 -227
  612. package/dist/crdt/nodes.d.ts +0 -121
  613. package/dist/crdt/nodes.js +0 -56
  614. package/dist/crdt/text/index/checks.d.ts +0 -15
  615. package/dist/crdt/text/index/checks.js +0 -156
  616. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  617. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  618. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  619. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  620. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  621. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  622. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  623. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  624. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  625. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  626. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  627. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  628. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  629. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  630. package/dist/edytor.utils.d.ts +0 -50
  631. package/dist/edytor.utils.js +0 -67
  632. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  633. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  634. package/dist/plugins/find/FindBar.svelte +0 -170
  635. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  636. package/dist/plugins/find/FindHighlights.svelte +0 -75
  637. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  638. package/dist/plugins/icons.d.ts +0 -2
  639. package/dist/plugins/icons.js +0 -63
  640. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  641. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  642. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  643. package/dist/plugins/image/empty.svelte.js +0 -83
  644. package/dist/plugins/keepInView.d.ts +0 -4
  645. package/dist/plugins/keepInView.js +0 -6
  646. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  647. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  648. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  649. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  650. package/dist/plugins/richtext/labels.d.ts +0 -9
  651. package/dist/plugins/richtext/labels.js +0 -7
  652. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  653. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  654. package/dist/plugins/table/dragPreview.d.ts +0 -29
  655. package/dist/plugins/table/dragPreview.js +0 -103
  656. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  657. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  658. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  659. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  660. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  661. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  662. package/dist/text/deltas.d.ts +0 -22
  663. package/dist/text/deltas.js +0 -46
  664. package/dist/text/text.utils.d.ts +0 -45
  665. package/dist/text/text.utils.js +0 -199
  666. /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
  667. /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
package/dist/crdt/flow.js CHANGED
@@ -1,4 +1,8 @@
1
+ import { ref } from './doc/plan.js';
1
2
  import { id as freshId } from '../utils.js';
3
+ import { sanitizeSpec } from '../utils/json.js';
4
+ import { collides } from './placement/model.js';
5
+ import { TYPE } from './schema.js';
2
6
  const lengthOf = (l) => (l.content ?? []).reduce((n, i) => n + (i.kind === 'text' ? i.text.length : 1), 0);
3
7
  /**
4
8
  * Where the caret ends a placed block: its own content's end when it shows a
@@ -22,248 +26,266 @@ export const placedEnd = (roleOf) => {
22
26
  return endOf;
23
27
  };
24
28
  /** `insertFlow`, prepared. */
25
- export const flowOps = (c) => ({
26
- insertFlow: (target, flow, view = {}) => {
27
- // Ingress: a run carries a placeholder kind through the spec sanitizer.
28
- let lines = flow.lines
29
- .map((l) => c.sanitize({ ...l, type: l.type ?? '' }))
30
- .map((s) => ({ ...s, type: s.type || undefined }));
31
- if (lines.length === 0)
32
- return c.plan([], []);
33
- // A cell outside a row is its text, a row outside a table its cells (`table.paste`).
34
- const unbare = (l, holder) => {
35
- const kind = l.type ? c.tableKind(l.type) : undefined;
36
- const kids = (next) => (l.children ?? []).flatMap((kid) => unbare(kid, next));
37
- if (kind === 'cell' && holder !== 'row')
38
- return [{ id: l.id, content: l.content }, ...kids(null)];
39
- if (kind === 'row' && holder !== 'table')
40
- return kids(null);
41
- if (!l.children)
42
- return [l];
43
- return [{ ...l, children: kids(kind === 'cell' ? null : (kind ?? null)) }];
44
- };
45
- lines = lines.flatMap((l) => unbare(l, null));
46
- /** A line's kind under `parent`: the list's item for its flat item kind, then `fitted`. */
47
- const fit = (parent, kind) => c.fitted(parent, parent !== null && kind !== undefined && kind === view.itemKind?.(parent)
48
- ? c.defaultChild(parent)
49
- : kind);
50
- const specs = (parent, of = lines) => of.map((l) => ({ ...l, type: fit(parent, l.type) ?? c.defaultChild(parent) }));
51
- const last = () => lines.at(-1);
52
- /** `l` and its nested lines as runs, each line that shows its own content one run. */
53
- const plain = (l) => [
54
- ...(!l.type || c.roleOf(l.type).rendersContent ? [{ id: l.id, content: l.content }] : []),
55
- ...(l.children ?? []).flatMap(plain)
56
- ];
57
- const endOf = placedEnd(c.roleOf);
58
- /**
59
- * A layout line, here or nested, as its items' lines in reading order, and
60
- * any other child it holds (`flow.layout`): no layout lands in an item.
61
- */
62
- const unwrap = (l) => {
63
- const item = l.type ? c.roleOf(l.type).layout : undefined;
64
- if (item === undefined)
65
- return [l.children ? { ...l, children: l.children.flatMap(unwrap) } : l];
66
- return (l.children ?? []).flatMap((kid) => kid.type === item ? (kid.children ?? []).flatMap(unwrap) : unwrap(kid));
67
- };
68
- const intoItem = (parent) => {
69
- if (parent !== null && c.insideItem(parent))
70
- lines = lines.flatMap(unwrap);
71
- };
72
- /** Whole blocks at a slot, after `pre`; the caret ends the last one's shown content. */
73
- const atSlot = (dest, pre) => {
74
- const placed = specs(dest.parent);
75
- const p = c.insertBlocks(dest, placed);
76
- const at = endOf(placed.at(-1)) ?? { block: last().id, offset: lengthOf(last()) };
77
- return 'writes' in p ? { ...c.plan(p.ids, [...pre, ...p.writes]), at } : p;
78
- };
79
- if ('replace' in target || 'slot' in target) {
80
- let slot;
81
- let pre = [];
82
- if ('slot' in target)
83
- slot = target.slot;
84
- else {
85
- // The lines fill the first block's slot: its parent is never emptied
86
- // by the delete, so a column keeps its layout (`layout.flow-slot`).
87
- const at = c.order().at;
88
- const first = target.replace
89
- .filter((id) => at.has(id))
90
- .sort((a, b) => at.get(a) - at.get(b))[0];
91
- const del = c.deleteBlocks(target.replace, first === undefined ? undefined : c.positionOf(first)?.parent);
92
- if (!('writes' in del))
93
- return del;
94
- if (first === undefined)
95
- return c.refused;
96
- slot = c.positionOf(first);
97
- pre = [...del.writes];
98
- }
99
- intoItem(slot.parent);
29
+ export const flowOps = (c) => {
30
+ /** A kind's roles, as placement reads them. */
31
+ const roleOf = (kind) => ({
32
+ void: c.roles.childless(kind),
33
+ island: c.roles.island(kind),
34
+ rendersContent: c.roles.rendersContent(kind),
35
+ layout: c.roles.layout(kind)
36
+ });
37
+ /** What a kind is in a table: the table, its row or its cell. */
38
+ const tableKind = (kind) => c.roles.table(kind) !== undefined
39
+ ? 'table'
40
+ : c.isRowKind(kind)
41
+ ? 'row'
42
+ : c.isCellKind(kind)
43
+ ? 'cell'
44
+ : undefined;
45
+ return {
46
+ insertFlow: (target, flow, view = {}) => {
47
+ // Ingress: a run carries a placeholder kind through the spec sanitizer.
48
+ let lines = flow.lines
49
+ .map((l) => sanitizeSpec({ ...l, type: l.type ?? '' }))
50
+ .map((s) => ({ ...s, type: s.type || undefined }));
100
51
  if (lines.length === 0)
101
52
  return c.plan([], []);
102
- // In a code block (selected lines, a slot), the lines are plain lines too (`flow.lines`).
103
- if (slot.parent !== null && c.isLines(slot.parent)) {
104
- const shown = lines.flatMap(plain);
105
- lines = shown.length ? shown : [{ id: lines[0].id, content: [] }];
106
- }
107
- return atSlot(slot, pre);
108
- }
109
- const B = c.ref(target.block);
110
- if (!c.contentTarget(B) || !c.rendersContent(B))
111
- return c.refused;
112
- const len = c.displayLength(B);
113
- const o = Math.max(0, Math.min(target.offset, len));
114
- const { parent, index } = c.positionOf(B);
115
- intoItem(B);
116
- const empty = len === 0 && c.childrenIds(B).length === 0;
117
- // A line of a lines island (a code line) takes plain lines: every line the flow
118
- // shows, nested ones included, in order; no block lands in the island (`flow.lines`).
119
- const inLines = parent !== null && c.isLines(parent);
120
- if (inLines)
121
- lines = lines.flatMap(plain);
122
- // A table's cell is never split: the lines it shows join its text (`table.paste`).
123
- const cell = c.isTableCell(B);
124
- if (cell)
125
- lines = lines.flatMap(plain);
126
- // A line that joins no text under `under` (`flow.apart`): its kind renders
127
- // none of its own (a list, a code block), or is a void or an island.
128
- const apart = (l, under) => {
129
- const kind = l.type && fit(under, l.type);
130
- const role = kind ? c.roleOf(kind) : undefined;
131
- return !!role && (!role.rendersContent || role.void || role.island);
132
- };
133
- // At the end of a container's header whose body shows, what follows the caret
134
- // leads its children and the body stays, as Enter opens a first child
135
- // (`flow.header`), unless the first line stands apart and replaces an empty
136
- // one (`flow.apart`); elsewhere it follows `B` among its siblings.
137
- const header = view.header?.(B);
138
- // A closed header shows no children: a line it takes brings none into its hidden
139
- // body; they follow it, shown (`flow.header`).
140
- const shut = header === 'closed';
141
- const inside = o === len && !inLines && !flow.whole && header === true && !(empty && apart(lines[0], B));
142
- const home = inside ? B : parent;
143
- if (lines.length === 0)
144
- return { ...c.plan([B], []), at: { block: B, offset: o } };
145
- if (flow.whole && !inLines && !cell)
146
- return atSlot({ parent, index: index + 1 }, empty ? [c.remove(B, [])] : []);
147
- // A void is never split: its caption takes the lines as one run; nor is a cell.
148
- const br = { kind: 'text', text: '\n' };
149
- if (c.isVoid(B) || cell) {
150
- const content = lines.flatMap((l, i) => [...(i ? [br] : []), ...(l.content ?? [])]);
151
- lines = [{ id: lines[0].id, content }];
152
- }
153
- // So a first line it joins leaves its nested lines as lines of the flow after it.
154
- if (shut && lines[0].children?.length && !apart(lines[0], home))
155
- lines = [{ ...lines[0], children: undefined }, ...lines[0].children, ...lines.slice(1)];
156
- const first = lines[0];
157
- const [joinsHead, joinsTail] = [!apart(first, home), lines.length > 1 && !apart(last(), home)];
158
- const all = specs(home);
159
- const placed = all.slice(joinsHead ? 1 : 0, joinsTail ? -1 : undefined);
160
- const ids = placed.map((s) => s.id);
161
- if (c.collides([...(joinsHead ? (first.children ?? []) : []), ...all.slice(joinsHead ? 1 : 0)]))
162
- return c.refused;
163
- const writes = [];
164
- const text = (id, at, l) => {
165
- for (const item of l.content ?? []) {
166
- if (item.kind === 'inline')
167
- writes.push({ op: 'insertInline', id, offset: at++, atom: item });
168
- else if (item.text !== '') {
169
- writes.push({ op: 'insertText', id, offset: at, text: item.text, marks: item.marks });
170
- at += item.text.length;
53
+ // A cell outside a row is its text, a row outside a table its cells (`table.paste`).
54
+ const unbare = (l, holder) => {
55
+ const kind = l.type ? tableKind(l.type) : undefined;
56
+ const kids = (next) => (l.children ?? []).flatMap((kid) => unbare(kid, next));
57
+ if (kind === 'cell' && holder !== 'row')
58
+ return [{ id: l.id, content: l.content }, ...kids(null)];
59
+ if (kind === 'row' && holder !== 'table')
60
+ return kids(null);
61
+ if (!l.children)
62
+ return [l];
63
+ return [{ ...l, children: kids(kind === 'cell' ? null : (kind ?? null)) }];
64
+ };
65
+ lines = lines.flatMap((l) => unbare(l, null));
66
+ /** A line's kind under `parent`: the list's item for its flat item kind, then `fitted`. */
67
+ const fit = (parent, kind) => c.fitted(parent, parent !== null && kind !== undefined && kind === view.itemKind?.(parent)
68
+ ? c.defaultChild(parent)
69
+ : kind);
70
+ const specs = (parent, of = lines) => of.map((l) => ({ ...l, type: fit(parent, l.type) ?? c.defaultChild(parent) }));
71
+ const last = () => lines.at(-1);
72
+ /** `l` and its nested lines as runs, each line that shows its own content one run. */
73
+ const plain = (l) => [
74
+ ...(!l.type || roleOf(l.type).rendersContent ? [{ id: l.id, content: l.content }] : []),
75
+ ...(l.children ?? []).flatMap(plain)
76
+ ];
77
+ const endOf = placedEnd(roleOf);
78
+ /**
79
+ * A layout line, here or nested, as its items' lines in reading order, and
80
+ * any other child it holds (`flow.layout`): no layout lands in an item.
81
+ */
82
+ const unwrap = (l) => {
83
+ const item = l.type ? roleOf(l.type).layout : undefined;
84
+ if (item === undefined)
85
+ return [l.children ? { ...l, children: l.children.flatMap(unwrap) } : l];
86
+ return (l.children ?? []).flatMap((kid) => kid.type === item ? (kid.children ?? []).flatMap(unwrap) : unwrap(kid));
87
+ };
88
+ const intoItem = (parent) => {
89
+ if (parent !== null && c.insideItem(parent))
90
+ lines = lines.flatMap(unwrap);
91
+ };
92
+ /** Whole blocks at a slot, after `pre`; the caret ends the last one's shown content. */
93
+ const atSlot = (dest, pre) => {
94
+ const placed = specs(dest.parent);
95
+ const p = c.insertBlocks(dest, placed);
96
+ const at = endOf(placed.at(-1)) ?? { block: last().id, offset: lengthOf(last()) };
97
+ return 'writes' in p ? { ...c.plan(p.ids, [...pre, ...p.writes]), at } : p;
98
+ };
99
+ if ('replace' in target || 'slot' in target) {
100
+ let slot;
101
+ let pre = [];
102
+ if ('slot' in target)
103
+ slot = target.slot;
104
+ else {
105
+ // The lines fill the first block's slot: its parent is never emptied
106
+ // by the delete, so a column keeps its layout (`layout.flow-slot`).
107
+ const at = c.view().order.at;
108
+ const first = target.replace
109
+ .filter((id) => at.has(id))
110
+ .sort((a, b) => at.get(a) - at.get(b))[0];
111
+ const del = c.deleteBlocks(target.replace, false, first === undefined ? undefined : c.positionOf(first)?.parent);
112
+ if (!('writes' in del))
113
+ return del;
114
+ if (first === undefined)
115
+ return c.REFUSED;
116
+ slot = c.positionOf(first);
117
+ pre = [...del.writes];
118
+ }
119
+ intoItem(slot.parent);
120
+ if (lines.length === 0)
121
+ return c.plan([], []);
122
+ // In a code block (selected lines, a slot), the lines are plain lines too (`flow.lines`).
123
+ if (slot.parent !== null && c.isLines(slot.parent)) {
124
+ const shown = lines.flatMap(plain);
125
+ lines = shown.length ? shown : [{ id: lines[0].id, content: [] }];
171
126
  }
127
+ return atSlot(slot, pre);
172
128
  }
173
- return at;
174
- };
175
- /** A joined line's children lead the block it joins; `moved` follow them. */
176
- const kids = (to, l, moved = [], ranks = c.ranksFor(to, 0, (l?.children?.length ?? 0) + moved.length)) => {
177
- const k = l?.children?.length ?? 0;
178
- if (k)
179
- writes.push({ op: 'insertBlocks', parent: to, index: 0, specs: l.children, ranks });
180
- if (moved.length)
181
- writes.push({ op: 'moveBlocks', ids: moved, parent: to, index: k, ranks: ranks.slice(k) });
182
- };
183
- /**
184
- * `l` joins `B` at `at`: its content, its kind when `B` shows no text (a header
185
- * keeps its own, as Enter does), its children first.
186
- */
187
- const join = (l, at, ranks) => {
188
- const end = text(B, at, l);
189
- const kind = l.type && fit(parent, l.type);
190
- if (len === 0 && !header && kind && kind === l.type)
191
- writes.push(...c.retype(B, kind), ...c.redata(B, l.data ?? {}));
192
- if (!shut)
193
- kids(B, l, [], ranks);
194
- return end;
195
- };
196
- /** The placed lines at `at` under `home`, `ranks` theirs. */
197
- const place = (at, ranks) => {
198
- if (placed.length)
199
- writes.push({ op: 'insertBlocks', parent: home, index: at, specs: placed, ranks });
200
- };
201
- // Under a header, the first line's children, the placed lines and the rest, in order.
202
- const k = joinsHead ? (first.children?.length ?? 0) : 0;
203
- const lead = inside ? c.ranksFor(B, 0, k + placed.length + 1) : [];
204
- const slot = inside ? 0 : index + 1;
205
- // Where the placed lines end the caret: after their last shown line (`flow.apart`).
206
- const end = placed.length ? endOf(placed.at(-1)) : undefined;
207
- // Nothing before the position and the first line stands apart: the lines go before `B`,
208
- // which keeps its text and takes a joining last line, or goes when empty and not needed.
209
- if (!joinsHead && o === 0 && !inside) {
210
- place(index, c.insertRanks(parent, index, placed.length));
211
- if (joinsTail) {
212
- const at = join(last(), 0);
213
- // A closed header's taken line's nested lines follow it, the caret ending them.
214
- const after = shut ? specs(parent, last().children ?? []) : [];
215
- if (after.length) {
216
- const ranks = c.insertRanks(parent, index + 1, after.length);
217
- const slot = index + placed.length + 1;
218
- writes.push({ op: 'insertBlocks', parent, index: slot, specs: after, ranks });
129
+ const B = ref(target.block);
130
+ if (!c.contentTarget(B) || !c.rendersContent(B))
131
+ return c.REFUSED;
132
+ const len = c.displayLength(B);
133
+ const o = Math.max(0, Math.min(target.offset, len));
134
+ const { parent, index } = c.positionOf(B);
135
+ intoItem(B);
136
+ const empty = len === 0 && c.childrenIds(B).length === 0;
137
+ // A line of a lines island (a code line) takes plain lines: every line the flow
138
+ // shows, nested ones included, in order; no block lands in the island (`flow.lines`).
139
+ const inLines = parent !== null && c.isLines(parent);
140
+ if (inLines)
141
+ lines = lines.flatMap(plain);
142
+ // A table's cell is never split: the lines it shows join its text (`table.paste`).
143
+ const cell = c.isTableCell(B);
144
+ if (cell)
145
+ lines = lines.flatMap(plain);
146
+ // A line that joins no text under `under` (`flow.apart`): its kind renders
147
+ // none of its own (a list, a code block), or is a void or an island.
148
+ const apart = (l, under) => {
149
+ const kind = l.type && fit(under, l.type);
150
+ const role = kind ? roleOf(kind) : undefined;
151
+ return !!role && (!role.rendersContent || role.void || role.island);
152
+ };
153
+ // At the end of a container's header whose body shows, what follows the caret
154
+ // leads its children and the body stays, as Enter opens a first child
155
+ // (`flow.header`), unless the first line stands apart and replaces an empty
156
+ // one (`flow.apart`); elsewhere it follows `B` among its siblings.
157
+ const header = view.header?.(B);
158
+ // A closed header shows no children: a line it takes brings none into its hidden
159
+ // body; they follow it, shown (`flow.header`).
160
+ const shut = header === 'closed';
161
+ const inside = o === len && !inLines && !flow.whole && header === true && !(empty && apart(lines[0], B));
162
+ const home = inside ? B : parent;
163
+ if (lines.length === 0)
164
+ return { ...c.plan([B], []), at: { block: B, offset: o } };
165
+ if (flow.whole && !inLines && !cell)
166
+ return atSlot({ parent, index: index + 1 }, empty ? [c.remove(B, [])] : []);
167
+ // A void is never split: its caption takes the lines as one run; nor is a cell.
168
+ const br = { kind: 'text', text: '\n' };
169
+ if (c.isVoid(B) || cell) {
170
+ const content = lines.flatMap((l, i) => [...(i ? [br] : []), ...(l.content ?? [])]);
171
+ lines = [{ id: lines[0].id, content }];
172
+ }
173
+ // So a first line it joins leaves its nested lines as lines of the flow after it.
174
+ if (shut && lines[0].children?.length && !apart(lines[0], home))
175
+ lines = [{ ...lines[0], children: undefined }, ...lines[0].children, ...lines.slice(1)];
176
+ const first = lines[0];
177
+ const [joinsHead, joinsTail] = [
178
+ !apart(first, home),
179
+ lines.length > 1 && !apart(last(), home)
180
+ ];
181
+ const all = specs(home);
182
+ const placed = all.slice(joinsHead ? 1 : 0, joinsTail ? -1 : undefined);
183
+ const ids = placed.map((s) => s.id);
184
+ if (collides(c.doc, [
185
+ ...(joinsHead ? (first.children ?? []) : []),
186
+ ...all.slice(joinsHead ? 1 : 0)
187
+ ]))
188
+ return c.REFUSED;
189
+ const writes = [];
190
+ /** A joined line's children lead the block it joins; `moved` follow them. */
191
+ const kids = (to, l, moved = [], ranks = c.ranksFor(to, 0, (l?.children?.length ?? 0) + moved.length)) => {
192
+ const k = l?.children?.length ?? 0;
193
+ if (k)
194
+ writes.push({ op: 'insertBlocks', parent: to, index: 0, specs: l.children, ranks });
195
+ if (moved.length)
196
+ writes.push({
197
+ op: 'moveBlocks',
198
+ ids: moved,
199
+ parent: to,
200
+ index: k,
201
+ ranks: ranks.slice(k)
202
+ });
203
+ };
204
+ /**
205
+ * `l` joins `B` at `at`: its content, its kind when `B` shows no text (a header
206
+ * keeps its own, as Enter does), its children first.
207
+ */
208
+ const join = (l, at, ranks) => {
209
+ const end = c.writeContent(writes, B, at, l.content);
210
+ const kind = l.type && fit(parent, l.type);
211
+ if (len === 0 && !header && kind && kind === l.type)
212
+ writes.push(...c.attr(B, TYPE, kind), ...(c.dataSteps(B, c.replaceData(l.data ?? {})) ?? []));
213
+ if (!shut)
214
+ kids(B, l, [], ranks);
215
+ return end;
216
+ };
217
+ /** The placed lines at `at` under `home`, `ranks` theirs. */
218
+ const place = (at, ranks) => {
219
+ if (placed.length)
220
+ writes.push({ op: 'insertBlocks', parent: home, index: at, specs: placed, ranks });
221
+ };
222
+ // Under a header, the first line's children, the placed lines and the rest, in order.
223
+ const k = joinsHead ? (first.children?.length ?? 0) : 0;
224
+ const lead = inside ? c.ranksFor(B, 0, k + placed.length + 1) : [];
225
+ const slot = inside ? 0 : index + 1;
226
+ // Where the placed lines end the caret: after their last shown line (`flow.apart`).
227
+ const end = placed.length ? endOf(placed.at(-1)) : undefined;
228
+ // Nothing before the position and the first line stands apart: the lines go before `B`,
229
+ // which keeps its text and takes a joining last line, or goes when empty and not needed.
230
+ if (!joinsHead && o === 0 && !inside) {
231
+ place(index, c.ranksFor(parent, index, placed.length, [], true));
232
+ if (joinsTail) {
233
+ const at = join(last(), 0);
234
+ // A closed header's taken line's nested lines follow it, the caret ending them.
235
+ const after = shut ? specs(parent, last().children ?? []) : [];
236
+ if (after.length) {
237
+ const ranks = c.ranksFor(parent, index + 1, after.length, [], true);
238
+ const slot = index + placed.length + 1;
239
+ writes.push({ op: 'insertBlocks', parent, index: slot, specs: after, ranks });
240
+ }
241
+ const caret = after.length ? endOf(after.at(-1)) : undefined;
242
+ const touched = [...ids, B, ...after.map((s) => s.id)];
243
+ return { ...c.plan(touched, writes), at: caret ?? { block: B, offset: at } };
219
244
  }
220
- const caret = after.length ? endOf(after.at(-1)) : undefined;
221
- const touched = [...ids, B, ...after.map((s) => s.id)];
222
- return { ...c.plan(touched, writes), at: caret ?? { block: B, offset: at } };
245
+ if (empty && end)
246
+ return { ...c.plan(ids, [...writes, c.remove(B, [])]), at: end };
247
+ return { ...c.plan([...ids, B], writes), at: end ?? { block: B, offset: 0 } };
223
248
  }
224
- if (empty && end)
225
- return { ...c.plan(ids, [...writes, c.remove(B, [])]), at: end };
226
- return { ...c.plan([...ids, B], writes), at: end ?? { block: B, offset: 0 } };
227
- }
228
- const head = joinsHead ? join(first, o, inside ? lead.slice(0, k) : undefined) : o;
229
- if (lines.length === 1 && joinsHead)
230
- return { ...c.plan([B], writes), at: { block: B, offset: head } };
231
- const moved = inside ? [] : c.childrenIds(B).filter((id) => !view.hidden?.(id));
232
- // Nothing after the position to keep, and the caret has a line: no split.
233
- if (!joinsTail && o === len && moved.length === 0 && end) {
234
- place(slot, inside ? lead.slice(k, -1) : c.pieceRanks(B, o, placed.length));
235
- return { ...c.plan([B, ...ids], writes), at: end };
249
+ const head = joinsHead ? join(first, o, inside ? lead.slice(0, k) : undefined) : o;
250
+ if (lines.length === 1 && joinsHead)
251
+ return { ...c.plan([B], writes), at: { block: B, offset: head } };
252
+ const moved = inside ? [] : c.childrenIds(B).filter((id) => !view.hidden?.(id));
253
+ // Nothing after the position to keep, and the caret has a line: no split.
254
+ if (!joinsTail && o === len && moved.length === 0 && end) {
255
+ place(slot, inside ? lead.slice(k, -1) : c.pieceRanks(B, o, placed.length));
256
+ return { ...c.plan([B, ...ids], writes), at: end };
257
+ }
258
+ // The rest of `B` stays in a shown line: the last line's block when it joins, else
259
+ // a line of `B`'s kind, as Enter makes; one made only for the caret (after a
260
+ // divider at the end) or under a header is a fresh line of its parent's default kind.
261
+ const T = joinsTail ? last().id : freshId('b');
262
+ const lastType = joinsTail && last().type && fit(home, last().type);
263
+ const bare = !joinsTail && o === len && moved.length === 0;
264
+ const tail = lastType
265
+ ? { type: lastType, data: last().data }
266
+ : bare || inside
267
+ ? { type: c.defaultChild(home), data: {} }
268
+ : { type: c.kindToCopy(B), data: c.blockDataOf(B) };
269
+ // By the offset the paste splits `B` at (SW12-crdt-4), as Enter's split.
270
+ const ranks = inside ? lead.slice(k) : c.pieceRanks(B, o, placed.length + 1);
271
+ const rank = ranks.pop();
272
+ const length = len - o;
273
+ writes.push({
274
+ op: 'splitBlock',
275
+ id: B,
276
+ offset: head,
277
+ length,
278
+ newId: T,
279
+ tail,
280
+ parent: home,
281
+ rank
282
+ });
283
+ kids(T, joinsTail ? last() : undefined, moved);
284
+ place(slot, ranks);
285
+ const at = joinsTail
286
+ ? { block: T, offset: c.writeContent(writes, T, 0, last().content) }
287
+ : (end ?? { block: T, offset: 0 });
288
+ return { ...c.plan([B, ...ids, T], writes), at };
236
289
  }
237
- // The rest of `B` stays in a shown line: the last line's block when it joins, else
238
- // a line of `B`'s kind, as Enter makes; one made only for the caret (after a
239
- // divider at the end) or under a header is a fresh line of its parent's default kind.
240
- const T = joinsTail ? last().id : freshId('b');
241
- const lastType = joinsTail && last().type && fit(home, last().type);
242
- const bare = !joinsTail && o === len && moved.length === 0;
243
- const tail = lastType
244
- ? { type: lastType, data: last().data }
245
- : bare || inside
246
- ? { type: c.defaultChild(home), data: {} }
247
- : c.tailOf(B);
248
- // By the offset the paste splits `B` at (SW12-crdt-4), as Enter's split.
249
- const ranks = inside ? lead.slice(k) : c.pieceRanks(B, o, placed.length + 1);
250
- const rank = ranks.pop();
251
- const length = len - o;
252
- writes.push({
253
- op: 'splitBlock',
254
- id: B,
255
- offset: head,
256
- length,
257
- newId: T,
258
- tail,
259
- parent: home,
260
- rank
261
- });
262
- kids(T, joinsTail ? last() : undefined, moved);
263
- place(slot, ranks);
264
- const at = joinsTail
265
- ? { block: T, offset: text(T, 0, last()) }
266
- : (end ?? { block: T, offset: 0 });
267
- return { ...c.plan([B, ...ids, T], writes), at };
268
- }
269
- });
290
+ };
291
+ };