edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -1,30 +1,38 @@
1
- export { richTextPlugin, createRichTextPlugin, richTextOperations, richTextPlaceholder, createRichTextPlaceholder } from './richtext/RichTextPlugin.svelte';
2
- export { arrowMovePlugin } from './arrowMove/arrowMove.js';
1
+ export { createRichTextPlugin, richTextOperations, richTextPlaceholder } from './richtext/RichTextPlugin.svelte';
2
+ export { CALLOUT_ICONS, createCalloutIconsPlugin } from './richtext/calloutIcons.svelte.js';
3
+ export { createUploadsPlugin } from './uploads.svelte.js';
4
+ export { createArrowMovePlugin } from './arrowMove/arrowMove.js';
3
5
  export { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT } from './blockHandles/BlockHandleController.svelte.js';
4
- export { TOOLBAR_COLORS } from './toolbar/ToolbarController.svelte.js';
5
- export { blockHandlesPlugin, createBlockHandlesPlugin } from './blockHandles/blockHandlesPlugin.js';
6
- export { codePlugin, createCodePlugin, CODE_LANGUAGES, loadCodeLanguage } from './code/CodePlugin.svelte';
7
- export { markdownShortcutsPlugin } from './markdownShortcuts.js';
6
+ export { createBlockHandlesPlugin } from './blockHandles/blockHandlesPlugin.js';
7
+ export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage } from './code/CodePlugin.svelte';
8
+ export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
8
9
  export { createMentionPlugin } from './mention/MentionPlugin.svelte';
9
10
  export { createPageLinkPlugin } from './pageLink/PageLinkPlugin.svelte';
10
- export { slashMenuPlugin, createSlashMenuPlugin } from './slashMenu/slashMenuPlugin.js';
11
- export { toolbarPlugin, createToolbarPlugin } from './toolbar/toolbarPlugin.js';
12
- export { blockMenuPlugin, createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
13
- export { suggestionsPlugin, createSuggestionsPlugin, isSuggestionsPlugin } from './suggestions/suggestionsPlugin.js';
14
- export { imagePlugin, createImagePlugin, isImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH } from './image/ImagePlugin.svelte';
15
- export { embedPlugin, createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf } from './media/EmbedPlugin.svelte';
16
- export { bookmarkPlugin, createBookmarkPlugin } from './media/BookmarkPlugin.svelte';
17
- export { filePlugin, createFilePlugin } from './media/FilePlugin.svelte';
18
- export { videoPlugin, createVideoPlugin } from './media/VideoPlugin.svelte';
19
- export { audioPlugin, createAudioPlugin } from './media/AudioPlugin.svelte';
11
+ export { withRulesAndTriggers } from './triggers/triggers.js';
12
+ export { createSlashMenuPlugin } from './slashMenu/slashMenuPlugin.js';
13
+ export { createToolbarPlugin } from './toolbar/toolbarPlugin.js';
14
+ export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
15
+ export { createSuggestionsPlugin } from './suggestions/suggestionsPlugin.js';
16
+ export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
17
+ export { createImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH } from './image/ImagePlugin.svelte';
18
+ export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf } from './media/EmbedPlugin.svelte';
19
+ export { createBookmarkPlugin } from './media/BookmarkPlugin.svelte';
20
+ export { createFilePlugin } from './media/FilePlugin.svelte';
21
+ export { createVideoPlugin } from './media/VideoPlugin.svelte';
22
+ export { createAudioPlugin } from './media/AudioPlugin.svelte';
20
23
  export { safeWebUrl, safeMediaSrc } from './media/media.js';
21
- export { columnsPlugin, createColumnsPlugin, isColumnsPlugin } from './columns/ColumnsPlugin.svelte';
22
- export { findPlugin, createFindPlugin, findController } from './find/findPlugin.js';
24
+ export { createMediaEmptyPlugin } from './media/MediaEmpty.svelte';
25
+ export { createImageToolbarPlugin } from './image/toolbar.svelte.js';
26
+ export { createColumnsPlugin } from './columns/ColumnsPlugin.svelte';
27
+ export { createFindPlugin, findController } from './find/findPlugin.js';
28
+ export { createMarqueePlugin } from './marquee/marqueePlugin.js';
23
29
  export { findMatches } from './find/search.js';
24
30
  export { createCommentsPlugin, commentsController } from './comments/commentsPlugin.js';
25
- export { pagePlugin, createPagePlugin } from './page/PagePlugin.svelte';
26
- export { tocPlugin, createTocPlugin } from './toc/TocPlugin.svelte';
27
- export { tablePlugin, createTablePlugin, isTablePlugin } from './table/TablePlugin.svelte';
31
+ export { createPagePlugin } from './page/PagePlugin.svelte';
32
+ export { createTocPlugin } from './toc/TocPlugin.svelte';
33
+ export { createTablePlugin } from './table/TablePlugin.svelte';
34
+ // The table ops, prepared over any document (`document.apply(insertTableRow(document, …))`).
35
+ export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
28
36
  // The table kind's value as JSON (also on `edytor/crdt/edytor`).
29
37
  export { tableBlock } from '../crdt/tables.js';
30
- export { createEquationPlugin } from './equation/EquationPlugin.svelte';
38
+ export { createEquationPlugin, KATEX_CDN, KATEX_VERSION } from './equation/EquationPlugin.svelte';
@@ -0,0 +1,128 @@
1
+ import type { Attachment } from 'svelte/attachments';
2
+ import type { Edytor } from '../edytor.svelte.js';
3
+ import type { HotKey, HotKeyCombination } from '../session/keymap.js';
4
+ import type { Popup } from '../surface/popups.svelte.js';
5
+ /** `id` when an element of `node`'s page has it, else `undefined` (looked up again as rows take their ids). */
6
+ export declare const inPage: (node: Node, id: string | undefined) => string | undefined;
7
+ /** The ARIA a row may carry beside its role. */
8
+ export type OptionState = {
9
+ /** `-1` where a field or the editor holds the keyboard; a roving list's own row `0`. */
10
+ tabindex?: 0 | -1;
11
+ 'aria-checked'?: boolean;
12
+ /** A row that cannot run now (a table menu's Move up on the first row). */
13
+ 'aria-disabled'?: boolean;
14
+ 'aria-haspopup'?: 'menu';
15
+ 'aria-expanded'?: boolean;
16
+ };
17
+ /**
18
+ * A row's attachment: its id, role, `aria-selected` (a `listbox`'s
19
+ * option) and `state`; the keyboard's row (`selected`)
20
+ * scrolls into view when it becomes it, unless `reveal` is `false` (a list
21
+ * in the page, whose focus scrolls it).
22
+ */
23
+ export declare const optionAttachment: (id: string, role: "option" | "menuitem" | "menuitemcheckbox" | "menuitemradio", selected: boolean, state?: OptionState, reveal?: boolean) => Attachment<HTMLElement>;
24
+ /**
25
+ * The keyboard's row after `key` among `count` rows from `at`, `undefined`
26
+ * when the key does not move it: ArrowDown and ArrowUp step through the
27
+ * rows `usable` keeps (a disabled one is skipped), around the ends; in a
28
+ * grid of `columns`, ArrowRight and ArrowLeft step around the ends, ArrowDown
29
+ * and ArrowUp a whole row, stopping at the first and last; with `ends`, Home
30
+ * and End reach the first and last rows.
31
+ */
32
+ export declare const stepRow: (key: string, at: number, count: number, { columns, ends, usable }?: Steps) => number | undefined;
33
+ /** How a list's keys step (`stepRow`): a grid's columns, Home and End, the rows they stop at. */
34
+ type Steps = {
35
+ columns?: number;
36
+ ends?: boolean;
37
+ usable?: (index: number) => boolean;
38
+ };
39
+ /**
40
+ * A key on a menu that holds the keyboard itself, not a field (WAI-ARIA's
41
+ * menu keys): the arrows, Home and End move its row (`stepRow`), Enter and
42
+ * Space pick it, Escape and Tab close it. Whether the key was the menu's
43
+ * (then its default is prevented).
44
+ */
45
+ export declare const menuKey: (event: KeyboardEvent, menu: {
46
+ at: number;
47
+ count: number;
48
+ to: (index: number) => void;
49
+ pick: () => void;
50
+ close: () => void;
51
+ }, steps?: Steps) => boolean;
52
+ /**
53
+ * A list's element (`{@attach controller.popup}`, named by its markup): it
54
+ * takes the list's id (`edytor.popups.idOf(owner)`) and its `role` unless
55
+ * it has its own, keeps the focus where it is on a press (a field takes its
56
+ * own), and is published to the view's root (`edytor.popups`, `role` its
57
+ * `aria-haspopup`) while `open` answers the rest of its record (its
58
+ * highlighted row, the control that opened it), withdrawn when it closes or
59
+ * leaves the page.
60
+ */
61
+ export declare const listPopup: (edytor: Edytor, owner: string, role: "listbox" | "menu", open?: (node: HTMLElement) => Omit<Popup, "id"> | false | null) => Attachment<HTMLElement>;
62
+ /**
63
+ * The element that holds a list's keyboard (a `keys` attachment's body): it
64
+ * takes the focus as it mounts (unless the focus is already in it), `keydown`
65
+ * hears the keys on `keyed` (the element itself by default), and it names
66
+ * the highlighted row (`aria-activedescendant`, once that row is in the
67
+ * page) when it may name one (a field, or an element with a role).
68
+ */
69
+ export declare const holdKeys: (node: HTMLElement, keydown: (event: KeyboardEvent) => void, active: () => string | undefined, keyed?: HTMLElement) => () => void;
70
+ /** An open list the editor keeps the keyboard for, as its keys drive it. */
71
+ export type HeldList = {
72
+ /** Move the keyboard's row by `step`; whether it moved (no rows: the arrows stay the caret's). */
73
+ move: (step: number) => boolean;
74
+ /** Pick the keyboard's row; none when Enter is not the list's (no row to pick). */
75
+ pick?: () => void;
76
+ close: () => void;
77
+ };
78
+ /**
79
+ * The editor's keys for the list it keeps the keyboard for (a trigger's
80
+ * menu, the URL paste menu), while `open` answers one: ArrowDown and ArrowUp
81
+ * move its row, Enter picks it, Escape closes it.
82
+ */
83
+ export declare const listHotkeys: (open: () => HeldList | false | undefined) => Partial<Record<HotKeyCombination, HotKey>>;
84
+ /**
85
+ * A chrome list and its keyboard's row (the trigger and slash menus, the
86
+ * code language list, the callout icon picker, the URL paste menu, a table
87
+ * grip's menu): the list's element (`popup`, its id `listId`), a row's id
88
+ * and attachment (`rowId`, `option`: rows are named by position) and the
89
+ * step the keys take (`move`). Each controller extends it with its rows,
90
+ * its keys and its actions.
91
+ */
92
+ export declare abstract class ChromeList {
93
+ /** The list's name among the view's popups (`edytor.popups`). */
94
+ protected readonly owner: string;
95
+ /** Its role: a `listbox` the editor or a field keeps the keyboard for, or a `menu`. */
96
+ protected readonly role: 'listbox' | 'menu';
97
+ /** The keyboard's row. */
98
+ index: number;
99
+ /**
100
+ * The list's element (`{@attach controller.popup}`, named by your
101
+ * markup): its id and role unless it has its own, presses that keep the
102
+ * focus, and its publication to the view's root (`edytor.popups`) while
103
+ * it is open and in the page.
104
+ */
105
+ readonly popup: Attachment<HTMLElement>;
106
+ constructor(
107
+ /** @internal */
108
+ edytor: Edytor,
109
+ /** The list's name among the view's popups (`edytor.popups`). */
110
+ owner: string,
111
+ /** Its role: a `listbox` the editor or a field keeps the keyboard for, or a `menu`. */
112
+ role: 'listbox' | 'menu', open?: (node: HTMLElement) => Omit<Popup, 'id'> | false | null);
113
+ /** How many rows the keyboard walks. */
114
+ protected abstract get count(): number;
115
+ /** The list's element id (page-unique), for `aria-controls`. */
116
+ get listId(): string;
117
+ /** Row `index`'s element id (page-unique), for `aria-activedescendant`. */
118
+ rowId: (index: number) => string;
119
+ /**
120
+ * Row `index`'s attachment (`{@attach controller.option(index)}`): its
121
+ * id, its role and `aria-selected` (a `listbox`'s); the keyboard's row
122
+ * scrolls into view. Its look is the markup's (`index === this.index`).
123
+ */
124
+ option(index: number): Attachment<HTMLElement>;
125
+ /** Move the keyboard's row by `step`, around the ends; `false` when there is no row. */
126
+ move: (step: number) => boolean;
127
+ }
128
+ export {};
@@ -0,0 +1,217 @@
1
+ /**
2
+ * The one list behaviour every chrome menu shares (the trigger and slash
3
+ * menus, the block menu, the code language list, the callout icon picker,
4
+ * the URL paste menu, the table grip menu): the keyboard's row a key moves
5
+ * to, the list element's id, role, name and publication to the view's root,
6
+ * the element holding the keyboard (its focus, its keys, the row it names),
7
+ * and the editor's keys for a list the editor keeps the keyboard for. Each
8
+ * controller keeps its own state, rows and payload; these are its
9
+ * attachments' and bindings' bodies.
10
+ */
11
+ import { untrack } from 'svelte';
12
+ import { attach, attribute, keepFocus, namesRows } from './chrome.js';
13
+ import { listen } from '../utils/listen.js';
14
+ /**
15
+ * How many rows took their id so far: a row's attachment runs after the
16
+ * effects of the elements before it (the field naming the highlighted row,
17
+ * the list's publication), which read it to look again.
18
+ */
19
+ let named = $state(0);
20
+ /** `id` when an element of `node`'s page has it, else `undefined` (looked up again as rows take their ids). */
21
+ export const inPage = (node, id) => {
22
+ void named;
23
+ return id && node.ownerDocument?.getElementById(id) ? id : undefined;
24
+ };
25
+ /**
26
+ * A row's attachment: its id, role, `aria-selected` (a `listbox`'s
27
+ * option) and `state`; the keyboard's row (`selected`)
28
+ * scrolls into view when it becomes it, unless `reveal` is `false` (a list
29
+ * in the page, whose focus scrolls it).
30
+ */
31
+ export const optionAttachment = (id, role, selected, state = {}, reveal = true) => {
32
+ const own = attach({
33
+ id,
34
+ role,
35
+ tabindex: -1,
36
+ 'aria-selected': role === 'option' ? selected : undefined,
37
+ 'aria-checked': undefined,
38
+ 'aria-disabled': undefined,
39
+ 'aria-haspopup': undefined,
40
+ 'aria-expanded': undefined,
41
+ ...state
42
+ });
43
+ return (node) => {
44
+ const fresh = node.id !== id;
45
+ own(node);
46
+ if (fresh)
47
+ untrack(() => named++);
48
+ if (selected && reveal)
49
+ node.scrollIntoView?.({ block: 'nearest' });
50
+ };
51
+ };
52
+ /**
53
+ * The keyboard's row after `key` among `count` rows from `at`, `undefined`
54
+ * when the key does not move it: ArrowDown and ArrowUp step through the
55
+ * rows `usable` keeps (a disabled one is skipped), around the ends; in a
56
+ * grid of `columns`, ArrowRight and ArrowLeft step around the ends, ArrowDown
57
+ * and ArrowUp a whole row, stopping at the first and last; with `ends`, Home
58
+ * and End reach the first and last rows.
59
+ */
60
+ export const stepRow = (key, at, count, { columns = 0, ends = false, usable = () => true } = {}) => {
61
+ const rows = [...Array(count).keys()].filter(usable);
62
+ const length = rows.length;
63
+ const down = { ArrowDown: 1, ArrowUp: -1 }[key];
64
+ const across = columns && { ArrowRight: 1, ArrowLeft: -1 }[key];
65
+ if (down && columns)
66
+ return Math.max(0, Math.min(length - 1, at + down * columns));
67
+ const step = down || across;
68
+ if (step)
69
+ return length ? rows[(rows.indexOf(at) + step + length) % length] : at;
70
+ if (ends && length && (key === 'Home' || key === 'End'))
71
+ return rows[key === 'Home' ? 0 : length - 1];
72
+ };
73
+ /**
74
+ * A key on a menu that holds the keyboard itself, not a field (WAI-ARIA's
75
+ * menu keys): the arrows, Home and End move its row (`stepRow`), Enter and
76
+ * Space pick it, Escape and Tab close it. Whether the key was the menu's
77
+ * (then its default is prevented).
78
+ */
79
+ export const menuKey = (event, menu, steps) => {
80
+ const { key } = event;
81
+ const to = stepRow(key, menu.at, menu.count, { ends: true, ...steps });
82
+ if (to !== undefined)
83
+ menu.to(to);
84
+ else if (key === 'Enter' || key === ' ')
85
+ menu.pick();
86
+ else if (key === 'Escape' || key === 'Tab')
87
+ menu.close();
88
+ else
89
+ return false;
90
+ event.preventDefault();
91
+ return true;
92
+ };
93
+ /**
94
+ * A list's element (`{@attach controller.popup}`, named by its markup): it
95
+ * takes the list's id (`edytor.popups.idOf(owner)`) and its `role` unless
96
+ * it has its own, keeps the focus where it is on a press (a field takes its
97
+ * own), and is published to the view's root (`edytor.popups`, `role` its
98
+ * `aria-haspopup`) while `open` answers the rest of its record (its
99
+ * highlighted row, the control that opened it), withdrawn when it closes or
100
+ * leaves the page.
101
+ */
102
+ export const listPopup = (edytor, owner, role, open = () => ({})) => (node) => {
103
+ const id = edytor.popups.idOf(owner);
104
+ node.id = id;
105
+ if (!node.hasAttribute('role'))
106
+ node.setAttribute('role', role);
107
+ const off = listen(node, 'mousedown', keepFocus);
108
+ $effect(() => {
109
+ const popup = open(node);
110
+ if (!popup)
111
+ return;
112
+ edytor.popups.set(owner, { id, haspopup: role, ...popup });
113
+ return () => edytor.popups.set(owner, null);
114
+ });
115
+ return off;
116
+ };
117
+ /**
118
+ * The element that holds a list's keyboard (a `keys` attachment's body): it
119
+ * takes the focus as it mounts (unless the focus is already in it), `keydown`
120
+ * hears the keys on `keyed` (the element itself by default), and it names
121
+ * the highlighted row (`aria-activedescendant`, once that row is in the
122
+ * page) when it may name one (a field, or an element with a role).
123
+ */
124
+ export const holdKeys = (node, keydown, active, keyed = node) => {
125
+ untrack(() => {
126
+ if (!node.contains(node.ownerDocument.activeElement))
127
+ node.focus({ preventScroll: true });
128
+ });
129
+ const off = listen(keyed, 'keydown', keydown);
130
+ $effect(() => {
131
+ if (namesRows(node))
132
+ attribute(node, 'aria-activedescendant', inPage(node, active()));
133
+ });
134
+ return off;
135
+ };
136
+ /**
137
+ * The editor's keys for the list it keeps the keyboard for (a trigger's
138
+ * menu, the URL paste menu), while `open` answers one: ArrowDown and ArrowUp
139
+ * move its row, Enter picks it, Escape closes it.
140
+ */
141
+ export const listHotkeys = (open) => {
142
+ const step = (by) => ({ prevent }) => {
143
+ const list = open();
144
+ if (list && list.move(by))
145
+ prevent();
146
+ };
147
+ return {
148
+ arrowdown: step(1),
149
+ arrowup: step(-1),
150
+ enter: ({ prevent }) => {
151
+ const list = open();
152
+ if (list && list.pick)
153
+ prevent(list.pick);
154
+ },
155
+ escape: ({ prevent }) => {
156
+ const list = open();
157
+ if (list)
158
+ prevent(list.close);
159
+ }
160
+ };
161
+ };
162
+ /**
163
+ * A chrome list and its keyboard's row (the trigger and slash menus, the
164
+ * code language list, the callout icon picker, the URL paste menu, a table
165
+ * grip's menu): the list's element (`popup`, its id `listId`), a row's id
166
+ * and attachment (`rowId`, `option`: rows are named by position) and the
167
+ * step the keys take (`move`). Each controller extends it with its rows,
168
+ * its keys and its actions.
169
+ */
170
+ export class ChromeList {
171
+ edytor;
172
+ owner;
173
+ role;
174
+ /** The keyboard's row. */
175
+ index = $state(0);
176
+ /**
177
+ * The list's element (`{@attach controller.popup}`, named by your
178
+ * markup): its id and role unless it has its own, presses that keep the
179
+ * focus, and its publication to the view's root (`edytor.popups`) while
180
+ * it is open and in the page.
181
+ */
182
+ popup;
183
+ constructor(
184
+ /** @internal */
185
+ edytor,
186
+ /** The list's name among the view's popups (`edytor.popups`). */
187
+ owner,
188
+ /** Its role: a `listbox` the editor or a field keeps the keyboard for, or a `menu`. */
189
+ role, open) {
190
+ this.edytor = edytor;
191
+ this.owner = owner;
192
+ this.role = role;
193
+ this.popup = listPopup(edytor, owner, role, open);
194
+ }
195
+ /** The list's element id (page-unique), for `aria-controls`. */
196
+ get listId() {
197
+ return this.edytor.popups.idOf(this.owner);
198
+ }
199
+ /** Row `index`'s element id (page-unique), for `aria-activedescendant`. */
200
+ rowId = (index) => this.edytor.popups.idOf(`${this.owner}-${index}`);
201
+ /**
202
+ * Row `index`'s attachment (`{@attach controller.option(index)}`): its
203
+ * id, its role and `aria-selected` (a `listbox`'s); the keyboard's row
204
+ * scrolls into view. Its look is the markup's (`index === this.index`).
205
+ */
206
+ option(index) {
207
+ const role = this.role === 'menu' ? 'menuitem' : 'option';
208
+ return optionAttachment(this.rowId(index), role, index === this.index);
209
+ }
210
+ /** Move the keyboard's row by `step`, around the ends; `false` when there is no row. */
211
+ move = (step) => {
212
+ const count = this.count;
213
+ if (count)
214
+ this.index = (this.index + step + count) % count;
215
+ return count > 0;
216
+ };
217
+ }
@@ -1,3 +1,3 @@
1
1
  import type { Plugin } from '../plugins.js';
2
2
  /** Markdown prefixes come from the kind catalogue: a row whose shortcut the typed character completes. */
3
- export declare const markdownShortcutsPlugin: Plugin;
3
+ export declare const createMarkdownShortcutsPlugin: () => Plugin;
@@ -1,5 +1,6 @@
1
1
  import { convertToKind } from '../kinds.js';
2
2
  import { jsonEquals } from '../utils/json.js';
3
+ import { withRulesAndTriggers } from './triggers/triggers.js';
3
4
  /**
4
5
  * Notion's inline markdown, completed by the typed closing character: the
5
6
  * mark, the opening marker's start and length, the content's length and
@@ -60,7 +61,7 @@ const shortcutRow = (kinds, block, typed) => {
60
61
  return best ?? kinds.find((kind) => kind.markdown?.includes(typed));
61
62
  };
62
63
  /** Markdown prefixes come from the kind catalogue: a row whose shortcut the typed character completes. */
63
- export const markdownShortcutsPlugin = (edytor) => {
64
+ export const createMarkdownShortcutsPlugin = () => (edytor) => {
64
65
  /** The catalogue's prefixes as one pattern, from a text's start (built once the catalogue is). */
65
66
  let prefixes = null;
66
67
  const prefixPattern = () => {
@@ -93,12 +94,12 @@ export const markdownShortcutsPlugin = (edytor) => {
93
94
  // The segment's start, in block offsets: the caret, less the text before it.
94
95
  const at = to - before.length + found.start;
95
96
  const { facade, dispatcher } = edytor;
96
- const plan = () => facade.compose(facade.prepare.setMark(id, at + found.open, found.content, found.mark, true), ...(found.closing
97
+ const plan = () => facade.compose(facade.prepare.formatRange(id, at + found.open, found.content, { [found.mark]: true }), ...(found.closing
97
98
  ? [facade.prepare.deleteText(id, at + found.open + found.content, found.closing)]
98
99
  : []), facade.prepare.deleteText(id, at, found.open));
99
100
  const payload = { value: typed, start: before.length, end: before.length };
100
- const applied = dispatcher.dispatch('inlineMarkdown', payload, { block, text }, (_p, prepared = plan()) => ('writes' in prepared ? facade.apply(prepared) : null), plan);
101
- if (!applied)
101
+ const result = dispatcher.plan('inlineMarkdown', payload, plan, block, text);
102
+ if (result.status !== 'applied')
102
103
  return false;
103
104
  // Typing after the shortcut continues without the mark.
104
105
  edytor.selection.stage({});
@@ -132,5 +133,5 @@ export const markdownShortcutsPlugin = (edytor) => {
132
133
  return converted;
133
134
  }
134
135
  };
135
- return { inputRules: [inline, prefix] };
136
+ return withRulesAndTriggers(edytor, {}, { inputRules: [inline, prefix] });
136
137
  };
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type { MarqueeBoxPayload, MarqueeController } from './MarqueeController.svelte.js';
4
+
5
+ /**
6
+ * The marquee's rectangle, in its overlay host (placed and sized to the
7
+ * rectangle by the plugin's measure): the app's `box`.
8
+ */
9
+ let { controller, box }: { controller: MarqueeController; box: Snippet<[MarqueeBoxPayload]> } =
10
+ $props();
11
+
12
+ const payload = $derived(controller.payload);
13
+ </script>
14
+
15
+ {#if payload}{@render box(payload)}{/if}
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { MarqueeBoxPayload, MarqueeController } from './MarqueeController.svelte.js';
3
+ type $$ComponentProps = {
4
+ controller: MarqueeController;
5
+ box: Snippet<[MarqueeBoxPayload]>;
6
+ };
7
+ declare const MarqueeBox: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type MarqueeBox = ReturnType<typeof MarqueeBox>;
9
+ export default MarqueeBox;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The marquee gesture of one view (`sel.marquee`, Notion's rubber band): a
3
+ * press in the editor's empty area, then a drag past `threshold`, draws a
4
+ * rectangle and selects, live, the blocks it meets (`marqueeBlocks`)
5
+ * through the one selection writer (`selection.select`). The press reaches
6
+ * it classified: the host's own area by `events/onFocus.ts`
7
+ * (`pointer.marginPress`), the handle gutter and the app's container by the
8
+ * plugin's `onPress` listeners. Between the press and the release it owns
9
+ * the pointer's moves, the scroll that extends the rectangle, Escape, and
10
+ * the browser's selection start (cancelled).
11
+ */
12
+ import type { Edytor } from '../../edytor.svelte.js';
13
+ /** What a `box` snippet receives: the rectangle and what it selects (reactive). */
14
+ export type MarqueeBoxPayload = {
15
+ /** The rectangle, in viewport (client) coordinates. */
16
+ rect: DOMRectReadOnly;
17
+ /** How many blocks are selected (the ones Shift or Mod kept included). */
18
+ count: number;
19
+ /** The selected blocks' ids, in the order the selection lists them. */
20
+ ids: readonly string[];
21
+ /** Shift or Mod was held at the press: the rectangle adds to the selection there was. */
22
+ adding: boolean;
23
+ };
24
+ export declare class MarqueeController {
25
+ #private;
26
+ readonly edytor: Edytor;
27
+ private readonly threshold;
28
+ /** The rectangle while the marquee shows (client coordinates), else `null` (reactive). */
29
+ rect: DOMRectReadOnly | null;
30
+ /** The block ids the marquee selects (reactive). */
31
+ ids: readonly string[];
32
+ /** Shift or Mod was held at the press (reactive). */
33
+ adding: boolean;
34
+ constructor(edytor: Edytor, threshold: number);
35
+ /** What a `box` snippet receives. */
36
+ get payload(): MarqueeBoxPayload | null;
37
+ /**
38
+ * A primary press from a mouse or a pen, already classified as the
39
+ * editor's empty area (`host`: the host's own; else the handle gutter or
40
+ * the app's container). Answers whether the marquee took it.
41
+ */
42
+ press: (event: MouseEvent, host: boolean) => boolean;
43
+ /** End the gesture and give back the selection from before the press. */
44
+ cancel: () => void;
45
+ destroy: () => void;
46
+ }