edytor 1.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +21 -39
  2. package/dist/block/block.svelte.d.ts +11 -84
  3. package/dist/block/block.svelte.js +30 -134
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +11 -9
  9. package/dist/block/inlineBlock.svelte.js +18 -21
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +25 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/awarenessSelection.d.ts +22 -1
  49. package/dist/collaboration/awarenessSelection.js +42 -0
  50. package/dist/collaboration/comments/client.d.ts +2 -2
  51. package/dist/collaboration/comments/client.js +1 -1
  52. package/dist/collaboration/history/index.d.ts +5 -5
  53. package/dist/collaboration/history/index.js +5 -5
  54. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  55. package/dist/collaboration/history/panel.svelte.js +223 -0
  56. package/dist/collaboration/providers.d.ts +12 -3
  57. package/dist/collaboration/providers.js +5 -4
  58. package/dist/components/Block.svelte +42 -56
  59. package/dist/components/Block.svelte.d.ts +7 -5
  60. package/dist/components/Content.svelte +1 -5
  61. package/dist/components/Edytor.svelte +82 -99
  62. package/dist/components/Edytor.svelte.d.ts +16 -13
  63. package/dist/components/InlineBlock.svelte +1 -1
  64. package/dist/components/Ranges.svelte +96 -0
  65. package/dist/components/Ranges.svelte.d.ts +19 -0
  66. package/dist/components/Suggestion.svelte +3 -2
  67. package/dist/components/Text.svelte +2 -5
  68. package/dist/components/Text.svelte.d.ts +1 -1
  69. package/dist/crdt/admission.d.ts +2 -9
  70. package/dist/crdt/admission.js +3 -9
  71. package/dist/crdt/attribution/attribution.d.ts +11 -72
  72. package/dist/crdt/attribution/attribution.js +5 -52
  73. package/dist/crdt/attribution/block.d.ts +0 -78
  74. package/dist/crdt/attribution/block.js +1 -144
  75. package/dist/crdt/data.d.ts +18 -13
  76. package/dist/crdt/data.js +49 -71
  77. package/dist/crdt/doc/anchors.js +4 -4
  78. package/dist/crdt/doc/content.d.ts +5 -1
  79. package/dist/crdt/doc/content.js +3 -1
  80. package/dist/crdt/doc/delete.d.ts +1 -0
  81. package/dist/crdt/doc/funnel.d.ts +0 -23
  82. package/dist/crdt/doc/funnel.js +34 -85
  83. package/dist/crdt/doc/gate.d.ts +8 -9
  84. package/dist/crdt/doc/gate.js +7 -17
  85. package/dist/crdt/doc/history.d.ts +87 -14
  86. package/dist/crdt/doc/history.js +334 -149
  87. package/dist/crdt/doc/layout.d.ts +0 -1
  88. package/dist/crdt/doc/layout.js +2 -3
  89. package/dist/crdt/doc/meta.d.ts +4 -4
  90. package/dist/crdt/doc/meta.js +10 -21
  91. package/dist/crdt/doc/moves.d.ts +4 -4
  92. package/dist/crdt/doc/moves.js +5 -5
  93. package/dist/crdt/doc/plan.d.ts +2 -0
  94. package/dist/crdt/doc/plan.js +2 -0
  95. package/dist/crdt/doc/reads.d.ts +8 -5
  96. package/dist/crdt/doc/reads.js +49 -50
  97. package/dist/crdt/doc/seed.d.ts +15 -6
  98. package/dist/crdt/doc/seed.js +27 -26
  99. package/dist/crdt/doc/split-merge.d.ts +1 -3
  100. package/dist/crdt/doc/split-merge.js +4 -5
  101. package/dist/crdt/doc/steps.d.ts +3 -7
  102. package/dist/crdt/doc/steps.js +20 -9
  103. package/dist/crdt/doc/types.d.ts +0 -10
  104. package/dist/crdt/document.d.ts +32 -115
  105. package/dist/crdt/document.js +216 -302
  106. package/dist/crdt/edytor-doc.d.ts +689 -90
  107. package/dist/crdt/edytor-doc.js +74 -149
  108. package/dist/crdt/engine-api.d.ts +15 -47
  109. package/dist/crdt/engine.d.ts +7 -17
  110. package/dist/crdt/engine.js +9 -19
  111. package/dist/crdt/flow.d.ts +9 -37
  112. package/dist/crdt/flow.js +260 -238
  113. package/dist/crdt/index.d.ts +32 -85
  114. package/dist/crdt/index.js +21 -47
  115. package/dist/crdt/operations.d.ts +24 -33
  116. package/dist/crdt/operations.js +8 -17
  117. package/dist/crdt/placement/display.d.ts +0 -2
  118. package/dist/crdt/placement/display.js +0 -15
  119. package/dist/crdt/placement/model.d.ts +160 -12
  120. package/dist/crdt/placement/model.js +413 -414
  121. package/dist/crdt/placement/rank.d.ts +1 -5
  122. package/dist/crdt/placement/rank.js +28 -38
  123. package/dist/crdt/props.d.ts +32 -0
  124. package/dist/crdt/props.js +172 -0
  125. package/dist/crdt/protocol.d.ts +4 -5
  126. package/dist/crdt/protocol.js +3 -4
  127. package/dist/crdt/protocols/awareness.d.ts +3 -7
  128. package/dist/crdt/protocols/awareness.js +17 -33
  129. package/dist/crdt/protocols/envelope.d.ts +9 -29
  130. package/dist/crdt/protocols/envelope.js +8 -25
  131. package/dist/crdt/protocols/sync.d.ts +15 -30
  132. package/dist/crdt/protocols/sync.js +27 -89
  133. package/dist/crdt/providers/bound.d.ts +3 -1
  134. package/dist/crdt/providers/bound.js +3 -1
  135. package/dist/crdt/providers/container.d.ts +11 -17
  136. package/dist/crdt/providers/container.js +39 -27
  137. package/dist/crdt/providers/index.d.ts +34 -6
  138. package/dist/crdt/providers/index.js +106 -111
  139. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  140. package/dist/crdt/providers/indexeddb.js +29 -90
  141. package/dist/crdt/providers/room.d.ts +58 -2
  142. package/dist/crdt/providers/room.js +38 -21
  143. package/dist/crdt/providers/websocket.d.ts +1 -1
  144. package/dist/crdt/providers/websocket.js +3 -4
  145. package/dist/crdt/purge.d.ts +2 -2
  146. package/dist/crdt/purge.js +69 -6
  147. package/dist/crdt/rangeDelete.d.ts +4 -42
  148. package/dist/crdt/rangeDelete.js +7 -6
  149. package/dist/crdt/restore.d.ts +21 -1
  150. package/dist/crdt/restore.js +54 -59
  151. package/dist/crdt/schema.d.ts +2 -2
  152. package/dist/crdt/schema.js +4 -5
  153. package/dist/crdt/semantics.d.ts +10 -15
  154. package/dist/crdt/semantics.js +22 -21
  155. package/dist/crdt/storage.d.ts +7 -13
  156. package/dist/crdt/storage.js +10 -24
  157. package/dist/crdt/structs.d.ts +42 -47
  158. package/dist/crdt/structs.js +76 -67
  159. package/dist/crdt/tables.d.ts +9 -0
  160. package/dist/crdt/tables.js +20 -0
  161. package/dist/crdt/text/delete-index.d.ts +0 -13
  162. package/dist/crdt/text/delete-index.js +7 -14
  163. package/dist/crdt/text/deletes.d.ts +9 -22
  164. package/dist/crdt/text/deletes.js +11 -74
  165. package/dist/crdt/text/index/cache.js +3 -3
  166. package/dist/crdt/text/index/fold.d.ts +1 -2
  167. package/dist/crdt/text/index/fold.js +15 -10
  168. package/dist/crdt/text/index/layout.d.ts +0 -10
  169. package/dist/crdt/text/index/layout.js +6 -20
  170. package/dist/crdt/text/index/records.js +2 -1
  171. package/dist/crdt/text/index/report.js +5 -6
  172. package/dist/crdt/text/index/shared.d.ts +11 -4
  173. package/dist/crdt/text/index/shared.js +8 -7
  174. package/dist/crdt/text/index/state.d.ts +3 -33
  175. package/dist/crdt/text/index/state.js +2 -4
  176. package/dist/crdt/text/model.d.ts +82 -2
  177. package/dist/crdt/text/model.js +344 -354
  178. package/dist/crdt/text/rows.d.ts +0 -2
  179. package/dist/crdt/text/rows.js +0 -11
  180. package/dist/crdt/text/runs.d.ts +6 -3
  181. package/dist/crdt/text/runs.js +132 -137
  182. package/dist/crdt/text/streams.d.ts +1 -1
  183. package/dist/crdt/text/streams.js +1 -1
  184. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  185. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  186. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  187. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  188. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  189. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  190. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  191. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  193. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  194. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  195. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  196. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  197. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  198. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  199. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  200. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  201. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  202. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  203. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  204. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  205. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  206. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  207. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  208. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  209. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  211. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  213. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  214. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  216. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  217. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  218. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  219. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  220. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  221. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  222. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  223. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  224. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  225. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  226. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  227. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  228. package/dist/dnd/autoScroll.js +1 -2
  229. package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
  230. package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
  231. package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
  232. package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
  233. package/dist/dnd/placement.d.ts +200 -0
  234. package/dist/dnd/placement.js +426 -0
  235. package/dist/dnd/pragmatic.d.ts +4 -22
  236. package/dist/dnd/pragmatic.js +7 -26
  237. package/dist/dnd/track.d.ts +14 -0
  238. package/dist/dnd/track.js +55 -0
  239. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  242. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  243. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  302. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  303. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  304. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  305. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  306. package/dist/edytor.svelte.d.ts +46 -63
  307. package/dist/edytor.svelte.js +126 -181
  308. package/dist/events/beforeInputCommands.d.ts +6 -11
  309. package/dist/events/beforeInputCommands.js +189 -181
  310. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  311. package/dist/events/beforeInputDeleteCommands.js +153 -204
  312. package/dist/events/domTextOffset.d.ts +9 -9
  313. package/dist/events/domTextOffset.js +20 -48
  314. package/dist/events/events.utils.d.ts +0 -2
  315. package/dist/events/events.utils.js +0 -4
  316. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  317. package/dist/events/nativeInteractiveControl.js +28 -56
  318. package/dist/events/onBeforeInput.d.ts +6 -1
  319. package/dist/events/onBeforeInput.js +207 -331
  320. package/dist/events/onCopy.js +1 -5
  321. package/dist/events/onDrop.d.ts +7 -1
  322. package/dist/events/onDrop.js +64 -78
  323. package/dist/events/onFocus.d.ts +9 -4
  324. package/dist/events/onFocus.js +45 -67
  325. package/dist/events/onInput.d.ts +8 -4
  326. package/dist/events/onInput.js +34 -147
  327. package/dist/events/onKeyDown.js +55 -122
  328. package/dist/events/onPaste.d.ts +14 -1
  329. package/dist/events/onPaste.js +51 -76
  330. package/dist/index.d.ts +11 -15
  331. package/dist/index.js +3 -3
  332. package/dist/kinds.d.ts +4 -6
  333. package/dist/kinds.js +28 -27
  334. package/dist/labels.d.ts +83 -320
  335. package/dist/labels.js +181 -408
  336. package/dist/plugins/Chrome.svelte +29 -0
  337. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  338. package/dist/plugins/Control.svelte +23 -0
  339. package/dist/plugins/Control.svelte.d.ts +30 -0
  340. package/dist/plugins/anchored.svelte.d.ts +47 -0
  341. package/dist/plugins/anchored.svelte.js +73 -0
  342. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  343. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  344. package/dist/plugins/bands.svelte.d.ts +57 -0
  345. package/dist/plugins/bands.svelte.js +95 -0
  346. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  347. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  348. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
  349. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
  350. package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
  351. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  352. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  353. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
  354. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  355. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  356. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  358. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  359. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  360. package/dist/plugins/brand.d.ts +8 -0
  361. package/dist/plugins/brand.js +8 -0
  362. package/dist/plugins/chrome.d.ts +45 -38
  363. package/dist/plugins/chrome.js +59 -36
  364. package/dist/plugins/code/CodeHeader.svelte +8 -38
  365. package/dist/plugins/code/CodePlugin.svelte +53 -56
  366. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  367. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  368. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  369. package/dist/plugins/code/code.css +5 -117
  370. package/dist/plugins/code/header.svelte.d.ts +2 -11
  371. package/dist/plugins/code/header.svelte.js +11 -38
  372. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  373. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  374. package/dist/plugins/code/languages.d.ts +9 -22
  375. package/dist/plugins/code/languages.js +39 -128
  376. package/dist/plugins/columns/ColumnResize.svelte +16 -27
  377. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  378. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  379. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  380. package/dist/plugins/columns/columns.css +7 -26
  381. package/dist/plugins/columns/gaps.d.ts +7 -5
  382. package/dist/plugins/columns/gaps.js +11 -6
  383. package/dist/plugins/columns/resize.svelte.d.ts +17 -54
  384. package/dist/plugins/columns/resize.svelte.js +80 -173
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  389. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  393. package/dist/plugins/equation/EquationPlugin.svelte +109 -172
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.css +7 -0
  397. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  398. package/dist/plugins/equation/equation.svelte.js +20 -94
  399. package/dist/plugins/equation/katex.js +6 -9
  400. package/dist/plugins/fileDrop.d.ts +28 -0
  401. package/dist/plugins/fileDrop.js +116 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +6 -167
  407. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  408. package/dist/plugins/image/ImagePlugin.svelte +71 -151
  409. package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
  410. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  411. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  412. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  413. package/dist/plugins/image/controls.svelte.js +43 -212
  414. package/dist/plugins/image/image.css +17 -0
  415. package/dist/plugins/image/image.d.ts +0 -5
  416. package/dist/plugins/image/image.js +0 -3
  417. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  418. package/dist/plugins/image/toolbar.svelte.js +145 -0
  419. package/dist/plugins/index.d.ts +30 -26
  420. package/dist/plugins/index.js +28 -22
  421. package/dist/plugins/list.svelte.d.ts +128 -0
  422. package/dist/plugins/list.svelte.js +217 -0
  423. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  424. package/dist/plugins/markdownShortcuts.js +10 -9
  425. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  426. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  427. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  428. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  429. package/dist/plugins/marquee/marquee.js +4 -21
  430. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  431. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  432. package/dist/plugins/media/AudioPlugin.svelte +13 -88
  433. package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
  434. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  435. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  436. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  437. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  438. package/dist/plugins/media/EmptySlot.svelte +44 -0
  439. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  440. package/dist/plugins/media/FilePlugin.svelte +45 -113
  441. package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
  442. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  443. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  444. package/dist/plugins/media/SourceBlock.svelte +200 -0
  445. package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
  446. package/dist/plugins/media/UploadPreview.svelte +32 -0
  447. package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
  448. package/dist/plugins/media/VideoPlugin.svelte +14 -97
  449. package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
  450. package/dist/plugins/media/empty.svelte.d.ts +47 -46
  451. package/dist/plugins/media/empty.svelte.js +67 -60
  452. package/dist/plugins/media/media.d.ts +97 -44
  453. package/dist/plugins/media/media.js +77 -99
  454. package/dist/plugins/media/upload.css +23 -0
  455. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  456. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  457. package/dist/plugins/mention/MentionPlugin.svelte +84 -126
  458. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
  459. package/dist/plugins/mention/mention.css +6 -0
  460. package/dist/plugins/page/PageLink.svelte +54 -38
  461. package/dist/plugins/page/PagePlugin.svelte +20 -18
  462. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  463. package/dist/plugins/page/page.d.ts +35 -9
  464. package/dist/plugins/page/page.js +3 -4
  465. package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
  466. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
  467. package/dist/plugins/pageLink/pageLink.css +6 -0
  468. package/dist/plugins/planned.d.ts +10 -0
  469. package/dist/plugins/planned.js +12 -0
  470. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  471. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  472. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  473. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  474. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  475. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  476. package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
  477. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
  478. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  479. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  480. package/dist/plugins/richtext/body.js +2 -2
  481. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  482. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  483. package/dist/plugins/richtext/callouts.d.ts +15 -0
  484. package/dist/plugins/richtext/callouts.js +23 -0
  485. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  486. package/dist/plugins/richtext/controls.svelte.js +126 -0
  487. package/dist/plugins/richtext/richTextOperations.js +37 -28
  488. package/dist/plugins/richtext/richtext.css +6 -0
  489. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  490. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  491. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  492. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  493. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  494. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  495. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  496. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  497. package/dist/plugins/table/TableChrome.svelte +40 -124
  498. package/dist/plugins/table/TablePlugin.svelte +106 -168
  499. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  500. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  501. package/dist/plugins/table/chrome.svelte.js +340 -589
  502. package/dist/plugins/table/ops.d.ts +47 -0
  503. package/dist/plugins/table/ops.js +233 -0
  504. package/dist/plugins/table/table.css +16 -152
  505. package/dist/plugins/table/table.d.ts +15 -14
  506. package/dist/plugins/table/table.js +22 -16
  507. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  508. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  509. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  510. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  511. package/dist/plugins/toc/toc.d.ts +41 -10
  512. package/dist/plugins/toc/toc.js +2 -3
  513. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  514. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  515. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  516. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  517. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  518. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  519. package/dist/plugins/triggers/place.d.ts +0 -9
  520. package/dist/plugins/triggers/place.js +1 -17
  521. package/dist/plugins/triggers/triggers.d.ts +31 -9
  522. package/dist/plugins/triggers/triggers.js +82 -62
  523. package/dist/plugins/uploads.svelte.d.ts +55 -24
  524. package/dist/plugins/uploads.svelte.js +123 -50
  525. package/dist/plugins.d.ts +187 -66
  526. package/dist/selection/domSelection.d.ts +13 -4
  527. package/dist/selection/domSelection.js +110 -183
  528. package/dist/selection/pointer.svelte.d.ts +8 -10
  529. package/dist/selection/pointer.svelte.js +32 -73
  530. package/dist/selection/replaceSelection.d.ts +21 -22
  531. package/dist/selection/replaceSelection.js +60 -69
  532. package/dist/selection/selection.svelte.d.ts +5 -73
  533. package/dist/selection/selection.svelte.js +224 -542
  534. package/dist/selection/selection.utils.d.ts +34 -11
  535. package/dist/selection/selection.utils.js +128 -247
  536. package/dist/selection/visibility.d.ts +3 -8
  537. package/dist/selection/visibility.js +7 -5
  538. package/dist/session/announcer.svelte.d.ts +2 -1
  539. package/dist/session/announcer.svelte.js +7 -3
  540. package/dist/session/attempt.d.ts +43 -39
  541. package/dist/session/attempt.js +62 -55
  542. package/dist/session/bindings.js +117 -145
  543. package/dist/session/commands.d.ts +47 -22
  544. package/dist/session/commands.js +208 -208
  545. package/dist/session/composition.svelte.d.ts +2 -4
  546. package/dist/session/composition.svelte.js +55 -65
  547. package/dist/session/editing/text.d.ts +6 -0
  548. package/dist/session/editing/text.js +17 -3
  549. package/dist/session/handles.d.ts +10 -1
  550. package/dist/session/handles.js +28 -0
  551. package/dist/session/history.d.ts +0 -4
  552. package/dist/session/history.js +16 -21
  553. package/dist/session/inputRules.d.ts +6 -3
  554. package/dist/session/inputRules.js +78 -83
  555. package/dist/session/keymap.d.ts +1 -6
  556. package/dist/session/keymap.js +17 -20
  557. package/dist/session/moves.d.ts +43 -10
  558. package/dist/session/moves.js +101 -59
  559. package/dist/session/navigation.d.ts +10 -2
  560. package/dist/session/navigation.js +140 -172
  561. package/dist/session/ports.d.ts +2 -7
  562. package/dist/session/props.d.ts +25 -25
  563. package/dist/session/props.js +62 -159
  564. package/dist/session/selection.d.ts +4 -3
  565. package/dist/session/selection.js +5 -0
  566. package/dist/session/suggestions.svelte.d.ts +1 -1
  567. package/dist/session/suggestions.svelte.js +42 -47
  568. package/dist/session/uploads.d.ts +29 -0
  569. package/dist/session/uploads.js +10 -0
  570. package/dist/session/virtual.d.ts +3 -3
  571. package/dist/session/virtual.js +18 -40
  572. package/dist/surface/attributes.d.ts +1 -0
  573. package/dist/surface/attributes.js +3 -26
  574. package/dist/surface/cells.d.ts +5 -0
  575. package/dist/surface/cells.js +5 -0
  576. package/dist/surface/lines.d.ts +2 -2
  577. package/dist/surface/lines.js +1 -1
  578. package/dist/surface/observer.svelte.d.ts +3 -20
  579. package/dist/surface/observer.svelte.js +52 -72
  580. package/dist/surface/overlay.d.ts +41 -3
  581. package/dist/surface/overlay.js +92 -37
  582. package/dist/surface/pin.svelte.d.ts +5 -0
  583. package/dist/surface/pin.svelte.js +5 -0
  584. package/dist/surface/projector.svelte.d.ts +4 -6
  585. package/dist/surface/projector.svelte.js +42 -69
  586. package/dist/text/text.svelte.d.ts +14 -40
  587. package/dist/text/text.svelte.js +35 -51
  588. package/dist/text/wordBoundary.d.ts +19 -0
  589. package/dist/text/wordBoundary.js +29 -44
  590. package/dist/themes/notion.css +272 -106
  591. package/dist/utils/json.d.ts +3 -1
  592. package/dist/utils/json.js +52 -51
  593. package/dist/utils/listen.d.ts +8 -0
  594. package/dist/utils/listen.js +19 -0
  595. package/package.json +4 -5
  596. package/dist/block/block.utils.d.ts +0 -340
  597. package/dist/block/block.utils.js +0 -356
  598. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  599. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  600. package/dist/collaboration/history/panel.d.ts +0 -61
  601. package/dist/collaboration/history/panel.js +0 -3
  602. package/dist/components/SuggestionRanges.svelte +0 -58
  603. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  604. package/dist/crdt/doc/table.d.ts +0 -21
  605. package/dist/crdt/doc/table.js +0 -288
  606. package/dist/crdt/migration/generation.d.ts +0 -58
  607. package/dist/crdt/migration/generation.js +0 -70
  608. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  609. package/dist/crdt/migration/legacy-schema.js +0 -151
  610. package/dist/crdt/migration/migrate.d.ts +0 -56
  611. package/dist/crdt/migration/migrate.js +0 -227
  612. package/dist/crdt/nodes.d.ts +0 -121
  613. package/dist/crdt/nodes.js +0 -56
  614. package/dist/crdt/text/index/checks.d.ts +0 -15
  615. package/dist/crdt/text/index/checks.js +0 -156
  616. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  617. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  618. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  619. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  620. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  621. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  622. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  623. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  624. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  625. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  626. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  627. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  628. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  629. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  630. package/dist/edytor.utils.d.ts +0 -50
  631. package/dist/edytor.utils.js +0 -67
  632. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  633. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  634. package/dist/plugins/find/FindBar.svelte +0 -170
  635. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  636. package/dist/plugins/find/FindHighlights.svelte +0 -75
  637. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  638. package/dist/plugins/icons.d.ts +0 -2
  639. package/dist/plugins/icons.js +0 -63
  640. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  641. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  642. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  643. package/dist/plugins/image/empty.svelte.js +0 -83
  644. package/dist/plugins/keepInView.d.ts +0 -4
  645. package/dist/plugins/keepInView.js +0 -6
  646. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  647. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  648. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  649. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  650. package/dist/plugins/richtext/labels.d.ts +0 -9
  651. package/dist/plugins/richtext/labels.js +0 -7
  652. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  653. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  654. package/dist/plugins/table/dragPreview.d.ts +0 -29
  655. package/dist/plugins/table/dragPreview.js +0 -103
  656. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  657. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  658. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  659. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  660. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  661. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  662. package/dist/text/deltas.d.ts +0 -22
  663. package/dist/text/deltas.js +0 -46
  664. package/dist/text/text.utils.d.ts +0 -45
  665. package/dist/text/text.utils.js +0 -199
  666. /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
  667. /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
@@ -1,19 +1,14 @@
1
1
  import type { Edytor } from '../edytor.svelte.js';
2
+ import type { Text } from '../text/text.svelte.js';
2
3
  import { type Attempt } from '../session/attempt.js';
3
- /**
4
- * Offer an intent's key to the bindings once per occurrence (the key it stands
5
- * for when no keydown offered it: Android, virtual keyboards): not when its
6
- * keydown already offered it (`offered`). A non-cancelable intent is offered
7
- * too — its attempt owns the browser's drift either way.
8
- */
9
- export declare const runBeforeInputHotkeyBridge: (edytor: Edytor, snapshot: Attempt, offered: string | null) => boolean;
10
4
  /**
11
5
  * A soft break; the caret lands after it, or before it (Emacs open-line).
12
- * When normalization splits the block on the break (code lines), "after" is
13
- * the new block's start and "before" the source block's trailing edge.
6
+ * When normalization splits the block on the break (code lines: the break is
7
+ * gone from its text), "after" is the new block's start and "before" the
8
+ * source block's trailing edge.
14
9
  */
15
10
  export declare const insertLineBreak: (edytor: Edytor, snapshot: Attempt, caret?: "after" | "before") => void;
16
11
  /** The model command for a `beforeinput`, run as one user command (undo policy, prevention scope). */
17
- export declare const runBeforeInputCommand: (edytor: Edytor, snapshot: Attempt) => boolean | void | Promise<void> | undefined;
12
+ export declare const runBeforeInputCommand: (edytor: Edytor, snapshot: Attempt) => boolean | void | Text | Promise<undefined> | null | undefined;
18
13
  /** An editing intent at the current selection (a key binding's command): no event to fabricate. */
19
- export declare const runIntent: (edytor: Edytor, inputType: string) => boolean | void | Promise<void> | undefined;
14
+ export declare const runIntent: (edytor: Edytor, inputType: string) => boolean | void | Text | Promise<undefined> | null | undefined;
@@ -6,52 +6,54 @@ import { dropText, textDragOf } from '../clipboard/moveText.js';
6
6
  import { cloneJson } from '../utils/json.js';
7
7
  import { insertionMarks } from '../session/editing/text.js';
8
8
  import { id, vetoable } from '../utils.js';
9
- import { dispatchPlan, prepareSplitKeepingChildren } from '../block/block.utils.js';
10
- import { getYIndex } from '../selection/selection.utils.js';
9
+ import { siblingSlot } from '../session/handles.js';
10
+ import { REFUSED } from '../crdt/doc/plan.js';
11
+ import { offsetIn } from '../selection/selection.utils.js';
11
12
  import { bodyShows } from '../selection/visibility.js';
12
13
  import { runBeforeInputDeleteCommand } from './beforeInputDeleteCommands.js';
13
14
  import { firstUriListEntry } from './dataTransferPayload.js';
14
- import { INTENTS, caretAt, intentSnapshot, kindOf } from '../session/attempt.js';
15
+ import { caretAt, intentSnapshot, kindOf } from '../session/attempt.js';
16
+ /** A kind's fresh data: its first preset's (a new to-do is unchecked). */
17
+ const freshData = (block) => ({
18
+ ...(block.definition.presets?.[0]?.data ?? {})
19
+ });
15
20
  /**
16
- * Offer an intent's key to the bindings once per occurrence (the key it stands
17
- * for when no keydown offered it: Android, virtual keyboards): not when its
18
- * keydown already offered it (`offered`). A non-cancelable intent is offered
19
- * too — its attempt owns the browser's drift either way.
21
+ * The line Enter starts after `block` (a split's tail, a new sibling): a
22
+ * list-like kind (`continues`) itself, with fresh data; any other, its
23
+ * parent's default child.
20
24
  */
21
- export const runBeforeInputHotkeyBridge = (edytor, snapshot, offered) => {
22
- const key = snapshot.inputType === 'insertText' && snapshot.data === '\t'
23
- ? 'tab'
24
- : INTENTS[snapshot.inputType]?.key;
25
- return Boolean(key && key !== offered && edytor.keymap.run(key));
25
+ const nextLine = (block) => block.definition.continues
26
+ ? { type: block.type, data: freshData(block) }
27
+ : { type: block.edytor.defaultChild(block.parent) };
28
+ /** The block an operation answered first (inserted, split off), once written. */
29
+ const blockOf = (edytor, result) => edytor.idToBlock.get(result.ids[0] ?? '');
30
+ /**
31
+ * Type `value` at the insertion target (the selection it replaces removed
32
+ * first) with the insertion's marks; `. ` after a space or a dot replaces
33
+ * it (the auto-dot: autocorrect replaces the character before). Answers
34
+ * where it went.
35
+ */
36
+ const type = (edytor, snapshot, value) => {
37
+ const marks = insertionMarks(edytor, snapshot);
38
+ const target = replaceSelectionForInsertion(edytor, snapshot);
39
+ if (!target)
40
+ return null;
41
+ const { text, offset } = target;
42
+ const isAutoDot = value === '. ' && offset > 0 && ' .'.includes(text.stringContent[offset - 1]);
43
+ const at = text.segStart + offset - (isAutoDot ? 1 : 0);
44
+ if (isAutoDot)
45
+ edytor.deleteText(text.parent.id, at, 1);
46
+ edytor.insertText(text.parent.id, at, value, marks);
47
+ return { text, offset, end: offset + (isAutoDot ? 1 : value.length) };
26
48
  };
27
49
  const insertText = (edytor, snapshot) => {
28
50
  const { data } = snapshot;
29
51
  // A text insertion while composing is the session's commit.
30
52
  if (snapshot.inputType === 'insertText' && edytor.composition.commit(data ?? ''))
31
53
  return;
32
- if (!snapshot.startText || !data) {
33
- return;
34
- }
35
- const marks = insertionMarks(edytor, snapshot);
36
- const target = replaceSelectionForInsertion(edytor, snapshot);
37
- if (!target) {
38
- return;
39
- }
40
- const autoDotPreviousCharacter = target.text.stringContent.slice(target.offset - 1, target.offset);
41
- const shouldApplyAutoDot = data === '. ' && target.offset > 0 && [' ', '.'].includes(autoDotPreviousCharacter);
42
- if (shouldApplyAutoDot) {
43
- target.text.insertText({
44
- value: data,
45
- start: target.offset,
46
- end: target.offset,
47
- marks,
48
- isAutoDot: true
49
- });
50
- caretAt(edytor, target.text, target.offset + 1);
51
- return;
52
- }
53
- target.text.insertText({ value: data, start: target.offset, end: target.offset, marks });
54
- caretAt(edytor, target.text, target.offset + data.length);
54
+ const at = snapshot.startText && data && type(edytor, snapshot, data);
55
+ if (at)
56
+ caretAt(edytor, at.text, at.end);
55
57
  };
56
58
  /**
57
59
  * Enter or Shift+Enter over a block selection edits the text (Notion): the
@@ -68,134 +70,119 @@ const editSelectedBlocks = (edytor) => {
68
70
  if (line)
69
71
  caretAt(edytor, line, line.length);
70
72
  else {
71
- const block = last.insertBlockAfter({ block: { type: edytor.defaultChild(last.parent) } });
72
- caretAt(edytor, block?.firstText, 0);
73
+ const line = { type: edytor.defaultChild(last.parent) };
74
+ caretAt(edytor, blockOf(edytor, edytor.insertBlocks(siblingSlot(last), [line]))?.firstText, 0);
73
75
  }
74
76
  return true;
75
77
  };
76
78
  /**
77
79
  * A soft break; the caret lands after it, or before it (Emacs open-line).
78
- * When normalization splits the block on the break (code lines), "after" is
79
- * the new block's start and "before" the source block's trailing edge.
80
+ * When normalization splits the block on the break (code lines: the break is
81
+ * gone from its text), "after" is the new block's start and "before" the
82
+ * source block's trailing edge.
80
83
  */
81
84
  export const insertLineBreak = (edytor, snapshot, caret = 'after') => {
82
85
  if (editSelectedBlocks(edytor))
83
86
  return;
84
- const marks = insertionMarks(edytor, snapshot);
85
- const target = replaceSelectionForInsertion(edytor, snapshot);
86
- if (!target) {
87
+ const at = type(edytor, snapshot, '\n');
88
+ if (!at)
87
89
  return;
88
- }
89
- const sourceBlock = target.text.parent;
90
- const sourceParent = sourceBlock.parent;
91
- const sourceIndex = sourceBlock.index;
92
- const sourceSiblingCount = sourceParent?.children.length ?? 0;
93
- target.text.insertText({ value: '\n', start: target.offset, end: target.offset, marks });
94
- sourceBlock.normalizeContent();
95
- const normalizedNextBlock = sourceParent?.children[sourceIndex + 1];
96
- const split = sourceParent &&
97
- sourceParent.children.length > sourceSiblingCount &&
98
- normalizedNextBlock?.type === sourceBlock.type;
90
+ const { text, offset } = at;
91
+ const block = text.parent;
99
92
  const before = caret === 'before';
100
- const text = !split
101
- ? target.text
102
- : before
103
- ? (sourceBlock.lastText ?? target.text)
104
- : normalizedNextBlock.firstText;
105
- const offset = !split ? target.offset + (before ? 0 : 1) : before ? text.length : 0;
106
- caretAt(edytor, text, offset);
107
- };
108
- const getLinkMarksForUri = (edytor, uri) => edytor.marks.has('link') ? { link: { href: uri } } : undefined;
109
- /** Plain text with `marks` (or a URI, as a link) as a flow (`flow.shape`). */
110
- const textFlow = (edytor, dataTransfer, fallback = '', marks) => {
111
- const uri = firstUriListEntry(dataTransfer?.getData('text/uri-list'));
112
- const plain = dataTransfer?.getData('text/plain') || '';
113
- const value = plain || uri || fallback;
114
- return value ? flowOfText(value, !plain && uri ? getLinkMarksForUri(edytor, uri) : marks) : null;
115
- };
116
- const insertFromPaste = async (edytor, snapshot) => {
117
- const flow = textFlow(edytor, snapshot.dataTransfer, '', insertionMarks(edytor, snapshot));
118
- if (!flow)
119
- return;
120
- // The paste consumes the caret's pending marks, as typing does.
121
- if (edytor.selection.pending)
122
- edytor.selection.stage(undefined);
123
- await pasteFlow(edytor, flow, { selection: snapshot });
93
+ if (text.stringContent[offset] === '\n')
94
+ return caretAt(edytor, text, offset + (before ? 0 : 1));
95
+ const line = before
96
+ ? (block.lastText ?? text)
97
+ : block.parent?.children[block.index + 1]?.firstText;
98
+ caretAt(edytor, line, before ? (line?.length ?? 0) : 0);
124
99
  };
125
- const runDataTransferPastePlugins = (edytor, dataTransfer) => {
100
+ const runPastePlugins = (edytor, dataTransfer, at) => {
126
101
  const event = { clipboardData: dataTransfer };
127
- for (const plugin of edytor.plugins) {
128
- vetoable((prevent) => plugin.onPaste?.({ prevent, e: event }));
129
- }
102
+ for (const plugin of edytor.plugins)
103
+ vetoable((prevent) => plugin.onPaste?.({ prevent, e: event, ...(at && { at }) }));
130
104
  };
131
- /** The drop point the browser reported, in block offsets (`null`: not in a text). */
132
- const dropPoint = (edytor, snapshot) => {
133
- const range = snapshot.declared;
105
+ /** The drop point the browser reported: its text and offset (`null`: not in a text). */
106
+ const dropPoint = (edytor, { declared: range }) => {
134
107
  const text = range && edytor.node?.contains(range.startContainer)
135
108
  ? edytor.selection.getTextOfNode(range.startContainer, range.startOffset)
136
109
  : null;
137
- if (!text)
138
- return null;
139
- const offset = Math.max(0, Math.min(getYIndex(text, range.startContainer, range.startOffset), text.length));
140
- return { block: text.parent.id, offset: text.segStart + offset };
141
- };
142
- // A drop reported while whole blocks are selected must insert at the drop
143
- // point — not replace the block selection. The earlier target-range sync is
144
- // skipped for block selections (the DOM caret sits inside a selected block),
145
- // so resolve the reported range directly. `undefined`: no such selection.
146
- const resolveDropPoint = (edytor, snapshot) => {
147
- const { selection, node } = edytor;
148
- if (selection.selectedBlocks.size === 0 && selection.selectedInlineBlock.size === 0)
149
- return;
150
- const range = snapshot.declared;
151
- const text = range && node?.contains(range.startContainer)
152
- ? selection.getTextOfNode(range.startContainer, range.startOffset)
153
- : null;
154
- if (!text)
155
- return null;
156
- const offset = Math.max(0, Math.min(getYIndex(text, range.startContainer, range.startOffset), text.length));
157
- selection.setAtTextOffset(text, offset);
158
- return { text, offset };
110
+ return text && { text, offset: offsetIn(text, range.startContainer, range.startOffset) };
159
111
  };
160
112
  /**
161
- * Drop/as-quotation payloads replay the paste pipeline: an embedded Edytor
113
+ * A paste occurrence inserts the plain text (or the URI, as a link) the
114
+ * paste handler left to it. A drop replays the paste pipeline: an embedded Edytor
162
115
  * fragment round-trips (cross-editor drags), files and html route through the
163
116
  * plugin `onPaste` hook (claimed via `prevent`: the recorded veto aborts
164
- * this function and is caught by the beforeinput caller), `text/uri-list` becomes
165
- * a link when a `link` mark is registered, unclaimed `text/html` is imported,
166
- * and `text/plain` inserts as text.
167
- * Unclaimed files insert nothing rather than degrading to file-name text.
117
+ * this function and is caught by the beforeinput caller), unclaimed
118
+ * `text/html` is imported, `text/plain` inserts as text and `text/uri-list`
119
+ * as a link when a `link` mark is registered. Unclaimed files insert nothing
120
+ * rather than degrading to file-name text. A paste's text takes the caret's
121
+ * insertion marks and consumes its pending ones, as typing does. A drop over
122
+ * selected blocks or an atom lands at its point (the declared-range sync
123
+ * skips a block selection: the DOM caret sits in a selected block), never
124
+ * over them; the view's own text drag dropped is a move (a copy with Alt) of
125
+ * its range.
168
126
  */
169
- const insertFromDataTransfer = async (edytor, snapshot) => {
170
- // The view's own text drag dropped here: a move (a copy with Alt) of its range.
127
+ const insertPayload = async (edytor, snapshot) => {
128
+ const { selection } = edytor;
129
+ const paste = snapshot.inputType === 'insertFromPaste';
130
+ const point = dropPoint(edytor, snapshot);
171
131
  const drag = textDragOf(edytor);
172
132
  if (drag?.dropping && snapshot.inputType === 'insertFromDrop') {
173
133
  drag.dropping = false;
174
- const to = dropPoint(edytor, snapshot);
175
- if (to)
176
- dropText(edytor, drag, to);
134
+ if (point)
135
+ dropText(edytor, drag, {
136
+ block: point.text.parent.id,
137
+ offset: point.text.segStart + point.offset
138
+ });
177
139
  return;
178
140
  }
179
- const dataTransfer = snapshot.dataTransfer ?? null;
180
- const fragment = readEdytorClipboardFragment(dataTransfer);
181
- if (!fragment && dataTransfer) {
182
- if ((dataTransfer.files?.length ?? 0) > 0) {
183
- // A plugin places the files at the selection: the drop point, never over selected blocks.
184
- if (resolveDropPoint(edytor, snapshot) !== null)
185
- runDataTransferPastePlugins(edytor, dataTransfer);
141
+ // `undefined`: no block or atom selection for the drop to land beside.
142
+ const land = () => {
143
+ if (paste || !(selection.selectedBlocks.size || selection.selectedInlineBlock.size))
186
144
  return;
145
+ if (point)
146
+ selection.selectText(point.text, point.offset);
147
+ return point;
148
+ };
149
+ const dataTransfer = snapshot.dataTransfer ?? null;
150
+ // A paste occurrence is the plain text its handler left to it (Shift-paste too).
151
+ const fragment = !paste && readEdytorClipboardFragment(dataTransfer);
152
+ if (!paste && !fragment && dataTransfer) {
153
+ // A plugin places the files at the drop indicator's placement, else at the
154
+ // selection: the drop point, never over selected blocks.
155
+ if (dataTransfer.files?.length) {
156
+ if (snapshot.placement)
157
+ return void runPastePlugins(edytor, dataTransfer, snapshot.placement);
158
+ return void (land() !== null && runPastePlugins(edytor, dataTransfer));
187
159
  }
188
- if (dataTransfer.getData('text/html')) {
189
- runDataTransferPastePlugins(edytor, dataTransfer);
190
- }
160
+ if (dataTransfer.getData('text/html'))
161
+ runPastePlugins(edytor, dataTransfer);
191
162
  }
163
+ const uri = firstUriListEntry(dataTransfer?.getData('text/uri-list'));
164
+ const plain = dataTransfer?.getData('text/plain') || '';
165
+ const text = plain || uri || snapshot.data || '';
192
166
  const flow = fragment
193
167
  ? flowOfFragment(fragment)
194
- : (flowOfHtml(edytor, dataTransfer?.getData('text/html')) ??
195
- textFlow(edytor, dataTransfer, snapshot.data ?? ''));
196
- const at = flow ? resolveDropPoint(edytor, snapshot) : null;
197
- if (flow && at !== null)
198
- await pasteFlow(edytor, flow, { at, selection: snapshot });
168
+ : (!paste && flowOfHtml(edytor, dataTransfer?.getData('text/html'))) ||
169
+ (text
170
+ ? flowOfText(text, !plain && uri
171
+ ? edytor.marks.has('link')
172
+ ? { link: { href: uri } }
173
+ : undefined
174
+ : paste
175
+ ? insertionMarks(edytor, snapshot)
176
+ : undefined)
177
+ : null);
178
+ if (!flow)
179
+ return;
180
+ const at = land();
181
+ if (at === null)
182
+ return;
183
+ if (paste && selection.pending)
184
+ selection.stage(undefined);
185
+ await pasteFlow(edytor, flow, { at, selection: snapshot });
199
186
  };
200
187
  /**
201
188
  * Enter at the end of a block with content and children: a split whose tail
@@ -203,28 +190,55 @@ const insertFromDataTransfer = async (edytor, snapshot) => {
203
190
  * to-do is unchecked), any other's with the block's (a heading's level).
204
191
  */
205
192
  const liftContent = (block, text) => {
206
- const { continues, presets } = block.definition;
207
- const data = continues ? { ...(presets?.[0]?.data ?? {}) } : cloneJson(block.data);
208
- const plan = dispatchPlan(block, 'splitBlock', { index: text.length, text }, ({ index, text }) => block.edytor.facade.prepare.splitBlock(block.id, text.segStart + index, id('b'), {
209
- type: block.type,
210
- data
211
- }));
212
- return plan && (block.edytor.idToBlock.get(plan.ids[0]) ?? null);
193
+ const { edytor } = block;
194
+ const data = block.definition.continues ? freshData(block) : cloneJson(block.data);
195
+ const tail = { type: block.type, data };
196
+ return blockOf(edytor, edytor.splitBlock(block.id, text.segStart + text.length, id('b'), tail));
197
+ };
198
+ /**
199
+ * A split whose children stay with the block (a container's header): the
200
+ * tail becomes the block's first child (`child`) or its next sibling. One
201
+ * plan: the document's split step, placed there, without the move that
202
+ * gives the tail the children.
203
+ */
204
+ const splitKeepingChildren = (edytor, [id, offset, born, tail], child) => {
205
+ const { facade } = edytor;
206
+ const split = facade.prepare.splitBlock(id, offset, born, tail);
207
+ const step = 'writes' in split ? split.writes[0] : undefined;
208
+ if (step?.op !== 'splitBlock')
209
+ return REFUSED;
210
+ if (!child)
211
+ return facade.compose({ ...split, writes: [step] });
212
+ // The rank of a first child, and the document's answer on placing the kind there.
213
+ const slot = facade.prepare.insertBlocks({ parent: id, index: 0 }, [
214
+ { id: born, type: tail?.type ?? facade.defaultChild(id) }
215
+ ]);
216
+ const first = 'writes' in slot ? slot.writes[0] : undefined;
217
+ if (first?.op !== 'insertBlocks')
218
+ return REFUSED;
219
+ const placed = { ...step, parent: id, rank: first.ranks[0] };
220
+ return facade.compose({ ...split, writes: [placed] });
213
221
  };
214
222
  /**
215
223
  * Enter in the middle of a container's header: the children stay with it.
216
224
  * The tail becomes its first child (its default child kind); a closed
217
- * toggle's goes to a toggle after it instead. One plan.
225
+ * toggle's goes to a toggle after it instead. One plan, dispatched as the
226
+ * `splitBlock` it is.
218
227
  */
219
228
  const splitHeader = (block, text, index, open) => {
220
- const edytor = block.edytor;
221
- const { presets } = block.definition;
229
+ const { edytor } = block;
222
230
  const inside = open !== false;
223
231
  const tail = inside
224
232
  ? { type: edytor.defaultChild(block), data: {} }
225
- : { type: block.type, data: { ...(presets?.[0]?.data ?? {}) } };
226
- const plan = dispatchPlan(block, 'splitBlock', { index, text }, (payload) => prepareSplitKeepingChildren.call(block, payload, tail, inside));
227
- return plan && edytor.idToBlock.get(plan.ids[0]);
233
+ : { type: block.type, data: freshData(block) };
234
+ const args = [
235
+ block.id,
236
+ text.segStart + index,
237
+ id('b'),
238
+ tail
239
+ ];
240
+ const split = (a) => splitKeepingChildren(edytor, a, inside);
241
+ return blockOf(edytor, edytor.dispatcher.plan('splitBlock', args, split, block));
228
242
  };
229
243
  const insertParagraph = (edytor, snapshot) => {
230
244
  if (editSelectedBlocks(edytor))
@@ -234,23 +248,16 @@ const insertParagraph = (edytor, snapshot) => {
234
248
  if (cell && edytor.facade.isTableCell(cell.id))
235
249
  return insertLineBreak(edytor, snapshot);
236
250
  const target = replaceSelectionWithCollapsedTarget(edytor, snapshot);
237
- if (!target) {
251
+ if (!target?.text.parent.parent)
238
252
  return;
239
- }
240
- edytor.selection.setAtTextOffset(target.text, target.offset);
241
- const { startText, isCollapsed, yStart } = edytor.selection.state;
253
+ const { text: startText, offset: yStart } = target;
254
+ edytor.selection.selectText(startText, yStart);
242
255
  const { isAtEndOfBlock, isAtStartOfBlock } = edytor.selection.projection;
243
- if (!isCollapsed || !startText?.parent.parent) {
244
- return;
245
- }
246
256
  // The new sibling's actual parent decides its type.
247
257
  const defaultBlock = edytor.defaultChild(startText.parent.parent);
248
258
  const current = startText.parent;
249
- const { continues, presets } = current.definition;
250
- /** A list-like kind continues itself (a fresh to-do is unchecked); others start the default. */
251
- const sibling = continues
252
- ? { type: current.type, data: { ...(presets?.[0]?.data ?? {}) } }
253
- : { type: defaultBlock };
259
+ const { continues } = current.definition;
260
+ const sibling = nextLine(current);
254
261
  // Enter in the empty last line of a lines island (a code block) holding
255
262
  // other lines leaves it: the line goes, and the parent's default kind
256
263
  // after the island takes the caret (one step). An empty line elsewhere,
@@ -263,8 +270,9 @@ const insertParagraph = (edytor, snapshot) => {
263
270
  current.isEmpty &&
264
271
  current.index > 0 &&
265
272
  current.index === island.children.length - 1) {
266
- current.removeBlock();
267
- const after = island.insertBlockAfter({ block: { type: edytor.defaultChild(island.parent) } });
273
+ edytor.deleteBlock(current.id);
274
+ const line = { type: edytor.defaultChild(island.parent) };
275
+ const after = blockOf(edytor, edytor.insertBlocks(siblingSlot(island), [line]));
268
276
  return caretAt(edytor, after?.firstText, 0);
269
277
  }
270
278
  // Enter in an empty list-like block ends the run (Notion): out one level
@@ -275,11 +283,12 @@ const insertParagraph = (edytor, snapshot) => {
275
283
  // then out of the list.
276
284
  const item = Boolean(current.list);
277
285
  if ((continues || item) && isAtEndOfBlock && isAtStartOfBlock && !current.hasChildren) {
278
- if ((item || current.parent?.definition.continues) && current.unNestBlock())
286
+ const outdents = item || current.parent?.definition.continues;
287
+ if (outdents && edytor.unNestBlock(current.id).status === 'applied')
279
288
  return caretAt(edytor, current.firstText, 0);
280
289
  if (item)
281
290
  return;
282
- current.setBlock({ value: { type: defaultBlock, data: {} } });
291
+ edytor.setBlock(current.id, { type: defaultBlock, data: {} });
283
292
  return caretAt(edytor, current.firstText, 0);
284
293
  }
285
294
  // A container's header whose body shows (`body.enter`: one with children, an
@@ -290,9 +299,11 @@ const insertParagraph = (edytor, snapshot) => {
290
299
  if (isAtEndOfBlock) {
291
300
  if (header) {
292
301
  const opened = open === false
293
- ? current.insertBlockAfter({ block: sibling })
294
- : current.addChildBlock({ block: { type: edytor.defaultChild(current) }, index: 0 });
295
- return caretAt(edytor, opened?.firstText, 0);
302
+ ? edytor.insertBlocks(siblingSlot(current), [sibling])
303
+ : edytor.insertBlocks({ parent: current.id, index: 0 }, [
304
+ { type: edytor.defaultChild(current) }
305
+ ]);
306
+ return caretAt(edytor, blockOf(edytor, opened)?.firstText, 0);
296
307
  }
297
308
  const currentBlock = startText.parent;
298
309
  if (currentBlock.hasChildren && currentBlock.hasContent) {
@@ -300,43 +311,40 @@ const insertParagraph = (edytor, snapshot) => {
300
311
  // tail keeps the kind and takes the children.
301
312
  return caretAt(edytor, liftContent(currentBlock, startText)?.firstText, 0);
302
313
  }
303
- const newBlock = currentBlock.insertBlockAfter({ block: sibling });
314
+ const newBlock = blockOf(edytor, edytor.insertBlocks(siblingSlot(currentBlock), [sibling]));
304
315
  const text = newBlock?.firstText;
305
316
  return caretAt(edytor, text, text?.length ?? 0);
306
317
  }
307
318
  if (isAtStartOfBlock) {
308
- startText.parent.insertBlockBefore({ block: sibling });
319
+ edytor.insertBlocks(siblingSlot(startText.parent, false), [sibling]);
309
320
  caretAt(edytor, startText, 0);
310
321
  return;
311
322
  }
312
323
  const newBlock = header
313
324
  ? splitHeader(current, startText, yStart, open)
314
- : current.splitBlock({ index: yStart, text: startText });
325
+ : blockOf(edytor, edytor.splitBlock(current.id, startText.segStart + yStart, id('b'), sibling));
315
326
  caretAt(edytor, newBlock?.firstText, 0);
316
327
  };
317
328
  /** The model command for a `beforeinput`, run as one user command (undo policy, prevention scope). */
318
- export const runBeforeInputCommand = (edytor, snapshot) => edytor.dispatcher.run(snapshot.inputType, () => beforeInputCommand(edytor, snapshot));
319
- /** An editing intent at the current selection (a key binding's command): no event to fabricate. */
320
- export const runIntent = (edytor, inputType) => runBeforeInputCommand(edytor, intentSnapshot(edytor, inputType));
321
- const beforeInputCommand = (edytor, snapshot) => {
322
- const type = snapshot.inputType;
323
- switch (kindOf(type)) {
329
+ export const runBeforeInputCommand = (edytor, snapshot) => edytor.dispatcher.run(snapshot.inputType, () => {
330
+ const { inputType, data } = snapshot;
331
+ switch (kindOf(inputType)) {
324
332
  case 'text':
325
333
  return insertText(edytor, snapshot);
326
334
  case 'delete':
327
335
  return runBeforeInputDeleteCommand(edytor, snapshot);
328
336
  case 'break':
329
- return type === 'insertParagraph'
337
+ return inputType === 'insertParagraph'
330
338
  ? insertParagraph(edytor, snapshot)
331
339
  : insertLineBreak(edytor, snapshot);
332
340
  case 'payload':
333
- return type === 'insertFromPaste'
334
- ? insertFromPaste(edytor, snapshot)
335
- : insertFromDataTransfer(edytor, snapshot);
341
+ return insertPayload(edytor, snapshot);
336
342
  case 'composition':
337
- if (type === 'insertCompositionText')
338
- return edytor.composition.update(snapshot.data ?? '', snapshot);
339
- if (type === 'insertFromComposition')
340
- return edytor.composition.commit(snapshot.data ?? '');
343
+ if (inputType === 'insertCompositionText')
344
+ return edytor.composition.update(data ?? '', snapshot);
345
+ if (inputType === 'insertFromComposition')
346
+ return edytor.composition.commit(data ?? '');
341
347
  }
342
- };
348
+ });
349
+ /** An editing intent at the current selection (a key binding's command): no event to fabricate. */
350
+ export const runIntent = (edytor, inputType) => runBeforeInputCommand(edytor, intentSnapshot(edytor, inputType));
@@ -1,3 +1,22 @@
1
1
  import type { Edytor } from '../edytor.svelte.js';
2
+ import { Text } from '../text/text.svelte.js';
2
3
  import { type Attempt } from '../session/attempt.js';
3
- export declare const runBeforeInputDeleteCommand: (edytor: Edytor, snapshot: Attempt) => void;
4
+ /**
5
+ * Delete at the caret's text edge, one character inside it: the inline
6
+ * atom beside the edge, else the character, the caret staying at its side.
7
+ */
8
+ export declare const deleteInText: (edytor: Edytor, text: Text, yStart: number, back: boolean, atEdge: boolean) => void;
9
+ /**
10
+ * The model command of a delete intent. A block selection: every delete key
11
+ * (a word or line chord too) deletes the blocks as Backspace does —
12
+ * `onDeleteSelectedBlocks` first, children promoted (a drag or composition
13
+ * fragment is not a key). A range: the document's range deletion (a forward
14
+ * one needs its text). A collapsed caret: the intent's unit (`del.unit.*`),
15
+ * whose extent the model owns — a character; a word run from the caret's own
16
+ * text, the caret's line to either side, or the whole block, deleted as one
17
+ * range, the caret at its start; a cut, drag or composition fragment deletes
18
+ * nothing. A unit with nothing of the caret's own text in its direction
19
+ * (next to an inline atom, at the block's edge) is the neighbour, deleted
20
+ * like a character (atom, merge, unnest).
21
+ */
22
+ export declare const runBeforeInputDeleteCommand: (edytor: Edytor, snapshot: Attempt) => void | Text | null;