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,8 +1,13 @@
1
+ import { blockSelection } from '../../session/selection.js';
1
2
  import { convertBlocks, convertedBlocks, convertibleKinds, convertToKind, matchesQuery, rowOf, turnCommands } from '../../kinds.js';
2
3
  import { deleteSelectedBlocks, getSelectedBlocksInDocumentOrder, liftLayouts, outermost, shownText } from '../../selection/replaceSelection.js';
3
4
  import { selectedMembers } from '../../selection/visibility.js';
4
- import { labelsWith } from '../../labels.js';
5
+ import { blockMenuEnglish, labelsOf } from '../../labels.js';
5
6
  import { BLOCK_COLORS, colorable, setBlockColor } from '../../block/colors.js';
7
+ import { attribute, identify, keepFocus } from '../chrome.js';
8
+ import { holdKeys, listPopup, optionAttachment, stepRow } from '../list.svelte.js';
9
+ import { listen } from '../../utils/listen.js';
10
+ import { takeKeys } from '../../events/onFocus.js';
6
11
  /** The Color flyout's rows in `labels`: the text colours, then the backgrounds, each from the default. */
7
12
  const colorRows = (labels) => ['color', 'background'].flatMap((field) => [null, ...BLOCK_COLORS].map((value) => {
8
13
  const name = labels.colors[value ?? 'default'] ?? value ?? 'default';
@@ -26,18 +31,18 @@ export const colorQueryRow = (row) => ({
26
31
  * listed once a query names them (`searchOnly`): each paints the caret's
27
32
  * block, as the block menu's Color does (`setBlockColor`).
28
33
  */
29
- export const colorCommands = (edytor, labels) => colorRows(labels).map((row) => ({
34
+ export const colorCommands = (edytor) => colorRows(labelsOf(edytor, 'blockMenu', blockMenuEnglish)).map((row) => ({
30
35
  id: row.id,
31
36
  ...colorQueryRow(row),
32
37
  icon: 'A',
33
38
  group: 'Color',
34
39
  searchOnly: true,
35
40
  isEnabled: (view = edytor) => {
36
- const block = view.selection.state.startBlock;
41
+ const block = view.selection.textRange().startText?.parent;
37
42
  return Boolean(block && colorable(block));
38
43
  },
39
44
  run: () => {
40
- const block = edytor.selection.state.startBlock;
45
+ const block = edytor.selection.textRange().startText?.parent;
41
46
  if (!block || !colorable(block))
42
47
  return false;
43
48
  if (setBlockColor(edytor, [block], row.field, row.value))
@@ -60,20 +65,25 @@ export class BlockMenuController {
60
65
  blocks = $state([]);
61
66
  anchor = null;
62
67
  query = $state('');
63
- selectedIndex = $state(0);
68
+ /** The keyboard's row. */
69
+ index = $state(0);
64
70
  /** The open flyout: the kinds (`turn`), the colours (`color`), or none. */
65
71
  flyout = $state(false);
66
72
  /** The keyboard's row in the open flyout. */
67
73
  flyoutIndex = $state(0);
68
- /** The words the menu shows (the plugin's `labels`): read them in a custom `menu`. */
69
- labels;
70
- /** The Color flyout's rows, in `labels`. */
74
+ /** The actions' words: the view's `blockMenu` labels. */
75
+ #labels;
76
+ /** The Color flyout's rows, in those words. */
71
77
  #colors;
72
78
  constructor(edytor, options = {}) {
73
79
  this.edytor = edytor;
74
80
  this.options = options;
75
- this.labels = labelsWith('blockMenu', options.labels);
76
- this.#colors = colorRows(this.labels);
81
+ this.#labels = labelsOf(edytor, 'blockMenu', blockMenuEnglish);
82
+ this.#colors = colorRows(this.#labels);
83
+ this.popup = listPopup(edytor, 'block-menu', 'menu', () => {
84
+ const { block } = this;
85
+ return block && { opener: { block: block.id, control: 'grip' } };
86
+ });
77
87
  }
78
88
  get isOpen() {
79
89
  return this.block !== null;
@@ -91,8 +101,106 @@ export class BlockMenuController {
91
101
  }
92
102
  /** A row's element id (page-unique; a flyout's with `flyout`), for `aria-activedescendant`. */
93
103
  rowId = (row, flyout = false) => this.edytor.popups.idOf(`block-menu-${flyout ? 'flyout-' : ''}${'field' in row ? 'color-' : 'value' in row ? 'kind-' : ''}${row.id}`);
94
- /** Publish the open menu to the view's root (`edytor.popups`), or withdraw it with `null`. */
95
- publish = (popup) => this.edytor.popups.set('block-menu', popup);
104
+ /**
105
+ * The menu element (`{@attach controller.popup}`, the one with the rows):
106
+ * it takes the menu's id, its `menu` role and name unless it has its
107
+ * own, keeps the focus where it is on a press (a field takes its own),
108
+ * and is published to the view's root (`edytor.popups`) while it is in
109
+ * the page, the grip that opened it told so.
110
+ */
111
+ popup;
112
+ /**
113
+ * An open flyout (`{@attach controller.flyoutMenu}`, named by your
114
+ * markup): its id, `menu` role, the overlay's placement beside the menu,
115
+ * and presses that keep the focus.
116
+ */
117
+ flyoutMenu = (node) => {
118
+ identify(node, this.flyoutId, 'menu');
119
+ node.setAttribute('data-edytor-block-menu-flyout', '');
120
+ return listen(node, 'mousedown', keepFocus);
121
+ };
122
+ /**
123
+ * The element that holds the keyboard (`{@attach controller.keys}`: the
124
+ * search field): focused when it mounts, it takes every key of the menu
125
+ * (the arrows, Home and End walk the rows, → opens a row's flyout and ←
126
+ * closes it, Enter runs the row, Delete removes the blocks while the
127
+ * query is empty, Escape closes the flyout, then the menu), and names
128
+ * the open menu and its highlighted row (`aria-controls`,
129
+ * `aria-activedescendant`, once that row is in the page).
130
+ */
131
+ keys = (node) => {
132
+ $effect(() => attribute(node, 'aria-controls', this.flyout ? this.flyoutId : this.menuId));
133
+ return holdKeys(node, this.#keydown, () => {
134
+ const flyout = Boolean(this.flyout);
135
+ const row = flyout ? this.flyoutRows[this.flyoutIndex] : this.rows[this.index];
136
+ return row && this.rowId(row, flyout);
137
+ });
138
+ };
139
+ /**
140
+ * The attachment of the row at `index` (of the open flyout's rows with
141
+ * `flyout`): `{@attach controller.option(index)}` on its element.
142
+ * Its id, its role (`menuitem`, a switch's `menuitemcheckbox`, a colour's
143
+ * `menuitemradio` with its ✓ as `aria-checked`, a flyout's opener with
144
+ * `aria-haspopup` and `aria-expanded`); the keyboard's row scrolls into
145
+ * view. Its look is the markup's (`index`, `flyoutIndex`).
146
+ */
147
+ option = (index, flyout = false) => {
148
+ const row = (flyout ? this.flyoutRows : this.rows)[index];
149
+ // Only an action has `checked` and `submenu`, only a colour `field`.
150
+ const { checked, submenu } = (row ?? {});
151
+ const color = row && 'field' in row;
152
+ const on = color ? this.isCurrentColor(row) : checked;
153
+ return optionAttachment(row
154
+ ? this.rowId(row, flyout)
155
+ : this.edytor.popups.idOf(`block-menu-${flyout ? 'flyout-' : ''}${index}`), color ? 'menuitemradio' : on === undefined ? 'menuitem' : 'menuitemcheckbox', (flyout ? this.flyoutIndex : this.index) === index, {
156
+ ...(on === undefined ? {} : { 'aria-checked': on }),
157
+ ...(submenu
158
+ ? { 'aria-haspopup': 'menu', 'aria-expanded': this.flyout === submenu }
159
+ : {})
160
+ });
161
+ };
162
+ /** The search field typed in: the rows match `query`, the first one highlighted, no flyout open. */
163
+ search(query) {
164
+ this.query = query;
165
+ this.index = 0;
166
+ this.flyout = false;
167
+ }
168
+ /** The menu's keys, on the element that holds the keyboard (`keys`). */
169
+ #keydown = (event) => {
170
+ if (event.defaultPrevented || event.isComposing)
171
+ return;
172
+ const { key } = event;
173
+ const { flyout, rows } = this;
174
+ const row = rows[this.index];
175
+ const submenu = row && 'submenu' in row ? row.submenu : undefined;
176
+ const to = stepRow(key, this.index, rows.length, { ends: true });
177
+ if (key === 'Escape') {
178
+ if (flyout)
179
+ this.flyout = false;
180
+ else
181
+ this.close();
182
+ }
183
+ else if (flyout && (key === 'ArrowDown' || key === 'ArrowUp'))
184
+ // In a flyout, the arrows walk its rows.
185
+ this.flyoutIndex = stepRow(key, this.flyoutIndex, this.flyoutRows.length);
186
+ else if (flyout && key === 'Enter')
187
+ this.run(this.flyoutRows[this.flyoutIndex]);
188
+ else if (key === 'Delete' && !this.query)
189
+ this.remove();
190
+ else if (to !== undefined) {
191
+ this.index = to;
192
+ this.flyout = false;
193
+ }
194
+ else if (key === 'ArrowRight' && submenu)
195
+ this.openFlyout(submenu);
196
+ else if (key === 'ArrowLeft' && flyout)
197
+ this.flyout = false;
198
+ else if (key === 'Enter')
199
+ this.run(row);
200
+ else
201
+ return;
202
+ event.preventDefault();
203
+ };
96
204
  /** What Delete and Turn into act on: `blocks`, a list or a code block with its subtree (`selectedMembers`). */
97
205
  get members() {
98
206
  return selectedMembers(this.edytor, this.blocks);
@@ -124,38 +232,34 @@ export class BlockMenuController {
124
232
  return rowOf(this.edytor, this.block);
125
233
  }
126
234
  get actions() {
127
- const { block, blocks } = this;
235
+ const { block, blocks, edytor } = this;
236
+ const labels = this.#labels;
128
237
  if (!block)
129
238
  return [];
130
- const canMove = (direction) => () => this.edytor.canMoveBlocks({ blocks: outermost(blocks), direction });
131
- const { labels } = this;
132
- const [mod, shift] = this.edytor.keymap.isMac
133
- ? ['⌘', '⇧']
134
- : [`${labels.ctrl}+`, `${labels.shift}+`];
239
+ const [mod, shift] = edytor.keymap.isMac ? ['⌘', '⇧'] : [`${labels.ctrl}+`, `${labels.shift}+`];
240
+ /** An action row, its icon named by its id. */
241
+ const action = (id, label, more) => ({
242
+ id,
243
+ label,
244
+ icon: `action.${id}`,
245
+ ...more
246
+ });
247
+ const move = (direction, label, arrow) => action(direction, label, {
248
+ hint: `${mod}${shift}${arrow}`,
249
+ isEnabled: () => edytor.canMove({ blocks: outermost(blocks), direction }),
250
+ run: () => this.move(direction)
251
+ });
135
252
  const all = [
136
- {
137
- id: 'turn',
138
- label: labels.turnInto,
139
- icon: 'action.turn',
253
+ action('turn', labels.turnInto, {
140
254
  submenu: 'turn',
141
255
  isEnabled: () => convertedBlocks(this.members).length > 0
142
- },
143
- {
144
- id: 'color',
145
- label: labels.color,
146
- icon: 'action.color',
256
+ }),
257
+ action('color', labels.color, {
147
258
  submenu: 'color',
148
259
  isEnabled: () => this.colorable.length > 0
149
- },
260
+ }),
150
261
  ...(this.options.linkTo && this.linked
151
- ? [
152
- {
153
- id: 'link',
154
- label: labels.copyLink,
155
- icon: 'action.link',
156
- run: () => this.copyLink()
157
- }
158
- ]
262
+ ? [action('link', labels.copyLink, { run: () => this.copyLink() })]
159
263
  : []),
160
264
  // The kind's own rows, on its block alone (a table's rows and switches). A
161
265
  // switch keeps the menu open; any other row closes it, the caret its
@@ -173,37 +277,17 @@ export class BlockMenuController {
173
277
  : row.run
174
278
  }))
175
279
  : []),
176
- {
177
- id: 'duplicate',
178
- label: labels.duplicate,
179
- icon: 'action.duplicate',
280
+ action('duplicate', labels.duplicate, {
180
281
  hint: `${mod}D`,
181
- run: () => (blocks.length > 1 ? this.duplicateAll(blocks) : this.duplicate(block))
182
- },
183
- {
184
- id: 'up',
185
- label: labels.moveUp,
186
- icon: 'action.up',
187
- hint: `${mod}${shift}↑`,
188
- isEnabled: canMove('up'),
189
- run: () => this.move('up')
190
- },
191
- {
192
- id: 'down',
193
- label: labels.moveDown,
194
- icon: 'action.down',
195
- hint: `${mod}${shift}↓`,
196
- isEnabled: canMove('down'),
197
- run: () => this.move('down')
198
- },
199
- {
200
- id: 'delete',
201
- label: labels.delete,
202
- icon: 'action.delete',
282
+ run: () => this.duplicate(blocks, blocks.length > 1)
283
+ }),
284
+ move('up', labels.moveUp, '↑'),
285
+ move('down', labels.moveDown, '↓'),
286
+ action('delete', labels.delete, {
203
287
  hint: labels.deleteKey,
204
288
  danger: true,
205
289
  run: () => this.remove()
206
- }
290
+ })
207
291
  ];
208
292
  return all.filter((action) => matchesQuery(action, this.query) && action.isEnabled?.() !== false);
209
293
  }
@@ -211,12 +295,13 @@ export class BlockMenuController {
211
295
  * With a query, the kinds it names join the list (Notion's "Turn into"
212
296
  * results), matched as the slash menu matches them (`matchesQuery`).
213
297
  */
214
- get matchingKinds() {
298
+ get #matchingKinds() {
215
299
  if (!this.query.trim())
216
300
  return [];
217
- if (!convertedBlocks(this.members).length)
218
- return turnCommands(this.edytor, this.blocks).filter((kind) => matchesQuery(kind, this.query));
219
- return this.kinds.filter((kind) => matchesQuery(kind, this.query));
301
+ const kinds = convertedBlocks(this.members).length
302
+ ? this.kinds
303
+ : turnCommands(this.edytor, this.blocks);
304
+ return kinds.filter((kind) => matchesQuery(kind, this.query));
220
305
  }
221
306
  /**
222
307
  * With a query, the colours it names join the list after the kinds
@@ -230,7 +315,7 @@ export class BlockMenuController {
230
315
  }
231
316
  /** Every keyboard row: actions, then the matching kinds, then the matching colours. */
232
317
  get rows() {
233
- return [...this.actions, ...this.matchingKinds, ...this.matchingColors];
318
+ return [...this.actions, ...this.#matchingKinds, ...this.matchingColors];
234
319
  }
235
320
  open(block, anchor) {
236
321
  const selected = getSelectedBlocksInDocumentOrder(this.edytor);
@@ -238,7 +323,7 @@ export class BlockMenuController {
238
323
  this.block = block;
239
324
  this.anchor = anchor;
240
325
  this.query = '';
241
- this.selectedIndex = 0;
326
+ this.index = 0;
242
327
  this.flyout = false;
243
328
  this.flyoutIndex = 0;
244
329
  }
@@ -254,7 +339,7 @@ export class BlockMenuController {
254
339
  move(direction) {
255
340
  if (!this.blocks.length)
256
341
  return;
257
- this.edytor.moveBlocks({ blocks: outermost(this.blocks), direction });
342
+ this.edytor.move({ blocks: outermost(this.blocks), direction });
258
343
  this.close();
259
344
  }
260
345
  /**
@@ -290,26 +375,24 @@ export class BlockMenuController {
290
375
  setBlockColor(this.edytor, painted, row.field, row.value);
291
376
  const live = blocks.flatMap((block) => this.edytor.idToBlock.get(block.id) ?? []);
292
377
  if (live.length)
293
- this.edytor.selection.selectBlocks(...live);
378
+ this.edytor.selection.select(blockSelection(live.map((block) => block.id)));
294
379
  this.focus();
295
380
  }
296
- duplicate(block) {
297
- const copy = block.duplicateBlock();
298
- this.close(false);
299
- this.caret(copy ?? block);
300
- }
301
381
  /**
302
- * Duplicate several blocks as one undo step, each copy after its block (a
303
- * block inside another of them is copied with it; a vetoed one is skipped,
304
- * `dispatcher.each`); the copies are selected.
382
+ * Duplicate `blocks` as one undo step, each copy after its block (a
383
+ * block inside another of them is copied with it; a vetoed one is
384
+ * skipped, `dispatcher.each`); the copies are selected (`select`), else
385
+ * the first copy takes the caret (refused: its block keeps it).
305
386
  */
306
- duplicateAll(blocks) {
387
+ duplicate(blocks, select) {
307
388
  const copies = this.edytor.dispatcher
308
- .each('insertBlock', outermost(blocks), (block) => block.duplicateBlock())
309
- .filter((copy) => copy != null);
389
+ .each('duplicateBlock', outermost(blocks), (block) => this.edytor.duplicateBlock(block.id))
390
+ .flatMap((copy) => (copy?.status === 'applied' ? copy.ids : []));
310
391
  this.close(false);
311
- if (copies.length)
312
- this.edytor.selection.selectBlocks(...copies);
392
+ if (!select)
393
+ this.caret(this.edytor.idToBlock.get(copies[0] ?? '') ?? blocks[0]);
394
+ else if (copies.length)
395
+ this.edytor.selection.select(blockSelection(copies));
313
396
  }
314
397
  /**
315
398
  * Delete the open blocks' `members` (a list with its items) as the
@@ -343,30 +426,23 @@ export class BlockMenuController {
343
426
  await navigator.clipboard?.writeText(options.linkTo(linked));
344
427
  this.close();
345
428
  }
346
- /** Run the keyboard row (or open its flyout). */
347
- runSelected() {
348
- const row = this.rows[this.selectedIndex];
429
+ /**
430
+ * Run a row of the menu or of its open flyout (a click; Enter runs the
431
+ * keyboard's): paint a colour, convert to a kind, open an action's
432
+ * flyout or run it.
433
+ */
434
+ run(row) {
349
435
  if (!row)
350
436
  return;
351
437
  if ('field' in row)
352
- return this.paint(row);
353
- if ('value' in row)
354
- return this.turnInto(row);
355
- if (row.submenu)
438
+ this.paint(row);
439
+ else if ('value' in row)
440
+ this.turnInto(row);
441
+ else if (row.submenu)
356
442
  this.openFlyout(row.submenu);
357
443
  else
358
444
  row.run?.();
359
445
  }
360
- /** Run the open flyout's keyboard row: convert to its kind, or paint its colour. */
361
- runFlyout() {
362
- const row = this.flyoutRows[this.flyoutIndex];
363
- if (!row)
364
- return;
365
- if ('field' in row)
366
- this.paint(row);
367
- else
368
- this.turnInto(row);
369
- }
370
446
  /**
371
447
  * Open a flyout on its first row (keyboard or mouse): the "Turn into"
372
448
  * kinds (default) or the colours; that flyout already open stays as it
@@ -382,7 +458,7 @@ export class BlockMenuController {
382
458
  restore(blocks) {
383
459
  const live = blocks.flatMap((block) => this.edytor.idToBlock.get(block.id) ?? []);
384
460
  if (live.length > 1) {
385
- this.edytor.selection.selectBlocks(...live);
461
+ this.edytor.selection.select(blockSelection(live.map((block) => block.id)));
386
462
  this.focus();
387
463
  }
388
464
  else if (live[0]?.node?.isConnected)
@@ -399,12 +475,11 @@ export class BlockMenuController {
399
475
  if (text || !block?.isInTree)
400
476
  this.edytor.dispatcher.caret(text, 0);
401
477
  else
402
- this.edytor.selection.selectBlocks(block);
478
+ this.edytor.selection.select(blockSelection([block.id]));
403
479
  this.focus();
404
480
  }
405
481
  /** Back to the editor: its own focus, not a user gesture (as its selection writes). */
406
482
  focus() {
407
- this.edytor.expectInternalFocus();
408
- this.edytor.node?.focus({ preventScroll: true });
483
+ takeKeys(this.edytor);
409
484
  }
410
485
  }
@@ -1,12 +1,10 @@
1
1
  import type { Plugin } from '../../plugins.js';
2
2
  import { type BlockMenuOptions } from './BlockMenuController.svelte.js';
3
3
  /**
4
- * Notion's block menu: a handle click (without an `onActivate` of your own)
4
+ * Notion's block menu: a handle click
5
5
  * opens it beside the handle — search, Turn into, Color, Duplicate, Move,
6
6
  * Delete, and Copy link when `linkTo` is given. Also binds Mod+D (duplicate
7
7
  * the selected blocks, or the caret's block), and adds the colours to the
8
8
  * slash menu by name (`/red`: "Red text", "Red background").
9
9
  */
10
10
  export declare const createBlockMenuPlugin: (options?: BlockMenuOptions) => Plugin;
11
- /** The block menu without a block link. */
12
- export declare const blockMenuPlugin: Plugin;
@@ -1,10 +1,8 @@
1
- import { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT } from '../blockHandles/BlockHandleController.svelte.js';
2
- import { onPress } from '../../events/onFocus.js';
1
+ import { handleMenuEvents, mountChrome } from '../chrome.js';
3
2
  import { getSelectedBlocksInDocumentOrder } from '../../selection/replaceSelection.js';
4
- import BlockMenu from './BlockMenu.svelte';
5
3
  import { BlockMenuController, colorCommands } from './BlockMenuController.svelte.js';
6
4
  /**
7
- * Notion's block menu: a handle click (without an `onActivate` of your own)
5
+ * Notion's block menu: a handle click
8
6
  * opens it beside the handle — search, Turn into, Color, Duplicate, Move,
9
7
  * Delete, and Copy link when `linkTo` is given. Also binds Mod+D (duplicate
10
8
  * the selected blocks, or the caret's block), and adds the colours to the
@@ -76,48 +74,33 @@ export const createBlockMenuPlugin = (options = {}) => (edytor) => {
76
74
  };
77
75
  return {
78
76
  // Colours by name in the slash menu (`/red`), as in Notion.
79
- commands: colorCommands(edytor, controller.labels),
77
+ commands: colorCommands(edytor),
80
78
  hotkeys: {
81
79
  'mod+d': ({ prevent }) => {
82
80
  if (edytor.readonly)
83
81
  return;
84
82
  const selected = getSelectedBlocksInDocumentOrder(edytor).filter((b) => b.movable);
85
83
  if (selected.length)
86
- return prevent(() => controller.duplicateAll(selected));
87
- const block = edytor.selection.state.startBlock;
84
+ return prevent(() => controller.duplicate(selected, true));
85
+ const block = edytor.selection.textRange().startText?.parent;
88
86
  if (block?.movable)
89
- prevent(() => controller.duplicate(block));
87
+ prevent(() => controller.duplicate([block], false));
90
88
  }
91
89
  },
92
90
  onEdytorAttached: ({ node }) => {
93
- const activate = (event) => {
91
+ const off = handleMenuEvents(edytor, node, (event) => {
94
92
  // The menu takes the keyboard (its search field).
95
93
  event.preventDefault();
96
- const { block, anchor } = event.detail;
97
- controller.open(block, anchor);
94
+ controller.open(event.detail.block, event.detail.anchor);
98
95
  edytor.overlay.invalidate();
99
- };
100
- const outside = (event) => {
101
- const target = event.target;
102
- if (controller.isOpen &&
103
- !target?.closest?.('[data-edytor-block-menu-host], [data-edytor-block-handle-host]'))
104
- controller.close(false);
105
- };
96
+ },
106
97
  // A `+` opens its own menu: this one closes.
107
- const add = () => controller.close(false);
108
- node.addEventListener(BLOCK_ACTIVATE_EVENT, activate);
109
- node.addEventListener(BLOCK_ADD_EVENT, add);
110
- // Every press, WebKit's lone `mousedown` after a drag too (`onPress`).
111
- const offPress = onPress(edytor, node.ownerDocument, outside, true);
112
- const unmount = edytor.overlay.mount(BlockMenu, { controller, menu: options.menu }, 'edytor-block-menu-host', 70, place);
98
+ close, '[data-edytor-block-menu-host], [data-edytor-block-handle-host]', () => controller.isOpen && close());
99
+ const unmount = mountChrome(edytor, options.menu, controller, () => controller.isOpen, { name: 'edytor-block-menu-host', zIndex: 70, measure: place }, close);
113
100
  return () => {
114
- node.removeEventListener(BLOCK_ACTIVATE_EVENT, activate);
115
- node.removeEventListener(BLOCK_ADD_EVENT, add);
116
- offPress();
101
+ off();
117
102
  unmount();
118
103
  };
119
104
  }
120
105
  };
121
106
  };
122
- /** The block menu without a block link. */
123
- export const blockMenuPlugin = createBlockMenuPlugin();
@@ -0,0 +1,8 @@
1
+ import type { Plugin } from '../plugins.js';
2
+ /**
3
+ * `plugin`, known as a `name` plugin: `<Edytor>`'s default plugin of that
4
+ * name yields to any instance listed (`brandOf`).
5
+ */
6
+ export declare const branded: (name: string, plugin: Plugin) => Plugin;
7
+ /** The name `plugin` was branded with, if any. */
8
+ export declare const brandOf: (plugin: Plugin) => string | undefined;
@@ -0,0 +1,8 @@
1
+ const brands = new WeakMap();
2
+ /**
3
+ * `plugin`, known as a `name` plugin: `<Edytor>`'s default plugin of that
4
+ * name yields to any instance listed (`brandOf`).
5
+ */
6
+ export const branded = (name, plugin) => (brands.set(plugin, name), plugin);
7
+ /** The name `plugin` was branded with, if any. */
8
+ export const brandOf = (plugin) => brands.get(plugin);
@@ -0,0 +1,79 @@
1
+ /**
2
+ * What every chrome surface shares with the markup that renders it, the
3
+ * app's snippet: the one host (`mountChrome`), the row payload a controller
4
+ * builds, a row's attributes (`option(index)`), and the small DOM rules the
5
+ * controllers' attachments apply (a press that keeps the focus, an
6
+ * element given its id, role and name).
7
+ */
8
+ import type { Snippet } from 'svelte';
9
+ import type { Attachment } from 'svelte/attachments';
10
+ import type { Edytor } from '../edytor.svelte.js';
11
+ import { type BlockActivation, type BlockAddition } from './blockHandles/BlockHandleController.svelte.js';
12
+ /**
13
+ * Mount the app's `snippet` for a chrome surface in a fixed host of the
14
+ * overlay (`data-<name>`, placed by `measure`), rendered with `payload`
15
+ * while `shown` holds and closed (`close`) when the view turns readonly.
16
+ * Without a snippet the surface renders nothing (its controller still
17
+ * works): nothing is mounted. Answers the teardown.
18
+ */
19
+ export declare const mountChrome: <T>(edytor: Edytor, snippet: Snippet<[T]> | undefined, payload: T, shown: () => unknown, place: {
20
+ name: string;
21
+ zIndex: number;
22
+ measure: (host: HTMLElement, origin: DOMRect) => (() => void) | void;
23
+ }, close?: () => void) => () => void;
24
+ /**
25
+ * One row of a chrome list a controller builds for the app's markup: the
26
+ * same shape in every menu (a table grip's, the code language list's).
27
+ */
28
+ export type MenuItemPayload<T> = {
29
+ /** What the row stands for: a command, a trigger's row, a version. */
30
+ item: T;
31
+ /** The row's element id (page-unique): the keyboard's owner names the highlighted row by it. */
32
+ id: string;
33
+ /** It is the keyboard's row. */
34
+ selected: boolean;
35
+ /** Run it (pick the row). */
36
+ run: () => void;
37
+ /** Make it the keyboard's row (hover). */
38
+ select: () => void;
39
+ /**
40
+ * The row's attachment (`{@attach item.option}`): its `id`, `role`,
41
+ * `aria-selected` (or `aria-checked`) and `tabindex`, and the keyboard's
42
+ * row scrolled into view. Its look is yours, from `selected`.
43
+ */
44
+ option: Attachment<HTMLElement>;
45
+ };
46
+ /** An attribute's value as an attachment writes it: `undefined` or `null` removes it. */
47
+ type AttributeValue = string | number | boolean | null | undefined;
48
+ /**
49
+ * The attachment of an element the package needs something of (a row, a
50
+ * control inside a block): it writes `attributes` (see `write`) and
51
+ * listens for `on`'s events until it is torn down. Read in a template,
52
+ * a new attachment replaces the last one when what it reads changes: the
53
+ * attributes it no longer gives (`undefined`) are removed.
54
+ */
55
+ export declare const attach: (attributes: Record<string, AttributeValue>, on?: { [K in keyof HTMLElementEventMap]?: (event: HTMLElementEventMap[K]) => void; }) => Attachment<HTMLElement>;
56
+ /** A text field: it takes the focus a press gives it. */
57
+ export declare const isField: (target: EventTarget | null) => boolean;
58
+ /**
59
+ * A press on chrome keeps the focus where it is (the editor's caret, or the
60
+ * menu's field): every press but one on a field, which takes its own.
61
+ */
62
+ export declare const keepFocus: (event: MouseEvent) => void;
63
+ /** A press on a control inside a block keeps the editor's selection (and its focus). */
64
+ export declare const keepSelection: (event: MouseEvent) => void;
65
+ /** Give `node` the id the controller names it by (`aria-controls`), and the role it lacks. */
66
+ export declare const identify: (node: HTMLElement, id: string, role?: string) => void;
67
+ /** Set or remove (`undefined`) an attribute the keyboard's owner carries. */
68
+ export declare const attribute: (node: HTMLElement, name: string, value: string | undefined) => void;
69
+ /** Whether `node` may name a highlighted row (`aria-activedescendant`): a field, or an element with a role. */
70
+ export declare const namesRows: (node: HTMLElement) => boolean;
71
+ /**
72
+ * A handle menu's events on the editor `node` (the block menu, the `+`'s
73
+ * menu): a grip's activation (`BLOCK_ACTIVATE_EVENT`), a `+`'s offer
74
+ * (`BLOCK_ADD_EVENT`), and every press outside the elements `inside`
75
+ * matches (WebKit's lone `mousedown` after a drag too, `onPress`). Answers
76
+ * the teardown.
77
+ */
78
+ export declare const handleMenuEvents: (edytor: Edytor, node: HTMLElement, activate: (event: CustomEvent<BlockActivation>) => void, add: (event: CustomEvent<BlockAddition>) => void, inside: string, outside: () => void) => () => void;
79
+ export {};