edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -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,28 @@
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 { createArrowMovePlugin } from '../plugins/arrowMove/arrowMove.js';
27
+ import { createImagePlugin } from '../plugins/image/ImagePlugin.svelte';
28
+ import { createSuggestionsPlugin } from '../plugins/suggestions/suggestionsPlugin.js';
37
29
 
38
30
  /**
39
- * The plugins every view has unless it lists its own (or sets
31
+ * The plugins every view has unless it lists one of their kind (or sets
40
32
  * `defaultPlugins={false}`), after the app's so its kinds and keys win:
41
33
  * block moves, the suggestion UI, the image kind, then rich text.
42
34
  */
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])
35
+ const DEFAULTS = [
36
+ createArrowMovePlugin(),
37
+ createSuggestionsPlugin(),
38
+ createImagePlugin(),
39
+ createRichTextPlugin()
49
40
  ];
50
- /**
51
- * The handles: none with `false`, the configured ones (replacing any
52
- * listed) with options, else the listed ones or the default, first.
53
- */
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 ?? [])];
41
+ const withDefaults = (plugins: Plugin[] = []): Plugin[] => {
42
+ const listed = new Set(plugins.map(brandOf));
43
+ return [...plugins, ...DEFAULTS.filter((plugin) => !listed.has(brandOf(plugin)))];
59
44
  };
60
45
  /**
61
46
  * The sync of a room id no dial can carry (`validRoomId`): no socket, the
@@ -80,10 +65,8 @@
80
65
  children: []
81
66
  };
82
67
 
83
- export type EdytorProps = Snippets & {
68
+ export type EdytorProps = {
84
69
  plugins?: Plugin[];
85
- /** Show built-in block handles, with optional pointer dragging and activation callback. */
86
- blockHandles?: boolean | BlockHandlesOptions;
87
70
  /** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
88
71
  defaultPlugins?: boolean;
89
72
  class?: string;
@@ -100,7 +83,7 @@
100
83
  document?: EdytorDocument;
101
84
  doc?: YDoc;
102
85
  awareness?: Awareness;
103
- /** The local author (id, name, color) of the document this view owns: history lineage and presence. */
86
+ /** The local author (id, name, color) of the document this view owns: attribution and presence. */
104
87
  actor?: DocumentActor;
105
88
  /**
106
89
  * What this view shares of its selection with peers (`share`: `'caret'`,
@@ -125,13 +108,12 @@
125
108
  onSelectionChange?: (selection: EdytorSelection) => void;
126
109
  /** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
127
110
  value?: JSONDoc;
128
- placeholder?: Placeholder;
129
111
  /**
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.
112
+ * The words the package shows and says in this view, over the English
113
+ * ones: any entry of any section (`editor`, `richText`, `table`…) and
114
+ * the commands' slash `keywords` by id. Read once.
133
115
  */
134
- labels?: PartialLabels<'editor'>;
116
+ labels?: PartialLabels;
135
117
  translate?: 'yes' | 'no';
136
118
  spellcheck?: boolean;
137
119
  autocorrect?: 'on' | 'off';
@@ -195,7 +177,6 @@
195
177
 
196
178
  let {
197
179
  plugins: userPlugins,
198
- blockHandles,
199
180
  defaultPlugins = true,
200
181
  class: className,
201
182
  'aria-label': ariaLabel,
@@ -223,7 +204,6 @@
223
204
  onChange,
224
205
  onDocChange,
225
206
  onSelectionChange,
226
- placeholder,
227
207
  labels,
228
208
  translate = 'no',
229
209
  spellcheck = true,
@@ -231,17 +211,12 @@
231
211
  autocomplete = 'off',
232
212
  autocapitalize = 'none',
233
213
  inputmode,
234
- enterkeyhint,
235
- ...snippets
214
+ enterkeyhint
236
215
  }: EdytorProps = $props();
237
216
 
238
217
  const initialEdytorOptions = untrack(() => ({
239
- snippets,
240
218
  readonly,
241
- plugins: withHandles(
242
- defaultPlugins ? withDefaults(userPlugins) : userPlugins,
243
- blockHandles ?? true
244
- ),
219
+ plugins: defaultPlugins ? withDefaults(userPlugins) : userPlugins,
245
220
  document: edytorDocument,
246
221
  doc,
247
222
  awareness,
@@ -253,7 +228,6 @@
253
228
  onDocChange,
254
229
  sync: !!sync || room !== undefined,
255
230
  value,
256
- placeholder,
257
231
  labels
258
232
  }));
259
233
 
@@ -354,25 +328,13 @@
354
328
  $effect(edytor.surface.post);
355
329
  $effect(edytor.projector.post);
356
330
 
357
- const browserMutationGuardAttributes = $derived({
358
- spellcheck,
359
- autocorrect,
360
- autocomplete,
361
- autocapitalize,
362
- inputmode,
363
- enterkeyhint
364
- });
365
-
366
331
  /**
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.
332
+ * The root's browser hints, several of them unknown to Svelte's element
333
+ * types; one left unset is absent (a guessed default would override the
334
+ * browser's own choice).
370
335
  */
371
- const editableRootBrowserAttributes = (
372
- node: HTMLElement,
373
- attributes: typeof browserMutationGuardAttributes
374
- ) => {
375
- const apply = (next: typeof attributes) => {
336
+ const browserAttributes = (node: HTMLElement, attributes: Record<string, unknown>) => {
337
+ const apply = (next: Record<string, unknown>) => {
376
338
  for (const [name, value] of Object.entries(next))
377
339
  if (value === undefined) node.removeAttribute(name);
378
340
  else node.setAttribute(name, String(value));
@@ -380,28 +342,25 @@
380
342
  apply(attributes);
381
343
  return { update: apply };
382
344
  };
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
345
  </script>
396
346
 
397
347
  {#if edytor.synced}
398
348
  <!-- The editing host is focusable (contenteditable): no tabindex of its own. -->
399
349
  <!-- svelte-ignore a11y_aria_activedescendant_has_tabindex -->
350
+ <!-- `selectstart`, fired before a drag-selection begins, keeps one from starting on
351
+ non-editable chrome (a press there is the press's: `events/onFocus.ts`). -->
400
352
  <div
401
353
  class={className}
402
354
  use:edytor.attach
403
- use:editableRootBrowserAttributes={browserMutationGuardAttributes}
404
- use:nonNativeEditableBlockChromeSelection
355
+ onselectstart={edytor.selection.pointer.onSelectStart}
356
+ use:browserAttributes={{
357
+ spellcheck,
358
+ autocorrect,
359
+ autocomplete,
360
+ autocapitalize,
361
+ inputmode,
362
+ enterkeyhint
363
+ }}
405
364
  data-edytor
406
365
  data-edytor-selection={edytor.selection.value.kind === 'blocks' ? 'blocks' : undefined}
407
366
  contenteditable={!readonly}
@@ -418,7 +377,9 @@
418
377
  aria-keyshortcuts={popup?.keys}
419
378
  {translate}
420
379
  >
421
- {#each edytor.cells?.rootIds ?? [] as id (id)}<Block {id} />{/each}<span
380
+ {#each edytor.suggestions.around(edytor.cells?.rootIds ?? []) as kid (kid)}<Block
381
+ {kid}
382
+ />{/each}<span
422
383
  data-edytor-render-anchor
423
384
  contenteditable="false"
424
385
  aria-hidden="true"
@@ -430,24 +391,48 @@
430
391
  <!-- The room's JSON, read-only, while this view's document hydrates. -->
431
392
  <div data-edytor-snapshot style="display: contents">
432
393
  <Snapshot
433
- value={snapshot}
434
- readonly
435
- plugins={userPlugins}
436
- {defaultPlugins}
437
- {blockHandles}
438
- class={className}
439
- {placeholder}
440
- {labels}
441
- aria-label={ariaLabel}
442
- aria-labelledby={ariaLabelledby}
443
- aria-describedby={ariaDescribedby}
444
- {id}
445
- {...snippets}
394
+ {...{
395
+ value: snapshot,
396
+ readonly: true,
397
+ plugins: userPlugins,
398
+ defaultPlugins,
399
+ class: className,
400
+ labels,
401
+ 'aria-label': ariaLabel,
402
+ 'aria-labelledby': ariaLabelledby,
403
+ 'aria-describedby': ariaDescribedby,
404
+ id
405
+ }}
446
406
  />
447
407
  </div>
448
408
  {/if}
449
409
 
450
410
  <style>
411
+ /*
412
+ * Room below the last block, where a press puts the caret in a trailing
413
+ * paragraph (`nav.trailing.press`): `--edytor-trailing-space`. No
414
+ * specificity, so any rule of the app's sets the padding instead.
415
+ */
416
+ :global(:where([data-edytor])) {
417
+ padding-block-end: var(--edytor-trailing-space, 2em);
418
+ }
419
+ /*
420
+ * Long pages, opt-in: the `edytor-long-page` class on the editor or an
421
+ * ancestor lets a top-level block off screen skip its rendering (style,
422
+ * layout, paint) until it nears the viewport; the browser keeps its DOM,
423
+ * selection, find-in-page and accessibility. Until it was rendered once it
424
+ * counts as one 32px row (`auto` remembers its real height after). Both
425
+ * properties come with the one switch: the remembered height alone makes
426
+ * Chromium track every top-level block's size each frame (about 2.5 ms at
427
+ * 5,000 blocks), so without the switch neither is set. Only top-level
428
+ * blocks: a nested one is skipped with its ancestor. The containment it
429
+ * brings (layout, paint) clips what a block paints outside its own box.
430
+ * No specificity: an app's own rule wins.
431
+ */
432
+ :global(:where([data-edytor]:is(.edytor-long-page, .edytor-long-page *) > [data-edytor-block])) {
433
+ content-visibility: auto;
434
+ contain-intrinsic-block-size: auto 32px;
435
+ }
451
436
  /*
452
437
  * A block selection shows as its selected blocks, never as a native range:
453
438
  * the range a pointer drag across columns still extends under it
@@ -1,15 +1,12 @@
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
10
  /** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
14
11
  defaultPlugins?: boolean;
15
12
  class?: string;
@@ -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'`,
@@ -51,13 +48,12 @@ export type EdytorProps = Snippets & {
51
48
  onSelectionChange?: (selection: EdytorSelection) => void;
52
49
  /** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
53
50
  value?: JSONDoc;
54
- placeholder?: Placeholder;
55
51
  /**
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.
52
+ * The words the package shows and says in this view, over the English
53
+ * ones: any entry of any section (`editor`, `richText`, `table`…) and
54
+ * the commands' slash `keywords` by id. Read once.
59
55
  */
60
- labels?: PartialLabels<'editor'>;
56
+ labels?: PartialLabels;
61
57
  translate?: 'yes' | 'no';
62
58
  spellcheck?: boolean;
63
59
  autocorrect?: 'on' | 'off';
@@ -17,6 +17,8 @@
17
17
 
18
18
  const edytor = getContext<Edytor>('edytor');
19
19
  const snippet = $derived(edytor.inlineBlocks.get(part.type)?.snippet);
20
+ /** A live atom's element registers with its handle; a suggestion's has none. */
21
+ const attach = (node: HTMLElement) => block?.attach(node);
20
22
  // The snippet's view object: declared values, reactive through the part.
21
23
  const view: InlineBlockView = {
22
24
  get id() {
@@ -37,12 +39,5 @@
37
39
  };
38
40
  </script>
39
41
 
40
- {#if snippet}
41
- {#if block}
42
- <span data-edytor-inline-block use:block.attach>
43
- {@render snippet({ block: view })}
44
- </span>
45
- {:else}
46
- <span data-edytor-inline-block>{@render snippet({ block: view })}</span>
47
- {/if}
48
- {/if}
42
+ <!-- `Content` renders only the atoms whose kind has a snippet: the span is the root, no anchor. -->
43
+ <span data-edytor-inline-block use:attach>{@render snippet?.({ block: view })}</span>
@@ -1,10 +1,34 @@
1
- <script lang="ts">
2
- import { getContext } from 'svelte';
1
+ <script module lang="ts">
3
2
  import type { Edytor } from '../edytor.svelte.js';
4
3
  import type { Text } from '../text/text.svelte.js';
5
4
  import type { RenderDelta } from '../surface/cells.js';
5
+
6
+ /** Mark `index` of `delta` renders a custom snippet (`CustomMark`), not a tag (`Mark`). */
7
+ export const customAt = (edytor: Edytor, delta: RenderDelta, index: number) =>
8
+ Boolean(edytor.marks.get(delta.marks[index]?.[0] ?? '')?.snippet);
9
+
10
+ /** The core mark element is registered; a suggestion's ghost mark has no text and is not. */
11
+ export const registerMark = (
12
+ edytor: Edytor,
13
+ text: Text | undefined,
14
+ node: HTMLElement,
15
+ name: string | undefined
16
+ ) => {
17
+ const release = text && edytor.surface.register(node, 'mark', text.parent.id, name);
18
+ return { destroy: () => release?.() };
19
+ };
20
+ </script>
21
+
22
+ <script lang="ts">
23
+ import { getContext } from 'svelte';
6
24
  import Mark from './Mark.svelte';
25
+ import CustomMark from './CustomMark.svelte';
7
26
 
27
+ /**
28
+ * Mark `index` of `delta` as the element of its tag, around the marks
29
+ * after it, then its text. `Text` passes only the marks this view renders
30
+ * (a tag or a snippet); a snippet's mark is `CustomMark`.
31
+ */
8
32
  let {
9
33
  delta,
10
34
  text,
@@ -17,38 +41,25 @@
17
41
 
18
42
  const edytor = getContext<Edytor>('edytor');
19
43
  const mark = $derived(delta.marks[index]);
20
- const definition = $derived(edytor.marks.get(mark?.[0]));
21
- /** The core mark element is registered; a suggestion's ghost mark has no text and is not. */
22
- const register = (node: HTMLElement) => {
23
- const release = text && edytor.surface.register(node, 'mark', text.parent.id, mark?.[0]);
24
- return { destroy: () => release?.() };
25
- };
44
+ const definition = $derived(edytor.marks.get(mark?.[0] ?? ''));
45
+ /** Another mark inside this one. */
46
+ const inner = $derived(index + 1 < delta.marks.length);
47
+ /** The text, the element's own text node when no mark is inside (no anchor of its own). */
48
+ const own = $derived(inner ? '' : delta.text);
49
+ const register = (node: HTMLElement) => registerMark(edytor, text, node, mark?.[0]);
26
50
  </script>
27
51
 
28
- {#snippet content()}
29
- {#if delta.marks[index + 1]}
30
- <Mark index={index + 1} {delta} {text} />
31
- {:else}
32
- {delta.text}
33
- {/if}
34
- {/snippet}
35
-
36
- <!-- One core element per mark: the kind's tag, or a span around a custom snippet. -->
37
- {#if definition?.snippet || definition?.tag}
38
- <svelte:element
39
- this={definition.snippet ? 'span' : definition.tag}
40
- {...definition.snippet ? {} : definition.attributes?.(mark?.[1])}
41
- data-edytor-mark={mark?.[0]}
42
- data-edytor-mark-void={definition.void ? '' : undefined}
43
- contenteditable={definition.void ? 'false' : undefined}
44
- use:register
45
- >
46
- {#if definition.snippet}
47
- {@render definition.snippet({ content, mark: mark?.[1], text: text! })}
48
- {:else}
49
- {@render content()}
50
- {/if}
51
- </svelte:element>
52
- {:else}
53
- {@render content()}
54
- {/if}
52
+ <!-- One core element per mark, the kind's tag (`render.markers`: its text needs no anchor). -->
53
+ <svelte:element
54
+ this={definition?.tag}
55
+ {...definition?.attributes?.(mark?.[1])}
56
+ data-edytor-mark={mark?.[0]}
57
+ data-edytor-mark-void={definition?.void ? '' : undefined}
58
+ contenteditable={definition?.void ? 'false' : undefined}
59
+ use:register
60
+ >{own}{#if !inner}{:else if customAt(edytor, delta, index + 1)}<CustomMark
61
+ index={index + 1}
62
+ {delta}
63
+ {text}
64
+ />{:else}<Mark index={index + 1} {delta} {text} />{/if}</svelte:element
65
+ >
@@ -1,5 +1,12 @@
1
+ import type { Edytor } from '../edytor.svelte.js';
1
2
  import type { Text } from '../text/text.svelte.js';
2
3
  import type { RenderDelta } from '../surface/cells.js';
4
+ /** Mark `index` of `delta` renders a custom snippet (`CustomMark`), not a tag (`Mark`). */
5
+ export declare const customAt: (edytor: Edytor, delta: RenderDelta, index: number) => boolean;
6
+ /** The core mark element is registered; a suggestion's ghost mark has no text and is not. */
7
+ export declare const registerMark: (edytor: Edytor, text: Text | undefined, node: HTMLElement, name: string | undefined) => {
8
+ destroy: () => void | undefined;
9
+ };
3
10
  import Mark from './Mark.svelte';
4
11
  type $$ComponentProps = {
5
12
  text: Text | undefined;
@@ -0,0 +1,96 @@
1
+ <script lang="ts" module>
2
+ import type { PresencePoint } from '../collaboration/awarenessSelection.js';
3
+ import type { Edytor } from '../edytor.svelte.js';
4
+
5
+ /** A run of text the overlay marks: its ends, and whether it is the current one (`data-current`). */
6
+ export type MarkedRange = { start: PresencePoint; end: PresencePoint; current?: boolean };
7
+
8
+ /** The run of `length` at block offset `offset` of block `id` (none where it is not shown). */
9
+ export const runOf = (
10
+ edytor: Edytor,
11
+ id: string,
12
+ offset: number,
13
+ length: number,
14
+ current?: boolean
15
+ ): MarkedRange[] => {
16
+ const block = edytor.idToBlock.get(id);
17
+ const [start, end] = [block?.textAtOffset(offset), block?.textAtOffset(offset + length)];
18
+ return start && end ? [{ start, end, current }] : [];
19
+ };
20
+ </script>
21
+
22
+ <script lang="ts">
23
+ import { onMount } from 'svelte';
24
+ import { rangeRects, type RemoteSelectionRect } from '../collaboration/remoteSelection.js';
25
+
26
+ /**
27
+ * Runs of text marked in the overlay (never inside the host), one
28
+ * rectangle per line box, measured once per frame: the find matches, the
29
+ * text a `replace` suggestion removes, the comment being written. Each
30
+ * rectangle carries `data-edytor-<name>` (`data-current` on the current
31
+ * run's); the layer is `z`.
32
+ */
33
+ let {
34
+ edytor,
35
+ name,
36
+ z,
37
+ ranges
38
+ }: { edytor: Edytor; name: string; z: number; ranges: () => MarkedRange[] } = $props();
39
+
40
+ let rects: (RemoteSelectionRect & { current?: boolean })[] = $state([]);
41
+
42
+ onMount(() =>
43
+ edytor.overlay.add((origin) => {
44
+ const next = ranges().flatMap(({ start, end, current }) =>
45
+ rangeRects(edytor, start, end, origin).map((rect) => ({ ...rect, current }))
46
+ );
47
+ if (next.length || rects.length) return () => (rects = next);
48
+ })
49
+ );
50
+ // What the runs read changed: the overlay measures again.
51
+ $effect(() => {
52
+ void ranges();
53
+ edytor.overlay.invalidate();
54
+ });
55
+ </script>
56
+
57
+ <div data-edytor-ranges={name} contenteditable="false" aria-hidden="true" style:z-index={z}>
58
+ {#each rects as rect, index (index)}
59
+ <span
60
+ {...{ [`data-edytor-${name}`]: '' }}
61
+ data-current={rect.current || undefined}
62
+ style:left={`${rect.left}px`}
63
+ style:top={`${rect.top}px`}
64
+ style:width={`${rect.width}px`}
65
+ style:height={`${rect.height}px`}
66
+ ></span>
67
+ {/each}
68
+ </div>
69
+
70
+ <style>
71
+ [data-edytor-ranges] {
72
+ position: absolute;
73
+ left: 0;
74
+ top: 0;
75
+ pointer-events: none;
76
+ }
77
+ [data-edytor-ranges] > span {
78
+ position: absolute;
79
+ }
80
+ :global([data-edytor-find-match]) {
81
+ border-radius: 2px;
82
+ background: var(--edytor-find-match, rgb(255 212 0 / 0.3));
83
+ mix-blend-mode: multiply;
84
+ }
85
+ :global([data-edytor-find-match][data-current]) {
86
+ background: var(--edytor-find-current, rgb(255 166 0 / 0.55));
87
+ }
88
+ :global([data-edytor-suggestion-range]) {
89
+ background: var(--edytor-suggestion-removed, rgb(235 87 87 / 0.18));
90
+ border-bottom: 1px solid var(--edytor-suggestion-removed-line, rgb(235 87 87 / 0.6));
91
+ }
92
+ :global([data-edytor-comment-draft]) {
93
+ background: var(--edytor-comment-active, rgb(255 212 0 / 0.42));
94
+ mix-blend-mode: multiply;
95
+ }
96
+ </style>
@@ -0,0 +1,19 @@
1
+ import type { PresencePoint } from '../collaboration/awarenessSelection.js';
2
+ import type { Edytor } from '../edytor.svelte.js';
3
+ /** A run of text the overlay marks: its ends, and whether it is the current one (`data-current`). */
4
+ export type MarkedRange = {
5
+ start: PresencePoint;
6
+ end: PresencePoint;
7
+ current?: boolean;
8
+ };
9
+ /** The run of `length` at block offset `offset` of block `id` (none where it is not shown). */
10
+ export declare const runOf: (edytor: Edytor, id: string, offset: number, length: number, current?: boolean) => MarkedRange[];
11
+ type $$ComponentProps = {
12
+ edytor: Edytor;
13
+ name: string;
14
+ z: number;
15
+ ranges: () => MarkedRange[];
16
+ };
17
+ declare const Ranges: import("svelte").Component<$$ComponentProps, {}, "">;
18
+ type Ranges = ReturnType<typeof Ranges>;
19
+ export default Ranges;
@@ -3,6 +3,7 @@
3
3
  import type { Edytor } from '../edytor.svelte.js';
4
4
  import type { Suggestion } from '../session/suggestions.svelte.js';
5
5
  import { previewCells } from '../surface/cells.js';
6
+ import { editorEnglish, labelsOf } from '../labels.js';
6
7
  import Block from './Block.svelte';
7
8
 
8
9
  /**
@@ -28,12 +29,12 @@
28
29
  data-edytor-suggestion={suggestion.id}
29
30
  data-status={suggestion.status}
30
31
  contenteditable="false"
31
- aria-label={suggestion.label ?? edytor.labels.suggestion}
32
+ aria-label={suggestion.label ?? labelsOf(edytor, 'editor', editorEnglish).suggestion}
32
33
  role="group"
33
34
  use:edytor.surface.preview={suggestion.id}
34
35
  onmousedown={cancel}
35
36
  >
36
- {#each cells as cell (cell.id)}<Block id={cell.id} preview={cell} />{/each}
37
+ {#each cells as cell (cell.id)}<Block kid={cell} />{/each}
37
38
  </div>
38
39
 
39
40
  <style>