edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -4,7 +4,7 @@ import { attemptOf, intentSnapshot, kindOf, untargeted } from './attempt.js';
4
4
  import { insertionMarks } from './editing/text.js';
5
5
  /** How long the tail owns late signals of an engine that sends no next occurrence (compared at use). */
6
6
  const TAIL_MS = 500;
7
- const now = () => (typeof performance === 'undefined' ? Date.now() : performance.now());
7
+ const now = () => performance.now();
8
8
  const isAppleWebKit = () => typeof navigator !== 'undefined' &&
9
9
  /AppleWebKit/i.test(navigator.userAgent) &&
10
10
  !/(Chrome|Chromium|Edg|OPR|SamsungBrowser)/i.test(navigator.userAgent);
@@ -55,9 +55,8 @@ export class Composition {
55
55
  #tail = null;
56
56
  #caret = null;
57
57
  #waiting = [];
58
- /** Where the host's block sits (its and its ancestors' ids and types), and their siblings: the re-placement check compares them. */
59
- #where = '';
60
- #order = [];
58
+ /** Where the host's block sits (`#place`): the re-placement check compares it. */
59
+ #where = [];
61
60
  /** After a re-placing commit, until the IME ends: the text it committed (resumed over), or `lost` (dropped). */
62
61
  #resume = null;
63
62
  /** Phantom structural keys the tail swallowed (a test oracle). */
@@ -68,8 +67,6 @@ export class Composition {
68
67
  get live() {
69
68
  return this.phase === 'live';
70
69
  }
71
- /** `node` lies inside the element a live session owns (the pinned element). */
72
- owns = (node) => this.host !== null && this.edytor.pin.owns(node);
73
70
  /** Run `fn` once the live session has ended (after its writes), or now when none is live. */
74
71
  ended = (fn) => {
75
72
  if (this.live)
@@ -98,7 +95,7 @@ export class Composition {
98
95
  this.#resume = null;
99
96
  if (resume && resume !== 'lost')
100
97
  selection.select(resume);
101
- const { startText, endText, yStart, yEnd } = selection.state;
98
+ const { startText, endText, yStart, yEnd } = selection.textRange();
102
99
  this.phase = 'live';
103
100
  this.#tail = this.#caret = this.#region = null;
104
101
  this.#own.clear();
@@ -117,8 +114,11 @@ export class Composition {
117
114
  ? 'block'
118
115
  : 'blocks'
119
116
  : false;
117
+ // With no target, the caret the browser parked for the IME.
118
+ const parked = targetless && dom?.anchorNode;
119
+ const point = parked ? this.edytor.ports.surface.pointAt(parked, dom.anchorOffset) : null;
120
120
  const at = targetless
121
- ? this.#parkedAt(dom)
121
+ ? point && { text: point.text, from: point.offset, to: point.offset }
122
122
  : shown === 'blocks' || shown === 'atom'
123
123
  ? this.#rangeless()
124
124
  : startText && {
@@ -130,7 +130,6 @@ export class Composition {
130
130
  this.#pin(at.text, at.from, at.to);
131
131
  this.host = at?.text ?? null;
132
132
  this.#where = this.#place();
133
- this.#order = this.#siblings();
134
133
  };
135
134
  /** A composition update: the model holds `value` (mechanical, in the capture group). */
136
135
  update = (value, attempt) => {
@@ -187,7 +186,7 @@ export class Composition {
187
186
  restructured = (change) => {
188
187
  if (!this.live || !(change.removed.size || change.moved.size || change.meta.size))
189
188
  return;
190
- if (this.#place() === this.#where && !this.#reordered())
189
+ if (!this.#replaced())
191
190
  return;
192
191
  const shown = this.edytor.pin.imeBuffer() ?? this.preview;
193
192
  const at = this.#kept();
@@ -243,12 +242,10 @@ export class Composition {
243
242
  }
244
243
  const tail = this.tail();
245
244
  this.occurred();
246
- const { state, selectedBlocks, selectedInlineBlock } = this.edytor.selection;
245
+ // A caret: a block or atom selection is no collapsed projection.
247
246
  const phantom = tail &&
248
247
  (event.key === 'Enter' || (event.key === 'Backspace' && isAppleWebKit())) &&
249
- state.isCollapsed &&
250
- !selectedBlocks.size &&
251
- !selectedInlineBlock.size;
248
+ this.edytor.selection.projection.isCollapsed;
252
249
  if (!phantom)
253
250
  return false;
254
251
  this.swallows++;
@@ -299,10 +296,10 @@ export class Composition {
299
296
  */
300
297
  #rangeless() {
301
298
  const { edytor } = this;
302
- const { selectedBlocks, state } = edytor.selection;
299
+ const { selectedBlocks, projection } = edytor.selection;
303
300
  const exit = selectedBlocks.size
304
301
  ? selectedBlocksExit(edytor)
305
- : state.startText && { text: state.startText, offset: state.yStart };
302
+ : edytor.selection.textAt(projection.start);
306
303
  const at = this.#open() ? this.#at() : exit;
307
304
  if (!at)
308
305
  return null;
@@ -312,41 +309,38 @@ export class Composition {
312
309
  edytor.ports.surface.park(at.text, at.offset);
313
310
  return { text: at.text, from: at.offset, to: at.offset };
314
311
  }
315
- /** The text and offset of the caret the browser parked for a session with no target. */
316
- #parkedAt(dom) {
317
- const node = dom?.anchorNode;
318
- const at = node ? this.edytor.ports.surface.pointAt(node, dom.anchorOffset) : null;
319
- return at && { text: at.text, from: at.offset, to: at.offset };
320
- }
321
- /** The host's block and its ancestors (none once it is not visible). */
322
- #chain() {
323
- const { facade } = this.edytor;
324
- const id = this.host?.parent.id;
325
- return id && facade.isVisibleBlock(id) ? [id, ...facade.ancestorsOf(id)] : [];
326
- }
327
- /** The chain with its types. */
312
+ /**
313
+ * Where the host's block sits: it and its ancestors (none once it is not
314
+ * visible), each with its type and its parent's child ids.
315
+ */
328
316
  #place() {
329
317
  const { facade } = this.edytor;
330
- return this.#chain()
331
- .map((id) => `${id}:${facade.blockTypeOf(id)}`)
332
- .join('/');
333
- }
334
- /** Each chain member with its parent's child ids. */
335
- #siblings() {
336
- const { facade } = this.edytor;
337
- return this.#chain().map((id) => ({ id, kids: facade.childrenIds(facade.parentOf(id)) }));
318
+ const id = this.host?.parent.id;
319
+ const chain = id && facade.isVisibleBlock(id) ? [id, ...facade.ancestorsOf(id)] : [];
320
+ return chain.map((id) => ({
321
+ id,
322
+ type: facade.blockTypeOf(id),
323
+ kids: facade.childrenIds(facade.parentOf(id))
324
+ }));
338
325
  }
339
- /** A chain member moved among the siblings it had and still has (a same-parent move). */
340
- #reordered() {
341
- const [before, after] = [this.#order, (this.#order = this.#siblings())];
326
+ /**
327
+ * The host's block was re-placed since the last look: a chain member is
328
+ * another block or kind, or moved among the siblings it had and still
329
+ * has (a same-parent move).
330
+ */
331
+ #replaced() {
332
+ const [before, after] = [this.#where, (this.#where = this.#place())];
342
333
  const rank = (id, kids, other) => {
343
334
  const kept = new Set(other);
344
335
  return kids.filter((kid) => kept.has(kid)).indexOf(id);
345
336
  };
346
- return before.some(({ id, kids }, i) => {
347
- const now = after[i]?.kids ?? [];
348
- return rank(id, kids, now) !== rank(id, now, kids);
349
- });
337
+ return (before.length !== after.length ||
338
+ before.some(({ id, type, kids }, i) => {
339
+ const now = after[i];
340
+ return (now.id !== id ||
341
+ now.type !== type ||
342
+ rank(id, kids, now.kids) !== rank(id, now.kids, kids));
343
+ }));
350
344
  }
351
345
  /** The preview's position while it is live and whole in one visible block (not deleted with it). */
352
346
  #kept() {
@@ -379,17 +373,15 @@ export class Composition {
379
373
  const end = this.#region && facade.resolveAnchor(this.#region.end);
380
374
  if (!start || !end || !this.#own.size)
381
375
  return [];
382
- const spans = start.blockId === end.blockId
383
- ? [{ blockId: start.blockId, from: start.offset, to: end.offset }]
384
- : [
385
- { blockId: start.blockId, from: start.offset, to: facade.displayLength(start.blockId) },
386
- { blockId: end.blockId, from: 0, to: end.offset }
387
- ];
388
376
  const units = [];
389
- for (const { blockId, from, to } of spans)
390
- for (let offset = from; offset < to; offset++)
377
+ for (const { blockId, offset: from } of start.blockId === end.blockId
378
+ ? [start]
379
+ : [start, end]) {
380
+ const to = blockId === end.blockId ? end.offset : facade.displayLength(blockId);
381
+ for (let offset = blockId === start.blockId ? from : 0; offset < to; offset++)
391
382
  if (this.#own.has(this.#unit(blockId, offset)))
392
383
  units.push({ blockId, offset });
384
+ }
393
385
  return units;
394
386
  }
395
387
  /** Delete the preview's live units through the facade's text delete, one run each, last first; foreign units stay. */
@@ -451,15 +443,12 @@ export class Composition {
451
443
  const um = this.edytor.undoManager;
452
444
  if (!um || this.#item)
453
445
  return write();
454
- const record = ({ stackItem }) => (this.#item ??= stackItem);
455
- um.on('stack-item-added', record);
456
- um.on('stack-item-updated', record);
446
+ const off = um.observe(({ stackItem }) => (this.#item ??= stackItem));
457
447
  try {
458
448
  return write();
459
449
  }
460
450
  finally {
461
- um.off('stack-item-added', record);
462
- um.off('stack-item-updated', record);
451
+ off();
463
452
  }
464
453
  }
465
454
  /** The one ending: `value` replaces the preview (a commit shown to hooks), '' deletes it. */
@@ -471,7 +460,7 @@ export class Composition {
471
460
  const { edytor } = this;
472
461
  const { dispatcher, selection } = edytor;
473
462
  // A command that moved the caret out of the region keeps it there.
474
- const { startText: moved, yStart: movedAt } = selection.state;
463
+ const { startText: moved, yStart: movedAt } = selection.textRange();
475
464
  const keep = this.#interrupted && moved && !this.covers(moved, movedAt);
476
465
  this.#tail = this.host;
477
466
  this.#ended = now();
@@ -482,13 +471,15 @@ export class Composition {
482
471
  this.#hold();
483
472
  if (at && value) {
484
473
  const text = at.text;
485
- const payload = { value, start: at.offset, end: at.offset, marks: this.marks };
486
- dispatcher.run('insertFromComposition', () => dispatcher.dispatch('insertText', payload, { block: text.parent, text }, (p) => {
474
+ const args = [text.parent.id, text.segStart + at.offset, value, this.marks];
475
+ const prepare = (a) => edytor.facade.prepare.insertText(...a);
476
+ // The preview goes first, in the command: the insertion is prepared over what it leaves.
477
+ dispatcher.run('insertFromComposition', () => dispatcher.dispatch('insertText', args, { block: text.parent, text }, (a) => {
487
478
  this.#erase();
488
- text.insertAt(p.start, p.value, p.marks ?? this.marks);
479
+ dispatcher.write(prepare(a));
489
480
  if (selection.pending)
490
481
  selection.stage(undefined);
491
- }));
482
+ }, prepare));
492
483
  }
493
484
  // A refused commit, or a cancel: the preview goes.
494
485
  if (!value || dispatcher.last?.status === 'refused')
@@ -498,7 +489,7 @@ export class Composition {
498
489
  if (text)
499
490
  this.#caret = { text, offset: Math.min(at.offset + typed, text.length) };
500
491
  }
501
- const { startText, yStart } = selection.state;
492
+ const { startText, yStart } = selection.textRange();
502
493
  const caret = keep && startText ? { text: startText, offset: yStart } : this.#caret;
503
494
  this.#release();
504
495
  if (caret)
@@ -512,8 +503,7 @@ export class Composition {
512
503
  this.host = null;
513
504
  // No host, no re-placement baseline: a stale one would end the next session
514
505
  // when its start target's replacement commits (`#rangeless`).
515
- this.#where = '';
516
- this.#order = [];
506
+ this.#where = [];
517
507
  this.#region = this.#merged = null;
518
508
  this.#own.clear();
519
509
  this.edytor.pin.release();
@@ -42,3 +42,9 @@ export declare const marksForInsertion: (text: Text, offset: number, { replaced,
42
42
  * is replaced: typing, a soft break, a plain paste, an IME's first preview.
43
43
  */
44
44
  export declare const insertionMarks: (edytor: Edytor, snapshot: Attempt) => Marks;
45
+ /**
46
+ * The marks of text a view inserts at offset `offset` of block `id` with
47
+ * none named (`edytor.insertText(id, offset, text)`): the caret's pending
48
+ * marks when it sits there, else the neighbours' (`marksForInsertion`).
49
+ */
50
+ export declare const insertionMarksAt: (edytor: Edytor, id: string, offset: number) => Marks;
@@ -9,9 +9,10 @@ const commonMarks = (parts) => {
9
9
  };
10
10
  /** The side the selection admitted for a caret at `text`/`offset`, if it sits there. */
11
11
  export const admittedSide = (text, offset) => {
12
- const state = text.edytor.selection.state;
13
- return state.isCollapsed && state.startText === text && state.yStart === offset
14
- ? state.edge
12
+ const { selection } = text.edytor;
13
+ const { startText, yStart } = selection.textRange();
14
+ return selection.projection.isCollapsed && startText === text && yStart === offset
15
+ ? selection.edge
15
16
  : undefined;
16
17
  };
17
18
  export const marksForInsertion = (text, offset, { replaced, side = admittedSide(text, offset), pending } = {}) => {
@@ -51,3 +52,16 @@ export const insertionMarks = (edytor, snapshot) => {
51
52
  pending: edytor.selection.pending
52
53
  });
53
54
  };
55
+ /**
56
+ * The marks of text a view inserts at offset `offset` of block `id` with
57
+ * none named (`edytor.insertText(id, offset, text)`): the caret's pending
58
+ * marks when it sits there, else the neighbours' (`marksForInsertion`).
59
+ */
60
+ export const insertionMarksAt = (edytor, id, offset) => {
61
+ const at = edytor.idToBlock.get(id)?.textAtOffset(offset);
62
+ if (!at)
63
+ return {};
64
+ const { caret, pending } = edytor.selection;
65
+ const here = caret?.block.id === id && caret.offset === offset;
66
+ return marksForInsertion(at.text, at.offset, { pending: here ? pending : undefined });
67
+ };
@@ -15,8 +15,9 @@
15
15
  import { Block } from '../block/block.svelte.js';
16
16
  import { InlineBlock } from '../block/inlineBlock.svelte.js';
17
17
  import { Text } from '../text/text.svelte.js';
18
- import type { ContentItem, DocChange } from '../crdt/index.js';
18
+ import type { ContentItem, Destination, DocChange } from '../crdt/index.js';
19
19
  import type { Edytor } from '../edytor.svelte.js';
20
+ import type { JSONText } from '../utils/json.js';
20
21
  export type TextRunItem = {
21
22
  text: string;
22
23
  marks?: Record<string, unknown>;
@@ -36,6 +37,14 @@ export type ContentPart = {
36
37
  };
37
38
  /** Segments and atoms, alternating, starting and ending with a segment. */
38
39
  export declare const contentParts: (items: readonly ContentItem[]) => ContentPart[];
40
+ /**
41
+ * A text segment's items as `JSONText` runs (`text.value`): empty items
42
+ * dropped, adjacent runs with the same marks joined, each run's marks a
43
+ * copy (none when it has no mark).
44
+ */
45
+ export declare const segmentJSON: (items: readonly TextRunItem[]) => JSONText[];
46
+ /** The destination right after `block` among its siblings (`after: false`, right before it). */
47
+ export declare const siblingSlot: (block: Block, after?: boolean) => Destination;
39
48
  export declare class Handles {
40
49
  #private;
41
50
  private edytor;
@@ -38,7 +38,35 @@ export const contentParts = (items) => {
38
38
  close();
39
39
  return parts;
40
40
  };
41
+ /**
42
+ * A text segment's items as `JSONText` runs (`text.value`): empty items
43
+ * dropped, adjacent runs with the same marks joined, each run's marks a
44
+ * copy (none when it has no mark).
45
+ */
46
+ export const segmentJSON = (items) => {
47
+ const out = [];
48
+ for (const { text, marks = {} } of items) {
49
+ if (!text)
50
+ continue;
51
+ const keys = Object.keys(marks);
52
+ const last = out.at(-1);
53
+ const held = last?.marks ?? {};
54
+ if (last && Object.keys(held).length === keys.length && keys.every((k) => held[k] === marks[k]))
55
+ last.text += text;
56
+ else
57
+ out.push(keys.length ? { text, marks: { ...marks } } : { text });
58
+ }
59
+ return out;
60
+ };
41
61
  const ROOT = contentParts([]);
62
+ /** The destination right after `block` among its siblings (`after: false`, right before it). */
63
+ export const siblingSlot = (block, after = true) => {
64
+ const parent = block.parent;
65
+ return {
66
+ parent: !parent || parent.isRoot ? null : parent.id,
67
+ index: block.index + Number(after)
68
+ };
69
+ };
42
70
  export class Handles {
43
71
  edytor;
44
72
  root;
@@ -53,8 +53,4 @@ export declare class History {
53
53
  * `refused`, `noop` on an empty stack, else `applied`.
54
54
  */
55
55
  replay: (command: "undo" | "redo") => "refused" | "noop" | "applied";
56
- /** Replay the top undo item; answers whether one was replayed. */
57
- undo: () => boolean;
58
- /** Replay the top redo item; answers whether one was replayed. */
59
- redo: () => boolean;
60
56
  }
@@ -1,4 +1,4 @@
1
- import { project, textSelection } from './selection.js';
1
+ import { project, sameEnds, textSelection } from './selection.js';
2
2
  const KEY = 'edytor:selection';
3
3
  /** A stack item's last dispatched write was an insertion (`wrote`): typing may continue it. */
4
4
  const INSERTING = 'edytor:inserting';
@@ -50,12 +50,10 @@ export class History {
50
50
  this.#open = { entry, gesture: this.edytor.intentSerial };
51
51
  };
52
52
  doc.on('beforeTransaction', begin);
53
- um.on('stack-item-added', record);
54
- um.on('stack-item-updated', record);
53
+ const off = um.observe(record);
55
54
  this.#off = () => {
56
55
  doc.off('beforeTransaction', begin);
57
- um.off('stack-item-added', record);
58
- um.off('stack-item-updated', record);
56
+ off();
59
57
  };
60
58
  };
61
59
  unbind = () => {
@@ -78,12 +76,16 @@ export class History {
78
76
  * moves) restores the one the user had.
79
77
  */
80
78
  began = (value) => {
81
- const { undoManager: um, transaction: key } = this.edytor;
82
- const item = um?.undoStack.at(-1);
83
- const entry = item && entries(item).get(key);
79
+ const { entry } = this.#top();
84
80
  if (entry)
85
81
  entry.before = value;
86
82
  };
83
+ /** The top undo item and this view's entry on it. */
84
+ #top() {
85
+ const { undoManager: um, transaction: key } = this.edytor;
86
+ const item = um?.undoStack.at(-1);
87
+ return { item, entry: item && entries(item).get(key) };
88
+ }
87
89
  /** The dispatcher wrote in this transaction: an insertion (`inserts`) or not. */
88
90
  wrote = (insertion) => {
89
91
  this.#inserting = (this.#inserting ?? true) && insertion;
@@ -97,16 +99,12 @@ export class History {
97
99
  * follows.
98
100
  */
99
101
  continues = (value) => {
100
- const { undoManager: um, transaction: key, facade } = this.edytor;
101
- const item = um?.undoStack.at(-1);
102
- if (item?.meta.get(INSERTING) !== true)
103
- return false;
104
- const after = item?.meta.get(KEY)?.get(key)?.after;
105
- if (after?.kind !== 'text' || value.kind !== 'text')
102
+ const { item, entry } = this.#top();
103
+ const after = entry?.after;
104
+ if (item?.meta.get(INSERTING) !== true || after?.kind !== 'text' || value.kind !== 'text')
106
105
  return false;
107
- const [a, b] = [project(after, facade), project(value, facade)];
108
- const at = (p, q) => p !== null && q !== null && p.block === q.block && p.offset === q.offset;
109
- return at(a.start, b.start) && at(a.end, b.end);
106
+ const a = project(after, this.edytor.facade);
107
+ return !!a.start && sameEnds(a, project(value, this.edytor.facade));
110
108
  };
111
109
  /**
112
110
  * Replay the top undo (redo) item, under the dispatcher's admission (a
@@ -114,10 +112,6 @@ export class History {
114
112
  * `refused`, `noop` on an empty stack, else `applied`.
115
113
  */
116
114
  replay = (command) => !this.edytor.dispatcher.permits() ? 'refused' : this.#run(command) ? 'applied' : 'noop';
117
- /** Replay the top undo item; answers whether one was replayed. */
118
- undo = () => this.replay('undo') === 'applied';
119
- /** Replay the top redo item; answers whether one was replayed. */
120
- redo = () => this.replay('redo') === 'applied';
121
115
  #run(command) {
122
116
  const { undoManager: um, transaction: key, selection, facade } = this.edytor;
123
117
  this.#open = null;
@@ -18,111 +18,102 @@ const matchAtEnd = (find, subject) => {
18
18
  export const inputRulesHook = (edytor, rules) => {
19
19
  /** A rule's replacement, or the typed text after it declined, is running: no rule runs on its writes. */
20
20
  let running = false;
21
- /** The typed text lands as typed, the caret after it. */
22
- const typeAsIs = (text, payload, at) => {
23
- text.insertText(payload);
24
- edytor.dispatcher.caret(text, at + payload.value.length);
25
- };
26
21
  return (change) => {
22
+ const { dispatcher, facade, selection } = edytor;
27
23
  if (running || change.operation !== 'insertText' || !rules.length)
28
24
  return;
29
25
  // Typed text only: a paste or a drop (a URL pasted at the caret) completes no rule.
30
- if (edytor.dispatcher.command?.startsWith('insertFrom'))
26
+ if (dispatcher.command?.startsWith('insertFrom'))
31
27
  return;
32
28
  const { payload, block, prevent, text } = change;
33
- const caret = edytor.selection.caret;
34
- const { startText, yStart } = edytor.selection.state;
29
+ const [, offset, value] = payload;
30
+ const { startText, yStart } = selection.textRange();
35
31
  // Only text typed at the caret: an insertion elsewhere completes no rule.
36
- if (!caret || !startText || text !== startText || caret.block.id !== block.id)
32
+ if (!selection.caret || !text || text !== startText)
37
33
  return;
38
- if ((payload.start ?? yStart) !== yStart || (payload.end ?? yStart) !== yStart)
34
+ if (offset !== text.segStart + yStart)
39
35
  return;
40
- if (!payload.value || inCodeLines(edytor, block))
36
+ if (!value || inCodeLines(edytor, block))
41
37
  return;
42
- const before = startText.stringContent.slice(0, yStart);
43
- const subject = before + payload.value;
44
- // The first rule that matches, with the typed text inside its match.
45
- const first = rules.findIndex((rule) => {
38
+ const before = text.stringContent.slice(0, yStart);
39
+ const subject = before + value;
40
+ // The rules that match, with the typed text inside their match.
41
+ const matches = rules.flatMap((rule) => {
46
42
  const match = matchAtEnd(rule.find, subject);
47
- return !!match && match.index <= before.length;
43
+ return match && match.index <= before.length ? [{ rule, match }] : [];
48
44
  });
49
- if (first === -1)
45
+ if (!matches.length)
50
46
  return;
47
+ /** The typed text lands as typed, the caret after it. */
48
+ const typeAsIs = () => {
49
+ edytor.insertText(...payload);
50
+ dispatcher.caret(text, yStart + value.length);
51
+ };
52
+ /**
53
+ * Run `rule` over `match`: whether it wrote, or `null` when it declined
54
+ * (the next rule is asked).
55
+ */
56
+ const apply = (rule, match) => {
57
+ /** The match's start in the segment; the match in the block, `from` to the caret. */
58
+ const start = match.index;
59
+ const from = text.segStart + start;
60
+ const to = text.segStart + yStart;
61
+ let removed = null;
62
+ /** Remove the match in the same plan as `then`'s first operation: `ctx.remove`. */
63
+ const remove = (then) => {
64
+ const last = dispatcher.last;
65
+ if (to > from) {
66
+ const removal = facade.prepare.deleteText(block.id, from, to - from);
67
+ const run = dispatcher.lead(removal, () => then?.());
68
+ // Nothing took the lead: the matched text goes on its own, unless `then` declined.
69
+ if (!run.taken && run.out !== false && text.index !== -1)
70
+ edytor.deleteText(block.id, from, to - from);
71
+ }
72
+ else
73
+ dispatcher.alone(() => then?.());
74
+ removed = dispatcher.last !== last && dispatcher.last?.status === 'applied';
75
+ return removed;
76
+ };
77
+ const ctx = {
78
+ edytor,
79
+ block,
80
+ from,
81
+ to,
82
+ typed: value,
83
+ caret: (offset) => void dispatcher.caret({ block, offset }),
84
+ remove
85
+ };
86
+ const last = dispatcher.last;
87
+ // Whatever the rule writes is a step of its own, even when no removal leads it.
88
+ const out = dispatcher.alone(() => rule.replace(match, ctx));
89
+ if (typeof out === 'string') {
90
+ const written = remove(() => dispatcher.alone(() => edytor.insertText(block.id, from, out)));
91
+ if (written)
92
+ dispatcher.caret({ block, offset: from + out.length });
93
+ return written;
94
+ }
95
+ if (out === false || out === null)
96
+ return removed;
97
+ if (removed !== null)
98
+ return removed;
99
+ // Written without `remove`: what its own commands did decides.
100
+ if (dispatcher.last !== last)
101
+ return dispatcher.last?.status === 'applied';
102
+ return out === true ? true : null;
103
+ };
51
104
  prevent(() => {
52
105
  running = true;
53
106
  try {
54
- for (const rule of rules.slice(first)) {
55
- const match = matchAtEnd(rule.find, subject);
56
- if (!match || match.index > before.length)
57
- continue;
58
- const written = apply(rule, match, startText, block, yStart, caret.offset, payload);
59
- if (written !== null) {
60
- if (!written)
61
- typeAsIs(startText, payload, yStart);
62
- return;
63
- }
107
+ for (const { rule, match } of matches) {
108
+ const written = apply(rule, match);
109
+ if (written !== null)
110
+ return written || typeAsIs();
64
111
  }
65
- typeAsIs(startText, payload, yStart);
112
+ typeAsIs();
66
113
  }
67
114
  finally {
68
115
  running = false;
69
116
  }
70
117
  });
71
118
  };
72
- /**
73
- * Run `rule` over `match`: whether it wrote, or `null` when it declined
74
- * (the next rule is asked).
75
- */
76
- function apply(rule, match, text, block, yStart, caretOffset, payload) {
77
- const { dispatcher, facade } = edytor;
78
- /** The match's start in the segment, and in the block. */
79
- const start = match.index;
80
- const from = caretOffset - (yStart - start);
81
- const to = caretOffset;
82
- let removed = null;
83
- /** Remove the match in the same plan as `then`'s first operation: `ctx.remove`. */
84
- const removeMatch = (then) => {
85
- const last = dispatcher.last;
86
- if (to > from) {
87
- const removal = facade.prepare.deleteText(block.id, from, to - from);
88
- const run = dispatcher.lead(removal, () => then?.());
89
- // Nothing took the lead: the matched text goes on its own, unless `then` declined.
90
- if (!run.taken && run.out !== false && text.index !== -1)
91
- block.deleteContentAtRange({
92
- start: [text.index, start],
93
- end: [text.index, yStart]
94
- });
95
- }
96
- else
97
- dispatcher.alone(() => then?.());
98
- removed = dispatcher.last !== last && dispatcher.last?.status === 'applied';
99
- return removed;
100
- };
101
- const ctx = {
102
- edytor,
103
- block,
104
- from,
105
- to,
106
- typed: payload.value,
107
- caret: (offset) => void dispatcher.caret({ block, offset }),
108
- remove: removeMatch
109
- };
110
- const last = dispatcher.last;
111
- // Whatever the rule writes is a step of its own, even when no removal leads it.
112
- const out = dispatcher.alone(() => rule.replace(match, ctx));
113
- if (typeof out === 'string') {
114
- const written = removeMatch(() => dispatcher.alone(() => text.insertText({ value: out, start, end: start })));
115
- if (written)
116
- dispatcher.caret({ block, offset: from + out.length });
117
- return written;
118
- }
119
- if (out === false || out === null)
120
- return removed ?? null;
121
- if (removed !== null)
122
- return removed;
123
- // Written without `remove`: what its own commands did decides.
124
- if (dispatcher.last !== last)
125
- return dispatcher.last?.status === 'applied';
126
- return out === true ? true : null;
127
- }
128
119
  };
@@ -23,6 +23,7 @@ export type Modifiers = {
23
23
  /** A chord: a key, after up to three modifiers in any order (matched case-insensitively). */
24
24
  export type HotKeyCombination = Key | `${Modifiers}+${Key}`;
25
25
  export declare class Keymap {
26
+ #private;
26
27
  private edytor;
27
28
  /** chord → bindings in precedence order. */
28
29
  private table;
@@ -30,12 +31,6 @@ export declare class Keymap {
30
31
  offered: string | null;
31
32
  get isMac(): boolean;
32
33
  constructor(edytor: Edytor, consumer?: EdytorOptions['hotkeys'], plugins?: InitializedPlugin[]);
33
- /**
34
- * A keyboard event's chord: `mod` is Cmd on Apple and Ctrl elsewhere; on
35
- * Apple bare Ctrl stays `ctrl` (the Emacs rows); a reverse tab is Shift+Tab;
36
- * the space bar is `space`.
37
- */
38
- chordOf: (event: KeyboardEvent, key?: string) => string;
39
34
  /** Offer a keydown to its bindings (the produced key first, then the layout key). */
40
35
  handle: (event: KeyboardEvent) => boolean;
41
36
  /** Run `chord`'s bindings in precedence order until one claims it. */