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
@@ -35,22 +35,23 @@
35
35
  const previewViewOf = (cell: PreviewCell): BlockView => ({
36
36
  id: cell.id,
37
37
  type: cell.type,
38
- data: cell.data ?? {},
38
+ get data() {
39
+ return structuredClone(cell.data ?? {});
40
+ },
39
41
  selected: false,
40
42
  focused: false,
41
43
  handle: undefined,
42
44
  void: voidChrome
43
45
  });
44
46
 
45
- /** A child in the flow: a block's id, a block suggestion, or a preview's own block. */
46
- type Kid = string | Suggestion | PreviewCell;
47
+ /**
48
+ * A child in the flow: a block's id, a block suggestion's preview in the
49
+ * flow among its siblings (in place of a block), or a suggestion's own
50
+ * block, rendered from its preview cell, never registered (`Suggestion`).
51
+ */
52
+ export type Kid = string | Suggestion | PreviewCell;
47
53
  const kidKey = (kid: Kid) =>
48
54
  typeof kid === 'string' || kid instanceof Suggestion ? kid : kid.id;
49
- const idOf = (kid: Kid) =>
50
- typeof kid === 'string' ? kid : kid instanceof Suggestion ? undefined : kid.id;
51
- const previewOf = (kid: Kid) =>
52
- typeof kid === 'string' || kid instanceof Suggestion ? undefined : kid;
53
- const suggestionOf = (kid: Kid) => (kid instanceof Suggestion ? kid : undefined);
54
55
 
55
56
  /** Tags that take no content: the kind renders the element only. */
56
57
  const VOID_TAGS = new Set(['area', 'br', 'col', 'embed', 'hr', 'img', 'input', 'wbr']);
@@ -93,20 +94,15 @@
93
94
  import Child from './Block.svelte';
94
95
  import Content from './Content.svelte';
95
96
  import SuggestionPreview from './Suggestion.svelte';
96
- import { blockDir, ownText } from '../surface/attributes.js';
97
+ import { blockDir, ownText, type Owned } from '../surface/attributes.js';
97
98
  import { colorAttributes } from '../block/colors.js';
98
99
 
99
- let {
100
- id,
101
- preview,
102
- suggestion
103
- }: {
104
- id?: string;
105
- /** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
106
- preview?: PreviewCell;
107
- /** A block suggestion's preview in the flow among its siblings, in place of a block. */
108
- suggestion?: Suggestion;
109
- } = $props();
100
+ let { kid }: { kid: Kid } = $props();
101
+ const suggestion = $derived(kid instanceof Suggestion ? kid : undefined);
102
+ const preview = $derived(
103
+ typeof kid === 'string' || suggestion ? undefined : (kid as PreviewCell)
104
+ );
105
+ const id = $derived(typeof kid === 'string' ? kid : preview?.id);
110
106
 
111
107
  const edytor = getContext<Edytor>('edytor');
112
108
  // The structure renders from the cell; the snippet receives a view object.
@@ -142,20 +138,18 @@
142
138
  ? elementOf(definition.contentElement, cell?.data, id)
143
139
  : undefined
144
140
  );
145
- /** Its direction from its own text (`blockDir`, bidi): none in a preview. */
146
- const dir = $derived(preview ? null : blockDir(ownText(cell?.runs ?? [])));
147
141
  /**
148
- * `dir` as an attribute, absent when `null`: Svelte writes `dir` as a
149
- * property, which would leave `dir=""` where the table wants none.
142
+ * Registers the block element (one element per block, re-registered when
143
+ * the tag changes) with what it owns: the core's attributes below, not
144
+ * the kind's (`surface/attributes.ts` heals them).
150
145
  */
151
- const direction = (node: HTMLElement, value: 'rtl' | 'ltr' | null) => {
152
- const write = (next: 'rtl' | 'ltr' | null) =>
153
- next ? node.setAttribute('dir', next) : node.removeAttribute('dir');
154
- write(value);
155
- return { update: write };
156
- };
157
- /** Registers the block element: one element per block, re-registered when the tag changes. */
158
- const register = (node: HTMLElement) => block?.handle?.attach(node);
146
+ const register = (node: HTMLElement) =>
147
+ block?.handle?.attach(node, (): Owned => {
148
+ const owned: Record<string, string | null> = {};
149
+ for (const [name, value] of Object.entries(attributes ?? {}))
150
+ if (!(name in (element?.attributes ?? {}))) owned[name] = (value as string) ?? null;
151
+ return { strict: false, owned, style: userSelect ? { 'user-select': userSelect } : {} };
152
+ });
159
153
  /**
160
154
  * Whether the selection holds this block, and whether it touches it: one
161
155
  * boolean each, read from the block's own membership (`isSelected`,
@@ -184,7 +178,9 @@
184
178
  'data-edytor-selected': selected ? 'true' : undefined,
185
179
  'data-edytor-focused': focused ? 'true' : undefined,
186
180
  'data-edytor-suggestion-replaced': shown ? (replacedMark(shown) ?? undefined) : undefined,
187
- contenteditable: definition?.void ? ('false' as const) : undefined
181
+ contenteditable: definition?.void ? ('false' as const) : undefined,
182
+ // Its direction from its own text (`blockDir`, bidi), absent without one: none in a preview.
183
+ dir: (!preview && blockDir(ownText(cell?.runs ?? []))) || undefined
188
184
  }
189
185
  );
190
186
  const userSelect = $derived(definition?.void ? 'none' : undefined);
@@ -199,9 +195,11 @@
199
195
 
200
196
  // The kind `content()` last rendered under — read after each render.
201
197
  let contentRenderedFor: string | undefined;
202
- $effect(() => {
203
- if (DEV && block?.handle) checkRendersContent(block.handle, contentRenderedFor === cell?.type);
204
- });
198
+ // Development only: production keeps no effect per block for it.
199
+ if (DEV)
200
+ $effect(() => {
201
+ if (block?.handle) checkRendersContent(block.handle, contentRenderedFor === cell?.type);
202
+ });
205
203
  </script>
206
204
 
207
205
  <!--
@@ -235,7 +233,7 @@
235
233
  {/snippet}<!--
236
234
  -->{#snippet children()}
237
235
  {#each kids as kid (kidKey(kid))}
238
- <Child id={idOf(kid)} preview={previewOf(kid)} suggestion={suggestionOf(kid)} />
236
+ <Child {kid} />
239
237
  {/each}
240
238
  {/snippet}<!--
241
239
  A kind this view does not register: a plain block, its text and children.
@@ -255,39 +253,27 @@
255
253
  -->{#if suggestion}
256
254
  <SuggestionPreview {suggestion} />
257
255
  {:else if tag === 'div'}
258
- <div {...attributes} style:user-select={userSelect} use:register use:direction={dir}>
256
+ <div {...attributes} style:user-select={userSelect} use:register>
259
257
  {@render body?.(payload)}
260
258
  </div>
261
259
  {:else if tag === 'li'}
262
- <li {...attributes} style:user-select={userSelect} use:register use:direction={dir}>
260
+ <li {...attributes} style:user-select={userSelect} use:register>
263
261
  {@render body?.(payload)}
264
262
  </li>
265
263
  {:else if tag === 'details'}
266
- <details {...attributes} style:user-select={userSelect} use:register use:direction={dir}>
264
+ <details {...attributes} style:user-select={userSelect} use:register>
267
265
  {@render body?.(payload)}
268
266
  </details>
269
267
  {:else if tag === 'figure'}
270
- <figure {...attributes} style:user-select={userSelect} use:register use:direction={dir}>
268
+ <figure {...attributes} style:user-select={userSelect} use:register>
271
269
  {@render body?.(payload)}
272
270
  </figure>
273
271
  {:else if tag === 'hr'}
274
- <hr {...attributes} style:user-select={userSelect} use:register use:direction={dir} />
272
+ <hr {...attributes} style:user-select={userSelect} use:register />
275
273
  {:else if tag && VOID_TAGS.has(tag)}
276
- <svelte:element
277
- this={tag}
278
- {...attributes}
279
- style:user-select={userSelect}
280
- use:register
281
- use:direction={dir}
282
- />
274
+ <svelte:element this={tag} {...attributes} style:user-select={userSelect} use:register />
283
275
  {:else if tag}
284
- <svelte:element
285
- this={tag}
286
- {...attributes}
287
- style:user-select={userSelect}
288
- use:register
289
- use:direction={dir}
290
- >
276
+ <svelte:element this={tag} {...attributes} style:user-select={userSelect} use:register>
291
277
  {@render body?.(payload)}
292
278
  </svelte:element>
293
279
  {/if}
@@ -1,11 +1,13 @@
1
1
  import type { PreviewCell } from '../surface/cells.js';
2
2
  import { Suggestion } from '../session/suggestions.svelte.js';
3
+ /**
4
+ * A child in the flow: a block's id, a block suggestion's preview in the
5
+ * flow among its siblings (in place of a block), or a suggestion's own
6
+ * block, rendered from its preview cell, never registered (`Suggestion`).
7
+ */
8
+ export type Kid = string | Suggestion | PreviewCell;
3
9
  type $$ComponentProps = {
4
- id?: string;
5
- /** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
6
- preview?: PreviewCell;
7
- /** A block suggestion's preview in the flow among its siblings, in place of a block. */
8
- suggestion?: Suggestion;
10
+ kid: Kid;
9
11
  };
10
12
  declare const Block: import("svelte").Component<$$ComponentProps, {}, "">;
11
13
  type Block = ReturnType<typeof Block>;
@@ -51,11 +51,7 @@
51
51
  /** Segments are keyed causally (the preceding atom's id, or `start`), never by ordinal. */
52
52
  const keyOf = (part: Part) => (part.kind === 'text' ? `s:${part.key}:${epoch}` : `a:${part.id}`);
53
53
 
54
- const view = (segment: Segment) =>
55
- edytor.pin.render(id, segment.key) ?? {
56
- deltas: segmentDeltas(cell!, segment, transform),
57
- empty: segment.text === ''
58
- };
54
+ const view = (segment: Segment) => edytor.pin.shown(cell!, segment, transform);
59
55
 
60
56
  /** A suggestion's text after this block's (`end`): its first block's content. */
61
57
  const ghosts = $derived(
@@ -2,7 +2,7 @@
2
2
  // `EdytorClass` alias: the emitted `.svelte.d.ts` also declares `Edytor`
3
3
  // (the component + its bindable instance type) — an unaliased import
4
4
  // collides there (TS2440 for bundler-resolution consumers).
5
- import { Edytor as EdytorClass, useEdytor, type Snippets } from '../edytor.svelte.js';
5
+ import { Edytor as EdytorClass, useEdytor } from '../edytor.svelte.js';
6
6
  import {
7
7
  SyncRefusedError,
8
8
  type Awareness,
@@ -19,43 +19,22 @@
19
19
  } from '../collaboration/awarenessSelection.js';
20
20
  import { createIndexeddbSync, createWebsocketSync } from '../collaboration/providers.js';
21
21
  export { EdytorClass as EdytorContext, useEdytor };
22
- import type { Placeholder, Plugin } from '../plugins.js';
22
+ import type { Plugin } from '../plugins.js';
23
+ import { brandOf } from '../plugins/brand.js';
23
24
  import type { PartialLabels } from '../labels.js';
24
- import {
25
- blockHandlesPlugin,
26
- createBlockHandlesPlugin,
27
- isBlockHandlesPlugin,
28
- type BlockHandlesOptions
29
- } from '../plugins/blockHandles/blockHandlesPlugin.js';
30
- import { isRichTextPlugin, richTextPlugin } from '../plugins/richtext/RichTextPlugin.svelte';
31
- import { arrowMovePlugin } from '../plugins/arrowMove/arrowMove.js';
32
- import { imagePlugin, isImagePlugin } from '../plugins/image/ImagePlugin.svelte';
33
- import {
34
- isSuggestionsPlugin,
35
- suggestionsPlugin
36
- } from '../plugins/suggestions/suggestionsPlugin.js';
25
+ import { createRichTextPlugin } from '../plugins/richtext/RichTextPlugin.svelte';
26
+ import { createSuggestionsPlugin } from '../plugins/suggestions/suggestionsPlugin.js';
37
27
 
38
28
  /**
39
- * The plugins every view has unless it lists its own (or sets
29
+ * The plugins every view has unless it lists one of their kind (or sets
40
30
  * `defaultPlugins={false}`), after the app's so its kinds and keys win:
41
- * block moves, the suggestion UI, the image kind, then rich text.
42
- */
43
- const withDefaults = (plugins: Plugin[] = []): Plugin[] => [
44
- ...plugins,
45
- ...(plugins.includes(arrowMovePlugin) ? [] : [arrowMovePlugin]),
46
- ...(plugins.some(isSuggestionsPlugin) ? [] : [suggestionsPlugin]),
47
- ...(plugins.some(isImagePlugin) ? [] : [imagePlugin]),
48
- ...(plugins.some(isRichTextPlugin) ? [] : [richTextPlugin])
49
- ];
50
- /**
51
- * The handles: none with `false`, the configured ones (replacing any
52
- * listed) with options, else the listed ones or the default, first.
31
+ * the suggestion UI, then rich text (an app lists `createArrowMovePlugin()`
32
+ * for block moves and `createImagePlugin({ upload })` for images itself).
53
33
  */
54
- const withHandles = (plugins: Plugin[] | undefined, handles: boolean | BlockHandlesOptions) => {
55
- const others = plugins?.filter((plugin) => !isBlockHandlesPlugin(plugin));
56
- if (handles === false) return others;
57
- if (typeof handles === 'object') return [createBlockHandlesPlugin(handles), ...(others ?? [])];
58
- return plugins?.some(isBlockHandlesPlugin) ? plugins : [blockHandlesPlugin, ...(plugins ?? [])];
34
+ const DEFAULTS = [createSuggestionsPlugin(), createRichTextPlugin()];
35
+ const withDefaults = (plugins: Plugin[] = []): Plugin[] => {
36
+ const listed = new Set(plugins.map(brandOf));
37
+ return [...plugins, ...DEFAULTS.filter((plugin) => !listed.has(brandOf(plugin)))];
59
38
  };
60
39
  /**
61
40
  * The sync of a room id no dial can carry (`validRoomId`): no socket, the
@@ -80,11 +59,9 @@
80
59
  children: []
81
60
  };
82
61
 
83
- export type EdytorProps = Snippets & {
62
+ export type EdytorProps = {
84
63
  plugins?: Plugin[];
85
- /** Show built-in block handles, with optional pointer dragging and activation callback. */
86
- blockHandles?: boolean | BlockHandlesOptions;
87
- /** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
64
+ /** Add rich text and the suggestion UI unless `plugins` lists them (default `true`). */
88
65
  defaultPlugins?: boolean;
89
66
  class?: string;
90
67
  /** The root textbox's accessible name (or name it with `aria-labelledby`). */
@@ -100,7 +77,7 @@
100
77
  document?: EdytorDocument;
101
78
  doc?: YDoc;
102
79
  awareness?: Awareness;
103
- /** The local author (id, name, color) of the document this view owns: history lineage and presence. */
80
+ /** The local author (id, name, color) of the document this view owns: attribution and presence. */
104
81
  actor?: DocumentActor;
105
82
  /**
106
83
  * What this view shares of its selection with peers (`share`: `'caret'`,
@@ -113,6 +90,13 @@
113
90
  * the connection.
114
91
  */
115
92
  readonly?: boolean;
93
+ /**
94
+ * Let users nest blocks (default `false`): Tab and Shift+Tab nest and
95
+ * unnest, drops and handle keys may place a block inside another. Off,
96
+ * Tab is left to the browser and no gesture nests; containers keep their
97
+ * bodies. Read once.
98
+ */
99
+ allowNesting?: boolean;
116
100
  /** Chords (`mod+s`, `shift+alt+enter`) the view binds before plugins and built-ins. Read once. */
117
101
  hotkeys?: Partial<Record<HotKeyCombination, HotKey>>;
118
102
  /** After every commit that changed the visible document: a `JSONDoc`, the type `value` takes. */
@@ -125,13 +109,12 @@
125
109
  onSelectionChange?: (selection: EdytorSelection) => void;
126
110
  /** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
127
111
  value?: JSONDoc;
128
- placeholder?: Placeholder;
129
112
  /**
130
- * The words the view says itself, over the English ones: its
131
- * announcements to assistive technology and a suggestion's name. Each
132
- * plugin takes its own `labels`. Read once.
113
+ * The words the package shows and says in this view, over the English
114
+ * ones: any entry of any section (`editor`, `richText`, `table`…) and
115
+ * the commands' slash `keywords` by id. Read once.
133
116
  */
134
- labels?: PartialLabels<'editor'>;
117
+ labels?: PartialLabels;
135
118
  translate?: 'yes' | 'no';
136
119
  spellcheck?: boolean;
137
120
  autocorrect?: 'on' | 'off';
@@ -195,7 +178,6 @@
195
178
 
196
179
  let {
197
180
  plugins: userPlugins,
198
- blockHandles,
199
181
  defaultPlugins = true,
200
182
  class: className,
201
183
  'aria-label': ariaLabel,
@@ -207,6 +189,7 @@
207
189
  document: edytorDocument,
208
190
  doc,
209
191
  readonly = false,
192
+ allowNesting = false,
210
193
  value = defaultValue,
211
194
  hotkeys,
212
195
  sync,
@@ -223,7 +206,6 @@
223
206
  onChange,
224
207
  onDocChange,
225
208
  onSelectionChange,
226
- placeholder,
227
209
  labels,
228
210
  translate = 'no',
229
211
  spellcheck = true,
@@ -231,17 +213,13 @@
231
213
  autocomplete = 'off',
232
214
  autocapitalize = 'none',
233
215
  inputmode,
234
- enterkeyhint,
235
- ...snippets
216
+ enterkeyhint
236
217
  }: EdytorProps = $props();
237
218
 
238
219
  const initialEdytorOptions = untrack(() => ({
239
- snippets,
240
220
  readonly,
241
- plugins: withHandles(
242
- defaultPlugins ? withDefaults(userPlugins) : userPlugins,
243
- blockHandles ?? true
244
- ),
221
+ allowNesting,
222
+ plugins: defaultPlugins ? withDefaults(userPlugins) : userPlugins,
245
223
  document: edytorDocument,
246
224
  doc,
247
225
  awareness,
@@ -253,7 +231,6 @@
253
231
  onDocChange,
254
232
  sync: !!sync || room !== undefined,
255
233
  value,
256
- placeholder,
257
234
  labels
258
235
  }));
259
236
 
@@ -354,25 +331,13 @@
354
331
  $effect(edytor.surface.post);
355
332
  $effect(edytor.projector.post);
356
333
 
357
- const browserMutationGuardAttributes = $derived({
358
- spellcheck,
359
- autocorrect,
360
- autocomplete,
361
- autocapitalize,
362
- inputmode,
363
- enterkeyhint
364
- });
365
-
366
334
  /**
367
- * The root's browser attributes. Optional hints (`inputmode`,
368
- * `enterkeyhint`) stay absent when unset — emitting a guessed default
369
- * would override the browser/UA's own choice.
335
+ * The root's browser hints, several of them unknown to Svelte's element
336
+ * types; one left unset is absent (a guessed default would override the
337
+ * browser's own choice).
370
338
  */
371
- const editableRootBrowserAttributes = (
372
- node: HTMLElement,
373
- attributes: typeof browserMutationGuardAttributes
374
- ) => {
375
- const apply = (next: typeof attributes) => {
339
+ const browserAttributes = (node: HTMLElement, attributes: Record<string, unknown>) => {
340
+ const apply = (next: Record<string, unknown>) => {
376
341
  for (const [name, value] of Object.entries(next))
377
342
  if (value === undefined) node.removeAttribute(name);
378
343
  else node.setAttribute(name, String(value));
@@ -380,28 +345,25 @@
380
345
  apply(attributes);
381
346
  return { update: apply };
382
347
  };
383
-
384
- const nonNativeEditableBlockChromeSelection = (node: HTMLElement) => {
385
- const { selection } = edytor;
386
- // `selectstart` is the only event fired before a drag-selection
387
- // begins — the guard keeps one from starting on non-editable
388
- // chrome (markers, void/island chrome, plugin UI). A press on that
389
- // chrome is the press's (`events/onFocus.ts`).
390
- node.addEventListener('selectstart', selection.pointer.onSelectStart);
391
- return {
392
- destroy: () => node.removeEventListener('selectstart', selection.pointer.onSelectStart)
393
- };
394
- };
395
348
  </script>
396
349
 
397
350
  {#if edytor.synced}
398
351
  <!-- The editing host is focusable (contenteditable): no tabindex of its own. -->
399
352
  <!-- svelte-ignore a11y_aria_activedescendant_has_tabindex -->
353
+ <!-- `selectstart`, fired before a drag-selection begins, keeps one from starting on
354
+ non-editable chrome (a press there is the press's: `events/onFocus.ts`). -->
400
355
  <div
401
356
  class={className}
402
357
  use:edytor.attach
403
- use:editableRootBrowserAttributes={browserMutationGuardAttributes}
404
- use:nonNativeEditableBlockChromeSelection
358
+ onselectstart={edytor.selection.pointer.onSelectStart}
359
+ use:browserAttributes={{
360
+ spellcheck,
361
+ autocorrect,
362
+ autocomplete,
363
+ autocapitalize,
364
+ inputmode,
365
+ enterkeyhint
366
+ }}
405
367
  data-edytor
406
368
  data-edytor-selection={edytor.selection.value.kind === 'blocks' ? 'blocks' : undefined}
407
369
  contenteditable={!readonly}
@@ -419,8 +381,7 @@
419
381
  {translate}
420
382
  >
421
383
  {#each edytor.suggestions.around(edytor.cells?.rootIds ?? []) as kid (kid)}<Block
422
- id={typeof kid === 'string' ? kid : undefined}
423
- suggestion={typeof kid === 'string' ? undefined : kid}
384
+ {kid}
424
385
  />{/each}<span
425
386
  data-edytor-render-anchor
426
387
  contenteditable="false"
@@ -433,24 +394,46 @@
433
394
  <!-- The room's JSON, read-only, while this view's document hydrates. -->
434
395
  <div data-edytor-snapshot style="display: contents">
435
396
  <Snapshot
436
- value={snapshot}
437
- readonly
438
- plugins={userPlugins}
439
- {defaultPlugins}
440
- {blockHandles}
441
- class={className}
442
- {placeholder}
443
- {labels}
444
- aria-label={ariaLabel}
445
- aria-labelledby={ariaLabelledby}
446
- aria-describedby={ariaDescribedby}
447
- {id}
448
- {...snippets}
397
+ {...{
398
+ value: snapshot,
399
+ readonly: true,
400
+ plugins: userPlugins,
401
+ defaultPlugins,
402
+ class: className,
403
+ labels,
404
+ 'aria-label': ariaLabel,
405
+ 'aria-labelledby': ariaLabelledby,
406
+ 'aria-describedby': ariaDescribedby,
407
+ id
408
+ }}
449
409
  />
450
410
  </div>
451
411
  {/if}
452
412
 
453
413
  <style>
414
+ /* Where a drag lands, a block handle's or files' from outside (`DropIndicator`):
415
+ * the bar (4px) and the nest backdrop, placed in the overlay and shown
416
+ * (`data-shown`) by the drag; their look is a theme's (`edytor/themes/notion.css`). */
417
+ :global([data-edytor-drop-indicator]),
418
+ :global([data-edytor-drop-backdrop]) {
419
+ position: absolute;
420
+ pointer-events: none;
421
+ }
422
+
423
+ :global([data-edytor-drop-indicator]) {
424
+ z-index: 100;
425
+ box-sizing: border-box;
426
+ height: 4px;
427
+ }
428
+
429
+ :global([data-edytor-drop-backdrop]) {
430
+ z-index: 99;
431
+ }
432
+
433
+ :global([data-edytor-drop-backdrop]:not([data-shown='true'])) {
434
+ visibility: hidden;
435
+ }
436
+
454
437
  /*
455
438
  * Room below the last block, where a press puts the caret in a trailing
456
439
  * paragraph (`nav.trailing.press`): `--edytor-trailing-space`. No
@@ -1,16 +1,13 @@
1
- import { Edytor as EdytorClass, useEdytor, type Snippets } from '../edytor.svelte.js';
1
+ import { Edytor as EdytorClass, useEdytor } from '../edytor.svelte.js';
2
2
  import { SyncRefusedError, type Awareness, type DocChange, type DocumentActor, type EdytorDocument, type YDoc } from '../crdt/index.js';
3
3
  import type { EdytorSync, WebsocketSyncOptions } from '../collaboration/index.js';
4
4
  import { type PresenceOptions } from '../collaboration/awarenessSelection.js';
5
5
  export { EdytorClass as EdytorContext, useEdytor };
6
- import type { Placeholder, Plugin } from '../plugins.js';
6
+ import type { Plugin } from '../plugins.js';
7
7
  import type { PartialLabels } from '../labels.js';
8
- import { type BlockHandlesOptions } from '../plugins/blockHandles/blockHandlesPlugin.js';
9
- export type EdytorProps = Snippets & {
8
+ export type EdytorProps = {
10
9
  plugins?: Plugin[];
11
- /** Show built-in block handles, with optional pointer dragging and activation callback. */
12
- blockHandles?: boolean | BlockHandlesOptions;
13
- /** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
10
+ /** Add rich text and the suggestion UI unless `plugins` lists them (default `true`). */
14
11
  defaultPlugins?: boolean;
15
12
  class?: string;
16
13
  /** The root textbox's accessible name (or name it with `aria-labelledby`). */
@@ -26,7 +23,7 @@ export type EdytorProps = Snippets & {
26
23
  document?: EdytorDocument;
27
24
  doc?: YDoc;
28
25
  awareness?: Awareness;
29
- /** The local author (id, name, color) of the document this view owns: history lineage and presence. */
26
+ /** The local author (id, name, color) of the document this view owns: attribution and presence. */
30
27
  actor?: DocumentActor;
31
28
  /**
32
29
  * What this view shares of its selection with peers (`share`: `'caret'`,
@@ -39,6 +36,13 @@ export type EdytorProps = Snippets & {
39
36
  * the connection.
40
37
  */
41
38
  readonly?: boolean;
39
+ /**
40
+ * Let users nest blocks (default `false`): Tab and Shift+Tab nest and
41
+ * unnest, drops and handle keys may place a block inside another. Off,
42
+ * Tab is left to the browser and no gesture nests; containers keep their
43
+ * bodies. Read once.
44
+ */
45
+ allowNesting?: boolean;
42
46
  /** Chords (`mod+s`, `shift+alt+enter`) the view binds before plugins and built-ins. Read once. */
43
47
  hotkeys?: Partial<Record<HotKeyCombination, HotKey>>;
44
48
  /** After every commit that changed the visible document: a `JSONDoc`, the type `value` takes. */
@@ -51,13 +55,12 @@ export type EdytorProps = Snippets & {
51
55
  onSelectionChange?: (selection: EdytorSelection) => void;
52
56
  /** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
53
57
  value?: JSONDoc;
54
- placeholder?: Placeholder;
55
58
  /**
56
- * The words the view says itself, over the English ones: its
57
- * announcements to assistive technology and a suggestion's name. Each
58
- * plugin takes its own `labels`. Read once.
59
+ * The words the package shows and says in this view, over the English
60
+ * ones: any entry of any section (`editor`, `richText`, `table`…) and
61
+ * the commands' slash `keywords` by id. Read once.
59
62
  */
60
- labels?: PartialLabels<'editor'>;
63
+ labels?: PartialLabels;
61
64
  translate?: 'yes' | 'no';
62
65
  spellcheck?: boolean;
63
66
  autocorrect?: 'on' | 'off';
@@ -28,7 +28,7 @@
28
28
  return part.type;
29
29
  },
30
30
  get data() {
31
- return block ? block.data : (part.data ?? {});
31
+ return block ? block.data : structuredClone(part.data ?? {});
32
32
  },
33
33
  get selected() {
34
34
  return block?.selected ?? false;