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,12 +1,11 @@
1
- import { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT } from '../blockHandles/BlockHandleController.svelte.js';
2
- import { onPress } from '../../events/onFocus.js';
3
- import SlashMenu from './SlashMenu.svelte';
4
- import { caretRect, placeBelow } from '../triggers/place.js';
1
+ import { caretRect } from '../triggers/place.js';
2
+ import { placeNear } from '../../surface/overlay.js';
5
3
  import { SlashMenuController } from './SlashMenuController.svelte.js';
6
- import { labelsWith } from '../../labels.js';
7
- /** The slash menu, with your own markup through `menu` or `item` snippets. */
4
+ import { handleMenuEvents, mountChrome } from '../chrome.js';
5
+ import { withTriggerMenus } from '../triggers/triggers.js';
6
+ /** The slash menu, drawn by your `menu` snippet. */
8
7
  export const createSlashMenuPlugin = (options = {}) => (edytor) => {
9
- const controller = new SlashMenuController(edytor, labelsWith('slashMenu', options.labels));
8
+ const controller = new SlashMenuController(edytor);
10
9
  /**
11
10
  * Beside the caret (below a `+` it was opened from), kept in the
12
11
  * viewport; measured in the overlay's frame, written after, as
@@ -22,68 +21,28 @@ export const createSlashMenuPlugin = (options = {}) => (edytor) => {
22
21
  const anchor = addition?.anchor?.isConnected ? addition.anchor : addition?.block.node;
23
22
  const box = anchor?.getBoundingClientRect();
24
23
  const rect = box && (box.width || box.height) ? box : caretRect(edytor);
25
- return rect && placeBelow(host, rect, { width: 310, height: 350 });
24
+ return rect && placeNear(host, rect, [310, 350]);
26
25
  };
27
- return {
28
- hotkeys: {
29
- arrowdown: ({ prevent }) => {
30
- if (controller.moveSelection(1))
31
- prevent();
32
- },
33
- arrowup: ({ prevent }) => {
34
- if (controller.moveSelection(-1))
35
- prevent();
36
- },
37
- enter: ({ prevent }) => {
38
- if (controller.isOpen && controller.commands.length)
39
- prevent(() => void controller.runSelected());
40
- },
41
- escape: ({ prevent }) => {
42
- if (controller.isOpen)
43
- prevent(() => controller.dismiss());
44
- }
45
- },
46
- onAfterOperation: (change) => {
47
- if (change.operation !== 'insertText' || !('text' in change))
48
- return;
49
- controller.handleTextInsertion(change.text, change.block, change.payload);
26
+ const plugin = {
27
+ onEdytorAttached: ({ node }) => handleMenuEvents(edytor, node,
28
+ // A grip's menu takes over (one menu at a time).
29
+ () => {
30
+ if (controller.addition)
31
+ controller.close();
32
+ },
33
+ // A `+` offers its block: nothing is added until a row is picked.
34
+ (event) => {
35
+ event.preventDefault();
36
+ controller.offer(event.detail);
50
37
  edytor.overlay.invalidate();
51
- },
52
- onSelectionChange: () => {
53
- controller.reconcileSelection();
54
- edytor.overlay.invalidate();
55
- },
56
- onEdytorAttached: ({ node }) => {
57
- // A `+` offers its block: nothing is added until a row is picked.
58
- const offer = (event) => {
59
- event.preventDefault();
60
- controller.offer(event.detail);
61
- edytor.overlay.invalidate();
62
- };
63
- const outside = (event) => {
64
- const target = event.target;
65
- // The selection as it was; a press in the editor then places its caret.
66
- if (controller.addition && !target?.closest?.('[data-edytor-slash-menu-host]'))
67
- controller.dismiss(false);
68
- };
69
- // A grip's menu takes over (one menu at a time).
70
- const activate = () => {
71
- if (controller.addition)
72
- controller.close();
73
- };
74
- node.addEventListener(BLOCK_ADD_EVENT, offer);
75
- node.addEventListener(BLOCK_ACTIVATE_EVENT, activate);
76
- // Every press, WebKit's lone `mousedown` after a drag too (`onPress`).
77
- const offPress = onPress(edytor, node.ownerDocument, outside, true);
78
- const unmount = edytor.overlay.mount(SlashMenu, { controller, menu: options.menu, item: options.item }, 'edytor-slash-menu-host', 50, positionMenu);
79
- return () => {
80
- node.removeEventListener(BLOCK_ADD_EVENT, offer);
81
- node.removeEventListener(BLOCK_ACTIVATE_EVENT, activate);
82
- offPress();
83
- unmount();
84
- };
85
- }
38
+ }, '[data-edytor-slash-menu-host]',
39
+ // The selection as it was; a press in the editor then places its caret.
40
+ () => controller.addition && controller.dismiss(false))
86
41
  };
42
+ // The `/` trigger, wired as a plugin's triggers are.
43
+ return withTriggerMenus(edytor, plugin, [controller], () => ({
44
+ move: controller.move,
45
+ pick: controller.commands.length ? () => void controller.runSelected() : undefined,
46
+ close: () => controller.dismiss()
47
+ }), () => mountChrome(edytor, options.menu, controller, () => controller.isOpen, { name: 'edytor-slash-menu-host', zIndex: 50, measure: positionMenu }, () => controller.dismiss(false)));
87
48
  };
88
- /** The Notion-style slash menu. */
89
- export const slashMenuPlugin = createSlashMenuPlugin();
@@ -1,22 +1,43 @@
1
+ <script lang="ts" module>
2
+ import { mount, unmount } from 'svelte';
3
+ import type { Plugin } from '../../plugins.js';
4
+ import type { SuggestionBarOptions } from './suggestionsPlugin.js';
5
+ import Self from './SuggestionBars.svelte';
6
+
7
+ /**
8
+ * The suggestion bar (Notion AI's): your `bar` under each block
9
+ * suggestion (Accept, Discard, and Try again when the app passed
10
+ * `onRetry`); its keys are the suggestions plugin's.
11
+ */
12
+ export const createSuggestionBarPlugin =
13
+ ({ bar }: SuggestionBarOptions): Plugin =>
14
+ (edytor) => ({
15
+ onEdytorAttached: () => {
16
+ const bars = mount(Self, { target: edytor.overlay.layer!, props: { edytor, bar } });
17
+ return () => void unmount(bars);
18
+ }
19
+ });
20
+ </script>
21
+
1
22
  <script lang="ts">
23
+ import { takeKeys } from '../../events/onFocus.js';
2
24
  import { onMount, type Snippet } from 'svelte';
3
25
  import type { Edytor } from '../../edytor.svelte.js';
4
26
  import type { Suggestion } from '../../session/suggestions.svelte.js';
5
27
  import type { SuggestionBarPayload } from './suggestionsPlugin.js';
6
- import type { SuggestionsLabels } from '../../labels.js';
7
28
 
8
- let {
9
- edytor,
10
- bar,
11
- labels
12
- }: { edytor: Edytor; bar?: Snippet<[SuggestionBarPayload]>; labels: SuggestionsLabels } =
13
- $props();
29
+ /** The plugin's `bar` under each block suggestion's preview, placed once per frame. */
30
+ let { edytor, bar }: { edytor: Edytor; bar: Snippet<[SuggestionBarPayload]> } = $props();
14
31
 
15
32
  /** Each bar's place under its preview, layer-relative, measured once per frame. */
16
33
  let places = $state<Record<string, { left: number; top: number; width: number }>>({});
17
34
 
18
35
  onMount(() =>
19
36
  edytor.overlay.add((origin) => {
37
+ // No suggestion listed, no preview: nothing to find in the page (a long
38
+ // page would be searched every frame) and nothing to place.
39
+ if (!edytor.suggestions.list.length)
40
+ return Object.keys(places).length ? () => (places = {}) : undefined;
20
41
  const next: typeof places = {};
21
42
  for (const node of edytor.node?.querySelectorAll<HTMLElement>('[data-edytor-suggestion]') ??
22
43
  []) {
@@ -44,19 +65,17 @@
44
65
  suggestion,
45
66
  accept: () => {
46
67
  suggestion.accept();
47
- edytor.expectInternalFocus();
48
- edytor.node?.focus({ preventScroll: true });
68
+ takeKeys(edytor);
49
69
  },
50
70
  discard: suggestion.discard,
51
71
  retry: suggestion.retryable ? suggestion.retry : undefined,
52
- readonly: edytor.readonly
72
+ readonly: edytor.readonly,
73
+ mac: edytor.keymap.isMac
53
74
  });
54
- const keep = (event: MouseEvent) => event.preventDefault();
55
75
  </script>
56
76
 
57
77
  {#each shown as suggestion (suggestion.id)}
58
78
  {@const place = places[suggestion.id]}
59
- {@const actions = payload(suggestion)}
60
79
  <div
61
80
  data-edytor-suggestion-bar={suggestion.id}
62
81
  data-status={suggestion.status}
@@ -65,38 +84,7 @@
65
84
  style:top={`${place?.top ?? 0}px`}
66
85
  style:visibility={place ? undefined : 'hidden'}
67
86
  >
68
- {#if bar}
69
- {@render bar(actions)}
70
- {:else}
71
- <span data-edytor-suggestion-label
72
- >{suggestion.status === 'streaming'
73
- ? labels.writing(suggestion.label)
74
- : (suggestion.label ?? labels.suggestion)}</span
75
- >
76
- {#if !actions.readonly}
77
- <button
78
- type="button"
79
- data-edytor-suggestion-accept
80
- onmousedown={keep}
81
- onclick={actions.accept}
82
- >{labels.accept} <kbd>{edytor.keymap.isMac ? '⌘↵' : `${labels.ctrl}+↵`}</kbd></button
83
- >
84
- {/if}
85
- <button
86
- type="button"
87
- data-edytor-suggestion-discard
88
- onmousedown={keep}
89
- onclick={actions.discard}>{labels.discard} <kbd>{labels.escape}</kbd></button
90
- >
91
- {#if actions.retry && !actions.readonly}
92
- <button
93
- type="button"
94
- data-edytor-suggestion-retry
95
- onmousedown={keep}
96
- onclick={actions.retry}>{labels.retry}</button
97
- >
98
- {/if}
99
- {/if}
87
+ {@render bar(payload(suggestion))}
100
88
  </div>
101
89
  {/each}
102
90
 
@@ -104,45 +92,5 @@
104
92
  [data-edytor-suggestion-bar] {
105
93
  position: absolute;
106
94
  z-index: 30;
107
- display: flex;
108
- align-items: center;
109
- gap: 4px;
110
- padding: 4px;
111
- border-radius: 8px;
112
- background: var(--edytor-suggestion-bar-background, #fff);
113
- box-shadow:
114
- 0 0 0 1px rgb(15 15 15 / 0.05),
115
- 0 3px 6px rgb(15 15 15 / 0.1),
116
- 0 9px 24px rgb(15 15 15 / 0.2);
117
- font-size: 13px;
118
- line-height: 1.2;
119
- white-space: nowrap;
120
- user-select: none;
121
- }
122
- [data-edytor-suggestion-label] {
123
- padding: 0 6px;
124
- color: var(--edytor-suggestion-accent, #2383e2);
125
- font-weight: 500;
126
- }
127
- [data-edytor-suggestion-bar] button {
128
- display: inline-flex;
129
- align-items: center;
130
- gap: 6px;
131
- height: 26px;
132
- padding: 0 8px;
133
- border: 0;
134
- border-radius: 6px;
135
- background: transparent;
136
- color: inherit;
137
- font: inherit;
138
- cursor: pointer;
139
- }
140
- [data-edytor-suggestion-bar] button:hover {
141
- background: rgb(55 53 47 / 0.08);
142
- }
143
- [data-edytor-suggestion-bar] kbd {
144
- color: rgb(55 53 47 / 0.5);
145
- font: inherit;
146
- font-size: 11px;
147
95
  }
148
96
  </style>
@@ -1,11 +1,17 @@
1
+ import type { Plugin } from '../../plugins.js';
2
+ import type { SuggestionBarOptions } from './suggestionsPlugin.js';
3
+ /**
4
+ * The suggestion bar (Notion AI's): your `bar` under each block
5
+ * suggestion (Accept, Discard, and Try again when the app passed
6
+ * `onRetry`); its keys are the suggestions plugin's.
7
+ */
8
+ export declare const createSuggestionBarPlugin: ({ bar }: SuggestionBarOptions) => Plugin;
1
9
  import { type Snippet } from 'svelte';
2
10
  import type { Edytor } from '../../edytor.svelte.js';
3
11
  import type { SuggestionBarPayload } from './suggestionsPlugin.js';
4
- import type { SuggestionsLabels } from '../../labels.js';
5
12
  type $$ComponentProps = {
6
13
  edytor: Edytor;
7
- bar?: Snippet<[SuggestionBarPayload]>;
8
- labels: SuggestionsLabels;
14
+ bar: Snippet<[SuggestionBarPayload]>;
9
15
  };
10
16
  declare const SuggestionBars: import("svelte").Component<$$ComponentProps, {}, "">;
11
17
  type SuggestionBars = ReturnType<typeof SuggestionBars>;
@@ -1,7 +1,6 @@
1
- import { type Snippet } from 'svelte';
1
+ import type { Snippet } from 'svelte';
2
2
  import type { Plugin } from '../../plugins.js';
3
3
  import type { Suggestion } from '../../session/suggestions.svelte.js';
4
- import { type PartialLabels } from '../../labels.js';
5
4
  /** What a `bar` snippet receives: one block suggestion and its actions. */
6
5
  export type SuggestionBarPayload = {
7
6
  suggestion: Suggestion;
@@ -11,21 +10,16 @@ export type SuggestionBarPayload = {
11
10
  /** Ask for another answer (`onRetry`); `undefined` without one. */
12
11
  retry: (() => void) | undefined;
13
12
  readonly: boolean;
13
+ /** The view's keys are a Mac's: Mod is ⌘ (name the Accept key with it). */
14
+ mac: boolean;
14
15
  };
15
- export type SuggestionsOptions = {
16
- /** Replace the bar under each block suggestion; placement and keys stay the plugin's. */
17
- bar?: Snippet<[SuggestionBarPayload]>;
18
- /** The words the bar shows, over the English ones. */
19
- labels?: PartialLabels<'suggestions'>;
16
+ export type SuggestionBarOptions = {
17
+ /** The bar under each block suggestion and its words; its placement is the plugin's. */
18
+ bar: Snippet<[SuggestionBarPayload]>;
20
19
  };
21
- /** Recognize any suggestions plugin instance (the component's default yields to yours). */
22
- export declare const isSuggestionsPlugin: (plugin: Plugin) => boolean;
23
20
  /**
24
- * The default UI of `edytor.suggestions` (Notion AI's): a bar under each
25
- * block suggestion (Accept, Discard, and Try again when the app passed
26
- * `onRetry`), and keys for the latest one: Mod+Enter accepts, Escape
27
- * discards; Tab accepts an `end` suggestion at the caret.
21
+ * The keys of `edytor.suggestions` (Notion AI's), a default plugin: for the
22
+ * latest one, Mod+Enter accepts and Escape discards; Tab accepts an `end`
23
+ * suggestion at the caret. Its bar is `createSuggestionBarPlugin`'s.
28
24
  */
29
- export declare const createSuggestionsPlugin: (options?: SuggestionsOptions) => Plugin;
30
- /** The default suggestion UI. */
31
- export declare const suggestionsPlugin: Plugin;
25
+ export declare const createSuggestionsPlugin: () => Plugin;
@@ -1,27 +1,22 @@
1
- import { mount, unmount } from 'svelte';
2
- import SuggestionBars from './SuggestionBars.svelte';
3
- import { labelsWith } from '../../labels.js';
4
- const suggestionPlugins = new WeakSet();
5
- /** Recognize any suggestions plugin instance (the component's default yields to yours). */
6
- export const isSuggestionsPlugin = (plugin) => suggestionPlugins.has(plugin);
1
+ import { branded } from '../brand.js';
7
2
  /**
8
3
  * The `end` suggestion a Tab at the caret accepts: a collapsed caret in its
9
4
  * block, unless that block indents with Tab (a list-like kind or a list's item).
10
5
  */
11
6
  const endAtCaret = (edytor) => {
12
- const { startBlock, isCollapsed } = edytor.selection.state;
7
+ const { startText } = edytor.selection.textRange();
8
+ const { isCollapsed } = edytor.selection.projection;
9
+ const startBlock = startText?.parent;
13
10
  if (!startBlock || !isCollapsed || startBlock.definition.continues || startBlock.list)
14
11
  return;
15
12
  return edytor.suggestions.at(startBlock.id).end.at(-1);
16
13
  };
17
14
  /**
18
- * The default UI of `edytor.suggestions` (Notion AI's): a bar under each
19
- * block suggestion (Accept, Discard, and Try again when the app passed
20
- * `onRetry`), and keys for the latest one: Mod+Enter accepts, Escape
21
- * discards; Tab accepts an `end` suggestion at the caret.
15
+ * The keys of `edytor.suggestions` (Notion AI's), a default plugin: for the
16
+ * latest one, Mod+Enter accepts and Escape discards; Tab accepts an `end`
17
+ * suggestion at the caret. Its bar is `createSuggestionBarPlugin`'s.
22
18
  */
23
- export const createSuggestionsPlugin = (options = {}) => {
24
- const labels = labelsWith('suggestions', options.labels);
19
+ export const createSuggestionsPlugin = () => {
25
20
  const plugin = (edytor) => ({
26
21
  hotkeys: {
27
22
  'mod+enter': ({ prevent }) => {
@@ -39,17 +34,7 @@ export const createSuggestionsPlugin = (options = {}) => {
39
34
  if (suggestion)
40
35
  prevent(() => suggestion.accept());
41
36
  }
42
- },
43
- onEdytorAttached: () => {
44
- const bars = mount(SuggestionBars, {
45
- target: edytor.overlay.layer,
46
- props: { edytor, bar: options.bar, labels }
47
- });
48
- return () => void unmount(bars);
49
37
  }
50
38
  });
51
- suggestionPlugins.add(plugin);
52
- return plugin;
39
+ return branded('suggestions', plugin);
53
40
  };
54
- /** The default suggestion UI. */
55
- export const suggestionsPlugin = createSuggestionsPlugin();
@@ -1,153 +1,122 @@
1
1
  <script lang="ts">
2
- import { iconOf } from '../icons.js';
3
- import type { TableChrome } from './chrome.svelte.js';
2
+ import type { Snippet } from 'svelte';
3
+ import { keepFocus } from '../chrome.js';
4
+ import { labelsOf, tableEnglish } from '../../labels.js';
5
+ import type { TableAddPayload, TableChrome, TableGripPayload } from './chrome.svelte.js';
4
6
 
5
7
  /**
6
8
  * The table's chrome in the overlay (`TableChrome`): the `+` under and
7
- * beside the hovered table, the grips of its hovered row and column, their
8
- * menus, and a resize band on each column's right edge.
9
+ * beside the hovered table, the grips of its hovered row and column (drag
10
+ * sources, `table.drag`, opening their menus on a click), their menus,
11
+ * the drop line of a grip's drag, and a resize band on each column's
12
+ * right edge. Over a table wider than its box, only what its box shows
13
+ * (`table.overflow`). A grip, a menu and a `+` are the plugin's `grip`,
14
+ * `menu` and `add` snippets (none without them): placed by the hosts
15
+ * here, their keys and ARIA the controller's attachments.
9
16
  */
10
- let { chrome }: { chrome: TableChrome } = $props();
17
+ let {
18
+ chrome,
19
+ grip,
20
+ menu,
21
+ add
22
+ }: {
23
+ chrome: TableChrome;
24
+ grip?: Snippet<[TableGripPayload]>;
25
+ menu?: Snippet<[TableChrome]>;
26
+ add?: Snippet<[TableAddPayload]>;
27
+ } = $props();
11
28
 
29
+ const labels = $derived(labelsOf(chrome.edytor, 'table', tableEnglish));
12
30
  const layout = $derived(chrome.layout);
13
- const labels = $derived(chrome.labels);
14
- const hoveredRow = $derived(
15
- layout?.rows.find(
16
- (row) => row.id === (chrome.menu?.kind === 'row' ? chrome.menu.row : chrome.hovered?.row)
17
- )
18
- );
19
- const hoveredColumn = $derived.by(() => {
20
- const index =
21
- chrome.menu?.kind === 'column' ? chrome.menu.column : (chrome.hovered?.column ?? null);
22
- return index === null
23
- ? undefined
24
- : layout?.columns[index] && { index, ...layout.columns[index] };
25
- });
26
- /** Where the open menu stands: under its grip. */
27
- const menuAt = $derived.by(() => {
28
- const menu = chrome.menu;
29
- if (!menu || !layout) return null;
30
- if (menu.kind === 'row') {
31
- const row = layout.rows.find((r) => r.id === menu.row);
32
- return row ? { left: layout.left - 9, top: row.top + Math.min(row.height, 28) } : null;
33
- }
34
- const column = layout.columns[menu.column];
35
- return column ? { left: column.left + column.width / 2 - 12, top: layout.top + 10 } : null;
36
- });
31
+ const line = $derived(chrome.line);
32
+ const menuPlace = $derived(chrome.menuPlace);
37
33
 
38
34
  // The view turning readonly mid-drag drops the preview at once.
39
35
  $effect(() => {
40
- if (chrome.readonly) chrome.lock();
36
+ if (chrome.readonly) chrome.band.lock();
41
37
  });
42
38
 
43
- const onkeydown = (event: KeyboardEvent) => {
44
- if (event.key !== 'Escape') return;
45
- event.preventDefault();
46
- event.stopPropagation();
47
- chrome.close();
48
- };
39
+ const px = (value: number | undefined) => (value === undefined ? undefined : `${value}px`);
49
40
  </script>
50
41
 
51
42
  <div
52
43
  role="presentation"
53
44
  data-edytor-table-chrome
54
- data-selecting={chrome.selecting ? 'true' : undefined}
45
+ data-selecting={chrome.band.selecting ? 'true' : undefined}
55
46
  >
56
47
  {#if chrome.shown && layout}
57
- {#if hoveredRow}
58
- <button
59
- type="button"
60
- data-edytor-table-grip="row"
61
- aria-label={labels.rowMenu}
62
- aria-haspopup="menu"
63
- aria-expanded={chrome.menu?.kind === 'row'}
64
- style:left="{layout.left - 9}px"
65
- style:top="{hoveredRow.top + hoveredRow.height / 2 - 12}px"
66
- onmousedown={(event) => event.preventDefault()}
67
- onclick={() => chrome.open({ kind: 'row', table: layout.table, row: hoveredRow.id })}
68
- ></button>
69
- {/if}
70
- {#if hoveredColumn}
71
- <button
72
- type="button"
73
- data-edytor-table-grip="column"
74
- aria-label={labels.columnMenu}
75
- aria-haspopup="menu"
76
- aria-expanded={chrome.menu?.kind === 'column'}
77
- style:left="{hoveredColumn.left + hoveredColumn.width / 2 - 12}px"
78
- style:top="{layout.top - 9}px"
79
- onmousedown={(event) => event.preventDefault()}
80
- onclick={() =>
81
- chrome.open({ kind: 'column', table: layout.table, column: hoveredColumn.index })}
82
- ></button>
83
- {/if}
84
- <button
85
- type="button"
86
- data-edytor-table-add="row"
87
- aria-label={labels.addRow}
88
- title={labels.addRow}
89
- style:left="{layout.left}px"
90
- style:top="{layout.top + layout.height + 2}px"
91
- style:width="{layout.width}px"
92
- onmousedown={(event) => event.preventDefault()}
93
- onclick={() => chrome.addRow()}
94
- ></button>
95
- <button
96
- type="button"
97
- data-edytor-table-add="column"
98
- aria-label={labels.addColumn}
99
- title={labels.addColumn}
100
- style:left="{layout.left + layout.width + 2}px"
101
- style:top="{layout.top}px"
102
- style:height="{layout.height}px"
103
- onmousedown={(event) => event.preventDefault()}
104
- onclick={() => chrome.addColumn()}
105
- ></button>
106
- {#each layout.columns as column, index (column.id)}
107
- <!-- A focusable separator is a widget (WAI-ARIA window splitter): its keys resize. -->
108
- <!-- svelte-ignore a11y_no_noninteractive_tabindex, a11y_no_noninteractive_element_interactions -->
48
+ {#each grip ? chrome.grips : [] as place (place.kind)}
49
+ <!-- Centered on where the grip stands: its flex host is a point. -->
109
50
  <div
110
- data-edytor-table-resize={index}
111
- role="separator"
112
- tabindex="0"
113
- aria-label={labels.resize}
114
- aria-orientation="vertical"
115
- aria-valuenow={Math.round(column.width)}
116
- aria-keyshortcuts="ArrowLeft ArrowRight Shift+ArrowLeft Shift+ArrowRight"
117
- data-dragging={chrome.drag?.column === index ? 'true' : undefined}
118
- style:left="{column.left + column.width - 4}px"
119
- style:top="{layout.top}px"
120
- style:height="{layout.height}px"
121
- onpointerdown={(event) => chrome.start(event, index)}
122
- onmousedown={(event) => chrome.mousedown(event, index)}
123
- onkeydown={(event) => chrome.key(event, index)}
51
+ data-edytor-table-grip-host={place.kind}
52
+ style:left={px(place.x)}
53
+ style:top={px(place.y)}
54
+ >
55
+ {#if grip}
56
+ {@render grip({
57
+ kind: place.kind,
58
+ id: place.id,
59
+ index: place.index,
60
+ expanded: chrome.menu?.kind === place.kind,
61
+ dragging: chrome.moving?.kind === place.kind,
62
+ toggle: () => chrome.toggle(place.kind),
63
+ grip: chrome.gripOf(place.kind),
64
+ chrome
65
+ })}
66
+ {/if}
67
+ </div>
68
+ {/each}
69
+ {#if line}
70
+ <div
71
+ data-edytor-table-drop={line.kind}
72
+ data-gap={line.gap}
73
+ aria-hidden="true"
74
+ style:left={px(line.left)}
75
+ style:top={px(line.top)}
76
+ style:width={px(line.width)}
77
+ style:height={px(line.height)}
124
78
  ></div>
79
+ {/if}
80
+ {#each add ? chrome.bars : [] as bar (bar.kind)}
81
+ <div
82
+ data-edytor-table-add-host={bar.kind}
83
+ role="presentation"
84
+ style:left={px(bar.left)}
85
+ style:top={px(bar.top)}
86
+ style:width={px(bar.width)}
87
+ style:height={px(bar.height)}
88
+ onmousedown={keepFocus}
89
+ >
90
+ {#if add}
91
+ {@render add({ kind: bar.kind, add: () => chrome.add(bar.kind) })}
92
+ {/if}
93
+ </div>
94
+ {/each}
95
+ {#each layout.columns as column, index (column.id)}
96
+ {#if chrome.inView(column.left + column.width)}
97
+ <!-- A focusable separator is a widget (WAI-ARIA window splitter): its keys resize. -->
98
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex, a11y_no_noninteractive_element_interactions -->
99
+ <div
100
+ data-edytor-table-resize={index}
101
+ role="separator"
102
+ tabindex="0"
103
+ aria-label={labels.resize}
104
+ aria-orientation="vertical"
105
+ aria-valuenow={Math.round(column.width)}
106
+ aria-keyshortcuts="ArrowLeft ArrowRight Shift+ArrowLeft Shift+ArrowRight"
107
+ data-dragging={chrome.drag?.column === index ? 'true' : undefined}
108
+ style:left={px(column.left + column.width - 4)}
109
+ style:top={px(layout.top)}
110
+ style:height={px(layout.height)}
111
+ {@attach chrome.band.press((event) => chrome.start(event, index))}
112
+ onkeydown={(event) => chrome.key(event, index)}
113
+ ></div>
114
+ {/if}
125
115
  {/each}
126
116
  {/if}
127
- {#if chrome.menu && menuAt}
128
- <div
129
- class="edytor-table-menu"
130
- role="menu"
131
- tabindex="-1"
132
- aria-label={chrome.menu.kind === 'row' ? labels.rowMenu : labels.columnMenu}
133
- data-edytor-table-menu={chrome.menu.kind}
134
- style:left="{menuAt.left}px"
135
- style:top="{menuAt.top}px"
136
- {onkeydown}
137
- >
138
- {#each chrome.rows as row (row.id)}
139
- <button
140
- type="button"
141
- role="menuitem"
142
- class="edytor-table-menu-row"
143
- class:danger={row.danger}
144
- disabled={!row.isEnabled()}
145
- data-testid={`table-menu-${row.id}`}
146
- style:--table-menu-icon={iconOf(row.icon)}
147
- onmousedown={(event) => event.preventDefault()}
148
- onclick={() => chrome.runRow(row)}>{row.label}</button
149
- >
150
- {/each}
117
+ {#if menu && chrome.menu && menuPlace}
118
+ <div data-edytor-table-menu-host style:left={px(menuPlace.left)} style:top={px(menuPlace.top)}>
119
+ {@render menu(chrome)}
151
120
  </div>
152
121
  {/if}
153
122
  </div>
@@ -1,6 +1,10 @@
1
- import type { TableChrome } from './chrome.svelte.js';
1
+ import type { Snippet } from 'svelte';
2
+ import type { TableAddPayload, TableChrome, TableGripPayload } from './chrome.svelte.js';
2
3
  type $$ComponentProps = {
3
4
  chrome: TableChrome;
5
+ grip?: Snippet<[TableGripPayload]>;
6
+ menu?: Snippet<[TableChrome]>;
7
+ add?: Snippet<[TableAddPayload]>;
4
8
  };
5
9
  declare const TableChrome: import("svelte").Component<$$ComponentProps, {}, "">;
6
10
  type TableChrome = ReturnType<typeof TableChrome>;