edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -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;