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
@@ -18,10 +18,9 @@ import { mount, unmount } from 'svelte';
18
18
  * `content-visibility: auto` skips it off screen, or it is not
19
19
  * displayed. Its geometry is not computed — reading it would force a layout
20
20
  * of that subtree, every frame a measure asks — so measures read its nearest
21
- * rendered ancestor instead (`checkVisibility`; where it is missing, every
22
- * node counts as rendered).
21
+ * rendered ancestor instead (`checkVisibility`).
23
22
  */
24
- export const renderSkipped = (node) => node.checkVisibility?.({ contentVisibilityAuto: true }) === false;
23
+ export const renderSkipped = (node) => !node.checkVisibility({ contentVisibilityAuto: true });
25
24
  /** `node`, or its nearest ancestor whose rendering the browser does not skip. */
26
25
  export const rendered = (node) => {
27
26
  let at = node;
@@ -29,8 +28,73 @@ export const rendered = (node) => {
29
28
  at = at.parentElement;
30
29
  return at;
31
30
  };
32
- /** The band around the viewport whose blocks' resizes are watched, in screens above and below. */
33
- const WATCHED_SCREENS = 1;
31
+ /**
32
+ * The run of `count` items in vertical order (a parent's children, the
33
+ * top-level blocks) whose boxes (`boxAt`, client px) meet the band from
34
+ * `top` to `bottom`, edges included unless `strict`: two binary searches,
35
+ * O(log n) boxes read, an item without a box counted as above the band.
36
+ * Answers its first index and the index after its last.
37
+ */
38
+ export const bandRun = (count, boxAt, top, bottom, strict = false) => {
39
+ const search = (past, lo = 0) => {
40
+ let hi = count;
41
+ while (lo < hi) {
42
+ const mid = (lo + hi) >> 1;
43
+ const box = boxAt(mid);
44
+ if (!box || past(box))
45
+ lo = mid + 1;
46
+ else
47
+ hi = mid;
48
+ }
49
+ return lo;
50
+ };
51
+ const first = search((box) => (strict ? box.bottom <= top : box.bottom < top));
52
+ return [first, search((box) => (strict ? box.top < bottom : box.top <= bottom), first)];
53
+ };
54
+ /** `element`'s box relative to the layer (`origin`), `null` when it is not in the page. */
55
+ export const layerBox = (element, origin) => {
56
+ const rect = element?.isConnected ? element.getBoundingClientRect() : null;
57
+ return (rect && {
58
+ x: rect.left - origin.left,
59
+ y: rect.top - origin.top,
60
+ width: rect.width,
61
+ height: rect.height
62
+ });
63
+ };
64
+ /** Whether two measures hold the same values (`a`'s): a state is written only when one moved. */
65
+ export const sameValues = (a, b) => a === b ||
66
+ (a !== null &&
67
+ b !== null &&
68
+ Object.keys(a).every((key) => a[key] === b[key]));
69
+ /** A mounted host whose chrome places itself layer-relative: pinned at the layer's origin. */
70
+ export const pin = (host) => Object.assign(host.style, { position: 'absolute', left: '0px', top: '0px' });
71
+ /**
72
+ * A popup's place near `rect` (client px), 8px inside the viewport: `gap`
73
+ * below it, above it when there is no room below (`above`: above first,
74
+ * below when there is no room above), its left edge at `rect`'s or
75
+ * centered on it (`center`). Measured now from `box` (the host's first
76
+ * element by default; `fallback` before it has a size), written by the
77
+ * answer (the overlay's read-then-write pass).
78
+ */
79
+ export const placeNear = (host, rect, fallback, { gap = 8, above = false, center = false, box = host.firstElementChild } = {}) => {
80
+ const view = host.ownerDocument.defaultView;
81
+ if (!view)
82
+ return;
83
+ const size = box?.getBoundingClientRect();
84
+ const width = size?.width || fallback[0];
85
+ const height = size?.height || fallback[1];
86
+ const x = center ? rect.left + rect.width / 2 - width / 2 : rect.left;
87
+ const [below, up] = [rect.bottom + gap, rect.top - gap - height];
88
+ const y = above
89
+ ? up >= 8
90
+ ? up
91
+ : below
92
+ : Math.max(8, below + height < view.innerHeight ? below : up);
93
+ const left = `${Math.max(8, Math.min(x, view.innerWidth - width - 8))}px`;
94
+ return () => Object.assign(host.style, { left, top: `${y}px` });
95
+ };
96
+ /** The band around the viewport (`near`) whose blocks' resizes are watched, in screens above and below. */
97
+ const NEAR_SCREENS = 1;
34
98
  export class Overlay {
35
99
  /** The layer: absolutely positioned at its static place right after the host. */
36
100
  layer = null;
@@ -48,7 +112,7 @@ export class Overlay {
48
112
  * font or a stylesheet that loads, a kind's markup drawn later (KaTeX, an
49
113
  * image), a host whose height its page fixes — moves the blocks under the
50
114
  * chrome. Watched while it is a top-level block near the viewport
51
- * (`#watch`): a nested block's resize resizes its top-level block, and a
115
+ * (`near`): a nested block's resize resizes its top-level block, and a
52
116
  * block farther away moves no chrome in view (one above it scrolls the
53
117
  * page, by scroll anchoring, or resizes the host). Answers the release.
54
118
  */
@@ -62,8 +126,15 @@ export class Overlay {
62
126
  };
63
127
  };
64
128
  /**
65
- * Watch the observed top-level blocks within `WATCHED_SCREENS` of the
66
- * viewport: a binary search over the host's children (vertical order),
129
+ * The host's children within `NEAR_SCREENS` of the viewport, above or
130
+ * below, as this frame measured them (before any measure runs): the
131
+ * chrome that lives only near the viewport reads it (the block handles).
132
+ * @internal
133
+ */
134
+ near = [];
135
+ /**
136
+ * Measure the near band (`near`) and watch the observed top-level blocks
137
+ * in it: a binary search over the host's children (vertical order),
67
138
  * O(log n) boxes a frame where watching every block made each frame's
68
139
  * resize check cost the whole page.
69
140
  */
@@ -71,27 +142,15 @@ export class Overlay {
71
142
  const host = this.#host;
72
143
  const resize = this.#resize;
73
144
  const view = host?.ownerDocument.defaultView;
74
- if (!host || !resize || !view)
145
+ if (!host || !view)
75
146
  return;
76
147
  const kids = host.children;
77
148
  const screen = view.innerHeight;
78
- const search = (past) => {
79
- let [lo, hi] = [0, kids.length];
80
- while (lo < hi) {
81
- const mid = (lo + hi) >> 1;
82
- if (past(kids[mid].getBoundingClientRect()))
83
- lo = mid + 1;
84
- else
85
- hi = mid;
86
- }
87
- return lo;
88
- };
89
- const first = search((rect) => rect.bottom < -WATCHED_SCREENS * screen);
90
- const last = search((rect) => rect.top <= (1 + WATCHED_SCREENS) * screen);
91
- const next = new Set();
92
- for (let i = first; i < last; i++)
93
- if (this.#observed.has(kids[i]))
94
- next.add(kids[i]);
149
+ const [first, last] = bandRun(kids.length, (index) => kids[index].getBoundingClientRect(), -NEAR_SCREENS * screen, (1 + NEAR_SCREENS) * screen);
150
+ this.near = Array.from({ length: last - first }, (_, index) => kids[first + index]);
151
+ if (!resize)
152
+ return;
153
+ const next = new Set(this.near.filter((node) => this.#observed.has(node)));
95
154
  for (const node of this.#watched)
96
155
  if (!next.has(node)) {
97
156
  this.#watched.delete(node);
@@ -114,12 +173,7 @@ export class Overlay {
114
173
  const view = this.layer?.ownerDocument.defaultView;
115
174
  if (this.#frame !== null || !view)
116
175
  return;
117
- if (view.requestAnimationFrame)
118
- this.#frame = view.requestAnimationFrame(this.#run);
119
- else {
120
- this.#frame = 0;
121
- queueMicrotask(this.#run);
122
- }
176
+ this.#frame = view.requestAnimationFrame(this.#run);
123
177
  };
124
178
  #run = () => {
125
179
  this.#frame = null;
@@ -162,24 +216,25 @@ export class Overlay {
162
216
  layer.style.cssText = 'position: absolute; width: 0; height: 0';
163
217
  host.after(layer);
164
218
  this.layer = layer;
165
- const resize = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(this.invalidate);
219
+ const resize = new ResizeObserver(this.invalidate);
166
220
  this.#resize = resize;
167
221
  this.#host = host;
168
- resize?.observe(host);
222
+ resize.observe(host);
169
223
  document.addEventListener('scroll', this.invalidate, { capture: true, passive: true });
170
224
  view?.addEventListener('resize', this.invalidate);
171
225
  this.invalidate();
172
226
  return () => {
173
- resize?.disconnect();
227
+ resize.disconnect();
174
228
  this.#watched.clear();
229
+ this.near = [];
175
230
  if (this.#resize === resize)
176
231
  this.#resize = null;
177
232
  if (this.#host === host)
178
233
  this.#host = null;
179
234
  document.removeEventListener('scroll', this.invalidate, { capture: true });
180
235
  view?.removeEventListener('resize', this.invalidate);
181
- if (this.#frame)
182
- view?.cancelAnimationFrame?.(this.#frame);
236
+ if (this.#frame !== null)
237
+ view?.cancelAnimationFrame(this.#frame);
183
238
  this.#frame = null;
184
239
  layer.remove();
185
240
  if (this.layer === layer)
@@ -43,6 +43,11 @@ export declare class Pin {
43
43
  deltas: RenderDelta[];
44
44
  empty: boolean;
45
45
  } | null;
46
+ /** The render of `segment` of `cell`: pinned while it hosts the IME, else its kind's (`segmentDeltas`). */
47
+ shown: (cell: Cell, segment: Segment, transform: TextTransform | undefined) => {
48
+ deltas: RenderDelta[];
49
+ empty: boolean;
50
+ };
46
51
  /** What follows the pinned segment `key` of `block` in its own element (`merge`, `beside`). */
47
52
  rest: (block: BlockId, key: string) => RenderDelta[];
48
53
  /**
@@ -78,6 +78,11 @@ export class Pin {
78
78
  const items = [...head, preview, ...tail, ...merged];
79
79
  return { deltas: renderDeltas(items), empty: !textOf(items) };
80
80
  };
81
+ /** The render of `segment` of `cell`: pinned while it hosts the IME, else its kind's (`segmentDeltas`). */
82
+ shown = (cell, segment, transform) => this.render(cell.id, segment.key) ?? {
83
+ deltas: segmentDeltas(cell, segment, transform),
84
+ empty: segment.text === ''
85
+ };
81
86
  /** What follows the pinned segment `key` of `block` in its own element (`merge`, `beside`). */
82
87
  rest = (block, key) => {
83
88
  const held = this.#held;
@@ -11,8 +11,6 @@ export declare const domPointOf: (element: HTMLElement, offset: number) => Point
11
11
  export declare class Projector {
12
12
  #private;
13
13
  private edytor;
14
- /** The observer holds DOM records it has not reconciled yet (set at attach). */
15
- recordsPending: () => boolean;
16
14
  constructor(edytor: Edytor);
17
15
  /** Root `$effect.pre`: note the focused element before the flush writes the DOM. */
18
16
  pre: () => void;
@@ -25,16 +23,16 @@ export declare class Projector {
25
23
  */
26
24
  mounted: (text: Text) => void;
27
25
  /**
28
- * The user-input window closed (`withUserInput`): a pass it held back (a
26
+ * The user-input window closed (`#withUserInput`): a pass it held back (a
29
27
  * render under the handler that asked for no display, such as a mark
30
28
  * removal re-rendering the text under a range) runs now. The flag is no
31
29
  * reactive source, so no later flush is owed: without this, the range the
32
30
  * render moved (Firefox keeps it where the removed element stood) would be
33
- * adopted as the gesture's when its `selectionchange` lands.
31
+ * adopted as the gesture's when its `selectionchange` lands. The observer
32
+ * calls it too once it processed DOM records: a display that waits gets a
33
+ * pass.
34
34
  */
35
35
  inputHandled: () => void;
36
- /** The observer processed DOM records: a display that waits gets a pass. */
37
- recordsChanged: () => void;
38
36
  /**
39
37
  * Classify a `selectionchange` by comparing the DOM selection with the
40
38
  * last display, the render epoch and the gesture serial:
@@ -39,9 +39,9 @@
39
39
  import { untrack } from 'svelte';
40
40
  import { clearDomSelection, createDomRange, getActiveElement, getDomSelection, getDomSelectionSnapshot, scrollCaretIntoView } from '../selection/domSelection.js';
41
41
  import { getMarkEdgeSide, getYIndex, isTextBoundSelectionPoint } from '../selection/selection.utils.js';
42
- import { project } from '../session/selection.js';
42
+ import { project, sameEnds } from '../session/selection.js';
43
43
  import { isAndroidChromeBrowser } from '../events/events.utils.js';
44
- import { isKindControl, isNestedForeignEditableTarget } from '../events/nativeInteractiveControl.js';
44
+ import { isKindControl, isOwnPoint } from '../events/nativeInteractiveControl.js';
45
45
  /**
46
46
  * Named rule: Android Chrome mutates the DOM after a
47
47
  * canceled `deleteContentBackward` and reports the caret one position right
@@ -74,8 +74,6 @@ export class Projector {
74
74
  edytor;
75
75
  /** What the last display left in the DOM, and the selection epoch it showed. */
76
76
  #displayed = null;
77
- /** The observer holds DOM records it has not reconciled yet (set at attach). */
78
- recordsPending = () => false;
79
77
  /** The (request, render, remount) key the last completed pass answered. */
80
78
  #done = '';
81
79
  #request = -1;
@@ -137,12 +135,8 @@ export class Projector {
137
135
  // have mounted in this flush); otherwise an answered key displays nothing.
138
136
  if (key === this.#done && (selection.value.kind === 'none' || selection.projection.start)) {
139
137
  // Nothing to display; a DOM that still shows the value is observed.
140
- const { startText, yStart, endText, yEnd, isReversed } = selection.state;
141
138
  const dom = edytor.node && getDomSelection(edytor.node);
142
- if (dom &&
143
- startText &&
144
- endText &&
145
- this.#shows(dom, startText, yStart, endText, yEnd, isReversed))
139
+ if (dom && this.#shows(dom, selection.textRange(), selection.projection.isReversed))
146
140
  this.#seen = this.#flushes;
147
141
  return;
148
142
  }
@@ -161,7 +155,7 @@ export class Projector {
161
155
  */
162
156
  mounted = (text) => {
163
157
  const { selection } = this.edytor;
164
- const { startText, endText } = selection.state;
158
+ const { startText, endText } = selection.textRange();
165
159
  const dead = selection.value.kind !== 'none' && !selection.projection.start;
166
160
  if (this.#pending || dead || text === startText || text === endText)
167
161
  this.edytor.surface.update();
@@ -184,22 +178,19 @@ export class Projector {
184
178
  return true;
185
179
  };
186
180
  /**
187
- * The user-input window closed (`withUserInput`): a pass it held back (a
181
+ * The user-input window closed (`#withUserInput`): a pass it held back (a
188
182
  * render under the handler that asked for no display, such as a mark
189
183
  * removal re-rendering the text under a range) runs now. The flag is no
190
184
  * reactive source, so no later flush is owed: without this, the range the
191
185
  * render moved (Firefox keeps it where the removed element stood) would be
192
- * adopted as the gesture's when its `selectionchange` lands.
186
+ * adopted as the gesture's when its `selectionchange` lands. The observer
187
+ * calls it too once it processed DOM records: a display that waits gets a
188
+ * pass.
193
189
  */
194
190
  inputHandled = () => {
195
191
  if (this.#pending)
196
192
  this.edytor.surface.update();
197
193
  };
198
- /** The observer processed DOM records: a display that waits gets a pass. */
199
- recordsChanged = () => {
200
- if (this.#pending)
201
- this.edytor.surface.update();
202
- };
203
194
  /**
204
195
  * Classify a `selectionchange` by comparing the DOM selection with the
205
196
  * last display, the render epoch and the gesture serial:
@@ -219,8 +210,8 @@ export class Projector {
219
210
  const { selection } = edytor;
220
211
  const node = edytor.node;
221
212
  const anchor = dom?.anchorNode;
222
- // Not ours to classify: outside the editor, or in a nested editable island.
223
- if (!dom || !anchor || !node?.contains(anchor) || isNestedForeignEditableTarget(node, anchor))
213
+ // Not ours to classify: outside the editor, or in a kind's own control.
214
+ if (!dom || !isOwnPoint(node, anchor))
224
215
  return 'foreign';
225
216
  if (this.#echoes(dom))
226
217
  return 'echo';
@@ -242,7 +233,7 @@ export class Projector {
242
233
  return 'drift';
243
234
  if (edytor.intentSerial !== this.#serial || selection.dragging)
244
235
  return this.#observed('intent');
245
- return this.#seen !== this.#flushes || this.recordsPending()
236
+ return this.#seen !== this.#flushes || this.edytor.surface.pending()
246
237
  ? 'drift'
247
238
  : this.#observed('foreign');
248
239
  };
@@ -303,13 +294,11 @@ export class Projector {
303
294
  samePoint(displayed.anchor, dom.anchorNode, dom.anchorOffset) &&
304
295
  samePoint(displayed.focus, dom.focusNode, dom.focusOffset))
305
296
  return true;
306
- const { startText, yStart, endText, yEnd, isReversed, isCollapsed } = selection.state;
307
- return Boolean(!isCollapsed &&
308
- startText &&
309
- endText &&
297
+ const { isReversed, isCollapsed } = selection.projection;
298
+ return (!isCollapsed &&
310
299
  isTextBoundSelectionPoint(dom.anchorNode) &&
311
300
  isTextBoundSelectionPoint(dom.focusNode) &&
312
- this.#shows(dom, startText, yStart, endText, yEnd, isReversed));
301
+ this.#shows(dom, selection.textRange(), isReversed));
313
302
  };
314
303
  /** Evidence for the Android snap-back: a model-owned delete ran (`events/beforeInputDeleteCommands`). */
315
304
  deleted = (attempt) => {
@@ -335,10 +324,10 @@ export class Projector {
335
324
  !dom.isCollapsed)
336
325
  return false;
337
326
  const { attempt } = deleted;
338
- const { startText, yStart, isCollapsed } = edytor.selection.state;
327
+ const { startText, yStart } = edytor.selection.textRange();
339
328
  return Boolean(attempt.isCollapsed &&
340
329
  attempt.yStart === 0 &&
341
- isCollapsed &&
330
+ edytor.selection.projection.isCollapsed &&
342
331
  startText &&
343
332
  startText !== attempt.startText &&
344
333
  edytor.selection.getTextOfNode(dom.anchorNode) === startText &&
@@ -370,47 +359,32 @@ export class Projector {
370
359
  if (!requested && (selection.dragging || edytor.isHandlingUserInput))
371
360
  return false;
372
361
  const value = selection.value;
373
- if (value.kind === 'none') {
374
- // No selection shows no DOM range: asked for (a history step giving none
375
- // back, a closing menu, a drift over it), a range inside the editor is
376
- // cleared, and under the host's focus a caret the browser parks later
377
- // is its own (`placed`), whatever key comes before it.
378
- const active = getActiveElement(node);
379
- if (requested && active && node.contains(active))
380
- this.#parking = true;
381
- const dom = getDomSelection(node);
382
- if (requested && dom?.anchorNode && node.contains(dom.anchorNode) && this.#ours(requested)) {
383
- clearDomSelection(node);
384
- this.#displayed = null;
385
- this.#serial = edytor.intentSerial;
386
- }
387
- return true;
388
- }
389
- if (!selection.projection.start) {
362
+ if (value.kind !== 'none' && !selection.projection.start) {
390
363
  // A value that no longer resolves: the repair lands it (a live
391
364
  // destination may exist only once this flush mounted it).
392
365
  selection.restoreDeadSelectionEndpoints();
393
366
  return false;
394
367
  }
395
368
  const dom = getDomSelection(node);
396
- if (!dom)
397
- return true;
398
369
  if (value.kind !== 'text') {
399
- // A block set or an atom shows as selected elements, not a range.
400
- // Displayed even when the DOM already holds no range (the atom's
401
- // own pointerdown cleared it): a caret the browser parks later
402
- // without a gesture (focusing the host) is then drift, not intent;
403
- // the one it parks for the atom's press is drift through its release
404
- // (`parked`). An atom asked for under the host's focus (a Shift+arrow
405
- // onto it) is the press's case without the press: Chromium parks a
406
- // caret at the host's start at the next key, whose `selectionchange`
407
- // can land after that key counted as a gesture, so it stays the
408
- // browser's (`#parking`), whatever key comes before it, as under none.
370
+ // None, a block set or an atom shows no DOM range. No selection asked
371
+ // for (a history step giving none back, a closing menu, a drift over
372
+ // it) clears a range inside the editor; a block set or an atom is
373
+ // displayed even when the DOM already holds no range (the atom's own
374
+ // pointerdown cleared it): a caret the browser parks later without a
375
+ // gesture (focusing the host) is then drift, not intent; the one it
376
+ // parks for the atom's press is drift through its release (`parked`).
377
+ // Under the host's focus, none or an atom asked for (a Shift+arrow
378
+ // onto it: Chromium parks a caret at the host's start at the next key,
379
+ // whose `selectionchange` can land after that key counted as a
380
+ // gesture) leaves any caret the browser parks later its own
381
+ // (`#parking`, `placed`), whatever key comes before it.
409
382
  const active = getActiveElement(node);
410
- if (value.kind === 'atom' && requested && active && node.contains(active))
383
+ if (requested && value.kind !== 'blocks' && active && node.contains(active))
411
384
  this.#parking = true;
412
- const inside = Boolean(dom.anchorNode && node.contains(dom.anchorNode));
413
- if ((inside || dom.rangeCount === 0) && this.#ours(requested)) {
385
+ const inside = !!dom?.anchorNode && node.contains(dom.anchorNode);
386
+ const clears = value.kind === 'none' ? requested && inside : inside || dom?.rangeCount === 0;
387
+ if (clears && this.#ours(requested)) {
414
388
  if (inside)
415
389
  clearDomSelection(node);
416
390
  this.#displayed = null;
@@ -418,7 +392,11 @@ export class Projector {
418
392
  }
419
393
  return true;
420
394
  }
421
- const { startText, yStart, endText, yEnd, isCollapsed, isReversed } = selection.state;
395
+ if (!dom)
396
+ return true;
397
+ const range = selection.textRange();
398
+ const { startText, yStart, endText, yEnd } = range;
399
+ const { isCollapsed, isReversed } = selection.projection;
422
400
  if (!startText?.node?.isConnected || !endText?.node?.isConnected)
423
401
  return false;
424
402
  const start = domPointOf(startText.node, yStart);
@@ -427,7 +405,7 @@ export class Projector {
427
405
  ? { anchor: end, focus: start }
428
406
  : { anchor: start, focus: end };
429
407
  // Already shown: an observation, whoever holds focus.
430
- if (!this.#shows(dom, startText, yStart, endText, yEnd, isReversed)) {
408
+ if (!this.#shows(dom, range, isReversed)) {
431
409
  if (!this.#ours(requested))
432
410
  return true;
433
411
  const active = getActiveElement(node);
@@ -470,8 +448,8 @@ export class Projector {
470
448
  this.#observed('composition');
471
449
  };
472
450
  /** The live DOM selection already shows these endpoints (model coordinates, direction). */
473
- #shows = (dom, startText, yStart, endText, yEnd, isReversed) => {
474
- if (!dom.anchorNode || !dom.focusNode || dom.rangeCount > 1)
451
+ #shows = (dom, { startText, yStart, endText, yEnd }, isReversed) => {
452
+ if (!startText || !endText || !dom.anchorNode || !dom.focusNode || dom.rangeCount > 1)
475
453
  return false;
476
454
  const collapsed = startText === endText && yStart === yEnd;
477
455
  const [first, last] = isReversed
@@ -571,12 +549,7 @@ export class Projector {
571
549
  const value = edytor.selection.mint(snapshot);
572
550
  if (!value)
573
551
  return;
574
- const minted = project(value, edytor.facade);
575
- const current = edytor.selection.projection;
576
- if (minted.start?.block === current.start?.block &&
577
- minted.start?.offset === current.start?.offset &&
578
- minted.end?.block === current.end?.block &&
579
- minted.end?.offset === current.end?.offset)
552
+ if (sameEnds(project(value, edytor.facade), edytor.selection.projection))
580
553
  return;
581
554
  this.#minted = { value, transaction };
582
555
  };
@@ -1,13 +1,14 @@
1
1
  import type { Edytor } from '../edytor.svelte.js';
2
2
  import { type JSONText } from '../utils/json.js';
3
- import { Block } from '../block/block.svelte.js';
3
+ import type { Block } from '../block/block.svelte.js';
4
4
  /**
5
- * An id-only text handle: the `ordinal`-th text segment
6
- * of block `blockId` — no identity across commits beyond that position.
7
- * Getters read the document index; mutators write through the block's model.
8
- * `node` is the element that renders the segment (a Surface fact). A
9
- * reactive reader of a getter depends on the block's cell, so it re-runs
10
- * when a commit changes the block's content.
5
+ * An id-only, read-only text handle: the `ordinal`-th text segment of block
6
+ * `blockId` — no identity across commits beyond that position. Getters read
7
+ * the document index; writes are the view's operations in block offsets
8
+ * (`edytor.insertText(text.parent.id, text.segStart + offset, …)`). `node`
9
+ * is the element that renders the segment (a Surface fact). A reactive
10
+ * reader of a getter depends on the block's cell, so it re-runs when a
11
+ * commit changes the block's content.
11
12
  */
12
13
  export declare class Text {
13
14
  #private;
@@ -39,37 +40,10 @@ export declare class Text {
39
40
  * the caret is a render the projector displays after (`mounted`).
40
41
  */
41
42
  refreshFromModel: () => void;
42
- private batch;
43
- getMarksAtRange: (yStart: number, yEnd: number) => JSONText[];
44
- insertText: (args_0: {
45
- value: string;
46
- isAutoDot?: boolean;
47
- start?: number;
48
- end?: number;
49
- marks?: Record<string, import("../utils/json.js").SerializableContent | null>;
50
- }) => void;
51
- deleteText: (args_0: {
52
- direction: "BACKWARD" | "FORWARD";
53
- length: number;
54
- }) => {
55
- start: number;
56
- end: number;
57
- } | undefined;
58
- splitText: (args_0: {
59
- index?: number;
60
- }) => JSONText[];
61
- setText: (args_0: {
62
- value: JSONText[];
63
- }) => void;
64
- markText: (args_0: {
65
- mark: string;
66
- start?: number;
67
- end?: number;
68
- value?: import("../utils/json.js").SerializableContent | null;
69
- toggle?: boolean;
70
- }) => void;
71
- removeMarksFromText: (args_0: {
72
- start?: number;
73
- end?: number;
74
- }) => void;
43
+ /**
44
+ * The runs of `[start, end)` (segment offsets), each with a copy of its
45
+ * marks: the MODEL runs (`value`), never the rendered ones — a kind's
46
+ * `transformText` decorations (code tokens) are no marks of the text.
47
+ */
48
+ getMarksAtRange: (start: number, end: number) => JSONText[];
75
49
  }