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
@@ -1,21 +1,21 @@
1
- import { propsProxy } from '../session/props.js';
2
1
  const INLINE_EDGE_CARET_THRESHOLD_PX = 4;
3
2
  const isTextPart = (part) => part !== undefined && !(part instanceof InlineBlock);
4
3
  /**
5
- * An id-only inline-atom handle: atom `id`, shown in
6
- * block `blockId`. Getters read the document index; `node` is the element
7
- * that renders it (a Surface fact). A reactive reader of a getter depends on
8
- * the block's cell, so it re-runs when a commit changes the block's content.
4
+ * An id-only, read-only inline-atom handle: atom `id`, shown in block
5
+ * `blockId`. Getters read the document index; writes are the view's
6
+ * operations (`edytor.patchData({ block: atom.blockId, atom: atom.id }, …)`).
7
+ * `node` is the element that renders it (a Surface fact). A reactive reader
8
+ * of a getter depends on the block's cell, so it re-runs when a commit
9
+ * changes the block's content.
9
10
  */
10
11
  export class InlineBlock {
11
- _def = 'inline';
12
12
  readonly = false;
13
13
  edytor;
14
14
  id;
15
15
  /** The block that shows the atom (the view updates it when the atom moves). */
16
16
  blockId;
17
17
  node;
18
- attachedNodes = new Set();
18
+ #attachedNodes = new Set();
19
19
  constructor(edytor, blockId, id) {
20
20
  this.edytor = edytor;
21
21
  this.blockId = blockId;
@@ -38,12 +38,13 @@ export class InlineBlock {
38
38
  return this.#item?.type ?? '';
39
39
  }
40
40
  #props;
41
- /** The atom's `data` as a live proxy (`session/props.ts`): writes are its block's `patchData` commands. */
41
+ /**
42
+ * The atom's `data` as plain state: reactive at any depth (through its
43
+ * block's cell), and writable; each write is its `patchData` operation
44
+ * (`session/props`).
45
+ */
42
46
  get data() {
43
- return (this.#props ??= propsProxy(() => {
44
- this.edytor.cells?.get(this.blockId);
45
- return this.#item?.data ?? {};
46
- }, (ops) => this.parent.patchData({ atom: this.id, ops }), (path) => this.edytor.facade.dataItemIds({ block: this.blockId, atom: this.id }, path)));
47
+ return (this.#props ??= this.edytor.dataWrites.proxy({ block: this.blockId, atom: this.id }, () => this.#item?.data ?? {}));
47
48
  }
48
49
  get definition() {
49
50
  return this.edytor.inlineBlocks.get(this.type) ?? {};
@@ -52,10 +53,6 @@ export class InlineBlock {
52
53
  get index() {
53
54
  return this.parent.content.indexOf(this);
54
55
  }
55
- /** Replace the atom's `data` — its block's `patchData` command (readonly, hooks). */
56
- setData = (data) => {
57
- this.parent.patchData({ atom: this.id, ops: [{ path: [], value: data }] });
58
- };
59
56
  /** The atom is shown by a live block. */
60
57
  get isInDocument() {
61
58
  return this.parent.isInTree && this.#item !== undefined;
@@ -68,7 +65,7 @@ export class InlineBlock {
68
65
  node.setAttribute('contenteditable', 'false');
69
66
  node.dataset.edytorId = this.id;
70
67
  node.dataset.edytorInlineBlock = this.type;
71
- this.attachedNodes.add(node);
68
+ this.#attachedNodes.add(node);
72
69
  this.edytor.nodeToInlineBlock.set(node, this);
73
70
  this.node = node;
74
71
  const release = this.edytor.surface.register(node, 'atom', this.blockId);
@@ -86,9 +83,9 @@ export class InlineBlock {
86
83
  const [before, after] = [content[index - 1], content[index + 1]];
87
84
  const { selection } = this.edytor;
88
85
  if (event.clientX <= rect.left + INLINE_EDGE_CARET_THRESHOLD_PX && isTextPart(before))
89
- return selection.setAtTextOffset(before, before.length);
86
+ return selection.selectText(before, before.length);
90
87
  if (event.clientX >= rect.right - INLINE_EDGE_CARET_THRESHOLD_PX && isTextPart(after))
91
- return selection.setAtTextOffset(after, 0);
88
+ return selection.selectText(after, 0);
92
89
  selection.selectInlineBlock(this);
93
90
  this.edytor.ports.surface.clear();
94
91
  // The atom took the press: the caret the browser still leaves for it
@@ -99,9 +96,9 @@ export class InlineBlock {
99
96
  return {
100
97
  destroy: () => {
101
98
  node.removeEventListener('pointerdown', selectInlineBlock);
102
- this.attachedNodes.delete(node);
99
+ this.#attachedNodes.delete(node);
103
100
  if (this.node === node) {
104
- this.node = this.attachedNodes.values().next().value;
101
+ this.node = this.#attachedNodes.values().next().value;
105
102
  }
106
103
  this.edytor.nodeToInlineBlock.delete(node);
107
104
  release();
@@ -1,28 +1,6 @@
1
- import { InlineBlock } from '../block/inlineBlock.svelte.js';
2
- import { Text } from '../text/text.svelte.js';
3
- import { sliceTextValue } from '../block/contentRange.js';
4
- import { cloneJson } from '../utils/json.js';
1
+ import { sliceContent } from '../block/contentRange.js';
5
2
  import { rangeCovers, selectedMembers } from '../selection/visibility.js';
6
3
  import { liftLayouts } from '../selection/replaceSelection.js';
7
- const extractContentRange = (block, startText, startOffset, endText, endOffset) => {
8
- const content = [];
9
- const startIndex = block.content.indexOf(startText);
10
- const endIndex = block.content.indexOf(endText);
11
- for (const [index, part] of block.content.entries()) {
12
- if (index < startIndex || index > endIndex) {
13
- continue;
14
- }
15
- if (part instanceof InlineBlock) {
16
- // An atom's `value.data` is a shallow copy of the index's: clone it.
17
- content.push(cloneJson(part.value));
18
- continue;
19
- }
20
- const start = part === startText ? startOffset : 0;
21
- const end = part === endText ? endOffset : part.length;
22
- content.push(...sliceTextValue(part.value, start, end));
23
- }
24
- return content;
25
- };
26
4
  /**
27
5
  * Block values nested as in the document, members only: a child that is not
28
6
  * a member is left out, a member under a non-member starts a top-level entry.
@@ -43,30 +21,6 @@ const nestMembers = (blocks, valueOf) => {
43
21
  }
44
22
  return out;
45
23
  };
46
- const extractBlockRange = (edytor) => {
47
- const { blocks, startBlock, endBlock, startText, endText, yStart, yEnd } = edytor.selection.state;
48
- if (!startBlock || !endBlock || !startText || !endText || blocks.length === 0) {
49
- return null;
50
- }
51
- // A hidden block (a closed toggle's body) is copied exactly when the range's
52
- // delete removes it, so a cut, or a copy then Backspace, never loses or
53
- // duplicates it (`del.range.hidden-body`).
54
- const copied = blocks.filter(rangeCovers(edytor));
55
- // `block.value` is the document's serializer output: fresh JSON, no clone.
56
- return nestMembers(copied, (block) => {
57
- const value = block.value;
58
- if (block === startBlock) {
59
- value.content = extractContentRange(block, startText, yStart, block.lastText, block.lastText.length);
60
- }
61
- if (block === endBlock) {
62
- value.content = extractContentRange(block, block.firstText, 0, endText, yEnd);
63
- }
64
- if (startBlock === endBlock) {
65
- value.content = extractContentRange(block, startText, yStart, endText, yEnd);
66
- }
67
- return value;
68
- });
69
- };
70
24
  /**
71
25
  * `fragment` without the marks whose record says `copy: false` (a
72
26
  * comment's anchor, `comment:<id>`: Notion copies the text, not the
@@ -101,8 +55,9 @@ const withoutUncopied = (edytor, fragment) => {
101
55
  };
102
56
  export const createEdytorClipboardFragment = (edytor) => withoutUncopied(edytor, fragmentOf(edytor));
103
57
  const fragmentOf = (edytor) => {
58
+ const { selection, idToBlock } = edytor;
104
59
  // A layout the block selection covers whole is copied as the layout.
105
- const selectedBlocks = selectedMembers(edytor, liftLayouts(edytor.selection.selectedBlocks));
60
+ const selectedBlocks = selectedMembers(edytor, liftLayouts(selection.selectedBlocks));
106
61
  if (selectedBlocks.length > 0) {
107
62
  return {
108
63
  version: 1,
@@ -114,26 +69,29 @@ const fragmentOf = (edytor) => {
114
69
  whole: true
115
70
  };
116
71
  }
117
- const { startBlock, startText, endText, yStart, yEnd, isCollapsed, isBlockSpanning } = edytor.selection.state;
118
- if (!startBlock || !startText || !endText || isCollapsed) {
72
+ // The range in block offsets: `block.value` is the document's serializer output (fresh JSON).
73
+ const { start, end, isCollapsed, isBlockSpanning, blocks } = selection.projection;
74
+ const startBlock = start && idToBlock.get(start.block);
75
+ if (!start || !end || !startBlock || isCollapsed)
119
76
  return null;
77
+ if (!isBlockSpanning) {
78
+ const content = sliceContent(startBlock.value.content, start.offset, end.offset);
79
+ return { version: 1, source: 'edytor', kind: 'content', blockType: startBlock.type, content };
120
80
  }
121
- if (isBlockSpanning) {
122
- const blocks = extractBlockRange(edytor);
123
- return blocks
124
- ? {
125
- version: 1,
126
- source: 'edytor',
127
- kind: 'blocks',
128
- blocks
129
- }
130
- : null;
131
- }
81
+ // A hidden block (a closed toggle's body) is copied exactly when the range's
82
+ // delete removes it, so a cut, or a copy then Backspace, never loses or
83
+ // duplicates it (`del.range.hidden-body`).
84
+ const copied = blocks.flatMap((id) => idToBlock.get(id) ?? []).filter(rangeCovers(edytor));
132
85
  return {
133
86
  version: 1,
134
87
  source: 'edytor',
135
- kind: 'content',
136
- blockType: startBlock.type,
137
- content: extractContentRange(startBlock, startText, yStart, endText, yEnd)
88
+ kind: 'blocks',
89
+ blocks: nestMembers(copied, (block) => {
90
+ const value = block.value;
91
+ const [first, last] = [block.id === start.block, block.id === end.block];
92
+ if (first || last)
93
+ value.content = sliceContent(value.content, first ? start.offset : 0, last ? end.offset : Infinity);
94
+ return value;
95
+ })
138
96
  };
139
97
  };
@@ -1,51 +1,26 @@
1
1
  import { EDYTOR_FRAGMENT_ATTRIBUTE, EDYTOR_FRAGMENT_MIME } from './types.js';
2
2
  import { encodeClipboardJson, serializeClipboardFragmentToHtml, serializeClipboardFragmentToPlainText } from './serializeClipboardFragment.js';
3
- /** A plain object (arrays are not records here: fragment validation rejects them). */
4
- const isRecord = (value) => Boolean(value) && typeof value === 'object' && !Array.isArray(value);
3
+ import { isObject } from '../crdt/data.js';
5
4
  const decodeJson = (value) => JSON.parse(decodeURIComponent(atob(value)));
6
- const isValidTextPart = (value) => {
7
- if (!isRecord(value) || typeof value.text !== 'string') {
8
- return false;
9
- }
10
- return value.marks === undefined || isRecord(value.marks);
11
- };
5
+ /** A kind's name: a non-empty string. */
6
+ const isName = (value) => typeof value === 'string' && value.length > 0;
7
+ /** Every item of a list (absent: none) passes `valid`. */
8
+ const all = (value, valid, optional = false) => (optional && value === undefined) || (Array.isArray(value) && value.every(valid));
12
9
  // Input is JSON (a parsed payload, or `cloneJsonSafe` on the programmatic path): no value walk.
13
- const isValidInlineBlockPart = (value) => isRecord(value) && typeof value.type === 'string' && value.type.length > 0;
14
- const isValidContentPart = (value) => isValidTextPart(value) || isValidInlineBlockPart(value);
15
- const isValidBlock = (value) => {
16
- if (!isRecord(value) || typeof value.type !== 'string' || value.type.length === 0) {
17
- return false;
18
- }
19
- if (value.content !== undefined) {
20
- if (!Array.isArray(value.content) || !value.content.every(isValidContentPart)) {
21
- return false;
22
- }
23
- }
24
- if (value.children !== undefined) {
25
- if (!Array.isArray(value.children) || !value.children.every(isValidBlock)) {
26
- return false;
27
- }
28
- }
29
- return true;
30
- };
10
+ /** A text (its marks a record) or an inline atom (its kind named). */
11
+ const isPart = (value) => isObject(value) &&
12
+ ((typeof value.text === 'string' && (value.marks === undefined || isObject(value.marks))) ||
13
+ isName(value.type));
14
+ const isBlock = (value) => isObject(value) &&
15
+ isName(value.type) &&
16
+ all(value.content, isPart, true) &&
17
+ all(value.children, isBlock, true);
31
18
  export const isValidEdytorClipboardFragment = (value) => {
32
- if (!value || typeof value !== 'object') {
33
- return false;
34
- }
35
- const fragment = value;
36
- if (fragment.version !== 1 || fragment.source !== 'edytor') {
19
+ if (!isObject(value) || value.version !== 1 || value.source !== 'edytor')
37
20
  return false;
38
- }
39
- if (fragment.kind === 'blocks') {
40
- return Array.isArray(fragment.blocks) && fragment.blocks.every(isValidBlock);
41
- }
42
- if (fragment.kind === 'content') {
43
- return (typeof fragment.blockType === 'string' &&
44
- fragment.blockType.length > 0 &&
45
- Array.isArray(fragment.content) &&
46
- fragment.content.every(isValidContentPart));
47
- }
48
- return false;
21
+ if (value.kind === 'blocks')
22
+ return all(value.blocks, isBlock);
23
+ return value.kind === 'content' && isName(value.blockType) && all(value.content, isPart);
49
24
  };
50
25
  const parseEncodedFragment = (encoded) => {
51
26
  try {
@@ -86,12 +86,12 @@ export const flowOfHtml = (kinds, html) => {
86
86
  for (const { data = {} } of kind.presets) {
87
87
  const tag = tagOf(type, kind, data);
88
88
  if (tag && !byTag.has(tag))
89
- byTag.set(tag, { type, data });
89
+ byTag.set(tag, { type, kind, data });
90
90
  }
91
91
  const child = kind.rendersContent === false ? kind.defaultChild : undefined;
92
92
  const tag = child && blocks.has(child) ? tagOf(child, blocks.get(child), {}) : undefined;
93
93
  if (tag && !byTag.has(tag))
94
- byTag.set(tag, { type, data: kind.presets[0].data ?? {}, lines: child });
94
+ byTag.set(tag, { type, kind, data: kind.presets[0].data ?? {}, lines: child });
95
95
  }
96
96
  const kindOf = (element) => {
97
97
  // A glyph is text: no kind claims it.
@@ -100,7 +100,7 @@ export const flowOfHtml = (kinds, html) => {
100
100
  for (const [type, kind] of blocks) {
101
101
  const data = kind.parse?.(element);
102
102
  if (data)
103
- return { type, data };
103
+ return { type, kind, data };
104
104
  }
105
105
  return byTag.get(element.localName);
106
106
  };
@@ -129,7 +129,7 @@ export const flowOfHtml = (kinds, html) => {
129
129
  /** A void kind's element (an image): it shows no text, so a line it is met in ends there. */
130
130
  const isVoid = (node) => {
131
131
  const claim = node instanceof Element ? kindOf(node) : undefined;
132
- return claim !== undefined && blocks.get(claim.type)?.void === true;
132
+ return claim?.kind.void === true;
133
133
  };
134
134
  const text = (line, value, marks, pre) => {
135
135
  const before = line.content.at(-1);
@@ -214,7 +214,7 @@ export const flowOfHtml = (kinds, html) => {
214
214
  }
215
215
  // A void's only text is its caption: an `iframe`'s fallback, a `video`'s source list or
216
216
  // a bookmark's link text is never content.
217
- if (claim && blocks.get(claim.type)?.void) {
217
+ if (claim?.kind.void) {
218
218
  const line = { type: claim.type, data: claim.data, content: [] };
219
219
  const caption = [...element.children].find((child) => child.localName === 'figcaption');
220
220
  // A caption is one line: an element that would end it (an image) adds nothing.
@@ -225,7 +225,7 @@ export const flowOfHtml = (kinds, html) => {
225
225
  }
226
226
  // A kind that shows no text of its own (a list, a layout, a column) takes none: its
227
227
  // inline runs and a leading paragraph are lines of its default child, never hidden text.
228
- if (claim && blocks.get(claim.type)?.rendersContent === false) {
228
+ if (claim?.kind.rendersContent === false) {
229
229
  const children = linesOf(element, kinds.document.defaultChild(claim.type));
230
230
  return [
231
231
  { type: claim.type, data: claim.data, content: [], ...(children.length && { children }) }
@@ -250,7 +250,7 @@ export const flowOfHtml = (kinds, html) => {
250
250
  line: () => current,
251
251
  apart: (inner) => {
252
252
  // A void's own media (a figure's `img`) is part of it.
253
- if (claim && blocks.get(claim.type)?.void)
253
+ if (claim?.kind.void)
254
254
  return;
255
255
  parts.push(...blockOf(inner, type));
256
256
  current = { type: line.type, data: line.data, content: [] };
@@ -1,7 +1,8 @@
1
- import { keepsSelectedBlocks, replaceSelectionWithCollapsedTarget } from '../selection/replaceSelection.js';
1
+ import { keepsSelectedBlocks, replaceSelectionWithCollapsedTarget, caretLeft } from '../selection/replaceSelection.js';
2
2
  import { selectedMembers } from '../selection/visibility.js';
3
3
  import { cloneJsonSafe, jsonBlockToSpec, jsonContentToItems } from '../utils/json.js';
4
4
  import { id } from '../utils.js';
5
+ import { noSelection } from '../session/selection.js';
5
6
  import { caretAt } from '../session/attempt.js';
6
7
  import { isValidEdytorClipboardFragment } from './fragmentData.js';
7
8
  import { hasBlockMarkdown, textToBlocks } from './textBlocks.js';
@@ -58,10 +59,10 @@ export const pasteFlow = (edytor, flow, { at, selection } = {}) => {
58
59
  if (!replace.length && !block)
59
60
  return;
60
61
  const target = block ? { block: block.id, offset: p.text.segStart + p.offset } : { replace };
61
- const [text, offset] = edytor.insertFlow({ flow, target });
62
+ const end = caretLeft(edytor, edytor.insertFlow(target, flow));
62
63
  if (replace.length)
63
- edytor.selection.selectBlocks();
64
- caretAt(edytor, text, offset);
64
+ edytor.selection.select(noSelection);
65
+ caretAt(edytor, end?.text, end?.offset ?? 0);
65
66
  };
66
67
  /** Programmatic insertion: the fragment is untrusted input, projected to JSON and validated here. */
67
68
  export const insertEdytorClipboardFragment = async (edytor, fragment) => {
@@ -1,6 +1,5 @@
1
1
  import { project } from '../session/selection.js';
2
2
  import { viewOf } from '../selection/visibility.js';
3
- import { applyAt, caretOf } from '../edytor.utils.js';
4
3
  import { flowOfFragment } from './insertClipboardFragment.js';
5
4
  const drags = new WeakMap();
6
5
  /** The view's text drag in progress, if any. */
@@ -41,6 +40,13 @@ export const dropText = (edytor, drag, to) => {
41
40
  /** Both halves at the current version, as hooks see them (a copy: the placement). */
42
41
  const prepare = ({ from, to, copy }) => copy ? place(to) : facade.compose(place(to), remove(from));
43
42
  const block = edytor.idToBlock.get(to.block);
43
+ /** Write a stage in the command; answers the caret it decides. */
44
+ const write = (plan) => {
45
+ if (!('writes' in plan) || !plan.at)
46
+ return null;
47
+ dispatcher.write(plan);
48
+ return plan.at;
49
+ };
44
50
  /** Where the content went: its start and its end, bound to the placed text. */
45
51
  const placed = {};
46
52
  const payload = { from: { start, end }, to, copy };
@@ -51,29 +57,31 @@ export const dropText = (edytor, drag, to) => {
51
57
  const first = facade.anchorAt(from.start.block, from.start.offset, 'right');
52
58
  const last = facade.anchorAt(from.end.block, from.end.offset, 'left');
53
59
  placed.from = facade.anchorAt(to.block, to.offset, 'left');
54
- const at = applyAt(edytor, place(to));
60
+ const at = write(place(to));
55
61
  placed.to = at && facade.anchorAt(at.block, at.offset, 'left');
56
62
  if (copy || !at)
57
63
  return;
58
64
  const [a, b] = [first && facade.resolveAnchor(first), last && facade.resolveAnchor(last)];
59
65
  if (!a || !b)
60
66
  return;
61
- applyAt(edytor, remove({
67
+ write(remove({
62
68
  start: { block: a.blockId, offset: a.offset },
63
69
  end: { block: b.blockId, offset: b.offset }
64
70
  }));
65
71
  }, prepare);
66
72
  if (dispatcher.last?.status !== 'applied' || !placed.to)
67
73
  return keep();
74
+ /** The text and offset an anchor resolves to. */
68
75
  const point = (anchor) => {
69
76
  const hit = anchor && facade.resolveAnchor(anchor);
70
- return hit ? { block: hit.blockId, offset: hit.offset } : null;
77
+ const at = hit && edytor.idToBlock.get(hit.blockId)?.textAtOffset(hit.offset);
78
+ return at ? [at.text, at.offset] : [null, 0];
71
79
  };
72
- const [startText, startOffset] = caretOf.call(edytor, point(placed.from));
73
- const [endText, endOffset] = caretOf.call(edytor, point(placed.to));
80
+ const [startText, startOffset] = point(placed.from);
81
+ const [endText, endOffset] = point(placed.to);
74
82
  if (startText && endText)
75
- edytor.selection.setAtRange(startText, startOffset, endText, endOffset);
83
+ edytor.selection.selectText(startText, startOffset, endText, endOffset);
76
84
  else if (endText)
77
- edytor.selection.setAtTextOffset(endText, endOffset);
85
+ edytor.selection.selectText(endText, endOffset);
78
86
  return true;
79
87
  };
@@ -3,5 +3,7 @@ import type { EdytorClipboardFragment } from './types.js';
3
3
  /** The records the export reads: each kind, mark and atom declares its own forms. */
4
4
  export type ExportKinds = Pick<Edytor, 'blocks' | 'marks' | 'inlineBlocks'>;
5
5
  export declare const encodeClipboardJson: (value: unknown) => string;
6
+ /** `value` escaped for an HTML text or a double-quoted attribute: every kind's export reads it. */
7
+ export declare const escapeHtml: (value: string) => string;
6
8
  export declare const serializeClipboardFragmentToPlainText: (fragment: EdytorClipboardFragment, kinds: ExportKinds) => string;
7
9
  export declare const serializeClipboardFragmentToHtml: (fragment: EdytorClipboardFragment, kinds: ExportKinds) => string;
@@ -2,7 +2,8 @@ import { EDYTOR_FRAGMENT_ATTRIBUTE } from './types.js';
2
2
  import { isTextPart } from '../block/contentRange.js';
3
3
  import { colorClasses } from '../block/colors.js';
4
4
  export const encodeClipboardJson = (value) => btoa(encodeURIComponent(JSON.stringify(value)));
5
- const escapeHtml = (value) => value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
5
+ /** `value` escaped for an HTML text or a double-quoted attribute: every kind's export reads it. */
6
+ export const escapeHtml = (value) => value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
6
7
  /** A tag form wraps `inner`; attributes left `undefined` are omitted. */
7
8
  const tag = (name, inner, attributes = {}) => `<${name}${Object.entries(attributes)
8
9
  .map(([key, value]) => (value === undefined ? '' : ` ${key}="${escapeHtml(value)}"`))
@@ -17,11 +18,17 @@ const textHtml = (part, kinds) => {
17
18
  }
18
19
  return html;
19
20
  };
20
- const contentHtml = (content = [], kinds) => content
21
- .map((part) => isTextPart(part)
22
- ? textHtml(part, kinds)
23
- : (kinds.inlineBlocks.get(part.type)?.html?.(part.data) ??
24
- `<span data-edytor-inline-block="${escapeHtml(part.type)}"></span>`))
21
+ /** The content as HTML, or as plain text: an atom by its kind's form (`html`, `plain`). */
22
+ const contentOf = (content = [], kinds, html) => content
23
+ .map((part) => {
24
+ if (isTextPart(part))
25
+ return html ? textHtml(part, kinds) : part.text;
26
+ const atom = kinds.inlineBlocks.get(part.type);
27
+ return html
28
+ ? (atom?.html?.(part.data) ??
29
+ `<span data-edytor-inline-block="${escapeHtml(part.type)}"></span>`)
30
+ : (atom?.plain?.(part.data) ?? '');
31
+ })
25
32
  .join('');
26
33
  /** `classes` added to the first element of `html` (the block's own), beside a class it has. */
27
34
  const withClasses = (html, classes) => classes
@@ -33,37 +40,34 @@ const withClasses = (html, classes) => classes
33
40
  return `<${name}${merged}${end}>`;
34
41
  })
35
42
  : html;
36
- const blockHtml = (block, kinds) => {
37
- const content = contentHtml(block.content, kinds);
38
- const children = block.children?.map((child) => blockHtml(child, kinds)).join('') ?? '';
39
- const form = kinds.blocks.get(block.type)?.html;
40
- const html = !form
43
+ /** A block and its subtree as HTML (its colours as Notion's classes), or as plain text. */
44
+ const blockOf = (block, kinds, html) => {
45
+ const content = contentOf(block.content, kinds, html);
46
+ const kids = block.children?.map((child) => blockOf(child, kinds, html)) ?? [];
47
+ const kind = kinds.blocks.get(block.type);
48
+ if (!html) {
49
+ const children = kids.filter(Boolean).join('\n');
50
+ return kind?.plain
51
+ ? kind.plain(block, content, children)
52
+ : [content, children].filter(Boolean).join('\n');
53
+ }
54
+ const children = kids.join('');
55
+ const form = kind?.html;
56
+ const out = !form
41
57
  ? `<p>${content}</p>${children}`
42
58
  : typeof form === 'string'
43
59
  ? tag(form, content + children)
44
60
  : form(block, content, children);
45
61
  // A block's colours as Notion's export names them (`block-color-red`).
46
- return withClasses(html, colorClasses(block.data));
47
- };
48
- const contentPlain = (content = [], kinds) => content
49
- .map((part) => isTextPart(part) ? part.text : (kinds.inlineBlocks.get(part.type)?.plain?.(part.data) ?? ''))
50
- .join('');
51
- const blockPlain = (block, kinds) => {
52
- const content = contentPlain(block.content, kinds);
53
- const children = block.children
54
- ?.map((child) => blockPlain(child, kinds))
55
- .filter(Boolean)
56
- .join('\n') ?? '';
57
- const form = kinds.blocks.get(block.type)?.plain;
58
- return form ? form(block, content, children) : [content, children].filter(Boolean).join('\n');
62
+ return withClasses(out, colorClasses(block.data));
59
63
  };
60
64
  export const serializeClipboardFragmentToPlainText = (fragment, kinds) => fragment.kind === 'blocks'
61
- ? fragment.blocks.map((block) => blockPlain(block, kinds)).join('\n')
62
- : contentPlain(fragment.content, kinds);
65
+ ? fragment.blocks.map((block) => blockOf(block, kinds, false)).join('\n')
66
+ : contentOf(fragment.content, kinds, false);
63
67
  export const serializeClipboardFragmentToHtml = (fragment, kinds) => {
64
68
  const encoded = encodeClipboardJson(fragment);
65
69
  const html = fragment.kind === 'blocks'
66
- ? fragment.blocks.map((block) => blockHtml(block, kinds)).join('')
67
- : `<p>${contentHtml(fragment.content, kinds)}</p>`;
70
+ ? fragment.blocks.map((block) => blockOf(block, kinds, true)).join('')
71
+ : `<p>${contentOf(fragment.content, kinds, true)}</p>`;
68
72
  return `<meta charset="utf-8"><span ${EDYTOR_FRAGMENT_ATTRIBUTE}="${encoded}" hidden></span>${html}`;
69
73
  };
@@ -52,11 +52,9 @@
52
52
  * left out of the ack), the rest applied. Compaction reclaims the
53
53
  * waiting deletes of client ids no user registered and no socket holds;
54
54
  * `dropWaitingDeletes()` every one.
55
- * - storage format: the generation record says `storage: 'v2'` —
56
- * snapshots in the v2 encoding, compressed in place after they are
57
- * stored (`compressLater`), inflated at start (`inflate`); update and
58
- * pending records stay v1. A container without `storage` (0.1.0-next.22)
59
- * is all v1, and its next compaction rewrites it.
55
+ * - storage format: every record holds an update in the engine's one
56
+ * encoding; a snapshot is compressed in place after it is stored
57
+ * (`#compressLater`) and inflated at start (`inflate`).
60
58
  * - a Step2 serves the STORED state: the engine's pending structs (waiting
61
59
  * for a dependency, never stored) are not served.
62
60
  * - a frame larger than `maxFrameBytes` (32 MiB) goes out as chunks the
@@ -389,12 +387,6 @@ export type RoomLogEntry = {
389
387
  edytor: 'fault';
390
388
  reason: 'storage' | 'internal';
391
389
  detail: string;
392
- } | {
393
- edytor: 'convert';
394
- from: number;
395
- to: number;
396
- blocks: number;
397
- bytes: number;
398
390
  } | {
399
391
  edytor: 'move';
400
392
  moveId: string;
@@ -411,12 +403,11 @@ export type RoomLogEntry = {
411
403
  };
412
404
  /** `pending`: deletes of items the room does not hold yet (they wait for them). */
413
405
  type RowKind = 'generation' | 'update' | 'snapshot' | 'pending';
414
- /** A stored record, reassembled: its kind, record number, bytes, and whether they are v2 (a v2 container's snapshot). */
406
+ /** A stored record, reassembled: its kind, record number and bytes. */
415
407
  export type StoredRecord = {
416
408
  kind: RowKind;
417
409
  record: number;
418
410
  bytes: Uint8Array<ArrayBuffer>;
419
- v2: boolean;
420
411
  };
421
412
  /** A block as `validate` reads it, before or after a frame. */
422
413
  export type ValidatedBlock = {
@@ -626,10 +617,6 @@ export declare class AttachedDocument {
626
617
  } | {
627
618
  kind: 'restored';
628
619
  records: number;
629
- } | {
630
- kind: 'converted';
631
- from: number;
632
- records: number;
633
620
  };
634
621
  /** The room's parts and what they share (`room/context.ts`). */
635
622
  private readonly room;
@@ -52,11 +52,9 @@
52
52
  * left out of the ack), the rest applied. Compaction reclaims the
53
53
  * waiting deletes of client ids no user registered and no socket holds;
54
54
  * `dropWaitingDeletes()` every one.
55
- * - storage format: the generation record says `storage: 'v2'` —
56
- * snapshots in the v2 encoding, compressed in place after they are
57
- * stored (`compressLater`), inflated at start (`inflate`); update and
58
- * pending records stay v1. A container without `storage` (0.1.0-next.22)
59
- * is all v1, and its next compaction rewrites it.
55
+ * - storage format: every record holds an update in the engine's one
56
+ * encoding; a snapshot is compressed in place after it is stored
57
+ * (`#compressLater`) and inflated at start (`inflate`).
60
58
  * - a Step2 serves the STORED state: the engine's pending structs (waiting
61
59
  * for a dependency, never stored) are not served.
62
60
  * - a frame larger than `maxFrameBytes` (32 MiB) goes out as chunks the
@@ -29,6 +29,7 @@
29
29
  * `moveBlocksBetweenRooms(namespace, …)` runs steps 1–3 from the host Worker.
30
30
  */
31
31
  import type { JSONBlock } from '../utils/json.js';
32
+ import { type Unit } from '../crdt/restore.js';
32
33
  /** Where imported blocks land in the destination: under `parent` at `index`. */
33
34
  export type MoveDestination = {
34
35
  parent: string | null;
@@ -105,23 +106,6 @@ export type MoveNamespace = {
105
106
  };
106
107
  /** The default grace period: late edits are forwarded this long after the commit. */
107
108
  export declare const DEFAULT_MOVE_GRACE_DAYS = 30;
108
- /** One display unit: a character (a code point) with its marks, or an inline atom. */
109
- type Unit = {
110
- key: string;
111
- text?: string;
112
- marks?: Record<string, unknown>;
113
- atom?: JSONBlock;
114
- };
115
- /** `content` one unit each, keyed for comparison. */
116
- export declare const unitsOf: (content?: JSONBlock["content"]) => Unit[];
117
- /** Units back to JSON content (adjacent text of equal marks joined). */
118
- export declare const contentOf: (units: readonly Unit[]) => NonNullable<JSONBlock["content"]>;
119
- /** The one changed stretch from `x` to `y`: `x[p, e)` became `mid`. */
120
- export declare const hunk: (x: readonly Unit[], y: readonly Unit[]) => {
121
- p: number;
122
- e: number;
123
- mid: Unit[];
124
- };
125
109
  /**
126
110
  * Merge the source's change (`base` → `src`) into the destination's
127
111
  * (`base` → `dst`), each read as one stretch: disjoint stretches both
@@ -156,4 +140,3 @@ export declare const moveBlocksBetweenRooms: (namespace: MoveNamespace, move: {
156
140
  * cannot reach the destination itself. Returns how many batches went.
157
141
  */
158
142
  export declare const forwardLateEdits: (namespace: MoveNamespace, from: string) => Promise<number>;
159
- export {};