edytor 1.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +21 -39
  2. package/dist/block/block.svelte.d.ts +11 -84
  3. package/dist/block/block.svelte.js +30 -134
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +11 -9
  9. package/dist/block/inlineBlock.svelte.js +18 -21
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +25 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/awarenessSelection.d.ts +22 -1
  49. package/dist/collaboration/awarenessSelection.js +42 -0
  50. package/dist/collaboration/comments/client.d.ts +2 -2
  51. package/dist/collaboration/comments/client.js +1 -1
  52. package/dist/collaboration/history/index.d.ts +5 -5
  53. package/dist/collaboration/history/index.js +5 -5
  54. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  55. package/dist/collaboration/history/panel.svelte.js +223 -0
  56. package/dist/collaboration/providers.d.ts +12 -3
  57. package/dist/collaboration/providers.js +5 -4
  58. package/dist/components/Block.svelte +42 -56
  59. package/dist/components/Block.svelte.d.ts +7 -5
  60. package/dist/components/Content.svelte +1 -5
  61. package/dist/components/Edytor.svelte +82 -99
  62. package/dist/components/Edytor.svelte.d.ts +16 -13
  63. package/dist/components/InlineBlock.svelte +1 -1
  64. package/dist/components/Ranges.svelte +96 -0
  65. package/dist/components/Ranges.svelte.d.ts +19 -0
  66. package/dist/components/Suggestion.svelte +3 -2
  67. package/dist/components/Text.svelte +2 -5
  68. package/dist/components/Text.svelte.d.ts +1 -1
  69. package/dist/crdt/admission.d.ts +2 -9
  70. package/dist/crdt/admission.js +3 -9
  71. package/dist/crdt/attribution/attribution.d.ts +11 -72
  72. package/dist/crdt/attribution/attribution.js +5 -52
  73. package/dist/crdt/attribution/block.d.ts +0 -78
  74. package/dist/crdt/attribution/block.js +1 -144
  75. package/dist/crdt/data.d.ts +18 -13
  76. package/dist/crdt/data.js +49 -71
  77. package/dist/crdt/doc/anchors.js +4 -4
  78. package/dist/crdt/doc/content.d.ts +5 -1
  79. package/dist/crdt/doc/content.js +3 -1
  80. package/dist/crdt/doc/delete.d.ts +1 -0
  81. package/dist/crdt/doc/funnel.d.ts +0 -23
  82. package/dist/crdt/doc/funnel.js +34 -85
  83. package/dist/crdt/doc/gate.d.ts +8 -9
  84. package/dist/crdt/doc/gate.js +7 -17
  85. package/dist/crdt/doc/history.d.ts +87 -14
  86. package/dist/crdt/doc/history.js +334 -149
  87. package/dist/crdt/doc/layout.d.ts +0 -1
  88. package/dist/crdt/doc/layout.js +2 -3
  89. package/dist/crdt/doc/meta.d.ts +4 -4
  90. package/dist/crdt/doc/meta.js +10 -21
  91. package/dist/crdt/doc/moves.d.ts +4 -4
  92. package/dist/crdt/doc/moves.js +5 -5
  93. package/dist/crdt/doc/plan.d.ts +2 -0
  94. package/dist/crdt/doc/plan.js +2 -0
  95. package/dist/crdt/doc/reads.d.ts +8 -5
  96. package/dist/crdt/doc/reads.js +49 -50
  97. package/dist/crdt/doc/seed.d.ts +15 -6
  98. package/dist/crdt/doc/seed.js +27 -26
  99. package/dist/crdt/doc/split-merge.d.ts +1 -3
  100. package/dist/crdt/doc/split-merge.js +4 -5
  101. package/dist/crdt/doc/steps.d.ts +3 -7
  102. package/dist/crdt/doc/steps.js +20 -9
  103. package/dist/crdt/doc/types.d.ts +0 -10
  104. package/dist/crdt/document.d.ts +32 -115
  105. package/dist/crdt/document.js +216 -302
  106. package/dist/crdt/edytor-doc.d.ts +689 -90
  107. package/dist/crdt/edytor-doc.js +74 -149
  108. package/dist/crdt/engine-api.d.ts +15 -47
  109. package/dist/crdt/engine.d.ts +7 -17
  110. package/dist/crdt/engine.js +9 -19
  111. package/dist/crdt/flow.d.ts +9 -37
  112. package/dist/crdt/flow.js +260 -238
  113. package/dist/crdt/index.d.ts +32 -85
  114. package/dist/crdt/index.js +21 -47
  115. package/dist/crdt/operations.d.ts +24 -33
  116. package/dist/crdt/operations.js +8 -17
  117. package/dist/crdt/placement/display.d.ts +0 -2
  118. package/dist/crdt/placement/display.js +0 -15
  119. package/dist/crdt/placement/model.d.ts +160 -12
  120. package/dist/crdt/placement/model.js +413 -414
  121. package/dist/crdt/placement/rank.d.ts +1 -5
  122. package/dist/crdt/placement/rank.js +28 -38
  123. package/dist/crdt/props.d.ts +32 -0
  124. package/dist/crdt/props.js +172 -0
  125. package/dist/crdt/protocol.d.ts +4 -5
  126. package/dist/crdt/protocol.js +3 -4
  127. package/dist/crdt/protocols/awareness.d.ts +3 -7
  128. package/dist/crdt/protocols/awareness.js +17 -33
  129. package/dist/crdt/protocols/envelope.d.ts +9 -29
  130. package/dist/crdt/protocols/envelope.js +8 -25
  131. package/dist/crdt/protocols/sync.d.ts +15 -30
  132. package/dist/crdt/protocols/sync.js +27 -89
  133. package/dist/crdt/providers/bound.d.ts +3 -1
  134. package/dist/crdt/providers/bound.js +3 -1
  135. package/dist/crdt/providers/container.d.ts +11 -17
  136. package/dist/crdt/providers/container.js +39 -27
  137. package/dist/crdt/providers/index.d.ts +34 -6
  138. package/dist/crdt/providers/index.js +106 -111
  139. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  140. package/dist/crdt/providers/indexeddb.js +29 -90
  141. package/dist/crdt/providers/room.d.ts +58 -2
  142. package/dist/crdt/providers/room.js +38 -21
  143. package/dist/crdt/providers/websocket.d.ts +1 -1
  144. package/dist/crdt/providers/websocket.js +3 -4
  145. package/dist/crdt/purge.d.ts +2 -2
  146. package/dist/crdt/purge.js +69 -6
  147. package/dist/crdt/rangeDelete.d.ts +4 -42
  148. package/dist/crdt/rangeDelete.js +7 -6
  149. package/dist/crdt/restore.d.ts +21 -1
  150. package/dist/crdt/restore.js +54 -59
  151. package/dist/crdt/schema.d.ts +2 -2
  152. package/dist/crdt/schema.js +4 -5
  153. package/dist/crdt/semantics.d.ts +10 -15
  154. package/dist/crdt/semantics.js +22 -21
  155. package/dist/crdt/storage.d.ts +7 -13
  156. package/dist/crdt/storage.js +10 -24
  157. package/dist/crdt/structs.d.ts +42 -47
  158. package/dist/crdt/structs.js +76 -67
  159. package/dist/crdt/tables.d.ts +9 -0
  160. package/dist/crdt/tables.js +20 -0
  161. package/dist/crdt/text/delete-index.d.ts +0 -13
  162. package/dist/crdt/text/delete-index.js +7 -14
  163. package/dist/crdt/text/deletes.d.ts +9 -22
  164. package/dist/crdt/text/deletes.js +11 -74
  165. package/dist/crdt/text/index/cache.js +3 -3
  166. package/dist/crdt/text/index/fold.d.ts +1 -2
  167. package/dist/crdt/text/index/fold.js +15 -10
  168. package/dist/crdt/text/index/layout.d.ts +0 -10
  169. package/dist/crdt/text/index/layout.js +6 -20
  170. package/dist/crdt/text/index/records.js +2 -1
  171. package/dist/crdt/text/index/report.js +5 -6
  172. package/dist/crdt/text/index/shared.d.ts +11 -4
  173. package/dist/crdt/text/index/shared.js +8 -7
  174. package/dist/crdt/text/index/state.d.ts +3 -33
  175. package/dist/crdt/text/index/state.js +2 -4
  176. package/dist/crdt/text/model.d.ts +82 -2
  177. package/dist/crdt/text/model.js +344 -354
  178. package/dist/crdt/text/rows.d.ts +0 -2
  179. package/dist/crdt/text/rows.js +0 -11
  180. package/dist/crdt/text/runs.d.ts +6 -3
  181. package/dist/crdt/text/runs.js +132 -137
  182. package/dist/crdt/text/streams.d.ts +1 -1
  183. package/dist/crdt/text/streams.js +1 -1
  184. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  185. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  186. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  187. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  188. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  189. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  190. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  191. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  193. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  194. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  195. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  196. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  197. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  198. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  199. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  200. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  201. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  202. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  203. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  204. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  205. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  206. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  207. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  208. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  209. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  211. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  213. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  214. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  216. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  217. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  218. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  219. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  220. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  221. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  222. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  223. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  224. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  225. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  226. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  227. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  228. package/dist/dnd/autoScroll.js +1 -2
  229. package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
  230. package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
  231. package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
  232. package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
  233. package/dist/dnd/placement.d.ts +200 -0
  234. package/dist/dnd/placement.js +426 -0
  235. package/dist/dnd/pragmatic.d.ts +4 -22
  236. package/dist/dnd/pragmatic.js +7 -26
  237. package/dist/dnd/track.d.ts +14 -0
  238. package/dist/dnd/track.js +55 -0
  239. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  242. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  243. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  302. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  303. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  304. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  305. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  306. package/dist/edytor.svelte.d.ts +46 -63
  307. package/dist/edytor.svelte.js +126 -181
  308. package/dist/events/beforeInputCommands.d.ts +6 -11
  309. package/dist/events/beforeInputCommands.js +189 -181
  310. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  311. package/dist/events/beforeInputDeleteCommands.js +153 -204
  312. package/dist/events/domTextOffset.d.ts +9 -9
  313. package/dist/events/domTextOffset.js +20 -48
  314. package/dist/events/events.utils.d.ts +0 -2
  315. package/dist/events/events.utils.js +0 -4
  316. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  317. package/dist/events/nativeInteractiveControl.js +28 -56
  318. package/dist/events/onBeforeInput.d.ts +6 -1
  319. package/dist/events/onBeforeInput.js +207 -331
  320. package/dist/events/onCopy.js +1 -5
  321. package/dist/events/onDrop.d.ts +7 -1
  322. package/dist/events/onDrop.js +64 -78
  323. package/dist/events/onFocus.d.ts +9 -4
  324. package/dist/events/onFocus.js +45 -67
  325. package/dist/events/onInput.d.ts +8 -4
  326. package/dist/events/onInput.js +34 -147
  327. package/dist/events/onKeyDown.js +55 -122
  328. package/dist/events/onPaste.d.ts +14 -1
  329. package/dist/events/onPaste.js +51 -76
  330. package/dist/index.d.ts +11 -15
  331. package/dist/index.js +3 -3
  332. package/dist/kinds.d.ts +4 -6
  333. package/dist/kinds.js +28 -27
  334. package/dist/labels.d.ts +83 -320
  335. package/dist/labels.js +181 -408
  336. package/dist/plugins/Chrome.svelte +29 -0
  337. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  338. package/dist/plugins/Control.svelte +23 -0
  339. package/dist/plugins/Control.svelte.d.ts +30 -0
  340. package/dist/plugins/anchored.svelte.d.ts +47 -0
  341. package/dist/plugins/anchored.svelte.js +73 -0
  342. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  343. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  344. package/dist/plugins/bands.svelte.d.ts +57 -0
  345. package/dist/plugins/bands.svelte.js +95 -0
  346. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  347. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  348. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
  349. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
  350. package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
  351. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  352. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  353. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
  354. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  355. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  356. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  358. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  359. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  360. package/dist/plugins/brand.d.ts +8 -0
  361. package/dist/plugins/brand.js +8 -0
  362. package/dist/plugins/chrome.d.ts +45 -38
  363. package/dist/plugins/chrome.js +59 -36
  364. package/dist/plugins/code/CodeHeader.svelte +8 -38
  365. package/dist/plugins/code/CodePlugin.svelte +53 -56
  366. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  367. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  368. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  369. package/dist/plugins/code/code.css +5 -117
  370. package/dist/plugins/code/header.svelte.d.ts +2 -11
  371. package/dist/plugins/code/header.svelte.js +11 -38
  372. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  373. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  374. package/dist/plugins/code/languages.d.ts +9 -22
  375. package/dist/plugins/code/languages.js +39 -128
  376. package/dist/plugins/columns/ColumnResize.svelte +16 -27
  377. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  378. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  379. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  380. package/dist/plugins/columns/columns.css +7 -26
  381. package/dist/plugins/columns/gaps.d.ts +7 -5
  382. package/dist/plugins/columns/gaps.js +11 -6
  383. package/dist/plugins/columns/resize.svelte.d.ts +17 -54
  384. package/dist/plugins/columns/resize.svelte.js +80 -173
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  389. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  393. package/dist/plugins/equation/EquationPlugin.svelte +109 -172
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.css +7 -0
  397. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  398. package/dist/plugins/equation/equation.svelte.js +20 -94
  399. package/dist/plugins/equation/katex.js +6 -9
  400. package/dist/plugins/fileDrop.d.ts +28 -0
  401. package/dist/plugins/fileDrop.js +116 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +6 -167
  407. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  408. package/dist/plugins/image/ImagePlugin.svelte +71 -151
  409. package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
  410. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  411. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  412. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  413. package/dist/plugins/image/controls.svelte.js +43 -212
  414. package/dist/plugins/image/image.css +17 -0
  415. package/dist/plugins/image/image.d.ts +0 -5
  416. package/dist/plugins/image/image.js +0 -3
  417. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  418. package/dist/plugins/image/toolbar.svelte.js +145 -0
  419. package/dist/plugins/index.d.ts +30 -26
  420. package/dist/plugins/index.js +28 -22
  421. package/dist/plugins/list.svelte.d.ts +128 -0
  422. package/dist/plugins/list.svelte.js +217 -0
  423. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  424. package/dist/plugins/markdownShortcuts.js +10 -9
  425. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  426. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  427. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  428. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  429. package/dist/plugins/marquee/marquee.js +4 -21
  430. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  431. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  432. package/dist/plugins/media/AudioPlugin.svelte +13 -88
  433. package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
  434. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  435. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  436. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  437. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  438. package/dist/plugins/media/EmptySlot.svelte +44 -0
  439. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  440. package/dist/plugins/media/FilePlugin.svelte +45 -113
  441. package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
  442. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  443. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  444. package/dist/plugins/media/SourceBlock.svelte +200 -0
  445. package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
  446. package/dist/plugins/media/UploadPreview.svelte +32 -0
  447. package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
  448. package/dist/plugins/media/VideoPlugin.svelte +14 -97
  449. package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
  450. package/dist/plugins/media/empty.svelte.d.ts +47 -46
  451. package/dist/plugins/media/empty.svelte.js +67 -60
  452. package/dist/plugins/media/media.d.ts +97 -44
  453. package/dist/plugins/media/media.js +77 -99
  454. package/dist/plugins/media/upload.css +23 -0
  455. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  456. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  457. package/dist/plugins/mention/MentionPlugin.svelte +84 -126
  458. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
  459. package/dist/plugins/mention/mention.css +6 -0
  460. package/dist/plugins/page/PageLink.svelte +54 -38
  461. package/dist/plugins/page/PagePlugin.svelte +20 -18
  462. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  463. package/dist/plugins/page/page.d.ts +35 -9
  464. package/dist/plugins/page/page.js +3 -4
  465. package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
  466. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
  467. package/dist/plugins/pageLink/pageLink.css +6 -0
  468. package/dist/plugins/planned.d.ts +10 -0
  469. package/dist/plugins/planned.js +12 -0
  470. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  471. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  472. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  473. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  474. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  475. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  476. package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
  477. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
  478. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  479. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  480. package/dist/plugins/richtext/body.js +2 -2
  481. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  482. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  483. package/dist/plugins/richtext/callouts.d.ts +15 -0
  484. package/dist/plugins/richtext/callouts.js +23 -0
  485. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  486. package/dist/plugins/richtext/controls.svelte.js +126 -0
  487. package/dist/plugins/richtext/richTextOperations.js +37 -28
  488. package/dist/plugins/richtext/richtext.css +6 -0
  489. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  490. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  491. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  492. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  493. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  494. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  495. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  496. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  497. package/dist/plugins/table/TableChrome.svelte +40 -124
  498. package/dist/plugins/table/TablePlugin.svelte +106 -168
  499. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  500. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  501. package/dist/plugins/table/chrome.svelte.js +340 -589
  502. package/dist/plugins/table/ops.d.ts +47 -0
  503. package/dist/plugins/table/ops.js +233 -0
  504. package/dist/plugins/table/table.css +16 -152
  505. package/dist/plugins/table/table.d.ts +15 -14
  506. package/dist/plugins/table/table.js +22 -16
  507. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  508. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  509. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  510. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  511. package/dist/plugins/toc/toc.d.ts +41 -10
  512. package/dist/plugins/toc/toc.js +2 -3
  513. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  514. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  515. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  516. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  517. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  518. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  519. package/dist/plugins/triggers/place.d.ts +0 -9
  520. package/dist/plugins/triggers/place.js +1 -17
  521. package/dist/plugins/triggers/triggers.d.ts +31 -9
  522. package/dist/plugins/triggers/triggers.js +82 -62
  523. package/dist/plugins/uploads.svelte.d.ts +55 -24
  524. package/dist/plugins/uploads.svelte.js +123 -50
  525. package/dist/plugins.d.ts +187 -66
  526. package/dist/selection/domSelection.d.ts +13 -4
  527. package/dist/selection/domSelection.js +110 -183
  528. package/dist/selection/pointer.svelte.d.ts +8 -10
  529. package/dist/selection/pointer.svelte.js +32 -73
  530. package/dist/selection/replaceSelection.d.ts +21 -22
  531. package/dist/selection/replaceSelection.js +60 -69
  532. package/dist/selection/selection.svelte.d.ts +5 -73
  533. package/dist/selection/selection.svelte.js +224 -542
  534. package/dist/selection/selection.utils.d.ts +34 -11
  535. package/dist/selection/selection.utils.js +128 -247
  536. package/dist/selection/visibility.d.ts +3 -8
  537. package/dist/selection/visibility.js +7 -5
  538. package/dist/session/announcer.svelte.d.ts +2 -1
  539. package/dist/session/announcer.svelte.js +7 -3
  540. package/dist/session/attempt.d.ts +43 -39
  541. package/dist/session/attempt.js +62 -55
  542. package/dist/session/bindings.js +117 -145
  543. package/dist/session/commands.d.ts +47 -22
  544. package/dist/session/commands.js +208 -208
  545. package/dist/session/composition.svelte.d.ts +2 -4
  546. package/dist/session/composition.svelte.js +55 -65
  547. package/dist/session/editing/text.d.ts +6 -0
  548. package/dist/session/editing/text.js +17 -3
  549. package/dist/session/handles.d.ts +10 -1
  550. package/dist/session/handles.js +28 -0
  551. package/dist/session/history.d.ts +0 -4
  552. package/dist/session/history.js +16 -21
  553. package/dist/session/inputRules.d.ts +6 -3
  554. package/dist/session/inputRules.js +78 -83
  555. package/dist/session/keymap.d.ts +1 -6
  556. package/dist/session/keymap.js +17 -20
  557. package/dist/session/moves.d.ts +43 -10
  558. package/dist/session/moves.js +101 -59
  559. package/dist/session/navigation.d.ts +10 -2
  560. package/dist/session/navigation.js +140 -172
  561. package/dist/session/ports.d.ts +2 -7
  562. package/dist/session/props.d.ts +25 -25
  563. package/dist/session/props.js +62 -159
  564. package/dist/session/selection.d.ts +4 -3
  565. package/dist/session/selection.js +5 -0
  566. package/dist/session/suggestions.svelte.d.ts +1 -1
  567. package/dist/session/suggestions.svelte.js +42 -47
  568. package/dist/session/uploads.d.ts +29 -0
  569. package/dist/session/uploads.js +10 -0
  570. package/dist/session/virtual.d.ts +3 -3
  571. package/dist/session/virtual.js +18 -40
  572. package/dist/surface/attributes.d.ts +1 -0
  573. package/dist/surface/attributes.js +3 -26
  574. package/dist/surface/cells.d.ts +5 -0
  575. package/dist/surface/cells.js +5 -0
  576. package/dist/surface/lines.d.ts +2 -2
  577. package/dist/surface/lines.js +1 -1
  578. package/dist/surface/observer.svelte.d.ts +3 -20
  579. package/dist/surface/observer.svelte.js +52 -72
  580. package/dist/surface/overlay.d.ts +41 -3
  581. package/dist/surface/overlay.js +92 -37
  582. package/dist/surface/pin.svelte.d.ts +5 -0
  583. package/dist/surface/pin.svelte.js +5 -0
  584. package/dist/surface/projector.svelte.d.ts +4 -6
  585. package/dist/surface/projector.svelte.js +42 -69
  586. package/dist/text/text.svelte.d.ts +14 -40
  587. package/dist/text/text.svelte.js +35 -51
  588. package/dist/text/wordBoundary.d.ts +19 -0
  589. package/dist/text/wordBoundary.js +29 -44
  590. package/dist/themes/notion.css +272 -106
  591. package/dist/utils/json.d.ts +3 -1
  592. package/dist/utils/json.js +52 -51
  593. package/dist/utils/listen.d.ts +8 -0
  594. package/dist/utils/listen.js +19 -0
  595. package/package.json +4 -5
  596. package/dist/block/block.utils.d.ts +0 -340
  597. package/dist/block/block.utils.js +0 -356
  598. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  599. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  600. package/dist/collaboration/history/panel.d.ts +0 -61
  601. package/dist/collaboration/history/panel.js +0 -3
  602. package/dist/components/SuggestionRanges.svelte +0 -58
  603. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  604. package/dist/crdt/doc/table.d.ts +0 -21
  605. package/dist/crdt/doc/table.js +0 -288
  606. package/dist/crdt/migration/generation.d.ts +0 -58
  607. package/dist/crdt/migration/generation.js +0 -70
  608. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  609. package/dist/crdt/migration/legacy-schema.js +0 -151
  610. package/dist/crdt/migration/migrate.d.ts +0 -56
  611. package/dist/crdt/migration/migrate.js +0 -227
  612. package/dist/crdt/nodes.d.ts +0 -121
  613. package/dist/crdt/nodes.js +0 -56
  614. package/dist/crdt/text/index/checks.d.ts +0 -15
  615. package/dist/crdt/text/index/checks.js +0 -156
  616. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  617. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  618. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  619. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  620. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  621. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  622. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  623. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  624. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  625. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  626. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  627. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  628. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  629. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  630. package/dist/edytor.utils.d.ts +0 -50
  631. package/dist/edytor.utils.js +0 -67
  632. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  633. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  634. package/dist/plugins/find/FindBar.svelte +0 -170
  635. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  636. package/dist/plugins/find/FindHighlights.svelte +0 -75
  637. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  638. package/dist/plugins/icons.d.ts +0 -2
  639. package/dist/plugins/icons.js +0 -63
  640. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  641. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  642. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  643. package/dist/plugins/image/empty.svelte.js +0 -83
  644. package/dist/plugins/keepInView.d.ts +0 -4
  645. package/dist/plugins/keepInView.js +0 -6
  646. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  647. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  648. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  649. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  650. package/dist/plugins/richtext/labels.d.ts +0 -9
  651. package/dist/plugins/richtext/labels.js +0 -7
  652. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  653. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  654. package/dist/plugins/table/dragPreview.d.ts +0 -29
  655. package/dist/plugins/table/dragPreview.js +0 -103
  656. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  657. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  658. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  659. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  660. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  661. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  662. package/dist/text/deltas.d.ts +0 -22
  663. package/dist/text/deltas.js +0 -46
  664. package/dist/text/text.utils.d.ts +0 -45
  665. package/dist/text/text.utils.js +0 -199
  666. /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
  667. /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
@@ -1,9 +1,8 @@
1
- import { InlineBlock } from '../block/inlineBlock.svelte.js';
2
- import { Text } from '../text/text.svelte.js';
3
- import { getNextGraphemeEnd, getPreviousGraphemeStart } from '../text/text.utils.js';
4
- import { getNextWordEndOffset, getPreviousWordStartOffset } from '../text/wordBoundary.js';
1
+ import { getNextGraphemeEnd, getNextWordEndOffset, getPreviousGraphemeStart, getPreviousWordStartOffset } from '../text/wordBoundary.js';
5
2
  import { getSelectedBlocksInDocumentOrder, shownText } from '../selection/replaceSelection.js';
3
+ import { atomSelection, segmentsOf } from './selection.js';
6
4
  import { untargeted } from './attempt.js';
5
+ import { siblingSlot } from './handles.js';
7
6
  /**
8
7
  * With no target (`untargeted`: the value is `none`, no gesture placed the
9
8
  * host's caret), a navigation key does nothing (Notion): it is claimed, so
@@ -14,65 +13,64 @@ export const stayWithoutTarget = (edytor, prevent) => {
14
13
  if (untargeted(edytor))
15
14
  prevent();
16
15
  };
16
+ /** An inline atom in a block's string. */
17
+ const ATOM = '';
18
+ /** A block's content as one string, each inline atom one `ATOM`. */
19
+ const stringOf = (edytor, block) => edytor.facade
20
+ .contentItems(block)
21
+ .map((item) => (item.kind === 'text' ? item.text : ATOM))
22
+ .join('');
17
23
  /** A block's stop at its edge in `dir` (its end going forward, its start going backward). */
18
- const edge = (block, dir) => {
19
- const texts = block.content.filter((part) => part instanceof Text);
20
- const text = dir > 0 ? texts.at(-1) : texts[0];
21
- return text ? { text, offset: dir > 0 ? text.length : 0 } : null;
22
- };
24
+ const edge = (edytor, block, dir) => ({
25
+ block,
26
+ offset: dir > 0 ? edytor.facade.displayLength(block) : 0
27
+ });
23
28
  /** The first displayable block after `from` in document order (`from` null: the document's edge). */
24
29
  const displayable = (edytor, from, dir) => {
25
30
  const ids = edytor.facade.order();
26
- const at = from ? ids.indexOf(from.id) : dir > 0 ? -1 : ids.length;
31
+ const at = from ? ids.indexOf(from) : dir > 0 ? -1 : ids.length;
27
32
  for (let i = at + dir; i >= 0 && i < ids.length; i += dir)
28
33
  if (edytor.selection.displayable(ids[i]))
29
- return edytor.idToBlock.get(ids[i]) ?? null;
34
+ return ids[i];
30
35
  return null;
31
36
  };
32
37
  /**
33
- * The next stop from `at`: a grapheme or word boundary inside its text, else
34
- * the near side of the text beyond the atom next to it, else the near edge of
35
- * the next displayable block.
38
+ * The next stop from `at`: a grapheme or word boundary inside its text (the
39
+ * run between the atoms around it), else the near side of the atom next to
40
+ * it, else the near edge of the next displayable block.
36
41
  */
37
- const step = (edytor, { text, offset }, dir, unit) => {
38
- const value = text.stringContent;
39
- if (dir > 0 ? offset < value.length : offset > 0) {
42
+ const step = (edytor, { block, offset }, dir, unit) => {
43
+ const value = stringOf(edytor, block);
44
+ const from = offset && value.lastIndexOf(ATOM, offset - 1) + 1;
45
+ const to = value.indexOf(ATOM, offset);
46
+ const text = value.slice(from, to < 0 ? undefined : to);
47
+ const at = offset - from;
48
+ if (dir > 0 ? at < text.length : at > 0) {
40
49
  const next = unit === 'word'
41
- ? (dir > 0 ? getNextWordEndOffset : getPreviousWordStartOffset)(value, offset)
42
- : (dir > 0 ? getNextGraphemeEnd : getPreviousGraphemeStart)(value, offset);
43
- if (next !== offset)
44
- return { text, offset: next };
50
+ ? (dir > 0 ? getNextWordEndOffset : getPreviousWordStartOffset)(text, at)
51
+ : (dir > 0 ? getNextGraphemeEnd : getPreviousGraphemeStart)(text, at);
52
+ if (next !== at)
53
+ return { block, offset: from + next };
45
54
  }
46
- const { content } = text.parent;
47
- const index = content.indexOf(text);
48
- const beyond = content[index + 2 * dir];
49
- if (content[index + dir] instanceof InlineBlock)
50
- return beyond instanceof Text ? { text: beyond, offset: dir > 0 ? 0 : beyond.length } : null;
51
- const block = displayable(edytor, text.parent, dir);
52
- return block && edge(block, -dir);
55
+ if (value[dir > 0 ? offset : offset - 1] === ATOM)
56
+ return { block, offset: offset + dir };
57
+ const next = displayable(edytor, block, dir);
58
+ return next ? edge(edytor, next, -dir) : null;
53
59
  };
54
- const compare = (a, b, edytor) => a.text === b.text
55
- ? a.offset - b.offset
56
- : a.text.parent === b.text.parent
57
- ? a.text.parent.content.indexOf(a.text) - b.text.parent.content.indexOf(b.text)
58
- : edytor.compareBlocks(a.text.parent, b.text.parent);
60
+ const compare = (edytor, a, b) => a.block === b.block ? a.offset - b.offset : edytor.facade.compare(a.block, b.block);
59
61
  /** Select `anchor` → `focus`: a caret, the one atom the range covers, or the range. */
60
62
  const select = (edytor, anchor, focus) => {
61
- const order = compare(anchor, focus, edytor);
62
- if (order === 0)
63
- return edytor.selection.setAtTextOffset(focus.text, focus.offset);
64
- const [start, end] = order < 0 ? [anchor, focus] : [focus, anchor];
65
- const { content } = start.text.parent;
66
- const index = content.indexOf(start.text);
67
- const atom = content[index + 1];
68
- if (atom instanceof InlineBlock &&
69
- content[index + 2] === end.text &&
70
- start.offset === start.text.length &&
71
- end.offset === 0)
72
- return edytor.selection.selectInlineBlock(atom, order > 0 ? 'after' : 'before');
73
- edytor.selection.setAtRange(start.text, start.offset, end.text, end.offset, {
74
- isReversed: order > 0
75
- });
63
+ const { selection } = edytor;
64
+ const order = compare(edytor, anchor, focus);
65
+ const [start, end] = order > 0 ? [focus, anchor] : [anchor, focus];
66
+ const atom = start.block === end.block && end.offset - start.offset === 1
67
+ ? segmentsOf(edytor.facade, start.block).find((part) => part.kind === 'inline' && part.start === start.offset)
68
+ : null;
69
+ if (atom?.kind === 'inline')
70
+ return selection.select(atomSelection(start.block, atom.id, order > 0 ? 'after' : 'before'));
71
+ const [from, to] = [selection.textAt(start), selection.textAt(end)];
72
+ if (from && to)
73
+ selection.selectText(from.text, from.offset, to.text, to.offset, order > 0);
76
74
  };
77
75
  /**
78
76
  * One apply step for `unit` in `dir` (`left`/`right`: visual). Answers whether
@@ -82,8 +80,9 @@ const select = (edytor, anchor, focus) => {
82
80
  */
83
81
  export const move = (edytor, unit, key, extend) => {
84
82
  const { selection } = edytor;
85
- const { value, state } = selection;
86
- if (value.kind === 'none' || !state.startText || !state.endText)
83
+ const { value, projection } = selection;
84
+ let { start, end } = projection;
85
+ if (value.kind === 'none' || !selection.textAt(start) || !selection.textAt(end))
87
86
  return false;
88
87
  if (unit === 'char' && value.kind === 'blocks')
89
88
  return false;
@@ -91,50 +90,55 @@ export const move = (edytor, unit, key, extend) => {
91
90
  // end (a list's items, a code block's lines, never a divider; a
92
91
  // member's own line, never an unselected child's).
93
92
  const blocks = value.kind === 'blocks' && getSelectedBlocksInDocumentOrder(edytor);
94
- let first = blocks
95
- ? blocks.map((block) => shownText(block, 'first')).find(Boolean)
96
- : state.startText;
97
- let last = blocks
98
- ? blocks.map((block) => shownText(block, 'last')).findLast(Boolean)
99
- : state.endText;
100
- if (!first || !last) {
93
+ if (blocks) {
94
+ const first = blocks.map((block) => shownText(block, 'first')).find(Boolean);
95
+ const last = blocks.map((block) => shownText(block, 'last')).findLast(Boolean);
96
+ if (first && last) {
97
+ start = { block: first.blockId, offset: first.segStart };
98
+ end = { block: last.blockId, offset: last.segStart + last.length };
99
+ }
101
100
  // Voids alone show no line: the blocks stay selected, except for the
102
101
  // document keys, whose target is the document's edge (`select` moves
103
102
  // an anchor left in a void beside it).
104
- if (unit !== 'doc')
103
+ else if (unit !== 'doc')
105
104
  return true;
106
- [first, last] = [state.startText, state.endText];
107
105
  }
108
- const start = { text: first, offset: blocks ? 0 : state.yStart };
109
- const end = { text: last, offset: blocks ? last.length : state.yEnd };
110
- const rtl = selection.rtl(state.isReversed ? start.text : end.text);
106
+ if (!start || !end)
107
+ return false;
108
+ const rtl = selection.rtl(selection.textAt(projection.isReversed ? start : end).text);
111
109
  const dir = typeof key === 'number' ? key : (key === 'right') !== rtl ? 1 : -1;
112
110
  // The focus moves; an atom is the range anchored on the side it came from,
113
111
  // a block selection on the side away from the key.
114
- const reversed = value.kind === 'atom' ? value.from === 'after' : blocks ? dir < 0 : state.isReversed;
112
+ const reversed = value.kind === 'atom' ? value.from === 'after' : blocks ? dir < 0 : projection.isReversed;
115
113
  const [anchor, focus] = reversed ? [end, start] : [start, end];
116
114
  const nodeBound = unit === 'char' && value.kind === 'text' && selection.hasNativeNodeSelection();
117
- if (!extend && (blocks || !state.isCollapsed) && unit !== 'line' && unit !== 'doc') {
115
+ if (!extend && (blocks || !projection.isCollapsed) && unit !== 'line' && unit !== 'doc') {
118
116
  if (unit === 'char' && value.kind === 'text' && !nodeBound)
119
117
  return false;
120
118
  const to = dir > 0 ? end : start;
121
119
  select(edytor, to, to);
122
120
  return true;
123
121
  }
122
+ const first = unit === 'doc' ? displayable(edytor, null, -dir) : null;
124
123
  let to = unit === 'line'
125
- ? edge(focus.text.parent, dir)
126
- : unit === 'doc'
127
- ? (() => {
128
- const block = displayable(edytor, null, -dir);
129
- return block && edge(block, dir);
130
- })()
131
- : step(edytor, focus, dir, unit);
132
- // Past a soft break the caret has two DOM positions (the break's node end,
133
- // the next line's start): Firefox's forward step only trades one for the
134
- // other, so that step is the editor's (a logical step: bidi never reorders
135
- // across a line break).
136
- const native = unit === 'char' && !nodeBound && to?.text === focus.text && value.kind === 'text';
137
- if (native && !(dir > 0 && focus.text.stringContent[focus.offset - 1] === '\n'))
124
+ ? edge(edytor, focus.block, dir)
125
+ : unit !== 'doc'
126
+ ? step(edytor, focus, dir, unit)
127
+ : first
128
+ ? edge(edytor, first, dir)
129
+ : null;
130
+ // A grapheme step inside the focus's text is the browser's, except past a
131
+ // soft break, where the caret has two DOM positions (the break's node
132
+ // end, the next line's start): Firefox's forward step only trades one for
133
+ // the other, so that step is the editor's (a logical step: bidi never
134
+ // reorders across a line break).
135
+ const text = stringOf(edytor, focus.block);
136
+ const native = unit === 'char' &&
137
+ !nodeBound &&
138
+ value.kind === 'text' &&
139
+ to?.block === focus.block &&
140
+ text[Math.min(to.offset, focus.offset)] !== ATOM;
141
+ if (native && !(dir > 0 && text[focus.offset - 1] === '\n'))
138
142
  return false;
139
143
  // A forward node-bound extension never rests on another block's first
140
144
  // stop (a derive maps that end back onto the previous block's end).
@@ -142,9 +146,8 @@ export const move = (edytor, unit, key, extend) => {
142
146
  extend &&
143
147
  to &&
144
148
  to.offset === 0 &&
145
- to.text === to.text.parent.content[0] &&
146
- to.text.parent !== anchor.text.parent &&
147
- compare(anchor, to, edytor) < 0)
149
+ to.block !== anchor.block &&
150
+ compare(edytor, anchor, to) < 0)
148
151
  to = step(edytor, to, 1, 'char');
149
152
  if (!to) {
150
153
  if (!nodeBound)
@@ -156,80 +159,38 @@ export const move = (edytor, unit, key, extend) => {
156
159
  select(edytor, extend ? anchor : to, to);
157
160
  return true;
158
161
  };
159
- /** A block's lines: its texts split at `\n` soft breaks (logical lines, not layout). */
160
- const linesOf = (block) => {
161
- const lines = [[]];
162
- for (const part of block.content) {
163
- if (!(part instanceof Text)) {
164
- lines.at(-1).push(null);
165
- continue;
166
- }
167
- let offset = 0;
168
- part.stringContent.split('\n').forEach((line, index) => {
169
- if (index)
170
- lines.push([]);
171
- lines.at(-1).push({ text: part, offset, length: line.length });
172
- offset += line.length + 1;
173
- });
174
- }
175
- return lines;
176
- };
177
- /** The stop at `column` of a line; past its end, the end of its last text. */
178
- const onLine = (line, column) => {
179
- let rest = Math.max(column, 0);
180
- let last = null;
181
- for (const piece of line) {
182
- if (!piece) {
183
- rest = Math.max(0, rest - 1);
184
- continue;
185
- }
186
- last = piece;
187
- if (piece.length === 0 && rest > 0)
188
- continue;
189
- if (rest <= piece.length)
190
- return { text: piece.text, offset: piece.offset + rest };
191
- rest -= piece.length;
192
- }
193
- return last && { text: last.text, offset: last.offset + last.length };
194
- };
195
- const islandOf = (edytor, block) => [block.id, ...edytor.facade.ancestorsOf(block.id)].find((id) => edytor.facade.isIsland(id));
196
- /** The line holding `at` and its column there. */
197
- const locate = (lines, at) => {
198
- for (const [index, line] of lines.entries()) {
199
- let column = 0;
200
- for (const piece of line) {
201
- if (piece?.text === at.text &&
202
- at.offset >= piece.offset &&
203
- at.offset <= piece.offset + piece.length)
204
- return { index, column: column + at.offset - piece.offset };
205
- column += piece ? piece.length : 1;
206
- }
207
- }
208
- return null;
162
+ /** A block's lines (split at its `\n` soft breaks: logical lines, not layout), as start and end offsets. */
163
+ const linesOf = (edytor, block) => {
164
+ let at = 0;
165
+ return stringOf(edytor, block)
166
+ .split('\n')
167
+ .map((line) => [at, (at += line.length + 1) - 1]);
209
168
  };
169
+ const islandOf = (edytor, block) => [block, ...edytor.facade.ancestorsOf(block)].find((id) => edytor.facade.isIsland(id));
210
170
  /**
211
- * The stop one line from `from` in `dir` at `goal` (default: its own column):
212
- * the next line of its block, else the facing line of the next displayable
213
- * non-void block inside the same island, else its own block's edge. Every
214
- * line holds a text, so `onLine` always finds a stop.
171
+ * The stop one line from `from` in `dir` at `goal` (default: its own column;
172
+ * an atom is one column): the next line of its block, else the facing line
173
+ * of the next displayable non-void block inside the same island, else its
174
+ * own block's edge.
215
175
  */
216
176
  const lineStop = (edytor, from, dir, goal) => {
217
- const block = from.text.parent;
218
- const lines = linesOf(block);
219
- const at = locate(lines, from);
220
- if (!at)
177
+ const lines = linesOf(edytor, from.block);
178
+ const index = lines.findIndex(([start, end]) => from.offset >= start && from.offset <= end);
179
+ if (index < 0)
221
180
  return null;
222
- const column = goal ?? at.column;
223
- let line = lines[at.index + dir];
181
+ const column = goal ?? from.offset - lines[index][0];
182
+ let block = from.block;
183
+ let line = lines[index + dir];
224
184
  const island = islandOf(edytor, block);
225
185
  for (let next = line ? null : displayable(edytor, block, dir); next && !line; next = displayable(edytor, next, dir)) {
226
186
  if (islandOf(edytor, next) !== island)
227
187
  break;
228
- if (!edytor.facade.isVoid(next.id))
229
- line = linesOf(next).at(dir > 0 ? 0 : -1);
188
+ if (!edytor.facade.isVoid(next))
189
+ [block, line] = [next, linesOf(edytor, next).at(dir > 0 ? 0 : -1)];
230
190
  }
231
- const to = line ? onLine(line, column) : onLine(lines.at(dir > 0 ? -1 : 0), dir * Infinity);
232
- return to && { ...to, column };
191
+ const [start, end] = line ?? lines.at(dir > 0 ? -1 : 0);
192
+ const offset = start + (line ? column : dir * Infinity);
193
+ return { block, offset: Math.min(Math.max(offset, start), end), column };
233
194
  };
234
195
  const goals = new WeakMap();
235
196
  /**
@@ -240,12 +201,11 @@ const goals = new WeakMap();
240
201
  * moves keep the goal column. Answers whether a text selection moved.
241
202
  */
242
203
  export const extendVertically = (edytor, dir) => {
243
- const { value, state } = edytor.selection;
244
- if (value.kind !== 'text' || !state.startText || !state.endText)
204
+ const { value, projection } = edytor.selection;
205
+ const { start, end } = projection;
206
+ if (value.kind !== 'text' || !start || !end)
245
207
  return false;
246
- const start = { text: state.startText, offset: state.yStart };
247
- const end = { text: state.endText, offset: state.yEnd };
248
- const [anchor, focus] = state.isReversed ? [end, start] : [start, end];
208
+ const [anchor, focus] = projection.isReversed ? [end, start] : [start, end];
249
209
  const kept = goals.get(edytor);
250
210
  const to = lineStop(edytor, focus, dir, kept?.value === value ? kept.column : undefined);
251
211
  if (!to)
@@ -270,9 +230,9 @@ const natives = new WeakMap();
270
230
  */
271
231
  const stopBelow = (edytor, block) => {
272
232
  const { facade } = edytor;
273
- const items = [block.id, ...facade.ancestorsOf(block.id)].filter((id) => facade.isLayoutItem(id) || facade.isTableCell(id));
233
+ const items = [block, ...facade.ancestorsOf(block)].filter((id) => facade.isLayoutItem(id) || facade.isTableCell(id));
274
234
  const ids = facade.order();
275
- const from = ids.indexOf(block.id);
235
+ const from = ids.indexOf(block);
276
236
  if (from < 0)
277
237
  return true;
278
238
  for (let i = from + 1; i < ids.length; i++) {
@@ -295,23 +255,30 @@ const stopBelow = (edytor, block) => {
295
255
  * cell, a code line, a heading). Never in a view that writes nothing.
296
256
  */
297
257
  const leavesLastStop = (edytor) => {
298
- const { selection, root } = edytor;
299
- const { value, state } = selection;
300
- if (value.kind !== 'text' || !state.isCollapsed || !state.startText || !root)
301
- return false;
302
- if (!edytor.dispatcher.permits())
258
+ const block = onLastLine(edytor);
259
+ const { root } = edytor;
260
+ if (!block || !root || !edytor.dispatcher.permits())
303
261
  return false;
304
- const at = { text: state.startText, offset: state.yStart };
305
- const block = at.text.parent;
306
262
  if (block.parent?.isRoot && block.type === edytor.defaultChild(root))
307
263
  return false;
308
- const lines = linesOf(block);
309
- if (locate(lines, at)?.index !== lines.length - 1)
310
- return false;
311
- const end = edge(block, 1);
312
- if (end && edytor.ports.surface.sameLine(at, end) === false)
313
- return false;
314
- return !stopBelow(edytor, block);
264
+ return !stopBelow(edytor, block.id);
265
+ };
266
+ /**
267
+ * The block a collapsed text caret sits on the last line of (a line box
268
+ * where the view lays one out, else a line break), if it does: where
269
+ * ArrowDown leaves the block (`nav.trailing.exit`, `body.down`).
270
+ */
271
+ export const onLastLine = (edytor) => {
272
+ const { value, projection } = edytor.selection;
273
+ const at = projection.start;
274
+ const block = at && edytor.idToBlock.get(at.block);
275
+ if (value.kind !== 'text' || !projection.isCollapsed || !block)
276
+ return;
277
+ const text = stringOf(edytor, at.block);
278
+ if (text.includes('\n', at.offset))
279
+ return;
280
+ const last = edytor.ports.surface.sameLine(at, { block: at.block, offset: text.length });
281
+ return last === false ? undefined : block;
315
282
  };
316
283
  /**
317
284
  * The trailing paragraph (`nav.trailing`, Notion): the caret goes to an
@@ -329,13 +296,14 @@ export const toTrailingParagraph = (edytor) => {
329
296
  return false;
330
297
  const kind = edytor.defaultChild(root);
331
298
  if (last.type === kind && last.isEmpty && last.firstText) {
332
- edytor.selection.setAtTextOffset(last.firstText, 0);
299
+ edytor.selection.selectText(last.firstText, 0);
333
300
  return true;
334
301
  }
335
- const after = last.insertBlockAfter({ block: { type: kind } });
336
- if (!after?.firstText)
302
+ const { ids } = edytor.insertBlocks(siblingSlot(last), [{ type: kind }]);
303
+ const text = edytor.idToBlock.get(ids[0] ?? '')?.firstText;
304
+ if (!text)
337
305
  return false;
338
- edytor.dispatcher.caret(after.firstText, 0);
306
+ edytor.dispatcher.caret(text, 0);
339
307
  return true;
340
308
  };
341
309
  /**
@@ -363,10 +331,10 @@ export const landed = (edytor) => {
363
331
  if (!native || native.serial !== edytor.intentSerial || native.value !== selection.value)
364
332
  return false;
365
333
  natives.delete(edytor);
366
- const { startText, endText, yStart, yEnd, isReversed } = selection.state;
367
- if (!startText || !endText)
334
+ const { start, end, isReversed } = selection.projection;
335
+ const focus = isReversed ? start : end;
336
+ if (!focus)
368
337
  return false;
369
- const focus = isReversed ? { text: startText, offset: yStart } : { text: endText, offset: yEnd };
370
338
  const to = lineStop(edytor, focus, native.dir) ?? focus;
371
339
  select(edytor, to, to);
372
340
  return true;
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import type { Text } from '../text/text.svelte.js';
11
11
  import type { Attempt } from './attempt.js';
12
+ import type { SelectionPoint } from './selection.js';
12
13
  /** The surface as the session sees it: the projector, the observer, the DOM selection. */
13
14
  export interface SurfacePort {
14
15
  /**
@@ -35,13 +36,7 @@ export interface SurfacePort {
35
36
  * ends where a line wraps), or `null` where nothing is laid out
36
37
  * (`surface/lines.ts`).
37
38
  */
38
- sameLine(a: {
39
- text: Text;
40
- offset: number;
41
- }, b: {
42
- text: Text;
43
- offset: number;
44
- }): boolean | null;
39
+ sameLine(a: SelectionPoint, b: SelectionPoint): boolean | null;
45
40
  }
46
41
  /** The input commands a key binding runs (`events/beforeInputCommands.ts`). */
47
42
  export interface InputPort {
@@ -1,28 +1,28 @@
1
1
  /**
2
- * Properties: the deep proxy behind `block.data`, `atom.data` and
3
- * `edytor.data` (syncrostate's feel, one small module).
2
+ * A view's property writes (`block.data`, `atom.data`, `edytor.data`): the
3
+ * data proxy (`crdt/props.ts`) over the view's one write path.
4
4
  *
5
- * A read goes to `read()` every time (the view's live, reactive source), so
6
- * a template that reads `block.data.title` re-renders when anyone changes
7
- * it. Plain objects read as nested proxies, arrays as array proxies,
8
- * everything else as the raw value; a proxy is cached per path, so its
9
- * identity is stable. An object or array held in an array item is that
10
- * item's (its path names the item by id, from `ids`): it stays on its item
11
- * wherever peers move it, so `{#each list as item (item)}` keeps a row, and
12
- * the focused field in it, on its item; once the item is removed, or its
13
- * array is, its writes are refused. A key is a path segment as
14
- * `keySegment` writes it (`~abc` as `~0abc`: never an item's id). A write
15
- * is one data patch through `write` (a
16
- * command): `obj.key = v`, `arr[i] = v` (by index) and `delete obj.key`
17
- * patch that path (a write inside an item, that item);
18
- * `push`, `pop`, `shift`, `unshift`, `splice` and `length` are one
19
- * `splice`, `sort` and `reverse` one `order` (the items move), `fill` and
20
- * `copyWithin` writes of the items they change.
21
- * `JSON.stringify` and `$state.snapshot` read plain JSON through it.
5
+ * The writes of one synchronous task are one dispatch: they queue per
6
+ * target and leave on the next microtask, or before any other operation
7
+ * this view dispatches, as the `patchData` operation of each target (more
8
+ * than one target: one user command, so one undo step, in one
9
+ * transaction). Hooks see that operation; a veto drops the burst. Until
10
+ * then the proxy reads its target's data with the queued patches applied
11
+ * (`dataPreview`), so a write reads back at once. A view that refuses
12
+ * writes (readonly, a read-only document) refuses an assignment at once:
13
+ * nothing is queued, the dispatcher records `refused`, nothing throws.
22
14
  */
23
- import { type DataPatch } from '../crdt/data.js';
24
- type Json = Record<string, unknown>;
25
- export declare const propsProxy: <T extends object = Json>(read: () => Json, write: (ops: DataPatch[]) => void,
26
- /** The ids of the items of the array at a path (`facade.dataItemIds`). */
27
- ids?: (path: readonly string[]) => string[]) => T;
28
- export {};
15
+ import type { DataPatch } from '../crdt/data.js';
16
+ import type { DataTarget } from '../crdt/doc/types.js';
17
+ import type { Edytor } from '../edytor.svelte.js';
18
+ export declare class DataWrites {
19
+ #private;
20
+ private readonly edytor;
21
+ constructor(edytor: Edytor);
22
+ /** The live proxy over `target`'s data; `read` is its reactive, committed source. */
23
+ proxy<T extends object>(target: DataTarget, read: () => Record<string, unknown>): T;
24
+ /** Queue `patches` on `target` for this task's dispatch (refused at once when the view refuses writes). */
25
+ write(target: DataTarget, patches: DataPatch[]): undefined;
26
+ /** Dispatch the queued writes now: before any other operation of this view, and at the end of the task. */
27
+ flush(): undefined;
28
+ }