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
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
+ };