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
@@ -12,12 +12,6 @@
12
12
  /** The peers' carets and ranges, positioned by the overlay once per frame. */
13
13
  let selections: RenderedRemoteSelection[] = $state([]);
14
14
 
15
- const rectStyle = (rect: RemoteSelectionRect, color: string) =>
16
- `left:${rect.left}px;top:${rect.top}px;width:${rect.width}px;height:${rect.height}px;background:${color};`;
17
-
18
- const cursorStyle = (rect: RemoteSelectionRect, color: string) =>
19
- `left:${rect.left}px;top:${rect.top}px;height:${rect.height}px;background:${color};`;
20
-
21
15
  const rectKey = (rect: RemoteSelectionRect) =>
22
16
  `${rect.left}:${rect.top}:${rect.width}:${rect.height}`;
23
17
 
@@ -42,19 +36,25 @@
42
36
  <span
43
37
  data-edytor-remote-selection
44
38
  data-client-id={selection.clientId}
45
- style={rectStyle(rect, selection.color)}
39
+ style:left="{rect.left}px"
40
+ style:top="{rect.top}px"
41
+ style:width="{rect.width}px"
42
+ style:height="{rect.height}px"
43
+ style:--edytor-remote-color={selection.color}
46
44
  ></span>
47
45
  {/each}
46
+ <!-- The peer's colour is a variable a theme paints with (its label inherits it). -->
48
47
  <span
49
48
  data-edytor-remote-cursor
50
49
  data-edytor-remote-block={selection.block ? '' : undefined}
51
50
  data-client-id={selection.clientId}
52
- style={cursorStyle(selection.cursor, selection.color)}
51
+ style:left="{selection.cursor.left}px"
52
+ style:top="{selection.cursor.top}px"
53
+ style:height="{selection.cursor.height}px"
54
+ style:--edytor-remote-color={selection.color}
53
55
  >
54
56
  {#if selection.label}
55
- <span data-edytor-remote-cursor-label style:background={selection.color}>
56
- {selection.label}
57
- </span>
57
+ <span data-edytor-remote-cursor-label>{selection.label}</span>
58
58
  {/if}
59
59
  </span>
60
60
  {/each}
@@ -69,23 +69,19 @@
69
69
  z-index: 20;
70
70
  }
71
71
 
72
+ /* Placed here; painted by a theme in each peer's `--edytor-remote-color`
73
+ * (`edytor/themes/notion.css`). */
72
74
  [data-edytor-remote-selection] {
73
- opacity: 0.18;
74
75
  position: absolute;
75
76
  }
76
77
 
77
78
  [data-edytor-remote-cursor] {
78
- border-radius: 999px;
79
79
  position: absolute;
80
80
  width: 2px;
81
81
  }
82
82
 
83
83
  [data-edytor-remote-cursor-label] {
84
- border-radius: 999px;
85
- color: white;
86
- font: 500 11px/1.4 sans-serif;
87
84
  left: 0;
88
- padding: 1px 6px;
89
85
  position: absolute;
90
86
  top: -1.6em;
91
87
  transform: translateX(-1px);
@@ -56,6 +56,20 @@ export type AwarenessLike = {
56
56
  getLocalState: () => Record<string, unknown> | null;
57
57
  setLocalState: (state: Record<string, unknown> | null) => void;
58
58
  };
59
+ /**
60
+ * The awareness a view's presence writer reads and writes: its own state,
61
+ * every client's state, and the `change` event (the real `Awareness`).
62
+ */
63
+ export type PresenceSource = AwarenessLike & {
64
+ clientID: number;
65
+ getStates: () => Map<number, Record<string, unknown>>;
66
+ on: (name: 'change', listener: () => void) => void;
67
+ off: (name: 'change', listener: () => void) => void;
68
+ };
69
+ /** Another person online: their client id and the fields of their `user` state (`name`, `color`, …), the document's actor name and colour when `user` has none. */
70
+ export type PresencePeer = EdytorAwarenessUser & Record<string, unknown> & {
71
+ clientId: number;
72
+ };
59
73
  /** A client-local presence key, minted once by the view that owns the entry. */
60
74
  export declare const mintPresenceKey: () => string;
61
75
  /**
@@ -90,9 +104,16 @@ export declare class PresenceWriter {
90
104
  private readonly awareness;
91
105
  private readonly key;
92
106
  throttle: number;
93
- constructor(awareness: AwarenessLike, key: string, { share, throttle }?: PresenceOptions);
107
+ constructor(awareness: PresenceSource, key: string, { share, throttle }?: PresenceOptions);
94
108
  get share(): PresenceShare;
95
109
  set share(share: PresenceShare);
110
+ /**
111
+ * The other people online: every client but this one, by client id,
112
+ * each `{ clientId, name?, color?, …user }`. Reactive: read in markup or
113
+ * an effect, it updates when someone joins, leaves or changes their
114
+ * state; the awareness listener exists only while something reads it.
115
+ */
116
+ get peers(): PresencePeer[];
96
117
  /** Publish `payload` (the full selection; `focus`: the block holding its focus) as this view shares it, within the throttle. */
97
118
  write(payload: PresenceSelection | null, focus?: string | null): void;
98
119
  /** Remove this view's entry and drop a held write (the view's teardown). */
@@ -1,4 +1,19 @@
1
1
  import { isRecord, jsonEquals } from '../utils/json.js';
2
+ import { createSubscriber } from 'svelte/reactivity';
3
+ /** Every client but this one, by client id. */
4
+ const readPeers = (awareness) => [...awareness.getStates()]
5
+ .filter(([clientId]) => clientId !== awareness.clientID)
6
+ .sort(([a], [b]) => a - b)
7
+ .map(([clientId, state]) => {
8
+ const actor = isRecord(state.actor) ? state.actor : {};
9
+ const user = isRecord(state.user) ? state.user : {};
10
+ const peer = { ...user, clientId };
11
+ if (peer.name === undefined && typeof actor.name === 'string')
12
+ peer.name = actor.name;
13
+ if (peer.color === undefined && typeof actor.color === 'string')
14
+ peer.color = actor.color;
15
+ return peer;
16
+ });
2
17
  let presenceKeys = 0;
3
18
  /** A client-local presence key, minted once by the view that owns the entry. */
4
19
  export const mintPresenceKey = () => `view-${++presenceKeys}`;
@@ -50,6 +65,21 @@ export class PresenceWriter {
50
65
  #held;
51
66
  /** The last payload and focused block handed in, kept so a share change republishes at once. */
52
67
  #latest = [null, null];
68
+ /** The peers while someone reads them reactively (`undefined`: recompute). */
69
+ #peers;
70
+ #watched = false;
71
+ #subscribe = createSubscriber((update) => {
72
+ const changed = () => {
73
+ this.#peers = undefined;
74
+ update();
75
+ };
76
+ this.#watched = true;
77
+ this.awareness.on('change', changed);
78
+ return () => {
79
+ this.awareness.off('change', changed);
80
+ [this.#watched, this.#peers] = [false, undefined];
81
+ };
82
+ });
53
83
  constructor(awareness, key, { share = 'caret', throttle = DEFAULT_PRESENCE_THROTTLE } = {}) {
54
84
  this.awareness = awareness;
55
85
  this.key = key;
@@ -65,6 +95,18 @@ export class PresenceWriter {
65
95
  this.#share = share;
66
96
  this.write(...this.#latest);
67
97
  }
98
+ /**
99
+ * The other people online: every client but this one, by client id,
100
+ * each `{ clientId, name?, color?, …user }`. Reactive: read in markup or
101
+ * an effect, it updates when someone joins, leaves or changes their
102
+ * state; the awareness listener exists only while something reads it.
103
+ */
104
+ get peers() {
105
+ this.#subscribe();
106
+ if (!this.#watched)
107
+ return readPeers(this.awareness);
108
+ return (this.#peers ??= readPeers(this.awareness));
109
+ }
68
110
  /** Publish `payload` (the full selection; `focus`: the block holding its focus) as this view shares it, within the throttle. */
69
111
  write(payload, focus = null) {
70
112
  this.#latest = [payload, focus];
@@ -30,9 +30,9 @@ export type CommentsClient = {
30
30
  */
31
31
  attach?(document: CommentDocument): (() => void) | void;
32
32
  };
33
- /** What a client reads and writes of a document: its blocks' content, and a mark removal. */
33
+ /** What a client reads and writes of a document: its blocks' content, and its marks (a removal). */
34
34
  export type CommentDocument = CommentAnchorSource & {
35
- unsetMark(block: string, offset: number, length: number, mark: string): unknown;
35
+ formatRange(block: string, offset: number, length: number, marks: Record<string, unknown>): unknown;
36
36
  transact<T>(fn: () => T): T;
37
37
  };
38
38
  /** Options of {@link createCommentsClient}. */
@@ -128,6 +128,6 @@ const removeAnchors = (document, id) => {
128
128
  return;
129
129
  document.transact(() => {
130
130
  for (const run of [...runs].reverse())
131
- document.unsetMark(run.block, run.offset, run.length, `${COMMENT_MARK}:${id}`);
131
+ document.formatRange(run.block, run.offset, run.length, { [`${COMMENT_MARK}:${id}`]: null });
132
132
  });
133
133
  };
@@ -1,9 +1,9 @@
1
1
  /**
2
- * The version history panel: a room's stored versions, a read-only preview
3
- * of one with the blocks changed since highlighted, and Restore / Undo
4
- * restore (site `server/history-panel`).
2
+ * The version history: a room's stored versions, a read-only preview of one
3
+ * with the blocks changed since highlighted, and Restore / Undo restore
4
+ * (`VersionHistory`; site `server/history-panel`). The panel's markup is
5
+ * the app's.
5
6
  */
6
- export { default as HistoryPanel } from './HistoryPanel.svelte';
7
7
  export { createHistoryClient, HistoryRequestError, type HistoryClient, type HistoryClientOptions, type HistoryRestoreResult, type HistoryUndoResult, type HistoryVersion } from './client.js';
8
8
  export { versionDiff, type VersionChange, type VersionDiff } from './diff.js';
9
- export { defaultHistoryLabels, type HistoryPanelLabels, type HistoryPanelProps, type HistoryVersionItem } from './panel.js';
9
+ export { VersionHistory, type VersionHistoryStatus, type VersionHistoryOptions } from './panel.svelte.js';
@@ -1,9 +1,9 @@
1
1
  /**
2
- * The version history panel: a room's stored versions, a read-only preview
3
- * of one with the blocks changed since highlighted, and Restore / Undo
4
- * restore (site `server/history-panel`).
2
+ * The version history: a room's stored versions, a read-only preview of one
3
+ * with the blocks changed since highlighted, and Restore / Undo restore
4
+ * (`VersionHistory`; site `server/history-panel`). The panel's markup is
5
+ * the app's.
5
6
  */
6
- export { default as HistoryPanel } from './HistoryPanel.svelte';
7
7
  export { createHistoryClient, HistoryRequestError } from './client.js';
8
8
  export { versionDiff } from './diff.js';
9
- export { defaultHistoryLabels } from './panel.js';
9
+ export { VersionHistory } from './panel.svelte.js';
@@ -0,0 +1,91 @@
1
+ import type { EdytorDocument } from '../../crdt/document.js';
2
+ import type { Plugin } from '../../plugins.js';
3
+ import type { JSONDoc } from '../../utils/json.js';
4
+ import { type HistoryClient, type HistoryRestoreResult, type HistoryUndoResult, type HistoryVersion } from './client.js';
5
+ import { type VersionChange } from './diff.js';
6
+ import type { Attachment } from 'svelte/attachments';
7
+ /**
8
+ * The last outcome to announce (`''`: none): a restore in flight or done
9
+ * (`unchanged`: the page already matched), the previewed version gone
10
+ * (`unavailable`), an undo done or with nothing to undo, a request refused
11
+ * (`denied`: a `401` or `403`) or failed. Your panel says it in its words.
12
+ */
13
+ export type VersionHistoryStatus = '' | 'restoring' | 'restored' | 'unchanged' | 'unavailable' | 'undone' | 'nothingToUndo' | 'denied' | 'failed';
14
+ export type VersionHistoryOptions = {
15
+ /** Where the versions come from: `createHistoryClient(…)`, or any object with `list`, `read`, `restore` and `undo`. */
16
+ client: HistoryClient;
17
+ /** The live document the preview is compared with. Without it, no change is highlighted. */
18
+ document?: EdytorDocument;
19
+ /** The preview's plugins: the ones the live view uses, so every kind renders as it does there. */
20
+ plugins?: Plugin[];
21
+ /** The locale dates and times are written in (default the browser's). */
22
+ locale?: string | string[];
23
+ /** The id prefix of the list's rows (page-unique: `$props.id()`). */
24
+ id?: string;
25
+ /** After a restore the room answered. */
26
+ onRestore?: (result: HistoryRestoreResult) => void;
27
+ /** After an undo the room answered. */
28
+ onUndo?: (result: HistoryUndoResult) => void;
29
+ /** A request failed (`status` is `denied` or `failed`). */
30
+ onError?: (error: unknown) => void;
31
+ };
32
+ /**
33
+ * A view of a room's versions, made in a component's script (its effects
34
+ * list the versions, and follow the live document's commits). Read its
35
+ * state reactively; `select`, `restore`, `undo` and `refresh` act.
36
+ */
37
+ export declare class VersionHistory {
38
+ #private;
39
+ /** The versions, newest first (`null` while the first list loads). */
40
+ versions: HistoryVersion[] | null;
41
+ /** The previewed version's key. */
42
+ selected: string | null;
43
+ /** The previewed version's JSON, once read (`null` while it loads or when it is gone). */
44
+ shown: JSONDoc | null;
45
+ /** The previewed version is being read. */
46
+ reading: boolean;
47
+ /** A restore or an undo is in flight. */
48
+ busy: boolean;
49
+ /** A restore this view applied, which `undo` can take back. */
50
+ undoable: boolean;
51
+ /** The last outcome, to announce (`aria-live`) in your words. */
52
+ status: VersionHistoryStatus;
53
+ /** The last outcome failed. */
54
+ failed: boolean;
55
+ /** Highlight the blocks added, removed and changed since the version. */
56
+ highlight: boolean;
57
+ constructor(options: VersionHistoryOptions);
58
+ /** The previewed version against the live document: its counts and the changed blocks. */
59
+ diff: import("./diff.js").VersionDiff | null;
60
+ /** What the preview renders: the version, with the blocks removed since when highlighting. */
61
+ preview: JSONDoc | null;
62
+ /** A key for the preview: it remounts when what it renders changes (`value` is read once). */
63
+ previewKey: string | null;
64
+ /** The blocks changed since the version, by id, while highlighting (else none). */
65
+ changes: ReadonlyMap<string, VersionChange>;
66
+ /** The preview's plugins: the highlights of the changes (read live), then the app's. */
67
+ previewPlugins: Plugin[];
68
+ /** The previewed version, as listed. */
69
+ selectedVersion: HistoryVersion | null;
70
+ /** List the versions again; keeps the selection when it is still listed, else selects the newest. */
71
+ refresh: () => Promise<void>;
72
+ /** Preview the version `key` (`null`: none). */
73
+ select: (key: string | null) => Promise<void>;
74
+ /** Restore the previewed version (the room writes it as one change). */
75
+ restore: () => Promise<void>;
76
+ /** Take back the restore this view applied. */
77
+ undo: () => Promise<void>;
78
+ /** A version's day (`Oct 8, 2026`), in `locale`; its half of the day is `entry.slot`. */
79
+ dateOf: (entry: HistoryVersion) => string;
80
+ /** When a version was saved, in `locale`. */
81
+ timeOf: (entry: HistoryVersion) => string;
82
+ /**
83
+ * The attachment of the version at `index`'s row
84
+ * (`{@attach history.option(index)}`, on its focusable element):
85
+ * `role="option"`, its id, `aria-selected`, the list's one tab stop when
86
+ * it is selected, else the first.
87
+ */
88
+ option: (index: number) => Attachment<HTMLElement>;
89
+ /** The list's attachment (`{@attach history.keys}`): the arrows, Home and End move the selection and the focus. */
90
+ keys: Attachment<HTMLElement>;
91
+ }
@@ -0,0 +1,223 @@
1
+ /**
2
+ * The version history's controller (`VersionHistory`): a room's stored
3
+ * versions, the one previewed and its changes since (`versionDiff`), and
4
+ * Restore / Undo restore. The app draws the panel: the list (its rows'
5
+ * `option(index)` and the list's `keys`, attachments), the preview (`<Edytor readonly
6
+ * value={history.preview} plugins={history.previewPlugins}>`), the status.
7
+ */
8
+ import { untrack } from 'svelte';
9
+ import { HistoryRequestError } from './client.js';
10
+ import { versionDiff } from './diff.js';
11
+ import { versionHighlightsPlugin } from './versionHighlights.js';
12
+ import { optionAttachment } from '../../plugins/list.svelte.js';
13
+ import { listen } from '../../utils/listen.js';
14
+ /** No change highlighted. */
15
+ const NONE = new Map();
16
+ /**
17
+ * A view of a room's versions, made in a component's script (its effects
18
+ * list the versions, and follow the live document's commits). Read its
19
+ * state reactively; `select`, `restore`, `undo` and `refresh` act.
20
+ */
21
+ export class VersionHistory {
22
+ /** The versions, newest first (`null` while the first list loads). */
23
+ versions = $state.raw(null);
24
+ /** The previewed version's key. */
25
+ selected = $state(null);
26
+ /** The previewed version's JSON, once read (`null` while it loads or when it is gone). */
27
+ shown = $state.raw(null);
28
+ /** The previewed version is being read. */
29
+ reading = $state(false);
30
+ /** A restore or an undo is in flight. */
31
+ busy = $state(false);
32
+ /** A restore this view applied, which `undo` can take back. */
33
+ undoable = $state(false);
34
+ /** The last outcome, to announce (`aria-live`) in your words. */
35
+ status = $state('');
36
+ /** The last outcome failed. */
37
+ failed = $state(false);
38
+ /** Highlight the blocks added, removed and changed since the version. */
39
+ highlight = $state(true);
40
+ /** The live document as JSON, read again at each of its commits. */
41
+ #current = $state.raw(null);
42
+ /** The request serial: an older answer never replaces a newer one. */
43
+ #serial = 0;
44
+ #options;
45
+ constructor(options) {
46
+ this.#options = options;
47
+ $effect(() => {
48
+ const document = options.document;
49
+ if (!document)
50
+ return void (this.#current = null);
51
+ this.#current = document.toJSON();
52
+ return document.onChange(() => (this.#current = document.toJSON()));
53
+ });
54
+ $effect(() => untrack(() => void this.refresh()));
55
+ }
56
+ /** The previewed version against the live document: its counts and the changed blocks. */
57
+ diff = $derived.by(() => this.shown && this.#current ? versionDiff(this.shown, this.#current) : null);
58
+ /** What the preview renders: the version, with the blocks removed since when highlighting. */
59
+ preview = $derived.by(() => this.shown && (this.highlight && this.diff ? this.diff.preview : this.shown));
60
+ /** A key for the preview: it remounts when what it renders changes (`value` is read once). */
61
+ previewKey = $derived.by(() => this.preview && JSON.stringify(this.preview));
62
+ /** The blocks changed since the version, by id, while highlighting (else none). */
63
+ changes = $derived.by(() => (this.highlight && this.diff ? this.diff.changes : NONE));
64
+ /** The preview's plugins: the highlights of the changes (read live), then the app's. */
65
+ previewPlugins = $derived.by(() => [
66
+ versionHighlightsPlugin(() => this.changes),
67
+ ...(this.#options.plugins ?? [])
68
+ ]);
69
+ /** The previewed version, as listed. */
70
+ selectedVersion = $derived.by(() => this.versions?.find((entry) => entry.key === this.selected) ?? null);
71
+ #fail = (error) => {
72
+ this.failed = true;
73
+ this.status =
74
+ error instanceof HistoryRequestError && (error.status === 401 || error.status === 403)
75
+ ? 'denied'
76
+ : 'failed';
77
+ this.#options.onError?.(error);
78
+ };
79
+ /** List the versions again; keeps the selection when it is still listed, else selects the newest. */
80
+ refresh = async () => {
81
+ try {
82
+ const listed = await this.#options.client.list();
83
+ this.versions = listed;
84
+ if (this.selected === null || !listed.some((entry) => entry.key === this.selected))
85
+ void this.select(listed[0]?.key ?? null);
86
+ }
87
+ catch (error) {
88
+ this.versions = this.versions ?? [];
89
+ this.#fail(error);
90
+ }
91
+ };
92
+ /** Preview the version `key` (`null`: none). */
93
+ select = async (key) => {
94
+ this.selected = key;
95
+ this.shown = null;
96
+ this.failed = false;
97
+ this.status = '';
98
+ const mine = ++this.#serial;
99
+ if (key === null)
100
+ return;
101
+ this.reading = true;
102
+ try {
103
+ const json = await this.#options.client.read(key);
104
+ if (mine !== this.#serial)
105
+ return;
106
+ this.shown = json;
107
+ if (json === null) {
108
+ this.failed = true;
109
+ this.status = 'unavailable';
110
+ }
111
+ }
112
+ catch (error) {
113
+ if (mine === this.#serial)
114
+ this.#fail(error);
115
+ }
116
+ finally {
117
+ if (mine === this.#serial)
118
+ this.reading = false;
119
+ }
120
+ };
121
+ /** Restore the previewed version (the room writes it as one change). */
122
+ restore = async () => {
123
+ const { selected } = this;
124
+ if (selected === null || this.busy)
125
+ return;
126
+ this.busy = true;
127
+ this.failed = false;
128
+ this.status = 'restoring';
129
+ try {
130
+ const result = await this.#options.client.restore(selected);
131
+ if (result.status === 'applied')
132
+ this.undoable = true;
133
+ // A version gone since it was listed: list again, then say so.
134
+ if (result.status === 'refused')
135
+ await this.refresh();
136
+ this.failed = result.status === 'refused';
137
+ this.status =
138
+ result.status === 'applied'
139
+ ? 'restored'
140
+ : result.status === 'noop'
141
+ ? 'unchanged'
142
+ : 'unavailable';
143
+ this.#options.onRestore?.(result);
144
+ }
145
+ catch (error) {
146
+ this.#fail(error);
147
+ }
148
+ finally {
149
+ this.busy = false;
150
+ }
151
+ };
152
+ /** Take back the restore this view applied. */
153
+ undo = async () => {
154
+ if (this.busy)
155
+ return;
156
+ this.busy = true;
157
+ this.failed = false;
158
+ try {
159
+ const result = await this.#options.client.undo();
160
+ this.undoable = false;
161
+ this.status = result.status === 'applied' ? 'undone' : 'nothingToUndo';
162
+ this.#options.onUndo?.(result);
163
+ }
164
+ catch (error) {
165
+ this.#fail(error);
166
+ }
167
+ finally {
168
+ this.busy = false;
169
+ }
170
+ };
171
+ /** A version's day (`Oct 8, 2026`), in `locale`; its half of the day is `entry.slot`. */
172
+ dateOf = (entry) => {
173
+ const day = new Date(`${entry.date}T00:00:00Z`);
174
+ return Number.isNaN(day.getTime())
175
+ ? entry.date
176
+ : new Intl.DateTimeFormat(this.#options.locale, {
177
+ dateStyle: 'medium',
178
+ timeZone: 'UTC'
179
+ }).format(day);
180
+ };
181
+ /** When a version was saved, in `locale`. */
182
+ timeOf = (entry) => {
183
+ const at = new Date(entry.at);
184
+ return Number.isNaN(at.getTime())
185
+ ? ''
186
+ : new Intl.DateTimeFormat(this.#options.locale, {
187
+ dateStyle: 'medium',
188
+ timeStyle: 'short'
189
+ }).format(at);
190
+ };
191
+ /**
192
+ * The attachment of the version at `index`'s row
193
+ * (`{@attach history.option(index)}`, on its focusable element):
194
+ * `role="option"`, its id, `aria-selected`, the list's one tab stop when
195
+ * it is selected, else the first.
196
+ */
197
+ option = (index) => {
198
+ const selected = this.versions?.[index]?.key === this.selected;
199
+ return optionAttachment(`${this.#options.id ?? 'edytor-history'}-version-${index}`, 'option', selected, { tabindex: selected || (this.selected === null && index === 0) ? 0 : -1 }, false);
200
+ };
201
+ /** The list's attachment (`{@attach history.keys}`): the arrows, Home and End move the selection and the focus. */
202
+ keys = (node) => listen(node, 'keydown', this.#keydown);
203
+ #keydown = (event) => {
204
+ const { versions } = this;
205
+ if (!versions?.length)
206
+ return;
207
+ const at = versions.findIndex((entry) => entry.key === this.selected);
208
+ const next = {
209
+ ArrowDown: Math.min(versions.length - 1, at + 1),
210
+ ArrowUp: Math.max(0, at - 1),
211
+ Home: 0,
212
+ End: versions.length - 1
213
+ }[event.key];
214
+ if (next === undefined)
215
+ return;
216
+ event.preventDefault();
217
+ const key = versions[next].key;
218
+ if (key !== this.selected)
219
+ void this.select(key);
220
+ const list = event.currentTarget;
221
+ list.querySelectorAll('[role="option"]')[next]?.focus();
222
+ };
223
+ }
@@ -1,3 +1,12 @@
1
+ /**
2
+ * The sync factories of the package root (`import { createIndexeddbSync }
3
+ * from 'edytor'`): the provider stack bound once to the vendored engine
4
+ * (`crdt/providers/bound.ts`, shared with `edytor/protocol`'s raw provider
5
+ * classes). The factories themselves live in ONE place, `bindProviders(Y)`
6
+ * in `src/lib/crdt/providers/index.ts`.
7
+ */
8
+ import { prefetch as prefetchStack } from '../crdt/providers/bound.js';
9
+ import { documentSnapshot as snapshotOf, lastUpdated as lastUpdatedOf } from '../crdt/providers/index.js';
1
10
  import { type Awareness, type EdytorSync, type EdytorSyncCleanup, type EdytorSyncPayload, type IndexeddbSyncOptions as CrdtIndexeddbSyncOptions, type ProviderStack, type WebsocketSync, type WebsocketSyncOptions as CrdtWebsocketSyncOptions, type YDoc } from '../crdt/index.js';
2
11
  export type { EdytorSync, EdytorSyncCleanup, EdytorSyncPayload, WebsocketSync, Awareness, YDoc };
3
12
  export type IndexeddbSyncOptions = CrdtIndexeddbSyncOptions;
@@ -9,8 +18,8 @@ export declare const createIndexeddbSync: (name: string) => EdytorSync;
9
18
  export declare const createWebsocketSync: (options: WebsocketSyncOptions) => WebsocketSync;
10
19
  export declare const clearDocument: ProviderStack['clearDocument'];
11
20
  /** Keep a document's local copy fresh without opening it (sync once, then close). */
12
- export declare const prefetch: ProviderStack['prefetch'];
21
+ export declare const prefetch: typeof prefetchStack;
13
22
  /** When a room last stored a change: one authorized HTTP request, no document opened. */
14
- export declare const lastUpdated: ProviderStack['lastUpdated'];
23
+ export declare const lastUpdated: typeof lastUpdatedOf;
15
24
  /** A room's document as JSON (one authorized HTTP request), for `<Edytor snapshot>`. */
16
- export declare const documentSnapshot: ProviderStack['documentSnapshot'];
25
+ export declare const documentSnapshot: typeof snapshotOf;
@@ -5,7 +5,8 @@
5
5
  * classes). The factories themselves live in ONE place, `bindProviders(Y)`
6
6
  * in `src/lib/crdt/providers/index.ts`.
7
7
  */
8
- import { providers } from '../crdt/providers/bound.js';
8
+ import { prefetch as prefetchStack, providers } from '../crdt/providers/bound.js';
9
+ import { documentSnapshot as snapshotOf, lastUpdated as lastUpdatedOf } from '../crdt/providers/index.js';
9
10
  import {} from '../crdt/index.js';
10
11
  export const createIndexeddbSync = providers.createIndexeddbSync;
11
12
  export const createWebsocketSync = providers.createWebsocketSync;
@@ -15,8 +16,8 @@ export const createWebsocketSync = providers.createWebsocketSync;
15
16
  // (`../crdt/providers/indexeddb`), which `nodenext` consumers reject.
16
17
  export const clearDocument = providers.clearDocument;
17
18
  /** Keep a document's local copy fresh without opening it (sync once, then close). */
18
- export const prefetch = providers.prefetch;
19
+ export const prefetch = prefetchStack;
19
20
  /** When a room last stored a change: one authorized HTTP request, no document opened. */
20
- export const lastUpdated = providers.lastUpdated;
21
+ export const lastUpdated = lastUpdatedOf;
21
22
  /** A room's document as JSON (one authorized HTTP request), for `<Edytor snapshot>`. */
22
- export const documentSnapshot = providers.documentSnapshot;
23
+ export const documentSnapshot = snapshotOf;