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,130 +1,78 @@
1
- const hasSelectionApi = (root) => typeof root.getSelection === 'function';
2
- const isShadowRoot = (root) => typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot;
3
- const getOwnerDocument = (node) => node?.ownerDocument ?? (typeof document === 'undefined' ? null : document);
4
- const getDocumentSelection = (node) => {
5
- const ownerDocument = getOwnerDocument(node);
6
- return ownerDocument?.defaultView?.getSelection?.() ?? ownerDocument?.getSelection?.() ?? null;
7
- };
8
- export const getDomSelection = (node) => {
1
+ const ownerOf = (node) => node?.ownerDocument ?? (typeof document === 'undefined' ? null : document);
2
+ /** The shadow root holding `node`, if any. */
3
+ const shadowOf = (node) => {
9
4
  const root = node?.getRootNode();
10
- if (isShadowRoot(root) && hasSelectionApi(root)) {
11
- const selection = root.getSelection();
12
- if (selection) {
13
- return selection;
14
- }
15
- }
16
- return getDocumentSelection(node);
17
- };
18
- export const getActiveElement = (node) => {
19
- const root = node?.getRootNode();
20
- if (isShadowRoot(root)) {
21
- return root.activeElement ?? getOwnerDocument(node)?.activeElement ?? null;
22
- }
23
- return getOwnerDocument(node)?.activeElement ?? null;
5
+ return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : null;
24
6
  };
7
+ const documentSelection = (node) => ownerOf(node)?.getSelection() ?? null;
8
+ export const getDomSelection = (node) => shadowOf(node)?.getSelection?.() ?? documentSelection(node);
9
+ export const getActiveElement = (node) => shadowOf(node)?.activeElement ?? ownerOf(node)?.activeElement ?? null;
25
10
  export const clearDomSelection = (node) => {
26
11
  getDomSelection(node)?.removeAllRanges();
27
12
  };
28
- export const createDomRange = (node) => {
29
- const ownerDocument = getOwnerDocument(node);
30
- if (!ownerDocument) {
31
- throw new Error('Cannot create a DOM range without an owner document');
32
- }
33
- return ownerDocument.createRange();
13
+ /**
14
+ * The caret point under (`x`, `y`): `caretPositionFromPoint` (Firefox,
15
+ * Chromium 128, Safari 26.2), else `caretRangeFromPoint` (the supported
16
+ * Chromium and Safari before those).
17
+ */
18
+ export const caretAtPoint = (doc, x, y) => {
19
+ const at = doc;
20
+ const position = at.caretPositionFromPoint?.(x, y);
21
+ if (position?.offsetNode)
22
+ return { node: position.offsetNode, offset: position.offset };
23
+ const range = at.caretRangeFromPoint?.(x, y);
24
+ return range ? { node: range.startContainer, offset: range.startOffset } : null;
34
25
  };
35
- const isSelectionCollapsed = (selection) => selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset;
36
- const createDomSelectionSnapshot = (selection) => ({
37
- anchorNode: selection.anchorNode,
38
- anchorOffset: selection.anchorOffset,
39
- direction: selection.direction,
40
- focusNode: selection.focusNode,
41
- focusOffset: selection.focusOffset,
42
- isCollapsed: isSelectionCollapsed(selection),
43
- rangeCount: selection.rangeCount,
44
- getRangeAt: (index) => selection.getRangeAt(index),
45
- nativeSelection: selection,
46
- toString: () => selection.toString(),
47
- type: selection.type
48
- });
49
- export const createDomSelectionSnapshotFromRange = (range, nativeSelection = null) => ({
26
+ /** A range in `node`'s document (a node always has one). */
27
+ export const createDomRange = (node) => ownerOf(node).createRange();
28
+ /** A snapshot of one range, forward. */
29
+ export const createDomSelectionSnapshotFromRange = (range) => ({
50
30
  anchorNode: range.startContainer,
51
31
  anchorOffset: range.startOffset,
52
- direction: 'forward',
53
32
  focusNode: range.endContainer,
54
33
  focusOffset: range.endOffset,
55
34
  isCollapsed: range.collapsed,
56
35
  rangeCount: 1,
57
- getRangeAt: (index) => {
58
- if (index !== 0) {
59
- throw new Error(`Selection range ${index} is unavailable`);
60
- }
61
- return range;
62
- },
63
- nativeSelection,
64
- toString: () => range.toString(),
65
- type: range.collapsed ? 'Caret' : 'Range'
36
+ getRangeAt: () => range
66
37
  });
67
- const createRangeFromStaticRange = (staticRange) => {
68
- const range = createDomRange(staticRange.startContainer);
69
- range.setStart(staticRange.startContainer, staticRange.startOffset);
70
- range.setEnd(staticRange.endContainer, staticRange.endOffset);
71
- return range;
72
- };
73
- const isNodeInside = (root, target) => root === target || root.contains(target);
74
- const getContainedRanges = (selection, container) => {
38
+ /**
39
+ * A snapshot of `selection`. Several ranges inside `container` are read as
40
+ * their bounding range, and the DOM is canonicalized to it too, so what the
41
+ * user sees matches what the model derives (the editor has no multi-range
42
+ * model); one is read alone.
43
+ */
44
+ const snapshotOf = (selection, container) => {
75
45
  const ranges = [];
76
- for (let index = 0; index < selection.rangeCount; index++) {
46
+ for (let index = 0; selection.rangeCount > 1 && index < selection.rangeCount; index++) {
77
47
  const range = selection.getRangeAt(index);
78
48
  if (!container ||
79
- (isNodeInside(container, range.startContainer) && isNodeInside(container, range.endContainer))) {
49
+ (container.contains(range.startContainer) && container.contains(range.endContainer)))
80
50
  ranges.push(range);
81
- }
82
- }
83
- return ranges;
84
- };
85
- const createDomSelectionSnapshotFromMultiRange = (selection, container) => {
86
- if (selection.rangeCount <= 1) {
87
- return null;
88
- }
89
- const ranges = getContainedRanges(selection, container);
90
- if (ranges.length === 0) {
91
- return null;
92
51
  }
93
- if (ranges.length === 1) {
94
- return createDomSelectionSnapshotFromRange(ranges[0], selection);
95
- }
96
- let firstRange = ranges[0];
97
- let lastRange = ranges[0];
98
- for (const range of ranges.slice(1)) {
99
- if (range.compareBoundaryPoints(Range.START_TO_START, firstRange) < 0) {
100
- firstRange = range;
101
- }
102
- if (range.compareBoundaryPoints(Range.END_TO_END, lastRange) > 0) {
103
- lastRange = range;
104
- }
105
- }
106
- const combinedRange = createDomRange(firstRange.startContainer);
107
- combinedRange.setStart(firstRange.startContainer, firstRange.startOffset);
108
- combinedRange.setEnd(lastRange.endContainer, lastRange.endOffset);
109
- // Not just a read: a multi-range selection is canonicalized to its
110
- // bounding range in the DOM too, so what the user sees matches the
111
- // snapshot the model derives (the editor has no multi-range model).
112
- selection.removeAllRanges();
113
- selection.addRange(combinedRange);
114
- return createDomSelectionSnapshotFromRange(combinedRange, selection);
115
- };
116
- const getComposedRangeSnapshot = (root, selection) => {
117
- if (typeof selection?.getComposedRanges !== 'function') {
118
- return null;
119
- }
120
- const [staticRange] = selection.getComposedRanges({ shadowRoots: [root] });
121
- if (!staticRange ||
122
- !root.contains(staticRange.startContainer) ||
123
- !root.contains(staticRange.endContainer)) {
124
- return null;
125
- }
126
- const range = createRangeFromStaticRange(staticRange);
127
- return createDomSelectionSnapshotFromRange(range, selection);
52
+ if (ranges.length === 1)
53
+ return createDomSelectionSnapshotFromRange(ranges[0]);
54
+ if (ranges.length > 1) {
55
+ const [first, last] = ranges.reduce(([first, last], range) => [
56
+ range.compareBoundaryPoints(Range.START_TO_START, first) < 0 ? range : first,
57
+ range.compareBoundaryPoints(Range.END_TO_END, last) > 0 ? range : last
58
+ ], [ranges[0], ranges[0]]);
59
+ const bounds = createDomRange(first.startContainer);
60
+ bounds.setStart(first.startContainer, first.startOffset);
61
+ bounds.setEnd(last.endContainer, last.endOffset);
62
+ selection.removeAllRanges();
63
+ selection.addRange(bounds);
64
+ return createDomSelectionSnapshotFromRange(bounds);
65
+ }
66
+ const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;
67
+ return {
68
+ anchorNode,
69
+ anchorOffset,
70
+ focusNode,
71
+ focusOffset,
72
+ isCollapsed: anchorNode === focusNode && anchorOffset === focusOffset,
73
+ rangeCount: selection.rangeCount,
74
+ getRangeAt: (index) => selection.getRangeAt(index)
75
+ };
128
76
  };
129
77
  /**
130
78
  * Scroll the caret into view after a programmatic selection write.
@@ -144,87 +92,66 @@ const getComposedRangeSnapshot = (root, selection) => {
144
92
  * `block:'nearest'` otherwise still nudges scroll containers.
145
93
  */
146
94
  export const scrollCaretIntoView = (root) => {
147
- if (!root) {
148
- return;
149
- }
150
- const selection = getDomSelection(root);
95
+ const selection = root && getDomSelection(root);
151
96
  const focusNode = selection?.focusNode;
152
- if (!selection || !focusNode || selection.rangeCount === 0 || !root.contains(focusNode)) {
97
+ if (!selection || !focusNode || selection.rangeCount === 0 || !root.contains(focusNode))
153
98
  return;
154
- }
155
- const activeElement = getActiveElement(root);
156
- if (activeElement !== root && !(activeElement && root.contains(activeElement))) {
99
+ const active = getActiveElement(root);
100
+ if (!active || !root.contains(active))
157
101
  return;
158
- }
159
- // Collapse a scratch range at the FOCUS endpoint so a backward range
160
- // scrolls to the moving edge, and collapsed carets get the exact
161
- // caret box rather than the element box. The offset is clamped — a
162
- // foreign DOM mutation can leave the selection pointing past a
163
- // shrunken node, and `setStart` throws on out-of-bounds offsets.
164
- const caretRange = createDomRange(focusNode);
165
- const maxOffset = focusNode instanceof Element ? focusNode.childNodes.length : (focusNode.nodeValue?.length ?? 0);
166
- caretRange.setStart(focusNode, Math.min(selection.focusOffset, maxOffset));
167
- caretRange.collapse(true);
168
102
  const element = focusNode instanceof Element ? focusNode : focusNode.parentElement;
169
- if (!element) {
103
+ if (!element)
170
104
  return;
171
- }
172
- // Optional-chained: non-layout environments (jsdom) don't implement
173
- // range rects — the element box is the fallback in real browsers too
174
- // when the caret rect comes back empty.
175
- const caretRect = caretRange.getBoundingClientRect?.() ?? null;
176
- const box = caretRect && (caretRect.top !== 0 || caretRect.bottom !== 0)
177
- ? caretRect
178
- : element.getBoundingClientRect();
179
- const view = element.ownerDocument.defaultView;
180
- const viewportHeight = view?.innerHeight ?? element.ownerDocument.documentElement.clientHeight;
181
- const viewportWidth = view?.innerWidth ?? element.ownerDocument.documentElement.clientWidth;
182
- const insideViewport = box.top >= 0 && box.bottom <= viewportHeight && box.left >= 0 && box.right <= viewportWidth;
183
- // The viewport check alone is not enough — an `overflow:auto/scroll/
184
- // hidden` ancestor clips the caret while it stays inside the window
185
- // viewport (the common "editor inside a scrollable pane" case). Walk
186
- // the ancestor chain; any scrollable clip counts as out-of-view.
187
- let clippedByScroller = false;
188
- if (insideViewport && view?.getComputedStyle) {
189
- for (let ancestor = element.parentElement; ancestor && ancestor !== element.ownerDocument.documentElement; ancestor = ancestor.parentElement) {
190
- const style = view.getComputedStyle(ancestor);
191
- const overflow = `${style.overflow} ${style.overflowX} ${style.overflowY}`;
192
- if (!/(auto|scroll|hidden)/.test(overflow)) {
193
- continue;
194
- }
195
- const rect = ancestor.getBoundingClientRect();
196
- if (box.top < rect.top ||
197
- box.bottom > rect.bottom ||
198
- box.left < rect.left ||
199
- box.right > rect.right) {
200
- clippedByScroller = true;
201
- break;
202
- }
203
- }
204
- }
205
- if (insideViewport && !clippedByScroller) {
206
- return;
207
- }
208
- element.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });
105
+ // A scratch range collapsed at the FOCUS endpoint: a backward range
106
+ // scrolls to the moving edge, a caret gets its exact box. The offset is
107
+ // clamped — a foreign DOM mutation can leave the selection past a
108
+ // shrunken node, and `setStart` throws out of bounds.
109
+ const caret = createDomRange(focusNode);
110
+ const max = focusNode instanceof Element ? focusNode.childNodes.length : (focusNode.nodeValue?.length ?? 0);
111
+ caret.setStart(focusNode, Math.min(selection.focusOffset, max));
112
+ caret.collapse(true);
113
+ // Optional-chained: jsdom has no range rects; an empty caret rect reads
114
+ // the element's box, in real browsers too.
115
+ const rect = caret.getBoundingClientRect?.();
116
+ const box = rect && (rect.top !== 0 || rect.bottom !== 0) ? rect : element.getBoundingClientRect();
117
+ const clips = (r) => box.top < r.top || box.bottom > r.bottom || box.left < r.left || box.right > r.right;
118
+ const document = element.ownerDocument;
119
+ const view = document.defaultView;
120
+ const { clientWidth, clientHeight } = document.documentElement;
121
+ // The viewport clips it, or a scrolling ancestor does while it stays in
122
+ // the window (the "editor inside a scrollable pane" case).
123
+ let clipped = clips({
124
+ top: 0,
125
+ left: 0,
126
+ bottom: view?.innerHeight ?? clientHeight,
127
+ right: view?.innerWidth ?? clientWidth
128
+ });
129
+ for (let ancestor = element.parentElement; !clipped && view?.getComputedStyle && ancestor && ancestor !== document.documentElement; ancestor = ancestor.parentElement) {
130
+ const { overflow, overflowX, overflowY } = view.getComputedStyle(ancestor);
131
+ clipped =
132
+ /(auto|scroll|hidden)/.test(`${overflow} ${overflowX} ${overflowY}`) &&
133
+ clips(ancestor.getBoundingClientRect());
134
+ }
135
+ if (clipped)
136
+ element.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });
209
137
  };
210
138
  export const getDomSelectionSnapshot = (node) => {
211
- const root = node?.getRootNode();
212
- const documentSelection = getDocumentSelection(node);
213
- if (isShadowRoot(root)) {
214
- if (hasSelectionApi(root)) {
215
- const shadowSelection = root.getSelection();
216
- if (shadowSelection?.anchorNode) {
217
- return (createDomSelectionSnapshotFromMultiRange(shadowSelection, node) ??
218
- createDomSelectionSnapshot(shadowSelection));
219
- }
220
- }
221
- const composedSnapshot = getComposedRangeSnapshot(root, documentSelection);
222
- if (composedSnapshot) {
223
- return composedSnapshot;
139
+ const root = shadowOf(node);
140
+ const selection = documentSelection(node);
141
+ if (root) {
142
+ const own = root.getSelection?.();
143
+ if (own?.anchorNode)
144
+ return snapshotOf(own, node);
145
+ // A selection inside a shadow root the document only reports composed.
146
+ const [composed] = selection?.getComposedRanges?.({ shadowRoots: [root] }) ?? [];
147
+ if (composed &&
148
+ root.contains(composed.startContainer) &&
149
+ root.contains(composed.endContainer)) {
150
+ const range = createDomRange(composed.startContainer);
151
+ range.setStart(composed.startContainer, composed.startOffset);
152
+ range.setEnd(composed.endContainer, composed.endOffset);
153
+ return createDomSelectionSnapshotFromRange(range);
224
154
  }
225
155
  }
226
- return documentSelection
227
- ? (createDomSelectionSnapshotFromMultiRange(documentSelection, node) ??
228
- createDomSelectionSnapshot(documentSelection))
229
- : null;
156
+ return selection && snapshotOf(selection, node);
230
157
  };
@@ -1,3 +1,11 @@
1
+ /**
2
+ * The selection under a pointer (`selection.pointer`): a press and its drag
3
+ * (`dragStart`, the drag's release, a normalization it held back), a press
4
+ * on a block's non-editable chrome, a triple click, a drag across columns
5
+ * (`acrossColumns`), a drag over inline atoms and `selectstart` on chrome.
6
+ * It writes the selection only through the selection's own writers; the
7
+ * selection's DOM adoption reads `dragging` and `across` and asks `hold()`.
8
+ */
1
9
  import type { Text } from '../text/text.svelte.js';
2
10
  import type { EdytorSelection } from './selection.svelte.js';
3
11
  /** A text point under the pointer, with where the pointer was. */
@@ -23,14 +31,4 @@ export declare class SelectionPointer {
23
31
  get across(): boolean;
24
32
  /** A normalization the drag holds back until its release. */
25
33
  hold: () => void;
26
- private insideText;
27
- private chromeBlock;
28
- /** The text point under the pointer, if any. */
29
- pointAt: (clientX: number, clientY: number) => {
30
- text: Text;
31
- offset: number;
32
- clientX: number;
33
- clientY: number;
34
- } | null;
35
- offsetAt: (text: Text, clientX: number, clientY: number) => number;
36
34
  }
@@ -1,19 +1,10 @@
1
- /**
2
- * The selection under a pointer (`selection.pointer`): a press and its drag
3
- * (`dragStart`, the drag's release, a normalization it held back), a press
4
- * on a block's non-editable chrome, a triple click, a drag across columns
5
- * (`acrossColumns`), a drag over inline atoms and `selectstart` on chrome.
6
- * It writes the selection only through the selection's own setters; the
7
- * selection's DOM adoption reads `dragging` and `across` and asks `hold()`.
8
- */
9
- import { InlineBlock } from '../block/inlineBlock.svelte.js';
10
1
  import { blockSelection } from '../session/selection.js';
11
2
  import { toTrailingParagraph } from '../session/navigation.js';
12
- import { isNativeInteractiveEvent } from '../events/nativeInteractiveControl.js';
3
+ import { isNativeInteractiveControl, isNativeInteractiveEvent } from '../events/nativeInteractiveControl.js';
13
4
  import { acrossColumns } from './replaceSelection.js';
14
- import { getDomSelectionSnapshot } from './domSelection.js';
5
+ import { caretAtPoint, getDomSelectionSnapshot } from './domSelection.js';
15
6
  import { domPointOf } from '../surface/projector.svelte.js';
16
- import { getElementFromNode, getYIndex, SUGGESTION } from './selection.utils.js';
7
+ import { getElementFromNode, isTextBoundSelectionPoint, offsetIn, SUGGESTION } from './selection.utils.js';
17
8
  export class SelectionPointer {
18
9
  selection;
19
10
  /** The press's text point while a primary press (a drag) lasts; `null` after its release. */
@@ -33,11 +24,7 @@ export class SelectionPointer {
33
24
  hold = () => {
34
25
  this.#held = true;
35
26
  };
36
- insideText = (node) => {
37
- const element = getElementFromNode(node);
38
- return Boolean(element?.closest('[data-edytor-text]'));
39
- };
40
- chromeBlock = (node) => {
27
+ #chromeBlock = (node) => {
41
28
  const element = getElementFromNode(node);
42
29
  const nonEditableElement = element?.closest('[contenteditable="false"]');
43
30
  if (!(nonEditableElement instanceof HTMLElement) ||
@@ -45,7 +32,7 @@ export class SelectionPointer {
45
32
  return null;
46
33
  }
47
34
  // A suggestion's preview is no block's chrome: a press there is its own (cancelled).
48
- if (nonEditableElement.closest(`input, textarea, select, button, a[href], ${SUGGESTION}`)) {
35
+ if (isNativeInteractiveControl(nonEditableElement) || nonEditableElement.closest(SUGGESTION)) {
49
36
  return null;
50
37
  }
51
38
  const block = this.selection.getBlockOfNode(nonEditableElement);
@@ -169,17 +156,17 @@ export class SelectionPointer {
169
156
  }
170
157
  const box = host.getBoundingClientRect();
171
158
  const x = Math.min(Math.max(at.clientX, box.left + 1), box.right - 1);
172
- const point = this.pointAt(x, at.clientY);
159
+ const point = this.#pointAt(x, at.clientY);
173
160
  if (!point)
174
161
  return;
175
162
  edytor.expectInternalFocus();
176
163
  host.focus({ preventScroll: true });
177
- this.selection.setAtTextOffset(point.text, point.offset);
164
+ this.selection.selectText(point.text, point.offset);
178
165
  };
179
166
  /** @internal */
180
167
  chromePress = (event) => {
181
168
  const targetNode = event.target instanceof Node ? event.target : null;
182
- const targetBlock = this.chromeBlock(targetNode);
169
+ const targetBlock = this.#chromeBlock(targetNode);
183
170
  const targetText = targetBlock?.firstText;
184
171
  // A native control inside the chrome (a void block's input) owns its press.
185
172
  if (!targetText || isNativeInteractiveEvent(event)) {
@@ -190,7 +177,7 @@ export class SelectionPointer {
190
177
  event.preventDefault();
191
178
  this.selection.edytor.expectInternalFocus();
192
179
  this.selection.edytor.node?.focus({ preventScroll: true });
193
- this.selection.setAtTextOffset(targetText, 0);
180
+ this.selection.selectText(targetText, 0);
194
181
  };
195
182
  /**
196
183
  * A triple click selects the block's content in the model; the browser's
@@ -203,18 +190,15 @@ export class SelectionPointer {
203
190
  return;
204
191
  const targetNode = e.target instanceof Node ? e.target : null;
205
192
  const clickedBlock = this.selection.getBlockOfNode(targetNode);
206
- if (clickedBlock?.definition.void && !this.insideText(targetNode)) {
193
+ if (clickedBlock?.definition.void && !isTextBoundSelectionPoint(targetNode)) {
207
194
  e.preventDefault();
208
- this.selection.selectBlocks(clickedBlock);
195
+ this.selection.select(blockSelection([clickedBlock.id]));
209
196
  return;
210
197
  }
211
- const targetBlock = targetNode instanceof Node
212
- ? (this.selection.getTextOfNode(targetNode)?.parent ??
213
- this.selection.getBlockOfNode(targetNode))
214
- : this.selection.state.startText?.parent;
215
- if (targetBlock) {
216
- this.selection.preserveBlockRange(targetBlock);
217
- }
198
+ const { selection } = this;
199
+ selection.selectLines(targetNode
200
+ ? (selection.getTextOfNode(targetNode)?.parent ?? selection.getBlockOfNode(targetNode))
201
+ : selection.textAt(selection.projection.start)?.text.parent);
218
202
  };
219
203
  /** @internal */
220
204
  preventTripleClick = (e) => {
@@ -222,30 +206,17 @@ export class SelectionPointer {
222
206
  e.preventDefault();
223
207
  };
224
208
  /** The text point under the pointer, if any. */
225
- pointAt = (clientX, clientY) => {
226
- const ownerDocument = (this.selection.edytor.node?.ownerDocument ??
227
- document);
228
- const caretPosition = ownerDocument.caretPositionFromPoint?.(clientX, clientY);
229
- const caretRange = caretPosition ? null : ownerDocument.caretRangeFromPoint?.(clientX, clientY);
230
- const node = caretPosition?.offsetNode ?? caretRange?.startContainer ?? null;
231
- const domOffset = caretPosition?.offset ?? caretRange?.startOffset ?? null;
232
- const text = this.selection.getTextOfNode(node, domOffset ?? undefined);
233
- if (!text || typeof domOffset !== 'number') {
234
- return null;
235
- }
236
- return {
237
- text,
238
- offset: Math.min(Math.max(getYIndex(text, node, domOffset), 0), text.length),
239
- clientX,
240
- clientY
241
- };
209
+ #pointAt = (clientX, clientY) => {
210
+ const at = caretAtPoint(this.selection.edytor.node?.ownerDocument ?? document, clientX, clientY);
211
+ const text = at && this.selection.getTextOfNode(at.node, at.offset);
212
+ return text ? { text, offset: offsetIn(text, at.node, at.offset), clientX, clientY } : null;
242
213
  };
243
- offsetAt = (text, clientX, clientY) => {
214
+ #offsetAt = (text, clientX, clientY) => {
244
215
  const ownerDocument = text.node?.ownerDocument;
245
216
  if (!text.node || !ownerDocument) {
246
217
  return 0;
247
218
  }
248
- const caretPoint = this.pointAt(clientX, clientY);
219
+ const caretPoint = this.#pointAt(clientX, clientY);
249
220
  if (caretPoint?.text === text) {
250
221
  return caretPoint.offset;
251
222
  }
@@ -270,7 +241,7 @@ export class SelectionPointer {
270
241
  };
271
242
  /** @internal */
272
243
  placeAt = (text, clientX, clientY) => {
273
- this.selection.setAtTextOffset(text, this.offsetAt(text, clientX, clientY));
244
+ this.selection.selectText(text, this.#offsetAt(text, clientX, clientY));
274
245
  };
275
246
  /** @internal */
276
247
  capture = (event) => {
@@ -278,7 +249,7 @@ export class SelectionPointer {
278
249
  this.dragStart = null;
279
250
  return;
280
251
  }
281
- this.dragStart = this.pointAt(event.clientX, event.clientY);
252
+ this.dragStart = this.#pointAt(event.clientX, event.clientY);
282
253
  this.#across = false;
283
254
  this.#extending = event.shiftKey;
284
255
  };
@@ -350,11 +321,11 @@ export class SelectionPointer {
350
321
  return;
351
322
  }
352
323
  this.selection.placedOver = this.selection.value;
353
- const point = this.pointAt(event.clientX, event.clientY);
324
+ const point = this.#pointAt(event.clientX, event.clientY);
354
325
  if (!point) {
355
326
  return;
356
327
  }
357
- this.selection.setAtTextOffset(point.text, point.offset);
328
+ this.selection.selectText(point.text, point.offset);
358
329
  };
359
330
  /** @internal */
360
331
  restoreAtomRange = (event) => {
@@ -364,7 +335,7 @@ export class SelectionPointer {
364
335
  if (!dragStart || event.button !== 0) {
365
336
  return;
366
337
  }
367
- const dragEnd = this.pointAt(event.clientX, event.clientY);
338
+ const dragEnd = this.#pointAt(event.clientX, event.clientY);
368
339
  if (!dragEnd) {
369
340
  return;
370
341
  }
@@ -372,27 +343,15 @@ export class SelectionPointer {
372
343
  if (movement < 4) {
373
344
  return;
374
345
  }
346
+ // Two texts of one block hold an inline atom between them (a block's
347
+ // content alternates texts and atoms): the range is the drag's.
375
348
  window.setTimeout(() => {
376
- if (dragStart.text.parent !== dragEnd.text.parent) {
377
- return;
378
- }
379
349
  const content = dragStart.text.parent.content;
380
- const startIndex = content.indexOf(dragStart.text);
381
- const endIndex = content.indexOf(dragEnd.text);
382
- const firstTextIndex = Math.min(startIndex, endIndex);
383
- const lastTextIndex = Math.max(startIndex, endIndex);
384
- const hasInlineAtomBetweenTextPoints = content.some((part, index) => part instanceof InlineBlock && index > firstTextIndex && index < lastTextIndex);
385
- if (startIndex === -1 || endIndex === -1 || !hasInlineAtomBetweenTextPoints) {
350
+ const [from, to] = [content.indexOf(dragStart.text), content.indexOf(dragEnd.text)];
351
+ if (dragStart.text.parent !== dragEnd.text.parent || from < 0 || to < 0 || from === to)
386
352
  return;
387
- }
388
- const isReversed = startIndex > endIndex;
389
- const rangeStart = isReversed ? dragEnd : dragStart;
390
- const rangeEnd = isReversed ? dragStart : dragEnd;
391
- this.selection.clearInlineBlockSelection();
392
- this.selection.setAtRange(rangeStart.text, rangeStart.offset, rangeEnd.text, rangeEnd.offset, {
393
- isReversed
394
- });
395
- this.selection.clearInlineBlockSelection();
353
+ const [start, end] = from < to ? [dragStart, dragEnd] : [dragEnd, dragStart];
354
+ this.selection.selectText(start.text, start.offset, end.text, end.offset, from > to);
396
355
  });
397
356
  };
398
357
  /**
@@ -1,15 +1,28 @@
1
1
  import type { Block } from '../block/block.svelte.js';
2
2
  import type { Edytor } from '../edytor.svelte.js';
3
3
  import { Text } from '../text/text.svelte.js';
4
- import type { RangeEndpoints } from '../edytor.utils.js';
4
+ import type { OpResult } from '../crdt/edytor-doc.js';
5
5
  export type SelectionInsertionTarget = {
6
6
  text: Text;
7
7
  offset: number;
8
8
  };
9
+ /** The two endpoints of a range, as the selection holds them. */
10
+ export type RangeEndpoints = {
11
+ startText: Text | null;
12
+ endText: Text | null;
13
+ yStart: number;
14
+ yEnd: number;
15
+ };
16
+ /**
17
+ * The caret a write that decides one left (a range deletion, a placed flow:
18
+ * the view selects it), as a text and an offset; none when the write was
19
+ * refused.
20
+ */
21
+ export declare const caretLeft: (edytor: Edytor, result: OpResult) => SelectionInsertionTarget | null;
22
+ /** A range to replace (an attempt's target); none: the live selection. */
9
23
  export type SelectionReplacementState = RangeEndpoints & {
10
24
  isCollapsed: boolean;
11
25
  };
12
- export declare const getSelectionReplacementState: (edytor: Edytor) => SelectionReplacementState;
13
26
  /**
14
27
  * The selected blocks as clicked, in document order: a grip-selected list is
15
28
  * one block. What a command over them acts on (a list with its items) is
@@ -85,27 +98,13 @@ export declare const movable: (blocks: Iterable<Block>) => Block[];
85
98
  */
86
99
  export declare const selectMoved: (edytor: Edytor, moved: Block[], before: Iterable<Block>) => void;
87
100
  /**
88
- * Run a block move that never hides a block the user saw (Notion): a closed
89
- * toggle a moved block lands in opens, and so does a closed toggle that
90
- * adopts blocks (Shift+Tab takes the blocks after it). `open` is view state.
91
- * Every relative move (`edytor.moveBlocks`) and every block move
92
- * command (`revealed`) share it. Answers the moved blocks.
93
- */
94
- export declare const revealing: (blocks: Block[], move: () => Block[]) => Block[];
95
- /**
96
- * Open every closed toggle `block` sits in, so it shows: a moved block
97
- * ({@link revealing}), find's current match (`plugins/find`).
101
+ * Open every closed toggle `block` sits in, so it shows (Notion: a move never
102
+ * hides a block the user saw): every block a view's operation moved (the
103
+ * dispatcher's write; a remote peer's move, an undo or a redo opens nothing:
104
+ * `open` is this view's state), find's current match (`plugins/find`).
98
105
  */
99
106
  export declare const reveal: (block: Block) => void;
100
- /**
101
- * A block's move command (`nestBlock`, `unNestBlock`, `moveBlock`,
102
- * `moveBlocks`) that reveals what it moved (`revealing`), as the keys and
103
- * `edytor.moveBlocks` do. A remote peer's move, an undo or a redo
104
- * opens nothing: `open` is this view's state, and history restores it as
105
- * it was.
106
- */
107
- export declare const revealed: <A extends unknown[], R extends Block | Block[] | null | undefined>(command: (...args: A) => R) => (this: Block, ...args: A) => R;
108
- export declare const replaceSelectionWithCollapsedTarget: (edytor: Edytor, state?: SelectionReplacementState) => SelectionInsertionTarget | null;
107
+ export declare const replaceSelectionWithCollapsedTarget: (edytor: Edytor, range?: SelectionReplacementState) => SelectionInsertionTarget | null;
109
108
  /**
110
109
  * The first or last text `block` shows: its own line's (a block selection is
111
110
  * exactly its members, never their unselected children), else, for a block
@@ -114,7 +113,7 @@ export declare const replaceSelectionWithCollapsedTarget: (edytor: Edytor, state
114
113
  * document order); none for a void that shows nothing (a divider) or a
115
114
  * closed toggle's hidden body. A line created in the same change counts (it
116
115
  * is displayed once it mounts), as for `caretBeside`. Ranges over blocks
117
- * (`setAtBlockRange`, leaving a block selection), the block-selection keys
116
+ * (`selectLines`: Mod+A, a triple click), the block-selection keys
118
117
  * and Escape read it.
119
118
  */
120
119
  export declare const shownText: (block: Block, edge: "first" | "last", whole?: boolean) => Text | undefined;