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,46 +1,50 @@
1
- export { richTextPlugin, createRichTextPlugin, richTextOperations, richTextPlaceholder, createRichTextPlaceholder, CALLOUT_ICONS, type CalloutIconPicker, type CalloutIconOption, type RichTextPluginOptions } from './richtext/RichTextPlugin.svelte';
2
- export { arrowMovePlugin } from './arrowMove/arrowMove.js';
3
- export type { MenuItemPayload, OptionAttributes } from './chrome.js';
1
+ export { createRichTextPlugin, richTextOperations, richTextPlaceholder, type RichTextPluginOptions, type TodoCheckboxPayload, type CalloutIconPayload, type EmptyBodyPayload } from './richtext/RichTextPlugin.svelte';
2
+ export { CALLOUT_ICONS, createCalloutIconsPlugin, type CalloutIconPicker, type CalloutIconsOptions } from './richtext/calloutIcons.svelte.js';
3
+ export { createArrowMovePlugin } from './arrowMove/arrowMove.js';
4
+ export type { MenuItemPayload } from './chrome.js';
4
5
  export { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT, type BlockActivation, type BlockAddition } from './blockHandles/BlockHandleController.svelte.js';
5
- export { TOOLBAR_COLORS } from './toolbar/ToolbarController.svelte.js';
6
- export { blockHandlesPlugin, createBlockHandlesPlugin, type BlockHandleActivation, type BlockHandlesOptions, type BlockHandleSnippetPayload } from './blockHandles/blockHandlesPlugin.js';
7
- export { codePlugin, createCodePlugin, CODE_LANGUAGES, loadCodeLanguage, type CodeLanguage, type CodePluginOptions } from './code/CodePlugin.svelte';
6
+ export { createBlockHandlesPlugin, type BlockHandlesOptions, type BlockHandleSnippetPayload } from './blockHandles/blockHandlesPlugin.js';
7
+ export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage, type CodeLanguage, type CodePluginOptions } from './code/CodePlugin.svelte';
8
8
  export type { CodeHeader } from './code/header.svelte.js';
9
9
  export type { LanguageMenu, LanguageMenuItem, LanguageRow } from './code/languageMenu.svelte.js';
10
- export { markdownShortcutsPlugin } from './markdownShortcuts.js';
10
+ export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
11
11
  export { createMentionPlugin, type MentionItem, type MentionData, type MentionPluginOptions } from './mention/MentionPlugin.svelte';
12
12
  export { createPageLinkPlugin, type PageLinkItem, type PageLinkData, type PageLinkPluginOptions } from './pageLink/PageLinkPlugin.svelte';
13
13
  export type { TriggerMenuController } from './triggers/TriggerController.svelte.js';
14
- export { slashMenuPlugin, createSlashMenuPlugin, type SlashMenuOptions, type SlashMenuItem } from './slashMenu/slashMenuPlugin.js';
14
+ export { withRulesAndTriggers } from './triggers/triggers.js';
15
+ export { createSlashMenuPlugin, type SlashMenuOptions } from './slashMenu/slashMenuPlugin.js';
15
16
  export type { SlashMenuController } from './slashMenu/SlashMenuController.svelte.js';
16
- export { toolbarPlugin, createToolbarPlugin, type ToolbarOptions } from './toolbar/toolbarPlugin.js';
17
+ export { createToolbarPlugin, type ToolbarOptions } from './toolbar/toolbarPlugin.js';
17
18
  export type { ToolbarController } from './toolbar/ToolbarController.svelte.js';
18
- export { blockMenuPlugin, createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
19
- export { suggestionsPlugin, createSuggestionsPlugin, isSuggestionsPlugin, type SuggestionsOptions, type SuggestionBarPayload } from './suggestions/suggestionsPlugin.js';
19
+ export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
20
+ export { createSuggestionsPlugin, type SuggestionBarOptions, type SuggestionBarPayload } from './suggestions/suggestionsPlugin.js';
21
+ export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
20
22
  export type { BlockMenuOptions, BlockMenuController, BlockMenuAction, BlockMenuColor } from './blockMenu/BlockMenuController.svelte.js';
21
- export { imagePlugin, createImagePlugin, isImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, type ImagePluginOptions, type ImageData, type ImageAlign } from './image/ImagePlugin.svelte';
22
- export { embedPlugin, createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf, type EmbedProvider, type EmbedPluginOptions } from './media/EmbedPlugin.svelte';
23
- export { bookmarkPlugin, createBookmarkPlugin, type BookmarkPluginOptions, type BookmarkPreview } from './media/BookmarkPlugin.svelte';
24
- export { filePlugin, createFilePlugin } from './media/FilePlugin.svelte';
25
- export { videoPlugin, createVideoPlugin } from './media/VideoPlugin.svelte';
26
- export { audioPlugin, createAudioPlugin } from './media/AudioPlugin.svelte';
27
- export { safeWebUrl, safeMediaSrc, type MediaKind, type MediaPluginOptions } from './media/media.js';
23
+ export { createImagePlugin, type ImagePluginOptions, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, type ImageData, type ImageAlign } from './image/ImagePlugin.svelte';
24
+ export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf, type EmbedProvider, type EmbedPluginOptions, type EmbedFallbackPayload } from './media/EmbedPlugin.svelte';
25
+ export { createBookmarkPlugin, type BookmarkPluginOptions, type BookmarkPreview, type BookmarkCardPayload } from './media/BookmarkPlugin.svelte';
26
+ export { createFilePlugin, type FilePluginOptions, type FileRowPayload } from './media/FilePlugin.svelte';
27
+ export { createVideoPlugin, type VideoPluginOptions } from './media/VideoPlugin.svelte';
28
+ export { createAudioPlugin, type AudioPluginOptions } from './media/AudioPlugin.svelte';
29
+ export { safeWebUrl, safeMediaSrc, type MediaKind } from './media/media.js';
28
30
  export type { MediaEmptyController, MediaEmptyFailure } from './media/empty.svelte.js';
31
+ export { createMediaEmptyPlugin, type MediaEmptyOptions } from './media/MediaEmpty.svelte';
29
32
  export type { UrlPasteController, UrlPasteOffer, UrlPasteOption } from './media/urlPaste.svelte.js';
30
33
  export type { ImageControls, ImageBox } from './image/controls.svelte.js';
31
- export type { ImageEmptyController, ImageEmptyFailure } from './image/empty.svelte.js';
34
+ export { createImageToolbarPlugin, type ImageToolbar, type ImageToolbarOptions } from './image/toolbar.svelte.js';
32
35
  export type { BlockHandleController } from './blockHandles/BlockHandleController.svelte.js';
33
- export { columnsPlugin, createColumnsPlugin, isColumnsPlugin, type ColumnsPluginOptions } from './columns/ColumnsPlugin.svelte';
34
- export { findPlugin, createFindPlugin, findController, type FindPluginOptions } from './find/findPlugin.js';
36
+ export { createColumnsPlugin, type ColumnsPluginOptions } from './columns/ColumnsPlugin.svelte';
37
+ export { createFindPlugin, findController, type FindPluginOptions } from './find/findPlugin.js';
35
38
  export type { FindController, ReplaceMatches } from './find/FindController.svelte.js';
36
- export { marqueePlugin, createMarqueePlugin, type MarqueePluginOptions } from './marquee/marqueePlugin.js';
39
+ export { createMarqueePlugin, type MarqueePluginOptions } from './marquee/marqueePlugin.js';
37
40
  export type { MarqueeBoxPayload } from './marquee/MarqueeController.svelte.js';
38
41
  export { findMatches, type FindMatch, type FindOptions } from './find/search.js';
39
42
  export { createCommentsPlugin, commentsController, type CommentsPluginOptions, type CommentCardPayload } from './comments/commentsPlugin.js';
40
43
  export type { CommentsController, CommentDraft, CommentNotice, CommentUser, PlacedThread } from './comments/CommentsController.svelte.js';
41
- export { pagePlugin, createPagePlugin, type PagePluginOptions } from './page/PagePlugin.svelte';
42
- export { tocPlugin, createTocPlugin, type TocPluginOptions, type TocHeadingLevel } from './toc/TocPlugin.svelte';
43
- export { tablePlugin, createTablePlugin, isTablePlugin, type TablePluginOptions } from './table/TablePlugin.svelte';
44
+ export { createPagePlugin, type PagePluginOptions, type PageBlockLinkPayload } from './page/PagePlugin.svelte';
45
+ export { createTocPlugin, type TocPluginOptions, type TocHeadingLevel, type TocEntryPayload, type TocEmptyPayload } from './toc/TocPlugin.svelte';
46
+ export { createTablePlugin, type TablePluginOptions } from './table/TablePlugin.svelte';
47
+ export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
44
48
  export type { TableChrome, TableMenu, TableMenuRow, TableMenuItem, TableGripPayload, TableAddPayload } from './table/chrome.svelte.js';
45
49
  export { tableBlock, type TableBlockOptions } from '../crdt/tables.js';
46
- export { createEquationPlugin, KATEX_CDN, KATEX_VERSION, type EquationPluginOptions, type EquationData, type EquationEditor, type EquationTarget, type KatexLike, type KatexLoader } from './equation/EquationPlugin.svelte';
50
+ export { createEquationPlugin, KATEX_CDN, KATEX_VERSION, type EquationPluginOptions, type EquationData, type EquationEditor, type EquationErrorPayload, type EquationPlaceholderPayload, type EquationTarget, type KatexLike, type KatexLoader } from './equation/EquationPlugin.svelte';
@@ -1,31 +1,37 @@
1
- export { richTextPlugin, createRichTextPlugin, richTextOperations, richTextPlaceholder, createRichTextPlaceholder, CALLOUT_ICONS } 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 { createArrowMovePlugin } from './arrowMove/arrowMove.js';
3
4
  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';
5
+ export { createBlockHandlesPlugin } from './blockHandles/blockHandlesPlugin.js';
6
+ export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage } from './code/CodePlugin.svelte';
7
+ export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
8
8
  export { createMentionPlugin } from './mention/MentionPlugin.svelte';
9
9
  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';
10
+ export { withRulesAndTriggers } from './triggers/triggers.js';
11
+ export { createSlashMenuPlugin } from './slashMenu/slashMenuPlugin.js';
12
+ export { createToolbarPlugin } from './toolbar/toolbarPlugin.js';
13
+ export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
14
+ export { createSuggestionsPlugin } from './suggestions/suggestionsPlugin.js';
15
+ export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
16
+ export { createImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH } from './image/ImagePlugin.svelte';
17
+ export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf } from './media/EmbedPlugin.svelte';
18
+ export { createBookmarkPlugin } from './media/BookmarkPlugin.svelte';
19
+ export { createFilePlugin } from './media/FilePlugin.svelte';
20
+ export { createVideoPlugin } from './media/VideoPlugin.svelte';
21
+ export { createAudioPlugin } from './media/AudioPlugin.svelte';
20
22
  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';
23
- export { marqueePlugin, createMarqueePlugin } from './marquee/marqueePlugin.js';
23
+ export { createMediaEmptyPlugin } from './media/MediaEmpty.svelte';
24
+ export { createImageToolbarPlugin } from './image/toolbar.svelte.js';
25
+ export { createColumnsPlugin } from './columns/ColumnsPlugin.svelte';
26
+ export { createFindPlugin, findController } from './find/findPlugin.js';
27
+ export { createMarqueePlugin } from './marquee/marqueePlugin.js';
24
28
  export { findMatches } from './find/search.js';
25
29
  export { createCommentsPlugin, commentsController } from './comments/commentsPlugin.js';
26
- export { pagePlugin, createPagePlugin } from './page/PagePlugin.svelte';
27
- export { tocPlugin, createTocPlugin } from './toc/TocPlugin.svelte';
28
- export { tablePlugin, createTablePlugin, isTablePlugin } from './table/TablePlugin.svelte';
30
+ export { createPagePlugin } from './page/PagePlugin.svelte';
31
+ export { createTocPlugin } from './toc/TocPlugin.svelte';
32
+ export { createTablePlugin } from './table/TablePlugin.svelte';
33
+ // The table ops, prepared over any document (`document.apply(insertTableRow(document, …))`).
34
+ export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
29
35
  // The table kind's value as JSON (also on `edytor/crdt/edytor`).
30
36
  export { tableBlock } from '../crdt/tables.js';
31
37
  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 = () => {
@@ -90,15 +91,15 @@ export const markdownShortcutsPlugin = (edytor) => {
90
91
  if (!text)
91
92
  return false;
92
93
  const { id } = block;
93
- // The segment's start, in block offsets: the caret, less the text before it.
94
- const at = to - before.length + found.start;
94
+ // The segment's start, in block offsets: the caret (after the typed text), less the text before it.
95
+ const at = to - match.input.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
- ? [facade.prepare.deleteText(id, at + found.open + found.content, found.closing)]
98
- : []), facade.prepare.deleteText(id, at, found.open));
97
+ const plan = () => facade.compose(facade.prepare.formatRange(id, at + found.open, found.content, { [found.mark]: true }),
98
+ // The closing marker, the typed character with it.
99
+ facade.prepare.deleteText(id, at + found.open + found.content, found.closing + typed.length), 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
  };
@@ -4,29 +4,12 @@
4
4
 
5
5
  /**
6
6
  * The marquee's rectangle, in its overlay host (placed and sized to the
7
- * rectangle by the plugin's measure): the default box, or the app's `box`.
7
+ * rectangle by the plugin's measure): the app's `box`.
8
8
  */
9
- let { controller, box }: { controller: MarqueeController; box?: Snippet<[MarqueeBoxPayload]> } =
9
+ let { controller, box }: { controller: MarqueeController; box: Snippet<[MarqueeBoxPayload]> } =
10
10
  $props();
11
11
 
12
12
  const payload = $derived(controller.payload);
13
13
  </script>
14
14
 
15
- {#if payload}
16
- {#if box}
17
- {@render box(payload)}
18
- {:else}
19
- <div data-edytor-marquee data-adding={payload.adding ? 'true' : undefined}></div>
20
- {/if}
21
- {/if}
22
-
23
- <style>
24
- [data-edytor-marquee] {
25
- box-sizing: border-box;
26
- width: 100%;
27
- height: 100%;
28
- background: var(--edytor-marquee-background, rgba(35, 131, 226, 0.14));
29
- border: var(--edytor-marquee-border, 1px solid rgba(35, 131, 226, 0.4));
30
- border-radius: var(--edytor-marquee-radius, 2px);
31
- }
32
- </style>
15
+ {#if payload}{@render box(payload)}{/if}
@@ -2,7 +2,7 @@ import type { Snippet } from 'svelte';
2
2
  import type { MarqueeBoxPayload, MarqueeController } from './MarqueeController.svelte.js';
3
3
  type $$ComponentProps = {
4
4
  controller: MarqueeController;
5
- box?: Snippet<[MarqueeBoxPayload]>;
5
+ box: Snippet<[MarqueeBoxPayload]>;
6
6
  };
7
7
  declare const MarqueeBox: import("svelte").Component<$$ComponentProps, {}, "">;
8
8
  type MarqueeBox = ReturnType<typeof MarqueeBox>;
@@ -32,8 +32,6 @@ export declare class MarqueeController {
32
32
  /** Shift or Mod was held at the press (reactive). */
33
33
  adding: boolean;
34
34
  constructor(edytor: Edytor, threshold: number);
35
- /** Whether a press is down that may still become (or is) a marquee. */
36
- get pressing(): boolean;
37
35
  /** What a `box` snippet receives. */
38
36
  get payload(): MarqueeBoxPayload | null;
39
37
  /**