edytor 1.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +21 -39
  2. package/dist/block/block.svelte.d.ts +11 -84
  3. package/dist/block/block.svelte.js +30 -134
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +11 -9
  9. package/dist/block/inlineBlock.svelte.js +18 -21
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +25 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/awarenessSelection.d.ts +22 -1
  49. package/dist/collaboration/awarenessSelection.js +42 -0
  50. package/dist/collaboration/comments/client.d.ts +2 -2
  51. package/dist/collaboration/comments/client.js +1 -1
  52. package/dist/collaboration/history/index.d.ts +5 -5
  53. package/dist/collaboration/history/index.js +5 -5
  54. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  55. package/dist/collaboration/history/panel.svelte.js +223 -0
  56. package/dist/collaboration/providers.d.ts +12 -3
  57. package/dist/collaboration/providers.js +5 -4
  58. package/dist/components/Block.svelte +42 -56
  59. package/dist/components/Block.svelte.d.ts +7 -5
  60. package/dist/components/Content.svelte +1 -5
  61. package/dist/components/Edytor.svelte +82 -99
  62. package/dist/components/Edytor.svelte.d.ts +16 -13
  63. package/dist/components/InlineBlock.svelte +1 -1
  64. package/dist/components/Ranges.svelte +96 -0
  65. package/dist/components/Ranges.svelte.d.ts +19 -0
  66. package/dist/components/Suggestion.svelte +3 -2
  67. package/dist/components/Text.svelte +2 -5
  68. package/dist/components/Text.svelte.d.ts +1 -1
  69. package/dist/crdt/admission.d.ts +2 -9
  70. package/dist/crdt/admission.js +3 -9
  71. package/dist/crdt/attribution/attribution.d.ts +11 -72
  72. package/dist/crdt/attribution/attribution.js +5 -52
  73. package/dist/crdt/attribution/block.d.ts +0 -78
  74. package/dist/crdt/attribution/block.js +1 -144
  75. package/dist/crdt/data.d.ts +18 -13
  76. package/dist/crdt/data.js +49 -71
  77. package/dist/crdt/doc/anchors.js +4 -4
  78. package/dist/crdt/doc/content.d.ts +5 -1
  79. package/dist/crdt/doc/content.js +3 -1
  80. package/dist/crdt/doc/delete.d.ts +1 -0
  81. package/dist/crdt/doc/funnel.d.ts +0 -23
  82. package/dist/crdt/doc/funnel.js +34 -85
  83. package/dist/crdt/doc/gate.d.ts +8 -9
  84. package/dist/crdt/doc/gate.js +7 -17
  85. package/dist/crdt/doc/history.d.ts +87 -14
  86. package/dist/crdt/doc/history.js +334 -149
  87. package/dist/crdt/doc/layout.d.ts +0 -1
  88. package/dist/crdt/doc/layout.js +2 -3
  89. package/dist/crdt/doc/meta.d.ts +4 -4
  90. package/dist/crdt/doc/meta.js +10 -21
  91. package/dist/crdt/doc/moves.d.ts +4 -4
  92. package/dist/crdt/doc/moves.js +5 -5
  93. package/dist/crdt/doc/plan.d.ts +2 -0
  94. package/dist/crdt/doc/plan.js +2 -0
  95. package/dist/crdt/doc/reads.d.ts +8 -5
  96. package/dist/crdt/doc/reads.js +49 -50
  97. package/dist/crdt/doc/seed.d.ts +15 -6
  98. package/dist/crdt/doc/seed.js +27 -26
  99. package/dist/crdt/doc/split-merge.d.ts +1 -3
  100. package/dist/crdt/doc/split-merge.js +4 -5
  101. package/dist/crdt/doc/steps.d.ts +3 -7
  102. package/dist/crdt/doc/steps.js +20 -9
  103. package/dist/crdt/doc/types.d.ts +0 -10
  104. package/dist/crdt/document.d.ts +32 -115
  105. package/dist/crdt/document.js +216 -302
  106. package/dist/crdt/edytor-doc.d.ts +689 -90
  107. package/dist/crdt/edytor-doc.js +74 -149
  108. package/dist/crdt/engine-api.d.ts +15 -47
  109. package/dist/crdt/engine.d.ts +7 -17
  110. package/dist/crdt/engine.js +9 -19
  111. package/dist/crdt/flow.d.ts +9 -37
  112. package/dist/crdt/flow.js +260 -238
  113. package/dist/crdt/index.d.ts +32 -85
  114. package/dist/crdt/index.js +21 -47
  115. package/dist/crdt/operations.d.ts +24 -33
  116. package/dist/crdt/operations.js +8 -17
  117. package/dist/crdt/placement/display.d.ts +0 -2
  118. package/dist/crdt/placement/display.js +0 -15
  119. package/dist/crdt/placement/model.d.ts +160 -12
  120. package/dist/crdt/placement/model.js +413 -414
  121. package/dist/crdt/placement/rank.d.ts +1 -5
  122. package/dist/crdt/placement/rank.js +28 -38
  123. package/dist/crdt/props.d.ts +32 -0
  124. package/dist/crdt/props.js +172 -0
  125. package/dist/crdt/protocol.d.ts +4 -5
  126. package/dist/crdt/protocol.js +3 -4
  127. package/dist/crdt/protocols/awareness.d.ts +3 -7
  128. package/dist/crdt/protocols/awareness.js +17 -33
  129. package/dist/crdt/protocols/envelope.d.ts +9 -29
  130. package/dist/crdt/protocols/envelope.js +8 -25
  131. package/dist/crdt/protocols/sync.d.ts +15 -30
  132. package/dist/crdt/protocols/sync.js +27 -89
  133. package/dist/crdt/providers/bound.d.ts +3 -1
  134. package/dist/crdt/providers/bound.js +3 -1
  135. package/dist/crdt/providers/container.d.ts +11 -17
  136. package/dist/crdt/providers/container.js +39 -27
  137. package/dist/crdt/providers/index.d.ts +34 -6
  138. package/dist/crdt/providers/index.js +106 -111
  139. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  140. package/dist/crdt/providers/indexeddb.js +29 -90
  141. package/dist/crdt/providers/room.d.ts +58 -2
  142. package/dist/crdt/providers/room.js +38 -21
  143. package/dist/crdt/providers/websocket.d.ts +1 -1
  144. package/dist/crdt/providers/websocket.js +3 -4
  145. package/dist/crdt/purge.d.ts +2 -2
  146. package/dist/crdt/purge.js +69 -6
  147. package/dist/crdt/rangeDelete.d.ts +4 -42
  148. package/dist/crdt/rangeDelete.js +7 -6
  149. package/dist/crdt/restore.d.ts +21 -1
  150. package/dist/crdt/restore.js +54 -59
  151. package/dist/crdt/schema.d.ts +2 -2
  152. package/dist/crdt/schema.js +4 -5
  153. package/dist/crdt/semantics.d.ts +10 -15
  154. package/dist/crdt/semantics.js +22 -21
  155. package/dist/crdt/storage.d.ts +7 -13
  156. package/dist/crdt/storage.js +10 -24
  157. package/dist/crdt/structs.d.ts +42 -47
  158. package/dist/crdt/structs.js +76 -67
  159. package/dist/crdt/tables.d.ts +9 -0
  160. package/dist/crdt/tables.js +20 -0
  161. package/dist/crdt/text/delete-index.d.ts +0 -13
  162. package/dist/crdt/text/delete-index.js +7 -14
  163. package/dist/crdt/text/deletes.d.ts +9 -22
  164. package/dist/crdt/text/deletes.js +11 -74
  165. package/dist/crdt/text/index/cache.js +3 -3
  166. package/dist/crdt/text/index/fold.d.ts +1 -2
  167. package/dist/crdt/text/index/fold.js +15 -10
  168. package/dist/crdt/text/index/layout.d.ts +0 -10
  169. package/dist/crdt/text/index/layout.js +6 -20
  170. package/dist/crdt/text/index/records.js +2 -1
  171. package/dist/crdt/text/index/report.js +5 -6
  172. package/dist/crdt/text/index/shared.d.ts +11 -4
  173. package/dist/crdt/text/index/shared.js +8 -7
  174. package/dist/crdt/text/index/state.d.ts +3 -33
  175. package/dist/crdt/text/index/state.js +2 -4
  176. package/dist/crdt/text/model.d.ts +82 -2
  177. package/dist/crdt/text/model.js +344 -354
  178. package/dist/crdt/text/rows.d.ts +0 -2
  179. package/dist/crdt/text/rows.js +0 -11
  180. package/dist/crdt/text/runs.d.ts +6 -3
  181. package/dist/crdt/text/runs.js +132 -137
  182. package/dist/crdt/text/streams.d.ts +1 -1
  183. package/dist/crdt/text/streams.js +1 -1
  184. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  185. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  186. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  187. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  188. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  189. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  190. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  191. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  193. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  194. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  195. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  196. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  197. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  198. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  199. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  200. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  201. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  202. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  203. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  204. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  205. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  206. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  207. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  208. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  209. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  211. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  213. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  214. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  216. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  217. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  218. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  219. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  220. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  221. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  222. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  223. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  224. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  225. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  226. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  227. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  228. package/dist/dnd/autoScroll.js +1 -2
  229. package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
  230. package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
  231. package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
  232. package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
  233. package/dist/dnd/placement.d.ts +200 -0
  234. package/dist/dnd/placement.js +426 -0
  235. package/dist/dnd/pragmatic.d.ts +4 -22
  236. package/dist/dnd/pragmatic.js +7 -26
  237. package/dist/dnd/track.d.ts +14 -0
  238. package/dist/dnd/track.js +55 -0
  239. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  242. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  243. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  302. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  303. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  304. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  305. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  306. package/dist/edytor.svelte.d.ts +46 -63
  307. package/dist/edytor.svelte.js +126 -181
  308. package/dist/events/beforeInputCommands.d.ts +6 -11
  309. package/dist/events/beforeInputCommands.js +189 -181
  310. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  311. package/dist/events/beforeInputDeleteCommands.js +153 -204
  312. package/dist/events/domTextOffset.d.ts +9 -9
  313. package/dist/events/domTextOffset.js +20 -48
  314. package/dist/events/events.utils.d.ts +0 -2
  315. package/dist/events/events.utils.js +0 -4
  316. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  317. package/dist/events/nativeInteractiveControl.js +28 -56
  318. package/dist/events/onBeforeInput.d.ts +6 -1
  319. package/dist/events/onBeforeInput.js +207 -331
  320. package/dist/events/onCopy.js +1 -5
  321. package/dist/events/onDrop.d.ts +7 -1
  322. package/dist/events/onDrop.js +64 -78
  323. package/dist/events/onFocus.d.ts +9 -4
  324. package/dist/events/onFocus.js +45 -67
  325. package/dist/events/onInput.d.ts +8 -4
  326. package/dist/events/onInput.js +34 -147
  327. package/dist/events/onKeyDown.js +55 -122
  328. package/dist/events/onPaste.d.ts +14 -1
  329. package/dist/events/onPaste.js +51 -76
  330. package/dist/index.d.ts +11 -15
  331. package/dist/index.js +3 -3
  332. package/dist/kinds.d.ts +4 -6
  333. package/dist/kinds.js +28 -27
  334. package/dist/labels.d.ts +83 -320
  335. package/dist/labels.js +181 -408
  336. package/dist/plugins/Chrome.svelte +29 -0
  337. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  338. package/dist/plugins/Control.svelte +23 -0
  339. package/dist/plugins/Control.svelte.d.ts +30 -0
  340. package/dist/plugins/anchored.svelte.d.ts +47 -0
  341. package/dist/plugins/anchored.svelte.js +73 -0
  342. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  343. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  344. package/dist/plugins/bands.svelte.d.ts +57 -0
  345. package/dist/plugins/bands.svelte.js +95 -0
  346. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  347. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  348. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
  349. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
  350. package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
  351. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  352. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  353. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
  354. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  355. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  356. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  358. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  359. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  360. package/dist/plugins/brand.d.ts +8 -0
  361. package/dist/plugins/brand.js +8 -0
  362. package/dist/plugins/chrome.d.ts +45 -38
  363. package/dist/plugins/chrome.js +59 -36
  364. package/dist/plugins/code/CodeHeader.svelte +8 -38
  365. package/dist/plugins/code/CodePlugin.svelte +53 -56
  366. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  367. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  368. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  369. package/dist/plugins/code/code.css +5 -117
  370. package/dist/plugins/code/header.svelte.d.ts +2 -11
  371. package/dist/plugins/code/header.svelte.js +11 -38
  372. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  373. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  374. package/dist/plugins/code/languages.d.ts +9 -22
  375. package/dist/plugins/code/languages.js +39 -128
  376. package/dist/plugins/columns/ColumnResize.svelte +16 -27
  377. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  378. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  379. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  380. package/dist/plugins/columns/columns.css +7 -26
  381. package/dist/plugins/columns/gaps.d.ts +7 -5
  382. package/dist/plugins/columns/gaps.js +11 -6
  383. package/dist/plugins/columns/resize.svelte.d.ts +17 -54
  384. package/dist/plugins/columns/resize.svelte.js +80 -173
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  389. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  393. package/dist/plugins/equation/EquationPlugin.svelte +109 -172
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.css +7 -0
  397. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  398. package/dist/plugins/equation/equation.svelte.js +20 -94
  399. package/dist/plugins/equation/katex.js +6 -9
  400. package/dist/plugins/fileDrop.d.ts +28 -0
  401. package/dist/plugins/fileDrop.js +116 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +6 -167
  407. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  408. package/dist/plugins/image/ImagePlugin.svelte +71 -151
  409. package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
  410. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  411. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  412. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  413. package/dist/plugins/image/controls.svelte.js +43 -212
  414. package/dist/plugins/image/image.css +17 -0
  415. package/dist/plugins/image/image.d.ts +0 -5
  416. package/dist/plugins/image/image.js +0 -3
  417. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  418. package/dist/plugins/image/toolbar.svelte.js +145 -0
  419. package/dist/plugins/index.d.ts +30 -26
  420. package/dist/plugins/index.js +28 -22
  421. package/dist/plugins/list.svelte.d.ts +128 -0
  422. package/dist/plugins/list.svelte.js +217 -0
  423. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  424. package/dist/plugins/markdownShortcuts.js +10 -9
  425. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  426. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  427. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  428. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  429. package/dist/plugins/marquee/marquee.js +4 -21
  430. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  431. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  432. package/dist/plugins/media/AudioPlugin.svelte +13 -88
  433. package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
  434. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  435. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  436. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  437. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  438. package/dist/plugins/media/EmptySlot.svelte +44 -0
  439. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  440. package/dist/plugins/media/FilePlugin.svelte +45 -113
  441. package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
  442. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  443. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  444. package/dist/plugins/media/SourceBlock.svelte +200 -0
  445. package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
  446. package/dist/plugins/media/UploadPreview.svelte +32 -0
  447. package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
  448. package/dist/plugins/media/VideoPlugin.svelte +14 -97
  449. package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
  450. package/dist/plugins/media/empty.svelte.d.ts +47 -46
  451. package/dist/plugins/media/empty.svelte.js +67 -60
  452. package/dist/plugins/media/media.d.ts +97 -44
  453. package/dist/plugins/media/media.js +77 -99
  454. package/dist/plugins/media/upload.css +23 -0
  455. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  456. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  457. package/dist/plugins/mention/MentionPlugin.svelte +84 -126
  458. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
  459. package/dist/plugins/mention/mention.css +6 -0
  460. package/dist/plugins/page/PageLink.svelte +54 -38
  461. package/dist/plugins/page/PagePlugin.svelte +20 -18
  462. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  463. package/dist/plugins/page/page.d.ts +35 -9
  464. package/dist/plugins/page/page.js +3 -4
  465. package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
  466. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
  467. package/dist/plugins/pageLink/pageLink.css +6 -0
  468. package/dist/plugins/planned.d.ts +10 -0
  469. package/dist/plugins/planned.js +12 -0
  470. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  471. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  472. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  473. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  474. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  475. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  476. package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
  477. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
  478. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  479. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  480. package/dist/plugins/richtext/body.js +2 -2
  481. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  482. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  483. package/dist/plugins/richtext/callouts.d.ts +15 -0
  484. package/dist/plugins/richtext/callouts.js +23 -0
  485. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  486. package/dist/plugins/richtext/controls.svelte.js +126 -0
  487. package/dist/plugins/richtext/richTextOperations.js +37 -28
  488. package/dist/plugins/richtext/richtext.css +6 -0
  489. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  490. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  491. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  492. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  493. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  494. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  495. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  496. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  497. package/dist/plugins/table/TableChrome.svelte +40 -124
  498. package/dist/plugins/table/TablePlugin.svelte +106 -168
  499. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  500. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  501. package/dist/plugins/table/chrome.svelte.js +340 -589
  502. package/dist/plugins/table/ops.d.ts +47 -0
  503. package/dist/plugins/table/ops.js +233 -0
  504. package/dist/plugins/table/table.css +16 -152
  505. package/dist/plugins/table/table.d.ts +15 -14
  506. package/dist/plugins/table/table.js +22 -16
  507. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  508. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  509. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  510. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  511. package/dist/plugins/toc/toc.d.ts +41 -10
  512. package/dist/plugins/toc/toc.js +2 -3
  513. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  514. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  515. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  516. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  517. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  518. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  519. package/dist/plugins/triggers/place.d.ts +0 -9
  520. package/dist/plugins/triggers/place.js +1 -17
  521. package/dist/plugins/triggers/triggers.d.ts +31 -9
  522. package/dist/plugins/triggers/triggers.js +82 -62
  523. package/dist/plugins/uploads.svelte.d.ts +55 -24
  524. package/dist/plugins/uploads.svelte.js +123 -50
  525. package/dist/plugins.d.ts +187 -66
  526. package/dist/selection/domSelection.d.ts +13 -4
  527. package/dist/selection/domSelection.js +110 -183
  528. package/dist/selection/pointer.svelte.d.ts +8 -10
  529. package/dist/selection/pointer.svelte.js +32 -73
  530. package/dist/selection/replaceSelection.d.ts +21 -22
  531. package/dist/selection/replaceSelection.js +60 -69
  532. package/dist/selection/selection.svelte.d.ts +5 -73
  533. package/dist/selection/selection.svelte.js +224 -542
  534. package/dist/selection/selection.utils.d.ts +34 -11
  535. package/dist/selection/selection.utils.js +128 -247
  536. package/dist/selection/visibility.d.ts +3 -8
  537. package/dist/selection/visibility.js +7 -5
  538. package/dist/session/announcer.svelte.d.ts +2 -1
  539. package/dist/session/announcer.svelte.js +7 -3
  540. package/dist/session/attempt.d.ts +43 -39
  541. package/dist/session/attempt.js +62 -55
  542. package/dist/session/bindings.js +117 -145
  543. package/dist/session/commands.d.ts +47 -22
  544. package/dist/session/commands.js +208 -208
  545. package/dist/session/composition.svelte.d.ts +2 -4
  546. package/dist/session/composition.svelte.js +55 -65
  547. package/dist/session/editing/text.d.ts +6 -0
  548. package/dist/session/editing/text.js +17 -3
  549. package/dist/session/handles.d.ts +10 -1
  550. package/dist/session/handles.js +28 -0
  551. package/dist/session/history.d.ts +0 -4
  552. package/dist/session/history.js +16 -21
  553. package/dist/session/inputRules.d.ts +6 -3
  554. package/dist/session/inputRules.js +78 -83
  555. package/dist/session/keymap.d.ts +1 -6
  556. package/dist/session/keymap.js +17 -20
  557. package/dist/session/moves.d.ts +43 -10
  558. package/dist/session/moves.js +101 -59
  559. package/dist/session/navigation.d.ts +10 -2
  560. package/dist/session/navigation.js +140 -172
  561. package/dist/session/ports.d.ts +2 -7
  562. package/dist/session/props.d.ts +25 -25
  563. package/dist/session/props.js +62 -159
  564. package/dist/session/selection.d.ts +4 -3
  565. package/dist/session/selection.js +5 -0
  566. package/dist/session/suggestions.svelte.d.ts +1 -1
  567. package/dist/session/suggestions.svelte.js +42 -47
  568. package/dist/session/uploads.d.ts +29 -0
  569. package/dist/session/uploads.js +10 -0
  570. package/dist/session/virtual.d.ts +3 -3
  571. package/dist/session/virtual.js +18 -40
  572. package/dist/surface/attributes.d.ts +1 -0
  573. package/dist/surface/attributes.js +3 -26
  574. package/dist/surface/cells.d.ts +5 -0
  575. package/dist/surface/cells.js +5 -0
  576. package/dist/surface/lines.d.ts +2 -2
  577. package/dist/surface/lines.js +1 -1
  578. package/dist/surface/observer.svelte.d.ts +3 -20
  579. package/dist/surface/observer.svelte.js +52 -72
  580. package/dist/surface/overlay.d.ts +41 -3
  581. package/dist/surface/overlay.js +92 -37
  582. package/dist/surface/pin.svelte.d.ts +5 -0
  583. package/dist/surface/pin.svelte.js +5 -0
  584. package/dist/surface/projector.svelte.d.ts +4 -6
  585. package/dist/surface/projector.svelte.js +42 -69
  586. package/dist/text/text.svelte.d.ts +14 -40
  587. package/dist/text/text.svelte.js +35 -51
  588. package/dist/text/wordBoundary.d.ts +19 -0
  589. package/dist/text/wordBoundary.js +29 -44
  590. package/dist/themes/notion.css +272 -106
  591. package/dist/utils/json.d.ts +3 -1
  592. package/dist/utils/json.js +52 -51
  593. package/dist/utils/listen.d.ts +8 -0
  594. package/dist/utils/listen.js +19 -0
  595. package/package.json +4 -5
  596. package/dist/block/block.utils.d.ts +0 -340
  597. package/dist/block/block.utils.js +0 -356
  598. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  599. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  600. package/dist/collaboration/history/panel.d.ts +0 -61
  601. package/dist/collaboration/history/panel.js +0 -3
  602. package/dist/components/SuggestionRanges.svelte +0 -58
  603. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  604. package/dist/crdt/doc/table.d.ts +0 -21
  605. package/dist/crdt/doc/table.js +0 -288
  606. package/dist/crdt/migration/generation.d.ts +0 -58
  607. package/dist/crdt/migration/generation.js +0 -70
  608. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  609. package/dist/crdt/migration/legacy-schema.js +0 -151
  610. package/dist/crdt/migration/migrate.d.ts +0 -56
  611. package/dist/crdt/migration/migrate.js +0 -227
  612. package/dist/crdt/nodes.d.ts +0 -121
  613. package/dist/crdt/nodes.js +0 -56
  614. package/dist/crdt/text/index/checks.d.ts +0 -15
  615. package/dist/crdt/text/index/checks.js +0 -156
  616. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  617. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  618. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  619. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  620. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  621. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  622. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  623. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  624. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  625. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  626. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  627. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  628. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  629. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  630. package/dist/edytor.utils.d.ts +0 -50
  631. package/dist/edytor.utils.js +0 -67
  632. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  633. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  634. package/dist/plugins/find/FindBar.svelte +0 -170
  635. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  636. package/dist/plugins/find/FindHighlights.svelte +0 -75
  637. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  638. package/dist/plugins/icons.d.ts +0 -2
  639. package/dist/plugins/icons.js +0 -63
  640. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  641. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  642. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  643. package/dist/plugins/image/empty.svelte.js +0 -83
  644. package/dist/plugins/keepInView.d.ts +0 -4
  645. package/dist/plugins/keepInView.js +0 -6
  646. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  647. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  648. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  649. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  650. package/dist/plugins/richtext/labels.d.ts +0 -9
  651. package/dist/plugins/richtext/labels.js +0 -7
  652. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  653. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  654. package/dist/plugins/table/dragPreview.d.ts +0 -29
  655. package/dist/plugins/table/dragPreview.js +0 -103
  656. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  657. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  658. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  659. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  660. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  661. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  662. package/dist/text/deltas.d.ts +0 -22
  663. package/dist/text/deltas.js +0 -46
  664. package/dist/text/text.utils.d.ts +0 -45
  665. package/dist/text/text.utils.js +0 -199
  666. /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
  667. /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
@@ -10,6 +10,7 @@
10
10
  import type { BlockHandleController } from './BlockHandleController.svelte.js';
11
11
  import { gapBefore, handleSpan } from '../columns/gaps.js';
12
12
  import { renderSkipped, rendered } from '../../surface/overlay.js';
13
+ import { getOwnRowBottom } from '../../dnd/geometry.js';
13
14
 
14
15
  /**
15
16
  * The handles, in the overlay: one per registered movable block that
@@ -33,8 +34,8 @@
33
34
  near: ReadonlySet<string>;
34
35
  /** Blocks under the pointer; reactive. */
35
36
  hovered: ReadonlySet<string>;
36
- /** A custom handle (`BlockHandlesOptions.handle`). */
37
- handle?: Snippet<[BlockHandleSnippetPayload]>;
37
+ /** The app's handle (`BlockHandlesOptions.handle`). */
38
+ handle: Snippet<[BlockHandleSnippetPayload]>;
38
39
  } = $props();
39
40
 
40
41
  /** The block whose handle holds focus: its handle stays while focused. */
@@ -85,16 +86,6 @@
85
86
  return gapBefore(column);
86
87
  };
87
88
 
88
- /** Where a block's own row ends: where its first shown child begins, else its box's bottom. */
89
- const ownRowBottom = (node: HTMLElement, rect: DOMRect) => {
90
- const child = node
91
- .querySelector<HTMLElement>('[data-edytor-block="true"]')
92
- ?.getBoundingClientRect();
93
- return child && child.height > 0 && child.top >= rect.top && child.top < rect.bottom
94
- ? child.top
95
- : rect.bottom;
96
- };
97
-
98
89
  const firstRowCenter = (node: HTMLElement, block: Block): number => {
99
90
  if (block.definition.island) {
100
91
  const header = node.querySelector<HTMLElement>(':scope > [data-edytor-void="true"]');
@@ -138,7 +129,7 @@
138
129
  // the host's top, which is centered on the first line.
139
130
  const span = gap ? `${handleSpan(gap, rect.left)}px` : '';
140
131
  const row = gap
141
- ? `${rect.top - (center - host.offsetHeight / 2)}px ${ownRowBottom(node, rect) - rect.top}px`
132
+ ? `${rect.top - (center - host.offsetHeight / 2)}px ${getOwnRowBottom(node, rect) - rect.top}px`
142
133
  : '';
143
134
  const next = shown ? `${left} ${top} ${row} ${span}` : 'none';
144
135
  if (next === at) return;
@@ -210,14 +201,15 @@
210
201
  pointer-events: none;
211
202
  }
212
203
 
213
- /* Over a gap between two columns (one hit rule, the handles'): the handle
214
- * spans the gap right of the column resize band, its `+` (compact) and its
215
- * grip together flush with its block (Notion's "+ ⋮⋮"), and its box takes
216
- * the pointer at its block's whole row, shown or not — a pointer there
217
- * hovers the block, so its grip is reached from any side. The band is the
218
- * gap's left part (`columns/gaps.ts`, one measurement): at the default
219
- * 46px gap (10 + 18 + 18) neither button is under it, and where its guide
220
- * shows a press resizes. */
204
+ /* Over a gap between two columns (one hit rule, the handles'): the handle's
205
+ * box spans the gap right of the column resize band, centered in the gap
206
+ * (`columns/gaps.ts`, one measurement), and takes the pointer at its
207
+ * block's whole row, shown or not — a pointer there hovers the block, so
208
+ * its grip is reached from any side. Its `+` (compact) and grip stand
209
+ * together flush with its block (Notion's "+ ⋮⋮"), never shrunk: wider
210
+ * than the box, the `+` reaches left under the band (the resizers' layer
211
+ * is above the handles'): where the band's guide shows, at every height,
212
+ * a press resizes; the `+`'s part left of the band takes its own. */
221
213
  [data-edytor-block-handle-host][data-over-gap='true'] {
222
214
  box-sizing: border-box;
223
215
  width: var(--edytor-handle-gap-width, auto);
@@ -225,8 +217,8 @@
225
217
  padding-inline-end: 0;
226
218
  }
227
219
 
228
- [data-edytor-block-handle-host][data-over-gap='true'] :global(.edytor-block-add) {
229
- width: 18px;
220
+ [data-edytor-block-handle-host][data-over-gap='true'] > :global(*) {
221
+ flex-shrink: 0;
230
222
  }
231
223
 
232
224
  [data-edytor-block-handle-host][data-over-gap='true']::before {
@@ -12,8 +12,8 @@ type $$ComponentProps = {
12
12
  near: ReadonlySet<string>;
13
13
  /** Blocks under the pointer; reactive. */
14
14
  hovered: ReadonlySet<string>;
15
- /** A custom handle (`BlockHandlesOptions.handle`). */
16
- handle?: Snippet<[BlockHandleSnippetPayload]>;
15
+ /** The app's handle (`BlockHandlesOptions.handle`). */
16
+ handle: Snippet<[BlockHandleSnippetPayload]>;
17
17
  };
18
18
  declare const BlockHandles: import("svelte").Component<$$ComponentProps, {}, "">;
19
19
  type BlockHandles = ReturnType<typeof BlockHandles>;
@@ -1,20 +1,25 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  import type { Plugin } from '../../plugins.js';
3
3
  import type { Block } from '../../block/block.svelte.js';
4
- import { type BlockHandlesLabels, type PartialLabels } from '../../labels.js';
5
- export type BlockHandleActivation = {
6
- block: Block;
7
- anchor: HTMLElement;
8
- };
4
+ import type { Attachment } from 'svelte/attachments';
9
5
  /** What a `handle` snippet receives. */
10
6
  export type BlockHandleSnippetPayload = {
11
7
  block: Block;
12
8
  /** The block's kind as people read it ("Heading 1", its preset's label): name your controls with it. */
13
9
  label: string;
14
- /** An action: `use:grip` makes an element the drag grip, menu button and Alt+arrow target. */
15
- grip: (node: HTMLElement) => {
16
- destroy(): void;
17
- };
10
+ /**
11
+ * The grip's attachment (`{@attach handle.grip}`): the drag source, a
12
+ * click that opens the block's menu, the Alt+arrow moves
13
+ * (`aria-keyshortcuts`), and the ARIA of the menu it opened
14
+ * (`aria-expanded`, `aria-controls`, `aria-haspopup`).
15
+ */
16
+ grip: Attachment<HTMLElement>;
17
+ /**
18
+ * The `+`'s attachment (`{@attach handle.plus}`): a click calls `add`
19
+ * (Alt+click with `true`) with the `+` as the anchor, a press keeps the
20
+ * editor's focus, and the ARIA of the menu it opened.
21
+ */
22
+ plus: Attachment<HTMLElement>;
18
23
  /**
19
24
  * The `+`: the slash menu offers what to add below; with `true` (Alt+click)
20
25
  * above, or, for a block directly in a layout's column, in a new column
@@ -23,48 +28,29 @@ export type BlockHandleSnippetPayload = {
23
28
  * block.
24
29
  */
25
30
  add: (alt?: boolean, anchor?: HTMLElement | null) => void;
26
- /** Whether the block takes a `+`: always `true` (a block in a column too, as Notion). */
27
- addable: boolean;
28
- readonly: boolean;
29
- draggable: boolean;
30
- /**
31
- * Whether the menu the `+` (`add`) or the grip (`grip`) opened is open
32
- * (reactive): their `aria-expanded`.
33
- */
34
- expanded: {
35
- add: boolean;
36
- grip: boolean;
37
- };
38
31
  /**
39
- * The id of the menu the `+` or the grip opened, while it is open: their
40
- * `aria-controls`.
32
+ * Alt+click on the `+` adds a column right of the block's (a block
33
+ * directly in a layout's column): name your `+` with it.
41
34
  */
42
- controls: {
43
- add: string | undefined;
44
- grip: string | undefined;
45
- };
46
- /** The handles' words (`add(label)`, `grip(label)`, their hints). */
47
- labels: BlockHandlesLabels;
35
+ beside: boolean;
36
+ readonly: boolean;
37
+ draggable: boolean;
48
38
  };
49
39
  export type BlockHandlesOptions = {
50
40
  /** Keep the handle and its keyboard actions, but omit pointer dragging and drop targets. */
51
41
  draggable?: boolean;
52
- onActivate?: (activation: BlockHandleActivation) => void;
53
- /** Replace the `+` and ⋮⋮ beside each block; placement and hover stay the plugin's. */
42
+ /**
43
+ * The `+` and ⋮⋮ beside each block, and their words (without it, no
44
+ * handle shows and no block drags); placement and hover are the plugin's.
45
+ */
54
46
  handle?: Snippet<[BlockHandleSnippetPayload]>;
55
- /** The handles' accessible names and tooltips, over the English ones. */
56
- labels?: PartialLabels<'blockHandles'>;
57
47
  };
58
- /** Recognize both the default and configured handle plugins during component composition. */
59
- export declare const isBlockHandlesPlugin: (plugin: Plugin) => boolean;
60
48
  /**
61
49
  * Block handles in the overlay, created lazily: a handle mounts
62
- * for a block near the viewport (`nearTop` and the blocks inside them, not
63
- * hidden; every block without layout),
50
+ * for a block near the viewport (the overlay's `near` top-level blocks and
51
+ * the blocks inside them, not hidden; every block without layout),
64
52
  * under the pointer, selected, focused or dragged; drop targets exist only
65
53
  * during our own drag. Hover is one delegated listener on the editor and
66
54
  * one on the overlay (a block's handle keeps it hovered).
67
55
  */
68
56
  export declare const createBlockHandlesPlugin: (options?: BlockHandlesOptions) => Plugin;
69
- /** Default handles for consumers that add the plugin directly. */
70
- export declare const blockHandlesPlugin: Plugin;
@@ -2,204 +2,149 @@ import { mount, unmount } from 'svelte';
2
2
  import { SvelteMap, SvelteSet } from 'svelte/reactivity';
3
3
  import BlockHandles from './BlockHandles.svelte';
4
4
  import { BlockHandleController } from './BlockHandleController.svelte.js';
5
- import { labelsWith } from '../../labels.js';
6
5
  import { hidden } from '../../selection/visibility.js';
7
- const handlePlugins = new WeakSet();
8
- /** Recognize both the default and configured handle plugins during component composition. */
9
- export const isBlockHandlesPlugin = (plugin) => handlePlugins.has(plugin);
10
- /**
11
- * Where a handle mounts: a block within one screen of the viewport, above or
12
- * below. Without layout (no `IntersectionObserver`: a DOM without a
13
- * renderer), every block is near.
14
- */
15
- const NEAR_SCREENS = 1;
16
- /**
17
- * The top-level blocks near the viewport, by a binary search over their
18
- * boxes (document order is vertical order at the top level): reads
19
- * O(log n) boxes a frame, where an observer of every block computed them all
20
- * after each layout change.
21
- */
22
- const nearTop = (blocks, handle, screen) => {
23
- const top = -NEAR_SCREENS * screen;
24
- const bottom = (1 + NEAR_SCREENS) * screen;
25
- // Ids, a handle only for each box read: no handle for every top-level block.
26
- const box = (id) => handle(id).node?.getBoundingClientRect();
27
- let lo = 0;
28
- let hi = blocks.length;
29
- while (lo < hi) {
30
- const mid = (lo + hi) >> 1;
31
- const at = box(blocks[mid]);
32
- if (!at || at.bottom < top)
33
- lo = mid + 1;
34
- else
35
- hi = mid;
36
- }
37
- const first = lo;
38
- hi = blocks.length;
39
- while (lo < hi) {
40
- const mid = (lo + hi) >> 1;
41
- const at = box(blocks[mid]);
42
- if (!at || at.top <= bottom)
43
- lo = mid + 1;
44
- else
45
- hi = mid;
46
- }
47
- return blocks.slice(first, lo).map(handle);
48
- };
6
+ import { isDropTarget } from '../../dnd/placement.js';
7
+ import { all, listen } from '../../utils/listen.js';
49
8
  /**
50
9
  * Block handles in the overlay, created lazily: a handle mounts
51
- * for a block near the viewport (`nearTop` and the blocks inside them, not
52
- * hidden; every block without layout),
10
+ * for a block near the viewport (the overlay's `near` top-level blocks and
11
+ * the blocks inside them, not hidden; every block without layout),
53
12
  * under the pointer, selected, focused or dragged; drop targets exist only
54
13
  * during our own drag. Hover is one delegated listener on the editor and
55
14
  * one on the overlay (a block's handle keeps it hovered).
56
15
  */
57
- export const createBlockHandlesPlugin = (options = {}) => {
58
- const plugin = (edytor) => {
59
- const controller = new BlockHandleController(edytor, {
60
- draggable: options.draggable !== false,
61
- onActivate: options.onActivate,
62
- labels: labelsWith('blockHandles', options.labels)
63
- });
64
- const blocks = new SvelteMap();
65
- const near = new SvelteSet();
66
- const hovered = new SvelteSet();
67
- const ids = new WeakMap();
68
- /** Layout is computed (a browser): the near band is measured, else every block is near. */
69
- const measured = typeof IntersectionObserver !== 'undefined';
70
- /** The blocks the band gained, mounted after the frame's paint (`afterPaint`). */
71
- let gained = null;
72
- let afterPaint;
73
- /**
74
- * Browser rule `handles.after-paint` (one named timer): a handle the band
75
- * gains mounts in a task queued from the overlay's frame, so after that
76
- * frame's paint: a key that adds a block (Enter, a paste) paints its text
77
- * first, the new blocks' handles a frame later. A handle the band loses
78
- * goes at once; hovered, selected and focused handles do not wait.
79
- */
80
- const mountGained = () => {
81
- afterPaint = undefined;
82
- const ids = gained;
83
- gained = null;
84
- if (ids)
85
- for (const id of ids)
86
- if (blocks.has(id) && !near.has(id))
87
- near.add(id);
16
+ export const createBlockHandlesPlugin = (options = {}) => (edytor) => {
17
+ const controller = new BlockHandleController(edytor, {
18
+ draggable: options.draggable !== false
19
+ });
20
+ const blocks = new SvelteMap();
21
+ const near = new SvelteSet();
22
+ const hovered = new SvelteSet();
23
+ /** Layout is computed (a browser): the near band is measured, else every block is near. */
24
+ const measured = typeof IntersectionObserver !== 'undefined';
25
+ /** The blocks the band gained, mounted after the frame's paint (`afterPaint`). */
26
+ let gained = null;
27
+ let afterPaint;
28
+ /**
29
+ * Browser rule `handles.after-paint` (one named timer): a handle the band
30
+ * gains mounts in a task queued from the overlay's frame, so after that
31
+ * frame's paint: a key that adds a block (Enter, a paste) paints its text
32
+ * first, the new blocks' handles a frame later. A handle the band loses
33
+ * goes at once; hovered, selected and focused handles do not wait.
34
+ */
35
+ const mountGained = () => {
36
+ afterPaint = undefined;
37
+ const ids = gained;
38
+ gained = null;
39
+ if (ids)
40
+ for (const id of ids)
41
+ if (blocks.has(id) && !near.has(id))
42
+ near.add(id);
43
+ };
44
+ /** The near band, measured on the overlay's frames (a scroll, a resize, a commit). */
45
+ const measureNear = () => {
46
+ const next = new Set();
47
+ const visit = (block) => {
48
+ if (blocks.has(block.id) && !hidden(block))
49
+ next.add(block.id);
50
+ for (const child of block.children)
51
+ visit(child);
88
52
  };
89
- /** The near band, measured on the overlay's frames (a scroll, a resize, a commit). */
90
- const measureNear = () => {
91
- const view = edytor.node?.ownerDocument.defaultView;
92
- if (!view || !edytor.root)
93
- return;
94
- const tops = edytor.facade.childrenIds(null);
95
- const next = new Set();
96
- const visit = (block) => {
97
- if (blocks.has(block.id) && !hidden(block))
98
- next.add(block.id);
99
- for (const child of block.children)
100
- visit(child);
101
- };
102
- for (const block of nearTop(tops, edytor.idToBlock.block, view.innerHeight))
53
+ for (const node of edytor.overlay.near) {
54
+ const block = edytor.idToBlock.get(node.dataset.edytorId ?? '');
55
+ if (block?.node === node)
103
56
  visit(block);
104
- return () => {
105
- for (const id of near)
106
- if (!next.has(id))
107
- near.delete(id);
108
- const add = [...next].filter((id) => !near.has(id));
109
- gained = add.length ? new Set(add) : null;
110
- if (gained)
111
- afterPaint ??= setTimeout(mountGained);
112
- };
113
- };
114
- /**
115
- * The blocks under the pointer that have a handle: the hovered block and
116
- * its handled ancestors (a layout and its columns have none). Over a
117
- * block's handle (in the overlay), that block: a block stays hovered
118
- * while the pointer goes from its text to its handle and stays there.
119
- */
120
- const hover = (event) => {
121
- const target = event.target;
122
- const handle = target?.closest?.('[data-edytor-block-handle-host]');
123
- const start = handle
124
- ? blocks.get(handle.dataset.blockId ?? '')?.node
125
- : target?.closest?.('[data-edytor-block="true"]');
126
- const next = new Set();
127
- for (let node = start; node; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
128
- const id = ids.get(node);
129
- if (id)
130
- next.add(id);
131
- }
132
- for (const id of hovered)
57
+ }
58
+ return () => {
59
+ for (const id of near)
133
60
  if (!next.has(id))
134
- hovered.delete(id);
135
- for (const id of next)
136
- hovered.add(id);
137
- };
138
- /** In the overlay, only a handle names a block; other chrome (a resize strip, a menu) keeps the hover. */
139
- const hoverOverlay = (event) => {
140
- if (event.target?.closest?.('[data-edytor-block-handle-host]'))
141
- hover(event);
61
+ near.delete(id);
62
+ const add = [...next].filter((id) => !near.has(id));
63
+ gained = add.length ? new Set(add) : null;
64
+ if (gained)
65
+ afterPaint ??= setTimeout(mountGained);
142
66
  };
143
- /** The pointer left the editor and its overlay (not one for the other): nothing is hovered. */
144
- const unhover = (event) => {
145
- const to = event.relatedTarget;
146
- if (to && (edytor.node?.contains(to) || edytor.overlay.layer?.contains(to)))
147
- return;
148
- hovered.clear();
149
- };
150
- return {
151
- onEdytorAttached: ({ node }) => {
152
- const layer = edytor.overlay.layer;
153
- node.addEventListener('pointerover', hover);
154
- node.addEventListener('pointerleave', unhover);
155
- layer.addEventListener('pointerover', hoverOverlay);
156
- layer.addEventListener('pointerleave', unhover);
157
- const offNear = measured ? edytor.overlay.add(measureNear) : undefined;
158
- const component = mount(BlockHandles, {
67
+ };
68
+ /**
69
+ * The blocks under the pointer that have a handle: the hovered block and
70
+ * its handled ancestors (a layout and its columns have none). Over a
71
+ * block's handle (in the overlay), that block: a block stays hovered
72
+ * while the pointer goes from its text to its handle and stays there.
73
+ */
74
+ const hover = (event) => {
75
+ const target = event.target;
76
+ const handle = target?.closest?.('[data-edytor-block-handle-host]');
77
+ const start = handle
78
+ ? blocks.get(handle.dataset.blockId ?? '')?.node
79
+ : target?.closest?.('[data-edytor-block="true"]');
80
+ const next = new Set();
81
+ for (let node = start; node; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
82
+ const id = node.dataset.edytorId ?? '';
83
+ if (blocks.get(id)?.node === node)
84
+ next.add(id);
85
+ }
86
+ for (const id of hovered)
87
+ if (!next.has(id))
88
+ hovered.delete(id);
89
+ for (const id of next)
90
+ hovered.add(id);
91
+ };
92
+ /** In the overlay, only a handle names a block; other chrome (a resize strip, a menu) keeps the hover. */
93
+ const hoverOverlay = (event) => {
94
+ if (event.target?.closest?.('[data-edytor-block-handle-host]'))
95
+ hover(event);
96
+ };
97
+ /** The pointer left the editor and its overlay (not one for the other): nothing is hovered. */
98
+ const unhover = (event) => {
99
+ const to = event.relatedTarget;
100
+ if (to && (edytor.node?.contains(to) || edytor.overlay.layer?.contains(to)))
101
+ return;
102
+ hovered.clear();
103
+ };
104
+ return {
105
+ onEdytorAttached: ({ node }) => {
106
+ const layer = edytor.overlay.layer;
107
+ const offPointer = all(listen(node, 'pointerover', hover), listen(node, 'pointerleave', unhover), listen(layer, 'pointerover', hoverOverlay), listen(layer, 'pointerleave', unhover));
108
+ const offNear = measured ? edytor.overlay.add(measureNear) : undefined;
109
+ const { handle } = options;
110
+ const component = handle &&
111
+ mount(BlockHandles, {
159
112
  target: layer,
160
- props: { edytor, controller, blocks, near, hovered, handle: options.handle }
113
+ props: { edytor, controller, blocks, near, hovered, handle }
161
114
  });
162
- return () => {
163
- node.removeEventListener('pointerover', hover);
164
- node.removeEventListener('pointerleave', unhover);
165
- layer.removeEventListener('pointerover', hoverOverlay);
166
- layer.removeEventListener('pointerleave', unhover);
167
- offNear?.();
168
- clearTimeout(afterPaint);
169
- afterPaint = undefined;
170
- gained = null;
115
+ return () => {
116
+ offPointer();
117
+ offNear?.();
118
+ clearTimeout(afterPaint);
119
+ afterPaint = undefined;
120
+ gained = null;
121
+ if (component)
171
122
  void unmount(component);
172
- };
173
- },
174
- onBlockAttached: ({ node, block }) => {
175
- // A table's rows move by its own row menus, its cells never (`table.fits`).
176
- if (!block.movable || edytor.facade.isTableRow(block.id))
177
- return;
178
- const offDropTarget = controller.addDropTarget(node, block);
179
- // A layout and its columns are drop targets but have no handle (as
180
- // Notion): a block selection covering a layout stands for it.
181
- const { facade } = edytor;
182
- if (facade.isLayout(block.id) || facade.isLayoutItem(block.id))
183
- return offDropTarget;
184
- ids.set(node, block.id);
185
- blocks.set(block.id, block);
186
- if (measured)
187
- edytor.overlay.invalidate();
188
- else
189
- near.add(block.id);
190
- return () => {
191
- offDropTarget();
192
- if (block.node === node || block.node === undefined) {
193
- blocks.delete(block.id);
194
- near.delete(block.id);
195
- hovered.delete(block.id);
196
- }
197
- };
198
- }
199
- };
123
+ };
124
+ },
125
+ onBlockAttached: ({ node, block }) => {
126
+ // A table's rows move by its own row menus, its cells never (`table.fits`).
127
+ if (!isDropTarget(edytor, block))
128
+ return;
129
+ const offDropTarget = controller.addDropTarget(node, block);
130
+ // A layout and its columns are drop targets but have no handle (as
131
+ // Notion): a block selection covering a layout stands for it.
132
+ const { facade } = edytor;
133
+ if (facade.isLayout(block.id) || facade.isLayoutItem(block.id))
134
+ return offDropTarget;
135
+ blocks.set(block.id, block);
136
+ if (measured)
137
+ edytor.overlay.invalidate();
138
+ else
139
+ near.add(block.id);
140
+ return () => {
141
+ offDropTarget();
142
+ if (block.node === node || block.node === undefined) {
143
+ blocks.delete(block.id);
144
+ near.delete(block.id);
145
+ hovered.delete(block.id);
146
+ }
147
+ };
148
+ }
200
149
  };
201
- handlePlugins.add(plugin);
202
- return plugin;
203
150
  };
204
- /** Default handles for consumers that add the plugin directly. */
205
- export const blockHandlesPlugin = createBlockHandlesPlugin();
@@ -21,13 +21,15 @@ export type DragPreview = {
21
21
  /**
22
22
  * The ghost of `nodes` (the dragged blocks' elements, in document order),
23
23
  * grabbed at `pointer`: a copy of each block laid out at its own width (the
24
- * widest of them; the editor's content width when none is laid out), scaled by `SCALE` from its top left, cut at `MAX_HEIGHT`.
25
- * Nothing is added (no card, background, shadow, opacity, fade or count
26
- * badge): the blocks' own look. The pointer
27
- * keeps its place on the first block (a handle is left of it: a transparent
28
- * gutter keeps the offset positive, which every browser supports).
24
+ * widest of them; `MAX_WIDTH` when none is laid out), scaled by `SCALE` from its top left, cut at `MAX_HEIGHT`.
25
+ * With `columns` (a table row's or column's cells, `table.drag`), the copies
26
+ * are laid out in a grid of columns that wide, row after row. Nothing is
27
+ * added (no card, background, shadow, opacity, fade or count badge): the
28
+ * blocks' own look. The pointer keeps its place on the first block (a
29
+ * handle is left of it: a transparent gutter keeps the offset positive,
30
+ * which every browser supports).
29
31
  */
30
32
  export declare const dragPreview: (root: HTMLElement, nodes: HTMLElement[], pointer: {
31
33
  clientX: number;
32
34
  clientY: number;
33
- }) => DragPreview;
35
+ }, columns?: number[]) => DragPreview;
@@ -149,31 +149,33 @@ const themed = (root, content) => {
149
149
  scope.append(shell);
150
150
  return scope;
151
151
  };
152
- /** The root's content width, capped (`MAX_WIDTH`). */
153
- const contentWidth = (root) => {
154
- const style = root.ownerDocument.defaultView?.getComputedStyle(root);
155
- const padding = style ? parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) : 0;
156
- const width = root.clientWidth - (padding || 0);
157
- return width > 0 ? Math.min(width, MAX_WIDTH) : MAX_WIDTH;
158
- };
159
152
  /**
160
153
  * The ghost of `nodes` (the dragged blocks' elements, in document order),
161
154
  * grabbed at `pointer`: a copy of each block laid out at its own width (the
162
- * widest of them; the editor's content width when none is laid out), scaled by `SCALE` from its top left, cut at `MAX_HEIGHT`.
163
- * Nothing is added (no card, background, shadow, opacity, fade or count
164
- * badge): the blocks' own look. The pointer
165
- * keeps its place on the first block (a handle is left of it: a transparent
166
- * gutter keeps the offset positive, which every browser supports).
155
+ * widest of them; `MAX_WIDTH` when none is laid out), scaled by `SCALE` from its top left, cut at `MAX_HEIGHT`.
156
+ * With `columns` (a table row's or column's cells, `table.drag`), the copies
157
+ * are laid out in a grid of columns that wide, row after row. Nothing is
158
+ * added (no card, background, shadow, opacity, fade or count badge): the
159
+ * blocks' own look. The pointer keeps its place on the first block (a
160
+ * handle is left of it: a transparent gutter keeps the offset positive,
161
+ * which every browser supports).
167
162
  */
168
- export const dragPreview = (root, nodes, pointer) => {
163
+ export const dragPreview = (root, nodes, pointer, columns) => {
169
164
  const { ownerDocument: document } = root;
170
165
  const first = nodes[0]?.getBoundingClientRect();
171
166
  const dx = first ? pointer.clientX - first.left : 0;
172
167
  const dy = first ? pointer.clientY - first.top : 0;
173
- // Each block at its own width (a column's block at its column's), capped.
174
- const own = Math.max(0, ...nodes.map((node) => node.getBoundingClientRect().width));
175
- const width = own > 0 ? Math.min(own, MAX_WIDTH) : contentWidth(root);
168
+ // Each block at its own width (a column's block at its column's), capped (the cap where none is laid out).
169
+ const own = columns
170
+ ? columns.reduce((sum, w) => sum + w, 0)
171
+ : Math.max(0, ...nodes.map((node) => node.getBoundingClientRect().width));
172
+ const width = Math.min(own || MAX_WIDTH, MAX_WIDTH);
176
173
  const list = document.createElement('div');
174
+ if (columns)
175
+ Object.assign(list.style, {
176
+ display: 'grid',
177
+ gridTemplateColumns: columns.map((w) => `${w}px`).join(' ')
178
+ });
177
179
  let shown = 0;
178
180
  for (const node of nodes) {
179
181
  // Past the cap nothing more shows: the rest is not cloned.