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
@@ -3,11 +3,11 @@ import { DEV } from 'esm-env';
3
3
  import { onBeforeInput } from './events/onBeforeInput.js';
4
4
  import { onCopy } from './events/onCopy.js';
5
5
  import { onCut } from './events/onCut.js';
6
- import { isNativeInteractiveEvent, isNestedForeignEditableTarget } from './events/nativeInteractiveControl.js';
6
+ import { isControlEvent, isKindControl } from './events/nativeInteractiveControl.js';
7
7
  import { onInput } from './events/onInput.js';
8
8
  import { onPaste } from './events/onPaste.js';
9
- import { onTextDragEnd, onTextDragStart, preventUnsupportedDrop } from './events/onDrop.js';
10
- import { attachFocus, selectionIsInside } from './events/onFocus.js';
9
+ import { onDragLeave, onTextDragEnd, onTextDragStart, preventUnsupportedDrop } from './events/onDrop.js';
10
+ import { attachFocus, selectionIsInside, takeKeys } from './events/onFocus.js';
11
11
  import { insertLineBreak, runIntent } from './events/beforeInputCommands.js';
12
12
  import { textPointAt } from './selection/selection.utils.js';
13
13
  import { Attempts } from './session/attempt.js';
@@ -19,73 +19,46 @@ import { EdytorSelection } from './selection/selection.svelte.js';
19
19
  import { Projector } from './surface/projector.svelte.js';
20
20
  import { SurfaceObserver } from './surface/observer.svelte.js';
21
21
  import { virtualLens } from './session/virtual.js';
22
- import { createCells, placeholderOf, segmentDeltas } from './surface/cells.js';
22
+ import { createCells, placeholderOf } from './surface/cells.js';
23
23
  import { Pin } from './surface/pin.svelte.js';
24
24
  import { Overlay } from './surface/overlay.js';
25
25
  import { Popups } from './surface/popups.svelte.js';
26
26
  import { onOneLine } from './surface/lines.js';
27
- import { withRulesAndTriggers } from './plugins/triggers/triggers.js';
28
27
  import { Announcer as AnnouncerState } from './session/announcer.svelte.js';
29
- import { englishLabels, labelsWith } from './labels.js';
30
28
  import Announcer from './components/Announcer.svelte';
31
29
  import RemoteSelections from './collaboration/RemoteSelections.svelte';
32
- import SuggestionRanges from './components/SuggestionRanges.svelte';
30
+ import Ranges from './components/Ranges.svelte';
33
31
  import { Handles } from './session/handles.js';
34
32
  import { id } from './utils.js';
35
33
  import { Y } from './crdt/engine.js';
36
34
  import { markName } from './crdt/text/marks.js';
37
35
  import { callEach } from './crdt/protocols/observable.js';
38
- import { attachDocument, bindCrdt, SemanticConflictError } from './crdt/index.js';
36
+ import { attachDocument, SemanticConflictError } from './crdt/index.js';
39
37
  import { whenDocumentReady } from './collaboration/documentSync.js';
40
38
  import { mintPresenceKey, PresenceWriter } from './collaboration/awarenessSelection.js';
41
- import { batch } from './block/block.utils.js';
42
- import { canMoveBlocks as canMoveBlocksRelative, moveBlocks as moveBlocksRelative } from './session/moves.js';
39
+ import { canMove, move } from './session/moves.js';
40
+ import { DOCUMENT_WRITES } from './crdt/operations.js';
43
41
  import { on } from 'svelte/events';
44
42
  import { Keymap } from './session/keymap.js';
45
43
  import { TRANSACTION } from './constants.js';
46
- import { caretOf, deleteBlocks, deleteContentWithinSelection, insertFlow, rangeCaret, prepareDeleteBlocks, prepareDeleteContent, prepareFlow } from './edytor.utils.js';
47
44
  import { Dispatcher } from './session/commands.js';
48
45
  import { History } from './session/history.js';
46
+ import { DataWrites } from './session/props.js';
49
47
  import { kindCatalogue, kindCommand, UNKNOWN_KIND } from './kinds.js';
50
48
  import { clearDomSelection, getActiveElement, getDomSelection, getDomSelectionSnapshot } from './selection/domSelection.js';
51
49
  /** A consumer that is set (a prop or a plugin hook left out is `undefined`). */
52
50
  const isListener = (listener) => listener !== undefined;
53
- /** What a snippet override's suffix names (the DEV warning for one that names nothing). */
54
- const OVERRIDDEN = { Mark: 'mark', InlineBlock: 'inline kind', Block: 'kind' };
55
51
  /**
56
- * Names an earlier release took and what replaced them. An untyped caller
57
- * still passing one (an option, or an `<Edytor>` prop, which reaches the view
58
- * among the snippets whatever its value) gets nothing from it and a
59
- * development warning naming the replacement.
52
+ * Register definitions, the first extension's fields winning: a field it
53
+ * leaves out is the next one's (an app's `{ snippet }` listed first restyles
54
+ * a bundled kind and keeps its roles and presets). A bare snippet is `{ snippet }`.
60
55
  */
61
- const RETIRED = {
62
- hotKeys: '`hotkeys`',
63
- blockDnd: '`blockHandles` (`blockHandles={false}` hides the handles)'
64
- };
65
- const warnRetired = (source) => {
66
- if (!DEV || !source)
67
- return;
68
- for (const [name, use] of Object.entries(RETIRED))
69
- if (Object.hasOwn(source, name))
70
- console.warn(`[edytor] \`${name}\` was removed and is ignored: use ${use}.`);
71
- };
72
- /**
73
- * One `bindCrdt` binding shared by every `Edytor` — the binding exists for
74
- * legacy consumers only (peer-facade helpers in tests, migration, provider
75
- * plumbing), so paying a second binding per view buys nothing.
76
- *
77
- * CONTRACT: `crdt.doc.create` on a raw doc already wrapped by an
78
- * `EdytorDocument` would fork a SECOND maintained run view for that doc —
79
- * the document's `facade` is the only structural surface and the fork is
80
- * forbidden. `create` on an UNWRAPPED doc (a remote peer's replica in
81
- * tests) stays legitimate.
82
- */
83
- const sharedCrdt = bindCrdt(Y);
84
- /** Register definitions a first extension has not: a bare snippet is `{ snippet }`. */
85
56
  const define = (into, definitions = {}) => {
86
57
  for (const [key, value] of Object.entries(definitions))
87
- if (!into.has(key))
88
- into.set(key, typeof value === 'object' ? value : { snippet: value });
58
+ into.set(key, {
59
+ ...(typeof value === 'object' ? value : { snippet: value }),
60
+ ...into.get(key)
61
+ });
89
62
  };
90
63
  /**
91
64
  * The mark records: a key `name:<id>` — a comment's, one mark per
@@ -99,6 +72,7 @@ class MarkRecords extends Map {
99
72
  return super.has(key) || (key.includes(':') && super.has(markName(key)));
100
73
  }
101
74
  }
75
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging, no-redeclare
102
76
  export class Edytor {
103
77
  node;
104
78
  marks = new MarkRecords();
@@ -125,8 +99,6 @@ export class Edytor {
125
99
  get synced() {
126
100
  return this.root !== undefined;
127
101
  }
128
- /** `batch` binds operations onto blocks and the view alike: both answer `.edytor`. */
129
- edytor = this;
130
102
  selection;
131
103
  /** @internal The only writer of the DOM selection (`surface/projector`). */
132
104
  projector = new Projector(this);
@@ -144,7 +116,7 @@ export class Edytor {
144
116
  parked: () => this.projector.parked(),
145
117
  clear: () => clearDomSelection(this.node),
146
118
  pointAt: (node, offset) => textPointAt.call(this.selection, node, offset),
147
- sameLine: (a, b) => onOneLine(a, b)
119
+ sameLine: (a, b) => onOneLine(this.selection.textAt(a), this.selection.textAt(b))
148
120
  },
149
121
  input: {
150
122
  runIntent: (inputType) => runIntent(this, inputType),
@@ -154,20 +126,24 @@ export class Edytor {
154
126
  /** What the components render: one cell per visible block, patched from change reports. */
155
127
  cells = $state.raw();
156
128
  /** Bumped by each commit that changed the document's data: what `docData()` readers track. */
157
- dataRevision = $state(0);
129
+ #dataRevision = $state(0);
158
130
  /** @internal The document's data, read-your-writes and reactive (`{}` when none). */
159
131
  docData = () => {
160
- void this.dataRevision;
132
+ void this.#dataRevision;
161
133
  return this.facade.docData();
162
134
  };
135
+ /** @internal The view's property writes (`session/props`): the data proxies' one queue. */
136
+ dataWrites = new DataWrites(this);
137
+ #dataProxy;
163
138
  /**
164
- * The document's properties as a live proxy (`session/props.ts`): read
165
- * and write them like a plain object (`edytor.data.title = 'Notes'`,
166
- * `bind:value={edytor.data.title}`); each write is a `patchData` command
167
- * on the root. Type it by augmenting {@link EdytorDocData}.
139
+ * The document's properties, as plain state: reactive at any depth, and
140
+ * writable (`edytor.data.title = 'Notes'`, `edytor.data.tags.push('x')`,
141
+ * `delete edytor.data.draft`). Each write is the `patchData` operation,
142
+ * dispatched; the writes of one task are one undo step. Type them by
143
+ * augmenting {@link EdytorDocData}.
168
144
  */
169
145
  get data() {
170
- return this.idToBlock.root.data;
146
+ return (this.#dataProxy ??= this.dataWrites.proxy(null, this.docData));
171
147
  }
172
148
  /** @internal The IME host pin (`surface/pin`): the composing cell's segment list and render, frozen. */
173
149
  pin = new Pin();
@@ -177,8 +153,10 @@ export class Edytor {
177
153
  popups = new Popups();
178
154
  /** What this view announces to assistive technology (`session/announcer`): its block moves and deletes. */
179
155
  announcer = new AnnouncerState(this);
180
- /** The words this view says itself (`<Edytor labels>`): its announcements, a suggestion's name. */
181
- labels = englishLabels.editor;
156
+ /** The words the view was given (`<Edytor labels>`); its plugins read their section through `labelsOf`. */
157
+ labels = {};
158
+ /** Whether users may nest blocks (`allowNesting`, read once; the rule is `session/moves.ts` `nestsInto`). */
159
+ allowNesting = false;
182
160
  off = [];
183
161
  onChange;
184
162
  onDocChange;
@@ -197,7 +175,9 @@ export class Edytor {
197
175
  * API-driven selection changes must never move the page).
198
176
  * @internal
199
177
  */
200
- isHandlingUserInput = false;
178
+ get isHandlingUserInput() {
179
+ return this.#userInputHandlingDepth > 0;
180
+ }
201
181
  /**
202
182
  * Depth counter suppressing caret scroll during programmatic DOM
203
183
  * writes — remote mirror flushes and mutation-observer repairs can
@@ -225,7 +205,7 @@ export class Edytor {
225
205
  lens;
226
206
  /**
227
207
  * The document as this view reads and writes it (the virtual paragraph's
228
- * lens). The public raw path is the document's own operations (`edytor.document.insertBlock(…)`): its writes skip
208
+ * lens). The public raw path is the document's own operations (`edytor.document.insertBlocks(…)`): its writes skip
229
209
  * the dispatcher (no hooks, no readonly admission, no undo policy).
230
210
  * @internal
231
211
  */
@@ -243,17 +223,6 @@ export class Edytor {
243
223
  get awareness() {
244
224
  return this.document.awareness;
245
225
  }
246
- /**
247
- * Legacy accessor — the view no longer binds the engine (the document
248
- * shares the production binding). Returns the module-level singleton:
249
- * one binding per runtime, not one per view. Do NOT `crdt.doc.create`
250
- * on this view's `doc` — the document's facade is the only maintained
251
- * surface for it (see `sharedCrdt`'s contract note).
252
- * @internal
253
- */
254
- get crdt() {
255
- return sharedCrdt;
256
- }
257
226
  /**
258
227
  * The document's shared undo manager — assigned at the end of `sync()`,
259
228
  * never in the constructor, so history capture still starts only after
@@ -267,7 +236,7 @@ export class Edytor {
267
236
  /** The view's command dispatcher: every mutation this view makes goes through it. */
268
237
  dispatcher = new Dispatcher(this);
269
238
  /** An outermost `transact` of this view is running. */
270
- transacting = false;
239
+ #transacting = false;
271
240
  /**
272
241
  * One transaction of this view. The outermost call runs the normalization
273
242
  * its operations requested at its end, inside the same transaction (one transaction, normalization once per touched parent): normalizers read
@@ -278,9 +247,9 @@ export class Edytor {
278
247
  * logged.
279
248
  */
280
249
  transact = (cb) => {
281
- if (this.transacting)
250
+ if (this.#transacting)
282
251
  return this.doc.transact(cb, this.transaction);
283
- this.transacting = true;
252
+ this.#transacting = true;
284
253
  try {
285
254
  return this.doc.transact(() => {
286
255
  let out;
@@ -301,13 +270,17 @@ export class Edytor {
301
270
  }, this.transaction);
302
271
  }
303
272
  finally {
304
- this.transacting = false;
273
+ this.#transacting = false;
305
274
  }
306
275
  };
307
276
  /** Whether a block move (relative step or beside/inside a target) is structurally allowed. */
308
- canMoveBlocks = (request) => canMoveBlocksRelative(this, request);
309
- /** Move blocks one relative step, or before, after or inside a live target block. */
310
- moveBlocks = (request) => moveBlocksRelative(this, request);
277
+ canMove = (request) => canMove(this, request);
278
+ /**
279
+ * Move blocks one relative step, or before, after, inside or beside a live
280
+ * target block: resolved to the document's move (`moveBlocks`, an outdent's
281
+ * `unNestBlocks`, `placeBeside`) and announced. Answers the moved blocks.
282
+ */
283
+ move = (request) => move(this, request);
311
284
  /** @internal This view's history (the named exception to commands through the dispatcher): bare engine undo/redo, one restorer. */
312
285
  history = new History(this);
313
286
  /**
@@ -324,15 +297,20 @@ export class Edytor {
324
297
  this.dispatcher.record({ operation: command, status: this.history.replay(command) });
325
298
  };
326
299
  constructor(options) {
327
- const { snippets, readonly, hotkeys, plugins, document, doc, awareness, actor, requireHydration, presence, sync, value, onSelectionChange, placeholder, labels, onChange, onDocChange } = options;
328
- warnRetired(options);
329
- warnRetired(snippets);
330
- this.labels = labelsWith('editor', labels);
300
+ const { readonly, hotkeys, plugins, document, doc, awareness, actor, requireHydration, presence, sync, value, onSelectionChange, labels, onChange, onDocChange, allowNesting } = options;
301
+ for (const name of DOCUMENT_WRITES)
302
+ Object.defineProperty(this, name, {
303
+ value: (...args) => this.dispatcher.operate(name, args)
304
+ });
305
+ if (labels)
306
+ this.labels = labels;
307
+ this.allowNesting = allowNesting === true;
331
308
  if (document !== undefined) {
332
- if (doc !== undefined ||
333
- awareness !== undefined ||
334
- actor !== undefined ||
335
- requireHydration !== undefined) {
309
+ if (DEV &&
310
+ (doc !== undefined ||
311
+ awareness !== undefined ||
312
+ actor !== undefined ||
313
+ requireHydration !== undefined)) {
336
314
  throw new Error('EdytorOptions: `document` cannot be combined with `doc`/`awareness`/`actor`/`requireHydration` — ' +
337
315
  'the document owns them (compose them via attachDocument first).');
338
316
  }
@@ -358,9 +336,8 @@ export class Edytor {
358
336
  // before definition precedence applies: two extensions declaring
359
337
  // different default children for one parent type is an error.
360
338
  const defaultChild = {};
361
- this.plugins = (plugins || []).map((plugin, at) => {
362
- // Its input rules and triggers run through its own hooks, at its place in the list.
363
- const initializedPlugin = withRulesAndTriggers(this, plugin(this), at);
339
+ this.plugins = (plugins || []).map((plugin) => {
340
+ const initializedPlugin = plugin(this);
364
341
  for (const [type, definition] of Object.entries(initializedPlugin.blocks ?? {})) {
365
342
  const child = typeof definition === 'object' ? definition.defaultChild : undefined;
366
343
  if (child !== undefined && (defaultChild[type] ??= child) !== child) {
@@ -376,40 +353,12 @@ export class Edytor {
376
353
  this.commands.set(command.id, command);
377
354
  return initializedPlugin;
378
355
  });
379
- // The app's snippets override the plugins' after they register: keys are
380
- // `{type}{suffix}` over maps keyed by the bare type, suffixes tried in
381
- // this order (`mentionInlineBlock` also ends in `Block`). Only the
382
- // snippet is replaced: the definition's roles, `transformText` and hooks
383
- // survive. An override names a registered kind, mark or atom kind: one
384
- // that names none (a typo) registers nothing and warns in development.
385
- const overrides = [
386
- ['Mark', this.marks],
387
- ['InlineBlock', this.inlineBlocks],
388
- ['Block', this.blocks]
389
- ];
390
- for (const [key, snippet] of Object.entries(snippets || {})) {
391
- if (Object.hasOwn(RETIRED, key))
392
- continue;
393
- const override = overrides.find(([suffix]) => key.endsWith(suffix));
394
- const name = override && key.slice(0, -override[0].length);
395
- if (override && name && override[1].has(name)) {
396
- const into = override[1];
397
- into.set(name, { ...into.get(name), snippet });
398
- }
399
- else if (DEV && key !== 'children' && typeof snippet === 'function') {
400
- const reason = override
401
- ? `no ${OVERRIDDEN[override[0]]} "${name}" is registered`
402
- : 'its name ends in neither Block, Mark nor InlineBlock';
403
- console.warn(`[edytor] the snippet "${key}" overrides nothing: ${reason}. A new kind is a plugin's.`);
404
- }
405
- }
406
356
  // Kind records generate their commands; an extension's own command id wins.
407
357
  this.kinds = kindCatalogue(this.blocks);
408
358
  for (const row of this.kinds)
409
359
  if (!this.commands.has(row.id))
410
360
  this.commands.set(row.id, kindCommand(this, row));
411
- this.placeholder =
412
- placeholder || this.plugins.find((plugin) => plugin.placeholder)?.placeholder;
361
+ this.placeholder = this.plugins.find((plugin) => plugin.placeholder)?.placeholder;
413
362
  // Contribute this view's capability to the document — roles,
414
363
  // `rendersContent` and default children outlive any single view.
415
364
  // The first declaration for a type is adopted; a conflicting one is
@@ -443,7 +392,7 @@ export class Edytor {
443
392
  this.sync(value || { children: [] });
444
393
  }
445
394
  else {
446
- this._readinessRelease = whenDocumentReady(this.document, () => {
395
+ this.#readinessRelease = whenDocumentReady(this.document, () => {
447
396
  if (!this.destroyed)
448
397
  this.sync(value || { children: [] });
449
398
  });
@@ -467,7 +416,7 @@ export class Edytor {
467
416
  }
468
417
  }
469
418
  /** Kinds already reported missing (DEV, once each). */
470
- unknownKinds = new Set();
419
+ #unknownKinds = new Set();
471
420
  /**
472
421
  * The definition of block kind `type` — the one lookup (render, surface,
473
422
  * handles). A kind no plugin of this view registers (a rolling deploy, a
@@ -478,8 +427,8 @@ export class Edytor {
478
427
  const definition = this.blocks.get(type);
479
428
  if (definition)
480
429
  return definition;
481
- if (DEV && type && type !== 'root' && !this.unknownKinds.has(type)) {
482
- this.unknownKinds.add(type);
430
+ if (DEV && type && type !== 'root' && !this.#unknownKinds.has(type)) {
431
+ this.#unknownKinds.add(type);
483
432
  console.warn(`[edytor] block kind "${type}" is not registered by any plugin: it renders as a plain block.`);
484
433
  }
485
434
  return UNKNOWN_KIND;
@@ -532,7 +481,7 @@ export class Edytor {
532
481
  /** The adopted default type for a new child of `parent` — its actual parent. */
533
482
  defaultChild = (parent) => this.document.defaultChild(parent.isRoot ? null : parent.type);
534
483
  /** Releases the readiness wait of a view bound before its document decided. */
535
- _readinessRelease;
484
+ #readinessRelease;
536
485
  /** @internal */
537
486
  sync = ({ children = [], data } = { children: [] }) => {
538
487
  if (this.synced)
@@ -546,20 +495,20 @@ export class Edytor {
546
495
  this.history.bind();
547
496
  this.cells = createCells(this.facade, this.surface.patched);
548
497
  this.root = this.idToBlock.root;
549
- this.offCommit = this.facade.onChange(this.onCommit);
498
+ this.#offCommit = this.facade.onChange(this.#onCommit);
550
499
  // A document that is already empty shows its virtual paragraph with the caret in it.
551
500
  this.selection?.restoreDeadSelectionEndpoints();
552
501
  };
553
502
  /** The commit subscription: editor-lifetime (a remount's `off` drain never releases it). */
554
- offCommit;
503
+ #offCommit;
555
504
  /**
556
505
  * One commit (local, remote, undo/redo): prune the handles of the removed
557
506
  * blocks, then the selection's seam and the value consumers.
558
507
  */
559
- onCommit = (change) => {
508
+ #onCommit = (change) => {
560
509
  this.valueRevision++;
561
510
  if (change.data)
562
- this.dataRevision++;
511
+ this.#dataRevision++;
563
512
  this.overlay.invalidate();
564
513
  // A commit this view did not issue re-renders under the caret: the
565
514
  // projector displays the current value after that flush.
@@ -591,6 +540,17 @@ export class Edytor {
591
540
  if (values.length > 0)
592
541
  callEach('[edytor] onChange', values, this.value);
593
542
  };
543
+ /** The text each range `replace` suggestion removes when accepted (`Ranges`). */
544
+ #replaced = () => {
545
+ void this.suggestions.revision;
546
+ return this.suggestions.list.flatMap(({ at }) => {
547
+ if (!('replace' in at) || Array.isArray(at.replace))
548
+ return [];
549
+ const { anchor, focus } = at.replace;
550
+ const [start, end] = [anchor, focus].map(this.selection.resolveTextAnchor);
551
+ return start && end ? [{ start, end }] : [];
552
+ });
553
+ };
594
554
  /**
595
555
  * The placeholder block `id` shows: its cell has one empty
596
556
  * text and no live composition in it; a function answers per block.
@@ -608,7 +568,7 @@ export class Edytor {
608
568
  return placeholder;
609
569
  const { type, data = {} } = cell;
610
570
  const focused = this.idToBlock.block(id).focused;
611
- return placeholder({ type, data, focused, empty: true }) || null;
571
+ return placeholder({ type, data, focused, empty: true }, this) || null;
612
572
  };
613
573
  /** @internal */
614
574
  onBeforeInput = onBeforeInput.bind(this);
@@ -626,28 +586,23 @@ export class Edytor {
626
586
  * runs with the flag cleared so async restores can't trigger typing
627
587
  * affordances long after the gesture ended.
628
588
  */
629
- userInputHandlingDepth = 0;
630
- withUserInput = (handler, opts = {}) => {
631
- return (event) => {
632
- // Depth-counted, not boolean: a synchronous wrapped listener
633
- // landing inside an awaited handler's hold window must not
634
- // clear the flag the outer handler still needs.
635
- this.userInputHandlingDepth++;
636
- this.isHandlingUserInput = true;
589
+ #userInputHandlingDepth = 0;
590
+ #withUserInput = (handler, opts = {}) => {
591
+ return (...args) => {
592
+ // Depth-counted: a synchronous wrapped listener landing inside an
593
+ // awaited handler's hold window must not end the window the outer
594
+ // handler still needs.
595
+ this.#userInputHandlingDepth++;
637
596
  if (opts.bumpSerial !== false) {
638
597
  this.markUserGesture();
639
598
  }
640
599
  const clear = () => {
641
- this.userInputHandlingDepth--;
642
- if (this.userInputHandlingDepth <= 0) {
643
- this.userInputHandlingDepth = 0;
644
- this.isHandlingUserInput = false;
645
- // A display the window held back gets its pass now.
600
+ // A display the window held back gets its pass now.
601
+ if (--this.#userInputHandlingDepth === 0)
646
602
  this.projector.inputHandled();
647
- }
648
603
  };
649
604
  try {
650
- const result = handler(event);
605
+ const result = handler(...args);
651
606
  // Async handlers keep the flag until they settle — the
652
607
  // awaited model ops + selection writes are still "the
653
608
  // user's input". Timer/rAF-deferred restores run after
@@ -690,18 +645,18 @@ export class Edytor {
690
645
  * consumed there; the microtask reset covers a focus that never
691
646
  * fires (element already focused).
692
647
  */
693
- expectInternalFocusArmed = false;
648
+ #expectInternalFocusArmed = false;
694
649
  /** @internal */
695
650
  expectInternalFocus = () => {
696
- this.expectInternalFocusArmed = true;
651
+ this.#expectInternalFocusArmed = true;
697
652
  queueMicrotask(() => {
698
- this.expectInternalFocusArmed = false;
653
+ this.#expectInternalFocusArmed = false;
699
654
  });
700
655
  };
701
656
  /** @internal A `focusin` consumes the armed flag: `true` when the editor focused itself. */
702
657
  consumeInternalFocus = () => {
703
- const armed = this.expectInternalFocusArmed;
704
- this.expectInternalFocusArmed = false;
658
+ const armed = this.#expectInternalFocusArmed;
659
+ this.#expectInternalFocusArmed = false;
705
660
  return armed;
706
661
  };
707
662
  /**
@@ -724,7 +679,7 @@ export class Edytor {
724
679
  */
725
680
  lastUserGestureOutsideEditor = false;
726
681
  /** @internal Run `body` as part of the user's input (deferred work of an occurrence). */
727
- userInput = (body) => this.withUserInput(body, { bumpSerial: false })(new Event('input'));
682
+ userInput = (body) => this.#withUserInput(body, { bumpSerial: false })();
728
683
  /**
729
684
  * A commit's caret: select it (the projector displays it once the pin's
730
685
  * render lands) and arm the IME post-commit jump rule — a move right after
@@ -742,24 +697,23 @@ export class Edytor {
742
697
  if ((active &&
743
698
  !ours(active) &&
744
699
  !ours(selection?.anchorNode) &&
745
- !ours(this.selection.state.startText?.node)) ||
746
- (active && isNestedForeignEditableTarget(this.node, active)))
700
+ !ours(this.selection.textRange().startText?.node)) ||
701
+ isKindControl(this.node, active))
747
702
  return;
748
703
  this.projector.committed();
749
- this.selection.setAtTextOffset(text, Math.min(offset, text.length));
704
+ this.selection.selectText(text, Math.min(offset, text.length));
750
705
  };
751
706
  /** An event of this view's own composition (not a native control's, not a nested island's). */
752
- ownComposition = (event) => !event ||
753
- (!isNativeInteractiveEvent(event) && !isNestedForeignEditableTarget(this.node, event.target));
707
+ #ownComposition = (event) => !event || !isControlEvent(this.node, event);
754
708
  /** @internal */
755
709
  onCompositionStart = (event) => {
756
- if (!this.ownComposition(event))
710
+ if (!this.#ownComposition(event))
757
711
  return;
758
712
  this.composition.start(() => getDomSelectionSnapshot(this.node));
759
713
  };
760
714
  /** @internal `compositionend`: the live session's commit, or its explicit cancel; the tail swallows a late one. */
761
715
  onCompositionEnd = (event) => {
762
- if (!this.ownComposition(event) || this.readonly)
716
+ if (!this.#ownComposition(event) || this.readonly)
763
717
  return;
764
718
  const value = event?.data ?? this.composition.preview;
765
719
  if (value)
@@ -767,10 +721,6 @@ export class Edytor {
767
721
  else
768
722
  this.composition.cancel();
769
723
  };
770
- deleteContentWithinSelection = batch('deleteContentWithinSelection', deleteContentWithinSelection, prepareDeleteContent, rangeCaret);
771
- /** @internal */
772
- insertFlow = batch('insertFlow', insertFlow, prepareFlow, caretOf);
773
- deleteBlocks = batch('deleteBlocks', deleteBlocks, prepareDeleteBlocks);
774
724
  /** @internal The handle of the `ordinal`-th text segment of block `id` (the element a cell segment renders). */
775
725
  textAt = (id, ordinal) => this.idToBlock.text(id, ordinal);
776
726
  /** @internal The cell segment the element of `text` renders (the frozen list while pinned). */
@@ -785,9 +735,7 @@ export class Edytor {
785
735
  if (!at)
786
736
  return [];
787
737
  const { cell, segment } = at;
788
- const pinned = this.pin.render(cell.id, segment.key);
789
- const transform = this.definitionOf(cell.type).transformText;
790
- return pinned?.deltas ?? segmentDeltas(cell, segment, transform);
738
+ return this.pin.shown(cell, segment, this.definitionOf(cell.type).transformText).deltas;
791
739
  };
792
740
  /** @internal The handle of inline atom `atom`, shown in block `id`. */
793
741
  atomAt = (id, atom) => this.idToBlock.atom(id, atom);
@@ -800,10 +748,9 @@ export class Edytor {
800
748
  if (this.selection.value.kind === 'none') {
801
749
  const text = this.root?.firstText;
802
750
  if (text)
803
- this.selection.setAtTextOffset(text, 0);
751
+ this.selection.selectText(text, 0);
804
752
  }
805
- this.expectInternalFocus();
806
- this.node?.focus({ preventScroll: true });
753
+ takeKeys(this);
807
754
  };
808
755
  /**
809
756
  * Replace the whole document with one empty block and put the caret in it,
@@ -812,18 +759,17 @@ export class Edytor {
812
759
  */
813
760
  clear = () => {
814
761
  const newBlock = this.dispatcher.run('clear', () => this.transact(() => {
815
- const root = this.root;
816
- root.deleteChildren(0, root.children.length);
817
- const block = { id: id('b'), type: this.defaultChild(root) };
818
- root.insertChildren(0, [block]);
762
+ for (const child of this.facade.childrenIds(null).reverse())
763
+ this.deleteBlock(child, { keepChildren: false });
764
+ const block = { id: id('b'), type: this.defaultChild(this.root) };
765
+ this.insertBlocks({ parent: null, index: 0 }, [block]);
819
766
  return this.idToBlock.block(block.id);
820
767
  }));
821
768
  if (!newBlock)
822
769
  return false;
823
770
  this.dispatcher.record({ operation: 'clear', status: 'applied' });
824
- this.selection.setAtTextOffset(newBlock.firstText ?? this.root?.children[0]?.firstText, 0);
825
- this.expectInternalFocus();
826
- this.node?.focus({ preventScroll: true });
771
+ this.selection.selectText(newBlock.firstText ?? this.root?.children[0]?.firstText, 0);
772
+ this.focus();
827
773
  return true;
828
774
  };
829
775
  /** @internal */
@@ -834,12 +780,12 @@ export class Edytor {
834
780
  this.node = node;
835
781
  this.selection.init();
836
782
  this.doc.on('beforeAllTransactions', this.projector.opening);
837
- this.doc.on('beforeTransaction', this.surface.before);
783
+ this.doc.on('beforeTransaction', this.surface.pending);
838
784
  this.doc.on('beforeTransaction', this.projector.before);
839
785
  this.doc.on('afterTransaction', this.projector.after);
840
786
  this.off.push(() => {
841
787
  this.doc.off('beforeAllTransactions', this.projector.opening);
842
- this.doc.off('beforeTransaction', this.surface.before);
788
+ this.doc.off('beforeTransaction', this.surface.pending);
843
789
  this.doc.off('beforeTransaction', this.projector.before);
844
790
  this.doc.off('afterTransaction', this.projector.after);
845
791
  });
@@ -847,9 +793,8 @@ export class Edytor {
847
793
  // composition-phantom swallow — a swallowed trailing Enter/Backspace
848
794
  // is a browser artifact, not a gesture, and must not disarm pending
849
795
  // composition caret restores.
850
- const keydown = this.withUserInput(onKeyDown.bind(this), { bumpSerial: false });
796
+ const keydown = this.#withUserInput(onKeyDown.bind(this), { bumpSerial: false });
851
797
  const detachSurface = this.surface.attach(node);
852
- this.projector.recordsPending = this.surface.pending;
853
798
  this.off.push(
854
799
  // One handler per keyboard occurrence: keys inside the editor at
855
800
  // capture; the document sees only keys whose path misses it (a
@@ -864,10 +809,10 @@ export class Edytor {
864
809
  // spellcheck suggestions are computed against the DOM at this
865
810
  // moment (PM flushes its DOM observer on contextmenu for the
866
811
  // same reason).
867
- on(node, 'contextmenu', () => void this.surface.flush()), on(node, 'beforeinput', this.withUserInput(this.onBeforeInput)),
812
+ on(node, 'contextmenu', () => void this.surface.flush()), on(node, 'beforeinput', this.#withUserInput(this.onBeforeInput)),
868
813
  // An `input` records what the browser did; it says nothing new about
869
814
  // where the user wants the selection (a display still to land wins).
870
- on(node, 'input', this.withUserInput(this.onInput, { bumpSerial: false })), on(node, 'copy', this.onCopy), on(node, 'cut', this.withUserInput(this.onCut)), on(node, 'paste', this.withUserInput(this.onPaste)), on(node, 'dragstart', (event) => onTextDragStart(this, event)), on(node, 'dragend', () => onTextDragEnd(this)), on(node, 'dragover', (event) => preventUnsupportedDrop(event, this)), on(node, 'drop', this.withUserInput((event) => preventUnsupportedDrop(event, this))), on(node, 'compositionstart', this.onCompositionStart), on(node, 'compositionend', this.onCompositionEnd), detachSurface);
815
+ on(node, 'input', this.#withUserInput(this.onInput, { bumpSerial: false })), on(node, 'copy', this.onCopy), on(node, 'cut', this.#withUserInput(this.onCut)), on(node, 'paste', this.#withUserInput(this.onPaste)), on(node, 'dragstart', (event) => onTextDragStart(this, event)), on(node, 'dragend', () => onTextDragEnd(this)), on(node, 'dragover', (event) => preventUnsupportedDrop(event, this)), on(node, 'dragleave', (event) => onDragLeave(this, event)), on(node, 'drop', this.#withUserInput((event) => preventUnsupportedDrop(event, this))), on(node, 'compositionstart', this.onCompositionStart), on(node, 'compositionend', this.onCompositionEnd), detachSurface);
871
816
  // Chrome lives in the overlay, outside the host: remote carets, then the plugins'.
872
817
  const detachOverlay = this.overlay.attach(node);
873
818
  const presence = mount(RemoteSelections, {
@@ -875,9 +820,9 @@ export class Edytor {
875
820
  props: { edytor: this }
876
821
  });
877
822
  // The text a `replace` suggestion removes, marked beside the host.
878
- const ranges = mount(SuggestionRanges, {
823
+ const ranges = mount(Ranges, {
879
824
  target: this.overlay.layer,
880
- props: { edytor: this }
825
+ props: { edytor: this, name: 'suggestion-range', z: 19, ranges: this.#replaced }
881
826
  });
882
827
  // The polite live region: what this view's block moves and deletes did.
883
828
  const live = mount(Announcer, {
@@ -933,12 +878,12 @@ export class Edytor {
933
878
  // This view's presence entry — its own key, cleared by its own teardown.
934
879
  this.presence.clear();
935
880
  // A pending readiness binding must not resurrect a dead view.
936
- this._readinessRelease?.();
937
- this._readinessRelease = undefined;
881
+ this.#readinessRelease?.();
882
+ this.#readinessRelease = undefined;
938
883
  // Runs the whole attach-lifetime batch — DOM listeners, the mutation
939
884
  // observer, plugin actions — and empties the array.
940
885
  this.off.splice(0).forEach((off) => off());
941
- this.offCommit?.();
886
+ this.#offCommit?.();
942
887
  this.history.unbind();
943
888
  // `selectionchange` listener + the published remote caret.
944
889
  this.selection.destroy();