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,14 +1,10 @@
1
1
  import { Text } from '../text/text.svelte.js';
2
- import { dispatchPlan } from '../block/block.utils.js';
3
- import { prepareDeleteContent } from '../edytor.utils.js';
2
+ import { InlineBlock } from '../block/inlineBlock.svelte.js';
4
3
  import { deleteSelectedBlocks, deleteSelectedRange } from '../selection/replaceSelection.js';
5
- import { shown } from '../selection/visibility.js';
6
- import { caretAt } from '../session/attempt.js';
7
- import { getNextWordEndOffset, getPreviousWordStartOffset } from '../text/wordBoundary.js';
8
- /** A forward delete at a live composition's region keeps the preview (the IME owns it). */
9
- const isForwardDeleteInsideActiveComposition = (edytor, snapshot) => snapshot.inputType === 'deleteContentForward' &&
10
- snapshot.isCollapsed &&
11
- Boolean(snapshot.startText && edytor.composition.covers(snapshot.startText, snapshot.yStart));
4
+ import { shown, viewOf } from '../selection/visibility.js';
5
+ import { blockSelection } from '../session/selection.js';
6
+ import { INTENTS, caretAt } from '../session/attempt.js';
7
+ import { getNextGraphemeEnd, getNextWordEndOffset, getPreviousGraphemeStart, getPreviousWordStartOffset } from '../text/wordBoundary.js';
12
8
  /**
13
9
  * Merge `from` into a collapsed toggle's header `into`, as the key's merge:
14
10
  * one plan that deletes the seam from the header's end to `from`'s start,
@@ -17,165 +13,134 @@ const isForwardDeleteInsideActiveComposition = (edytor, snapshot) => snapshot.in
17
13
  * refuses all of it. Nothing when the document refuses the merge (an island).
18
14
  */
19
15
  const mergeIntoHeader = (edytor, from, into, backward) => {
16
+ const { facade, dispatcher } = edytor;
20
17
  const [end, start] = [into.lastText, from.firstText];
21
- if (!end || !start || !('writes' in edytor.facade.prepare.mergeBlocks(from.id, into.id)))
18
+ if (!end || !start || !('writes' in facade.prepare.mergeBlocks(from.id, into.id)))
22
19
  return;
23
- const seam = { startText: end, yStart: end.length, endText: start, yEnd: 0 };
24
- const plan = () => prepareDeleteContent.call(edytor, { replace: true, selection: seam });
20
+ const seam = () => facade.prepare.replaceRange({ block: into.id, offset: end.segStart + end.length }, { block: from.id, offset: start.segStart }, viewOf(edytor));
25
21
  if (backward)
26
- dispatchPlan(from, 'mergeBlockBackward', {}, plan, [from.parent]);
22
+ dispatcher.plan('mergeBackward', [from.id], seam, from);
27
23
  else
28
- dispatchPlan(into, 'mergeBlockForward', {}, plan, [from.parent]);
24
+ dispatcher.plan('mergeForward', [into.id], seam, into);
29
25
  };
30
26
  /**
31
- * The line a forward merge into a collapsed toggle's header joins: `block`,
32
- * or for a container (a list) its first item's, descending as the
33
- * document's `mergeForward` does; the seam range then removes a container
34
- * left with no item.
27
+ * Delete at the caret's text edge, one character inside it: the inline
28
+ * atom beside the edge, else the character, the caret staying at its side.
35
29
  */
36
- const firstLine = (block) => {
37
- while (block.isContainer && block.children[0])
38
- block = block.children[0];
39
- return block;
30
+ export const deleteInText = (edytor, text, yStart, back, atEdge) => {
31
+ const { content } = text.parent;
32
+ if (!atEdge) {
33
+ // One character is one grapheme, at the caret as it is now (anchored: a
34
+ // peer's edit since the occurrence moved it).
35
+ const value = text.stringContent;
36
+ const at = edytor.selection.textRange().yStart;
37
+ const [start, end] = back
38
+ ? [getPreviousGraphemeStart(value, at), at]
39
+ : [at, getNextGraphemeEnd(value, at)];
40
+ if (end > start)
41
+ edytor.deleteText(text.parent.id, text.segStart + start, end - start);
42
+ return edytor.selection.selectText(text, back ? start : yStart);
43
+ }
44
+ const index = content.indexOf(text) + (back ? -1 : 1);
45
+ const before = back ? content.at(index - 1) : text;
46
+ // Read before the removal joins the texts beside the atom.
47
+ const offset = back && before instanceof Text ? before.length : yStart;
48
+ const atom = content.at(index);
49
+ if (atom instanceof InlineBlock)
50
+ edytor.removeInline(text.parent.id, atom.id);
51
+ if (before instanceof Text)
52
+ edytor.selection.selectText(before, offset);
40
53
  };
41
54
  const deleteContentForward = (edytor, snapshot) => {
42
55
  const { startText, yStart } = snapshot;
43
- if (!startText) {
44
- return;
45
- }
46
- if (isForwardDeleteInsideActiveComposition(edytor, snapshot)) {
47
- edytor.selection.setAtTextOffset(startText, yStart);
48
- return;
49
- }
50
- if (snapshot.isAtEndOfBlock) {
51
- const currentBlock = startText.parent;
52
- if (currentBlock.definition.void) {
53
- edytor.selection.setAtTextOffset(startText, yStart);
54
- return;
55
- }
56
- const nextBlock = shown(currentBlock, 'blockAfter');
57
- if (nextBlock?.definition.void) {
58
- edytor.selection.selectBlocks(nextBlock);
59
- return;
60
- }
61
- if (nextBlock === currentBlock.closestNextBlock)
62
- currentBlock.mergeBlockForward();
63
- else if (nextBlock)
64
- mergeIntoHeader(edytor, firstLine(nextBlock), currentBlock, false);
65
- caretAt(edytor, startText, yStart);
66
- return;
67
- }
68
- if (snapshot.isAtEndOfText) {
69
- const index = startText.parent.content.indexOf(startText) + 1;
70
- startText.parent.removeInlineBlock({ index });
71
- edytor.selection.setAtTextOffset(startText, yStart);
56
+ if (!startText)
72
57
  return;
58
+ const current = startText.parent;
59
+ // At a live composition's region the preview stays (the IME owns it).
60
+ const keep = edytor.composition.covers(startText, yStart) ||
61
+ (snapshot.projection.isAtEndOfBlock && current.definition.void);
62
+ if (keep || !snapshot.projection.isAtEndOfBlock)
63
+ return keep
64
+ ? edytor.selection.selectText(startText, yStart)
65
+ : deleteInText(edytor, startText, yStart, false, snapshot.projection.isAtEndOfText);
66
+ const next = shown(current, 'blockAfter');
67
+ if (next?.definition.void)
68
+ return edytor.selection.select(blockSelection([next.id]));
69
+ if (next === current.closestNextBlock)
70
+ edytor.mergeForward(current.id);
71
+ else if (next) {
72
+ // A forward merge into a collapsed toggle's header joins its first line:
73
+ // a container's (a list's) first item, as the document's `mergeForward`.
74
+ let line = next;
75
+ while (line.isContainer && line.children[0])
76
+ line = line.children[0];
77
+ mergeIntoHeader(edytor, line, current, false);
73
78
  }
74
- startText.deleteText({ direction: 'FORWARD', length: 1 });
75
- edytor.selection.setAtTextOffset(startText, yStart);
76
- };
77
- /**
78
- * Backspace at the start of a catalogue kind other than its parent's default
79
- * (a bullet, a to-do, a heading) turns it into that default first, keeping
80
- * its content and children (`del.start.kind`, Notion); the next Backspace
81
- * merges or unnests. Structural kinds outside the catalogue (a `list-item`,
82
- * a `codeLine`) keep the structural path.
83
- */
84
- const resetKindAtStart = (edytor, snapshot) => {
85
- const block = snapshot.startText?.parent;
86
- if (!snapshot.isAtStartOfBlock || !block?.convertible || !block.parent)
87
- return false;
88
- const type = edytor.defaultChild(block.parent);
89
- if (block.type === type || !edytor.kinds.some((row) => row.value.type === block.type)) {
90
- return false;
91
- }
92
- block.setBlock({ value: { type, data: {} } });
93
- caretAt(edytor, block.firstText, 0);
94
- return true;
79
+ caretAt(edytor, startText, yStart);
95
80
  };
96
81
  const deleteContentBackward = (edytor, snapshot) => {
97
82
  const { startText, yStart } = snapshot;
98
- if (resetKindAtStart(edytor, snapshot))
99
- return;
100
- // A table's cell keeps its caret at its start: nothing merges into or out of
101
- // a cell, and it never outdents (`table.merge`).
102
- const cell = startText?.parent;
103
- if (snapshot.isAtStartOfBlock && cell && edytor.facade.isTableCell(cell.id)) {
104
- edytor.selection.setAtTextOffset(startText, 0);
83
+ const block = startText?.parent;
84
+ if (!block)
105
85
  return;
86
+ if (!snapshot.projection.isAtStartOfBlock)
87
+ return deleteInText(edytor, startText, yStart, true, snapshot.projection.isAtStartOfText);
88
+ const { facade, root } = edytor;
89
+ const parent = block.parent;
90
+ // At the start of a catalogue kind other than its parent's default (a
91
+ // bullet, a to-do, a heading), it turns into that default first, keeping
92
+ // its content and children (`del.start.kind`, Notion); structural kinds
93
+ // outside the catalogue (a `list-item`, a `codeLine`) keep the structural path.
94
+ const type = parent && edytor.defaultChild(parent);
95
+ if (block.convertible &&
96
+ type &&
97
+ block.type !== type &&
98
+ edytor.kinds.some((row) => row.value.type === block.type)) {
99
+ edytor.setBlock(block.id, { type, data: {} });
100
+ return caretAt(edytor, block.firstText, 0);
106
101
  }
107
- if (snapshot.isAtStartOfBlock && snapshot.isFirstChildOfDocument && startText?.parent.isEmpty) {
108
- edytor.selection.setAtTextOffset(startText, 0);
102
+ const at = facade.positionOf(block.id);
103
+ // A table's cell keeps its caret at its start: nothing merges into or out
104
+ // of a cell, and it never outdents (`table.merge`); nor does the
105
+ // document's first block, empty.
106
+ if (facade.isTableCell(block.id) || (block.isEmpty && at?.parent === null && at.index === 0))
107
+ return edytor.selection.selectText(startText, 0);
108
+ const island = edytor.idToBlock.get(edytor.selection.projection.islandRoot ?? '');
109
+ // A column's block never outdents (nothing but a column sits in a layout):
110
+ // it merges, across columns in reading order (`layout.merge`).
111
+ const inColumn = !!parent && !parent.isRoot && facade.isLayoutItem(parent.id);
112
+ const last = !!at && at.index === facade.childrenIds(at.parent).length - 1;
113
+ if (parent !== root && last && !island && !inColumn) {
114
+ if (edytor.unNestBlock(block.id).status === 'applied')
115
+ edytor.selection.selectText(block.firstText, 0);
109
116
  return;
110
117
  }
111
- if (!startText) {
118
+ if (island && island.children.length === 1)
119
+ return edytor.selection.select(blockSelection([island.id]));
120
+ if (island && block.index === 0)
112
121
  return;
113
- }
114
- if (snapshot.isAtStartOfBlock) {
115
- const { facade } = edytor;
116
- const column = startText.parent.parent;
117
- // A column's block never outdents (nothing but a column sits in a layout):
118
- // it merges, across columns in reading order (`layout.merge`).
119
- const inColumn = !!column && !column.isRoot && facade.isLayoutItem(column.id);
120
- if (snapshot.isNested && snapshot.isLastChild && !snapshot.islandRoot && !inColumn) {
121
- const newBlock = startText.parent.unNestBlock();
122
- if (newBlock) {
123
- edytor.selection.setAtTextOffset(newBlock.firstText, 0);
124
- }
125
- return;
126
- }
127
- if (snapshot.islandRoot && snapshot.islandRoot.children.length === 1) {
128
- edytor.selection.selectBlocks(snapshot.islandRoot);
129
- return;
130
- }
131
- if (snapshot.islandRoot &&
132
- snapshot.islandRoot.children.length > 1 &&
133
- startText.parent.index === 0) {
134
- return;
135
- }
136
- const block = startText.parent;
137
- // A column's first block joins the line before its column (and, in the first,
138
- // before its layout), as the document's merge does (`layout.merge`).
139
- const structure = (at) => inColumn &&
140
- block.index === 0 &&
141
- !!at &&
142
- (facade.isLayout(at.id) || facade.isLayoutItem(at.id));
143
- let previousBlock = shown(block, 'blockBefore');
144
- let closest = block.closestPreviousBlock;
145
- while (structure(previousBlock))
146
- previousBlock = shown(previousBlock, 'blockBefore');
147
- while (structure(closest))
148
- closest = closest.closestPreviousBlock;
149
- if (previousBlock?.definition.void) {
150
- edytor.selection.selectBlocks(previousBlock);
151
- return;
152
- }
153
- const previousText = previousBlock?.lastText;
154
- const offset = previousText?.length;
155
- if (previousBlock === closest)
156
- block.mergeBlockBackward();
157
- else if (previousBlock)
158
- mergeIntoHeader(edytor, block, previousBlock, true);
159
- if (typeof offset === 'number')
160
- caretAt(edytor, previousText, offset);
161
- // A list's first item lifts out of it: the caret stays at its start.
162
- else if (previousBlock === block.parent)
163
- caretAt(edytor, block.firstText, 0);
164
- return;
165
- }
166
- if (snapshot.isAtStartOfText) {
167
- const index = startText.parent.content.indexOf(startText) - 1;
168
- const previousText = startText.parent.content.at(index - 1);
169
- const hasPreviousText = previousText && previousText instanceof Text;
170
- const offset = hasPreviousText ? previousText.length : 0;
171
- startText.parent.removeInlineBlock({ index });
172
- if (hasPreviousText) {
173
- edytor.selection.setAtTextOffset(previousText, offset);
174
- }
175
- return;
176
- }
177
- const deletion = startText.deleteText({ direction: 'BACKWARD', length: 1 });
178
- edytor.selection.setAtTextOffset(startText, deletion?.start ?? yStart - 1);
122
+ // A column's first block joins the line before its column (and, in the first,
123
+ // before its layout), as the document's merge does (`layout.merge`).
124
+ const structure = (b) => inColumn && block.index === 0 && !!b && (facade.isLayout(b.id) || facade.isLayoutItem(b.id));
125
+ let previous = shown(block, 'blockBefore');
126
+ let closest = block.closestPreviousBlock;
127
+ while (structure(previous))
128
+ previous = shown(previous, 'blockBefore');
129
+ while (structure(closest))
130
+ closest = closest.closestPreviousBlock;
131
+ if (previous?.definition.void)
132
+ return edytor.selection.select(blockSelection([previous.id]));
133
+ const previousText = previous?.lastText;
134
+ const offset = previousText?.length;
135
+ if (previous === closest)
136
+ edytor.mergeBackward(block.id);
137
+ else if (previous)
138
+ mergeIntoHeader(edytor, block, previous, true);
139
+ if (offset !== undefined)
140
+ caretAt(edytor, previousText, offset);
141
+ // A list's first item lifts out of it: the caret stays at its start.
142
+ else if (previous === parent)
143
+ caretAt(edytor, block.firstText, 0);
179
144
  };
180
145
  /**
181
146
  * The caret's line edge in one direction (`del.unit.soft-line`): a soft line
@@ -200,69 +165,53 @@ const lineEdge = (text, at, backward, soft) => {
200
165
  }
201
166
  };
202
167
  /**
203
- * A collapsed unit delete (`del.unit.*`): the model owns the extent — a word
204
- * run from the caret's own text, the caret's line to either side, or the
205
- * whole block — deleted as one range; the caret lands at its start.
168
+ * The model command of a delete intent. A block selection: every delete key
169
+ * (a word or line chord too) deletes the blocks as Backspace does —
170
+ * `onDeleteSelectedBlocks` first, children promoted (a drag or composition
171
+ * fragment is not a key). A range: the document's range deletion (a forward
172
+ * one needs its text). A collapsed caret: the intent's unit (`del.unit.*`),
173
+ * whose extent the model owns — a character; a word run from the caret's own
174
+ * text, the caret's line to either side, or the whole block, deleted as one
175
+ * range, the caret at its start; a cut, drag or composition fragment deletes
176
+ * nothing. A unit with nothing of the caret's own text in its direction
177
+ * (next to an inline atom, at the block's edge) is the neighbour, deleted
178
+ * like a character (atom, merge, unnest).
206
179
  */
207
- const deleteCollapsedUnit = (edytor, snapshot) => {
208
- const { startText: text, yStart, inputType } = snapshot;
209
- if (!text)
210
- return;
211
- const [first, last] = [text.parent.firstText, text.parent.lastText];
212
- const soft = inputType.startsWith('deleteSoftLine');
213
- const [from, to] = inputType === 'deleteWordBackward'
214
- ? [
215
- [text, getPreviousWordStartOffset(text.stringContent, yStart)],
216
- [text, yStart]
217
- ]
218
- : inputType === 'deleteWordForward'
219
- ? [
220
- [text, yStart],
221
- [text, getNextWordEndOffset(text.stringContent, yStart)]
222
- ]
223
- : inputType === 'deleteEntireSoftLine'
224
- ? [
225
- [first, 0],
226
- [last, last.length]
227
- ]
228
- : inputType.endsWith('Backward')
229
- ? [lineEdge(text, yStart, true, soft), [text, yStart]]
230
- : [[text, yStart], lineEdge(text, yStart, false, soft)];
231
- // Nothing of the caret's own text lies in the delete direction (the caret
232
- // is at the text's edge: next to an inline atom, or at the block's edge):
233
- // the unit is the neighbour, deleted like a character (atom, merge, unnest).
234
- if (from[0] === to[0] && from[1] === to[1] && inputType !== 'deleteEntireSoftLine') {
235
- return inputType.endsWith('Backward')
236
- ? deleteContentBackward(edytor, snapshot)
237
- : deleteContentForward(edytor, snapshot);
238
- }
239
- text.parent.deleteContentAtRange({ start: [from[0].index, from[1]], end: [to[0].index, to[1]] });
240
- edytor.selection.setAtTextOffset(...from);
241
- };
242
180
  export const runBeforeInputDeleteCommand = (edytor, snapshot) => {
243
181
  // The Android post-delete snap-back's evidence (a named projector rule):
244
182
  // only an actual delete arms it, never a navigational jump.
245
183
  edytor.projector.deleted(snapshot);
246
- const { inputType } = snapshot;
247
- const forward = /Forward$|^deleteContent$|^deleteEntireSoftLine$/.test(inputType);
248
- // A block selection: every delete key (a word or line chord too) deletes
249
- // the blocks as Backspace does — `onDeleteSelectedBlocks` first, children
250
- // promoted (a drag or composition fragment is not a key).
251
- if (edytor.selection.selectedBlocks.size && !/^delete(ByDrag|ByComposition)$/.test(inputType)) {
252
- deleteSelectedBlocks(edytor);
253
- return;
254
- }
255
- // A selection: the document's range deletion (a forward one needs its text).
184
+ const { inputType, startText: text, yStart } = snapshot;
185
+ const { dir, unit } = INTENTS[inputType] ?? {};
186
+ const back = !unit || dir === 'back';
187
+ if (edytor.selection.selectedBlocks.size && !/^delete(ByDrag|ByComposition)$/.test(inputType))
188
+ return deleteSelectedBlocks(edytor);
256
189
  if (!snapshot.isCollapsed) {
257
- if (!forward || snapshot.startText)
190
+ if (back || text)
258
191
  deleteSelectedRange(edytor, { selection: snapshot });
259
192
  return;
260
193
  }
261
- if (inputType === 'deleteContentBackward')
262
- return deleteContentBackward(edytor, snapshot);
263
- if (inputType === 'deleteContentForward' || inputType === 'deleteContent')
264
- return deleteContentForward(edytor, snapshot);
265
- // A collapsed cut, drag or composition fragment deletes nothing.
266
- if (!/^delete(ByCut|ByDrag|ByComposition)$/.test(inputType))
267
- return deleteCollapsedUnit(edytor, snapshot);
194
+ if (!unit || !text)
195
+ return;
196
+ const byChar = () => back ? deleteContentBackward(edytor, snapshot) : deleteContentForward(edytor, snapshot);
197
+ if (unit === 'char')
198
+ return byChar();
199
+ const [first, last] = [text.parent.firstText, text.parent.lastText];
200
+ const word = back
201
+ ? getPreviousWordStartOffset(text.stringContent, yStart)
202
+ : getNextWordEndOffset(text.stringContent, yStart);
203
+ const edge = unit === 'word' ? [text, word] : lineEdge(text, yStart, back, unit === 'soft');
204
+ const [from, to] = unit === 'line'
205
+ ? [
206
+ [first, 0],
207
+ [last, last.length]
208
+ ]
209
+ : back
210
+ ? [edge, [text, yStart]]
211
+ : [[text, yStart], edge];
212
+ if (unit !== 'line' && from[0] === to[0] && from[1] === to[1])
213
+ return byChar();
214
+ const at = from[0].segStart + from[1];
215
+ edytor.deleteText(text.parent.id, at, to[0].segStart + to[1] - at);
216
+ edytor.selection.selectText(...from);
268
217
  };
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Character offset of the DOM point `(node, offset)` inside `textNode`,
3
- * counting text content in document order — the one DOM→model point
4
- * mapper (`getYIndex` adds the editor's marker, boundary and filler rules
5
- * on top; `domPointOf` is its inverse). Two point shapes exist: a
6
- * text-node anchor carries a character offset; an element anchor
7
- * (Firefox's node-bound caret shape) carries a CHILD INDEX, so the text
8
- * content of the children before that index is counted instead. Points
9
- * outside `textNode` clamp to the nearest edge by document position —
10
- * an ancestor anchor resolves through the child-index boundary.
2
+ * Character offset of the DOM point `(node, offset)` inside `textNode`: the
3
+ * text of the text nodes before it, in document order (Svelte's anchors
4
+ * are comments and carry none) — the one DOM→model point mapper
5
+ * (`getYIndex` adds the editor's marker, boundary and filler rules on top;
6
+ * `domPointOf` is its inverse). A text-node point carries a character
7
+ * offset, an element point (Firefox's node-bound caret) a child index;
8
+ * either past its node's end clamps to it. A point outside `textNode` clamps
9
+ * to the nearest edge by document position (an ancestor's point resolves
10
+ * through its child index); a disconnected one keeps its offset.
11
11
  */
12
12
  export declare const getTextContentOffsetAtPoint: (textNode: Node, node: Node, offset: number) => number;
@@ -1,52 +1,24 @@
1
- const getChildTextLengthBeforeOffset = (element, offset) => {
2
- let length = 0;
3
- const end = Math.min(offset, element.childNodes.length);
4
- for (let index = 0; index < end; index++) {
5
- // Svelte's hydration comments carry data, never text.
6
- const child = element.childNodes[index];
7
- if (child.nodeType !== Node.COMMENT_NODE)
8
- length += child.textContent?.length ?? 0;
9
- }
10
- return length;
11
- };
12
1
  /**
13
- * Character offset of the DOM point `(node, offset)` inside `textNode`,
14
- * counting text content in document order — the one DOM→model point
15
- * mapper (`getYIndex` adds the editor's marker, boundary and filler rules
16
- * on top; `domPointOf` is its inverse). Two point shapes exist: a
17
- * text-node anchor carries a character offset; an element anchor
18
- * (Firefox's node-bound caret shape) carries a CHILD INDEX, so the text
19
- * content of the children before that index is counted instead. Points
20
- * outside `textNode` clamp to the nearest edge by document position —
21
- * an ancestor anchor resolves through the child-index boundary.
2
+ * Character offset of the DOM point `(node, offset)` inside `textNode`: the
3
+ * text of the text nodes before it, in document order (Svelte's anchors
4
+ * are comments and carry none) — the one DOM→model point mapper
5
+ * (`getYIndex` adds the editor's marker, boundary and filler rules on top;
6
+ * `domPointOf` is its inverse). A text-node point carries a character
7
+ * offset, an element point (Firefox's node-bound caret) a child index;
8
+ * either past its node's end clamps to it. A point outside `textNode` clamps
9
+ * to the nearest edge by document position (an ancestor's point resolves
10
+ * through its child index); a disconnected one keeps its offset.
22
11
  */
23
12
  export const getTextContentOffsetAtPoint = (textNode, node, offset) => {
24
- if (textNode !== node && !textNode.contains(node)) {
25
- const position = textNode.compareDocumentPosition(node);
26
- if (position & Node.DOCUMENT_POSITION_DISCONNECTED) {
27
- return offset;
28
- }
29
- if (position & Node.DOCUMENT_POSITION_CONTAINS) {
30
- // `node` is an ancestor of `textNode` — `offset` indexes its
31
- // children, so the whole text sits on one side of the boundary.
32
- let child = textNode;
33
- while (child.parentNode && child.parentNode !== node) {
34
- child = child.parentNode;
35
- }
36
- const index = child.parentNode === node ? Array.prototype.indexOf.call(node.childNodes, child) : -1;
37
- return index !== -1 && index < offset ? (textNode.textContent?.length ?? 0) : 0;
38
- }
39
- return position & Node.DOCUMENT_POSITION_FOLLOWING ? (textNode.textContent?.length ?? 0) : 0;
40
- }
41
- const pointOffset = node.nodeType === Node.TEXT_NODE
42
- ? Math.min(offset, node.textContent?.length ?? 0)
43
- : getChildTextLengthBeforeOffset(node, offset);
44
- let total = pointOffset;
45
- const treeWalker = (textNode.ownerDocument ?? document).createTreeWalker(textNode, NodeFilter.SHOW_TEXT, (child) => child.compareDocumentPosition(node) === Node.DOCUMENT_POSITION_FOLLOWING
46
- ? NodeFilter.FILTER_ACCEPT
47
- : NodeFilter.FILTER_SKIP);
48
- while (treeWalker.nextNode()) {
49
- total += treeWalker.currentNode.textContent?.length ?? 0;
50
- }
51
- return total;
13
+ if (textNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_DISCONNECTED)
14
+ return offset;
15
+ const range = (textNode.ownerDocument ?? document).createRange();
16
+ range.selectNodeContents(textNode);
17
+ const at = Math.min(offset, node.nodeType === Node.TEXT_NODE ? node.length : node.childNodes.length);
18
+ const side = range.comparePoint(node, at);
19
+ if (side < 0)
20
+ return 0;
21
+ if (side === 0)
22
+ range.setEnd(node, at);
23
+ return range.toString().length;
52
24
  };
@@ -1,3 +1 @@
1
- import type { Text } from '../text/text.svelte.js';
2
1
  export declare const isAndroidChromeBrowser: () => boolean;
3
- export declare const getTextPath: (text: Text) => number[];
@@ -7,7 +7,3 @@ export const isAndroidChromeBrowser = () => {
7
7
  /\bChrome\//i.test(userAgent) &&
8
8
  !/(Edg|OPR|SamsungBrowser)/i.test(userAgent));
9
9
  };
10
- export const getTextPath = (text) => {
11
- const index = text.parent.content.findIndex((part) => part === text);
12
- return [...text.parent.path, index === -1 ? text.index : index];
13
- };
@@ -1,22 +1,15 @@
1
1
  export declare const isNativeInteractiveControl: (target: EventTarget | null) => boolean;
2
- export declare const isNativeFormControl: (target: EventTarget | null) => boolean;
3
2
  export declare const isNativeInteractiveEvent: (event: Event) => boolean;
4
3
  export declare const isNativeTextControl: (target: EventTarget | null) => boolean;
5
4
  export declare const isNativeTextControlEvent: (event: Event) => boolean;
6
- /**
7
- * The event target sits inside a nested `contenteditable` island that is
8
- * neither the editor root nor a managed text element (text elements
9
- * carry their own `contentEditable="true"`). Such islands — a plugin
10
- * chrome editor, an embedded code field — own their input/composition
11
- * lifecycle; the outer editor must not snapshot them against the model
12
- * selection or commit their composition text.
13
- */
14
- export declare const isNestedForeignEditableTarget: (editorRoot: Element | null | undefined, target: EventTarget | null) => boolean;
15
5
  /**
16
6
  * A kind's own control: a form control (`input` of any type, `textarea`,
17
- * `select`, `button`) or a nested editable island inside the host, never the
18
- * root nor the editor's own text elements. It owns its focus, selection and
19
- * events; the projector never writes the editor's caret over it.
7
+ * `select`, `button`) or a nested editable island inside the host (a plugin
8
+ * chrome editor, an embedded code field: it owns its input and composition
9
+ * lifecycle), never the root nor the editor's own text elements (they carry
10
+ * their own `contentEditable="true"`). It owns its focus, selection and
11
+ * events; the projector never writes the editor's caret over it, and the
12
+ * editor never snapshots it nor commits its composition text.
20
13
  */
21
14
  export declare const isKindControl: (editorRoot: Element | null | undefined, target: EventTarget | null) => boolean;
22
15
  /**
@@ -29,3 +22,10 @@ export declare const isKindControl: (editorRoot: Element | null | undefined, tar
29
22
  * `onDrop` all ask this.
30
23
  */
31
24
  export declare const ownsEvent: (editorRoot: Element | null | undefined, event: Event) => boolean;
25
+ /**
26
+ * An event of a native control anywhere (a link, the chrome's buttons beside
27
+ * the host) or of a kind's own: never the view's own composition or input.
28
+ */
29
+ export declare const isControlEvent: (editorRoot: Element | null | undefined, event: Event) => boolean;
30
+ /** A DOM point of the view's own: inside the host and in no kind's own control. */
31
+ export declare const isOwnPoint: (editorRoot: Element | null | undefined, node: Node | null | undefined) => boolean;