edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -3,9 +3,9 @@
3
3
  import type { Edytor } from '../edytor.svelte.js';
4
4
  import { UNKNOWN_KIND } from '../kinds.js';
5
5
  import { voidChrome, type Block as BlockHandle } from '../block/block.svelte.js';
6
- import type { BlockDefinition, BlockView } from '../plugins.js';
6
+ import type { BlockDefinition, BlockSnippetPayload, BlockView } from '../plugins.js';
7
7
  import type { PreviewCell } from '../surface/cells.js';
8
- import { replacedMark } from '../session/suggestions.svelte.js';
8
+ import { replacedMark, Suggestion } from '../session/suggestions.svelte.js';
9
9
 
10
10
  const reported = new WeakMap<Edytor, Set<string>>();
11
11
 
@@ -42,6 +42,15 @@
42
42
  void: voidChrome
43
43
  });
44
44
 
45
+ /**
46
+ * A child in the flow: a block's id, a block suggestion's preview in the
47
+ * flow among its siblings (in place of a block), or a suggestion's own
48
+ * block, rendered from its preview cell, never registered (`Suggestion`).
49
+ */
50
+ export type Kid = string | Suggestion | PreviewCell;
51
+ const kidKey = (kid: Kid) =>
52
+ typeof kid === 'string' || kid instanceof Suggestion ? kid : kid.id;
53
+
45
54
  /** Tags that take no content: the kind renders the element only. */
46
55
  const VOID_TAGS = new Set(['area', 'br', 'col', 'embed', 'hr', 'img', 'input', 'wbr']);
47
56
 
@@ -82,158 +91,190 @@
82
91
  import { getContext } from 'svelte';
83
92
  import Child from './Block.svelte';
84
93
  import Content from './Content.svelte';
85
- import Suggestion from './Suggestion.svelte';
86
- import { blockDir, ownText } from '../surface/attributes.js';
94
+ import SuggestionPreview from './Suggestion.svelte';
95
+ import { blockDir, ownText, type Owned } from '../surface/attributes.js';
87
96
  import { colorAttributes } from '../block/colors.js';
88
97
 
89
- let {
90
- id,
91
- preview
92
- }: {
93
- id: string;
94
- /** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
95
- preview?: PreviewCell;
96
- } = $props();
98
+ let { kid }: { kid: Kid } = $props();
99
+ const suggestion = $derived(kid instanceof Suggestion ? kid : undefined);
100
+ const preview = $derived(
101
+ typeof kid === 'string' || suggestion ? undefined : (kid as PreviewCell)
102
+ );
103
+ const id = $derived(typeof kid === 'string' ? kid : preview?.id);
97
104
 
98
105
  const edytor = getContext<Edytor>('edytor');
99
106
  // The structure renders from the cell; the snippet receives a view object.
100
- const cell = $derived(preview ?? edytor.cells?.get(id));
101
- const block = $derived(preview ? previewViewOf(preview) : blockViewOf(edytor, id));
102
- /** The suggestions shown before, after and inside this block (none in a preview). */
103
- const shown = $derived(preview ? null : edytor.suggestions.at(id));
104
- /** The children: a preview's own, else the cell's ids. */
107
+ const cell = $derived(preview ?? (id === undefined ? undefined : edytor.cells?.get(id)));
108
+ const block = $derived(
109
+ preview ? previewViewOf(preview) : id === undefined ? undefined : blockViewOf(edytor, id)
110
+ );
111
+ /** The suggestions shown at this block (none in a preview). */
112
+ const shown = $derived(preview || id === undefined ? null : edytor.suggestions.at(id));
113
+ /**
114
+ * The children: a preview's own, else the cell's ids with the suggestions
115
+ * shown around them and inside this block (`suggestions.around`).
116
+ */
105
117
  const kids = $derived(
106
118
  preview
107
119
  ? preview.children
108
- : (edytor.cells?.get(id)?.childIds ?? []).map((child) => ({ id: child }))
120
+ : id === undefined
121
+ ? []
122
+ : edytor.suggestions.around(edytor.cells?.get(id)?.childIds ?? [], id)
109
123
  );
110
124
  const definition = $derived(cell && edytor.definitionOf(cell.type));
111
125
  // The core renders the block element from the definition; the snippet renders inside it.
112
- const element = $derived(definition && elementOf(definition.element ?? 'div', cell?.data, id));
126
+ const element = $derived(
127
+ definition && id !== undefined
128
+ ? elementOf(definition.element ?? 'div', cell?.data, id)
129
+ : undefined
130
+ );
131
+ /** The element's tag: none until the block has a cell and a definition. */
132
+ const tag = $derived((cell && element && element.tag) || undefined);
113
133
  // The element around the block's own text (a heading's `h2`): the core's, so an override keeps it.
114
134
  const contentElement = $derived(
115
- definition && elementOf(definition.contentElement, cell?.data, id)
135
+ definition && id !== undefined
136
+ ? elementOf(definition.contentElement, cell?.data, id)
137
+ : undefined
116
138
  );
117
- /** Its direction from its own text (`blockDir`, bidi): none in a preview. */
118
- const dir = $derived(preview ? null : blockDir(ownText(cell?.runs ?? [])));
119
139
  /**
120
- * `dir` as an attribute, absent when `null`: Svelte writes `dir` as a
121
- * property, which would leave `dir=""` where the table wants none.
140
+ * Registers the block element (one element per block, re-registered when
141
+ * the tag changes) with what it owns: the core's attributes below, not
142
+ * the kind's (`surface/attributes.ts` heals them).
122
143
  */
123
- const direction = (node: HTMLElement, value: 'rtl' | 'ltr' | null) => {
124
- const write = (next: 'rtl' | 'ltr' | null) =>
125
- next ? node.setAttribute('dir', next) : node.removeAttribute('dir');
126
- write(value);
127
- return { update: write };
128
- };
129
- /** Registers the block element: one element per block, re-registered when the tag changes. */
130
- const register = (node: HTMLElement) => block.handle?.attach(node);
144
+ const register = (node: HTMLElement) =>
145
+ block?.handle?.attach(node, (): Owned => {
146
+ const owned: Record<string, string | null> = {};
147
+ for (const [name, value] of Object.entries(attributes ?? {}))
148
+ if (!(name in (element?.attributes ?? {}))) owned[name] = (value as string) ?? null;
149
+ return { strict: false, owned, style: userSelect ? { 'user-select': userSelect } : {} };
150
+ });
151
+ /**
152
+ * Whether the selection holds this block, and whether it touches it: one
153
+ * boolean each, read from the block's own membership (`isSelected`,
154
+ * `isFocused`), so a selection change re-runs only the blocks it enters and
155
+ * leaves (a set's `has` re-runs the reader of every block outside it when
156
+ * its members change: a caret moving to another block re-ran every block's).
157
+ */
158
+ const selected = $derived(!!block?.handle && edytor.selection.isSelected(block.handle));
159
+ const focused = $derived(!!block?.handle && edytor.selection.isFocused(block.handle));
160
+ /**
161
+ * Its colour and background by palette name (`block/colors.ts`), from its
162
+ * data; written below as two properties (a second spread in the object
163
+ * literal takes the engine's slow copy, three times the attributes' cost).
164
+ */
165
+ const colors = $derived(colorAttributes(cell?.data));
131
166
  /** The block element's attributes: the kind's, then the core's. */
132
167
  const attributes = $derived(
133
168
  element && {
134
169
  ...element.attributes,
135
- // Its colour and background by palette name (`block/colors.ts`).
136
- ...colorAttributes(cell?.data),
170
+ 'data-edytor-color': colors['data-edytor-color'],
171
+ 'data-edytor-background': colors['data-edytor-background'],
137
172
  'data-edytor-block': 'true',
138
173
  'data-edytor-id': preview ? undefined : id,
139
174
  'data-edytor-type': cell?.type,
140
175
  'data-edytor-void': definition?.void ? 'true' : undefined,
141
- 'data-edytor-selected':
142
- block.handle && edytor.selection.selectedBlocks.has(block.handle) ? 'true' : undefined,
143
- 'data-edytor-focused':
144
- block.handle && edytor.selection.focusedBlocks.has(block.handle) ? 'true' : undefined,
176
+ 'data-edytor-selected': selected ? 'true' : undefined,
177
+ 'data-edytor-focused': focused ? 'true' : undefined,
145
178
  'data-edytor-suggestion-replaced': shown ? (replacedMark(shown) ?? undefined) : undefined,
146
- contenteditable: definition?.void ? ('false' as const) : undefined
179
+ contenteditable: definition?.void ? ('false' as const) : undefined,
180
+ // Its direction from its own text (`blockDir`, bidi), absent without one: none in a preview.
181
+ dir: (!preview && blockDir(ownText(cell?.runs ?? []))) || undefined
147
182
  }
148
183
  );
184
+ const userSelect = $derived(definition?.void ? 'none' : undefined);
185
+ /** What renders inside the element: the kind's snippet, or a kind this view does not register. */
186
+ const body = $derived(definition?.snippet ?? (definition === UNKNOWN_KIND ? unknown : undefined));
187
+ /** The kind snippet's payload: its view object, its text, its children (none: `null`). */
188
+ const payload = $derived({
189
+ block: block!,
190
+ content: contentElement ? wrappedContent : content,
191
+ children: kids.length ? children : null
192
+ });
149
193
 
150
194
  // The kind `content()` last rendered under — read after each render.
151
195
  let contentRenderedFor: string | undefined;
152
- $effect(() => {
153
- if (DEV && block.handle) checkRendersContent(block.handle, contentRenderedFor === cell?.type);
154
- });
196
+ // Development only: production keeps no effect per block for it.
197
+ if (DEV)
198
+ $effect(() => {
199
+ if (block?.handle) checkRendersContent(block.handle, contentRenderedFor === cell?.type);
200
+ });
155
201
  </script>
156
202
 
157
203
  <!--
158
- -->{#snippet text()}<!--
159
- --><Content
160
- {id}
204
+ The render places as few anchors as it can (`render.markers`, counted by
205
+ `render-markers.test.tsx`): Svelte leaves an empty comment or text node for
206
+ each block, dynamic element, component or snippet it places, except a
207
+ static component or snippet that is the only thing its fragment renders,
208
+ and the browser walks them all after each keystroke. So the bundled kinds'
209
+ block tags are static elements (a dynamic element leaves two markers
210
+ more), the text is a static component of the `content` snippet, and the
211
+ children are one `each` of static components (a suggestion in the flow is
212
+ one of them). The comments between the top-level nodes keep whitespace out
213
+ of the markup.
214
+ -->
215
+ {#snippet content()}
216
+ <Content
217
+ id={id ?? ''}
161
218
  preview={preview?.runs}
162
219
  onrender={DEV ? () => (contentRenderedFor = cell?.type) : undefined}
163
- /><!--
164
- -->{/snippet}<!--
165
- -->{#snippet content()}<!--
166
- -->{#if contentElement}<!--
167
- --><svelte:element
168
- this={contentElement.tag}
169
- {...contentElement.attributes}>{@render text()}</svelte:element
170
- ><!--
171
- -->{:else}<!--
172
- -->{@render text()}<!--
173
- -->{/if}<!--
174
- -->{/snippet}<!--
175
- -->{#snippet children()}<!--
176
- --->{#each kids as child (child.id)}<!--
177
- --><Child
178
- id={child.id}
179
- preview={preview && (child as PreviewCell)}
180
- /><!--
181
- -->{/each}<!--
182
- -->{#each shown?.inside ?? [] as suggestion (suggestion.id)}<!--
183
- --><Suggestion
184
- {suggestion}
185
- /><!--
186
- -->{/each}<!--
187
- -->{/snippet}<!--
188
- -->{#each shown?.before ?? [] as suggestion (suggestion.id)}<!--
189
- --><Suggestion
190
- {suggestion}
191
- /><!--
192
- -->{/each}<!--
193
- -->{#if cell && definition && element}<!--
194
- A void tag (a divider's `hr`) takes no body: the element alone.
195
- -->{#if VOID_TAGS.has(element.tag)}<!--
196
- --><svelte:element
197
- this={element.tag}
198
- {...attributes}
199
- style:user-select={definition.void ? 'none' : undefined}
200
- use:register
201
- use:direction={dir}
202
- /><!--
203
- -->{:else}<!--
204
- --><svelte:element
205
- this={element.tag}
206
- {...attributes}
207
- style:user-select={definition.void ? 'none' : undefined}
208
- use:register
209
- use:direction={dir}
210
- ><!--
211
- -->{#if definition.snippet}<!--
212
- -->{@render definition.snippet({
213
- block,
214
- content,
215
- children: kids.length || shown?.inside.length ? children : null
216
- })}<!--
217
- -->{:else if definition === UNKNOWN_KIND}<!--
218
- A kind this view does not register: a plain block, its text and children.
219
- -->{@render content()}{#if kids.length || shown?.inside.length}<div
220
- data-edytor-children
221
- >
222
- {@render children()}
223
- </div>{/if}<!--
224
- -->{/if}<!--
225
- --></svelte:element
226
- ><!--
227
- -->{/if}<!--
228
- -->{/if}<!--
229
- -->{#each shown?.after ?? [] as suggestion (suggestion.id)}<!--
230
- --><Suggestion
231
- {suggestion}
232
- /><!--
233
- -->{/each}
234
-
235
- <!--
236
- -->
220
+ />
221
+ {/snippet}<!--
222
+ The kind's `contentElement` (a heading's `h2`) around the text.
223
+ -->{#snippet wrappedContent()}
224
+ <svelte:element this={contentElement?.tag} {...contentElement?.attributes}>
225
+ <Content
226
+ id={id ?? ''}
227
+ preview={preview?.runs}
228
+ onrender={DEV ? () => (contentRenderedFor = cell?.type) : undefined}
229
+ />
230
+ </svelte:element>
231
+ {/snippet}<!--
232
+ -->{#snippet children()}
233
+ {#each kids as kid (kidKey(kid))}
234
+ <Child {kid} />
235
+ {/each}
236
+ {/snippet}<!--
237
+ A kind this view does not register: a plain block, its text and children.
238
+ -->{#snippet unknown({
239
+ content,
240
+ children
241
+ }: BlockSnippetPayload)}
242
+ {@render content()}<!--
243
+ -->{#if children}
244
+ <div data-edytor-children>
245
+ {@render children()}
246
+ </div>
247
+ {/if}
248
+ {/snippet}<!--
249
+ The block element: the bundled kinds' tags as static elements, any other
250
+ through `svelte:element` (a void tag, a divider's `hr`, takes no body).
251
+ -->{#if suggestion}
252
+ <SuggestionPreview {suggestion} />
253
+ {:else if tag === 'div'}
254
+ <div {...attributes} style:user-select={userSelect} use:register>
255
+ {@render body?.(payload)}
256
+ </div>
257
+ {:else if tag === 'li'}
258
+ <li {...attributes} style:user-select={userSelect} use:register>
259
+ {@render body?.(payload)}
260
+ </li>
261
+ {:else if tag === 'details'}
262
+ <details {...attributes} style:user-select={userSelect} use:register>
263
+ {@render body?.(payload)}
264
+ </details>
265
+ {:else if tag === 'figure'}
266
+ <figure {...attributes} style:user-select={userSelect} use:register>
267
+ {@render body?.(payload)}
268
+ </figure>
269
+ {:else if tag === 'hr'}
270
+ <hr {...attributes} style:user-select={userSelect} use:register />
271
+ {:else if tag && VOID_TAGS.has(tag)}
272
+ <svelte:element this={tag} {...attributes} style:user-select={userSelect} use:register />
273
+ {:else if tag}
274
+ <svelte:element this={tag} {...attributes} style:user-select={userSelect} use:register>
275
+ {@render body?.(payload)}
276
+ </svelte:element>
277
+ {/if}
237
278
 
238
279
  <style>
239
280
  /*
@@ -1,8 +1,13 @@
1
1
  import type { PreviewCell } from '../surface/cells.js';
2
+ import { Suggestion } from '../session/suggestions.svelte.js';
3
+ /**
4
+ * A child in the flow: a block's id, a block suggestion's preview in the
5
+ * flow among its siblings (in place of a block), or a suggestion's own
6
+ * block, rendered from its preview cell, never registered (`Suggestion`).
7
+ */
8
+ export type Kid = string | Suggestion | PreviewCell;
2
9
  type $$ComponentProps = {
3
- id: string;
4
- /** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
5
- preview?: PreviewCell;
10
+ kid: Kid;
6
11
  };
7
12
  declare const Block: import("svelte").Component<$$ComponentProps, {}, "">;
8
13
  type Block = ReturnType<typeof Block>;
@@ -2,10 +2,13 @@
2
2
  import { getContext } from 'svelte';
3
3
  import type { Edytor } from '../edytor.svelte.js';
4
4
  import {
5
+ START,
5
6
  partsOf,
6
7
  segmentDeltas,
8
+ type AtomPart,
7
9
  type Cell,
8
10
  type Part,
11
+ type RenderDelta,
9
12
  type Segment
10
13
  } from '../surface/cells.js';
11
14
  import type { ContentRun } from '../crdt/index.js';
@@ -32,11 +35,6 @@
32
35
  const cell = $derived(preview ? undefined : edytor.cells?.get(id));
33
36
  /** The cell's segments and atoms — the frozen list while the IME pin holds this cell. */
34
37
  const parts = $derived(cell ? edytor.pin.parts(cell) : []);
35
- /** Each part with its text ordinal (its text handle's position). */
36
- const items = $derived.by(() => {
37
- let ordinal = 0;
38
- return parts.map((part) => ({ part, ordinal: part.kind === 'text' ? ordinal++ : -1 }));
39
- });
40
38
  /** Bumped only by the observer's repair of foreign damage: re-creates the text elements. */
41
39
  const epoch = $derived(edytor.cells?.epoch(id) ?? 0);
42
40
  const type = $derived(cell?.type ?? edytor.cells?.get(id)?.type);
@@ -44,15 +42,16 @@
44
42
  // The placeholder attribute: withheld in the block a composition is in.
45
43
  const placeholder = $derived(edytor.placeholderAt(id));
46
44
 
45
+ /** An empty content's one text (`partsOf`: a content starts with a text). */
46
+ const EMPTY: Segment = { kind: 'text', key: START, text: '', runs: [] };
47
+
48
+ /** Whether this view renders an atom of `part`'s kind (its record has a snippet). */
49
+ const rendersAtom = (part: AtomPart) => Boolean(edytor.inlineBlocks.get(part.type)?.snippet);
50
+
47
51
  /** Segments are keyed causally (the preceding atom's id, or `start`), never by ordinal. */
48
- const keyOf = ({ part }: { part: Part }) =>
49
- part.kind === 'text' ? `s:${part.key}:${epoch}` : `a:${part.id}`;
52
+ const keyOf = (part: Part) => (part.kind === 'text' ? `s:${part.key}:${epoch}` : `a:${part.id}`);
50
53
 
51
- const view = (segment: Segment) =>
52
- edytor.pin.render(id, segment.key) ?? {
53
- deltas: segmentDeltas(cell!, segment, transform),
54
- empty: segment.text === ''
55
- };
54
+ const view = (segment: Segment) => edytor.pin.shown(cell!, segment, transform);
56
55
 
57
56
  /** A suggestion's text after this block's (`end`): its first block's content. */
58
57
  const ghosts = $derived(
@@ -73,6 +72,55 @@
73
72
  ),
74
73
  empty: !segment.text
75
74
  });
75
+
76
+ /** The parts this content renders: a preview's (session parts, no handle), else the cell's. */
77
+ const own = $derived(preview ? partsOf(preview) : parts);
78
+ /**
79
+ * The first text, before any atom (its key is always `start`): a static
80
+ * element of the content, re-created only by an epoch bump. The rest is
81
+ * one keyed list after it: two anchors for the whole content
82
+ * (`render.markers`).
83
+ */
84
+ const first = $derived((own[0]?.kind === 'text' ? own[0] : undefined) ?? EMPTY);
85
+ const firstShown = $derived(preview ? ghost(first) : view(first));
86
+ /**
87
+ * Its handle, looked up again with each segment list the cell renders (a
88
+ * keyed entry's is, with its entry): the handle can change while the
89
+ * element stays (the virtual paragraph becoming a real block).
90
+ */
91
+ const firstText = $derived.by(() => {
92
+ void parts;
93
+ return preview ? undefined : edytor.textAt(id, 0);
94
+ });
95
+
96
+ type Entry =
97
+ | { key: string; kind: 'text'; part: Segment; ordinal: number }
98
+ | { key: string; kind: 'rest'; deltas: readonly RenderDelta[] }
99
+ | { key: string; kind: 'atom'; part: AtomPart }
100
+ | { key: string; kind: 'ghost'; parts: readonly Part[] };
101
+ /**
102
+ * What follows the first text, in order: the atoms and texts (with their
103
+ * text ordinal, their handle's position), each text followed by the rest
104
+ * a live composition merged into it (`pin.rest`), then the suggestions'
105
+ * text after the block's.
106
+ */
107
+ const entries = $derived.by(() => {
108
+ const list: Entry[] = [];
109
+ let ordinal = 0;
110
+ for (const part of own) {
111
+ if (part.kind !== 'text') {
112
+ // An atom whose kind renders nothing (no snippet in this view) takes no place.
113
+ if (rendersAtom(part)) list.push({ key: keyOf(part), kind: 'atom', part });
114
+ continue;
115
+ }
116
+ if (ordinal) list.push({ key: keyOf(part), kind: 'text', part, ordinal });
117
+ ordinal++;
118
+ const rest = preview ? [] : edytor.pin.rest(id, part.key);
119
+ if (rest.length) list.push({ key: `r:${part.key}`, kind: 'rest', deltas: rest });
120
+ }
121
+ ghosts.forEach((parts, index) => list.push({ key: `g:${index}`, kind: 'ghost', parts }));
122
+ return list;
123
+ });
76
124
  </script>
77
125
 
78
126
  <!--
@@ -89,7 +137,7 @@
89
137
  empty={shown.empty}
90
138
  newline={part.text.endsWith('\n')}
91
139
  /><!--
92
- -->{:else}<!--
140
+ -->{:else if rendersAtom(part)}<!--
93
141
  --><RenderInlineBlock
94
142
  block={undefined}
95
143
  {part}
@@ -97,44 +145,43 @@
97
145
  -->{/if}<!--
98
146
  -->{/each}<!--
99
147
  -->{/snippet}<!--
100
- -->{#if preview}<!--
101
- -->{@render session(
102
- partsOf(preview)
103
- )}<!--
104
- -->{/if}<!--
105
- -->{#each items as item (keyOf(item))}<!--
106
- -->{#if item.part.kind === 'text'}<!--
148
+ -->{#key epoch}<RenderText
149
+ text={firstText}
150
+ deltas={firstShown.deltas}
151
+ empty={firstShown.empty}
152
+ newline={first.text.endsWith('\n')}
153
+ placeholder={preview ? null : placeholder}
154
+ />{/key}<!--
155
+ -->{#each entries as entry (entry.key)}<!--
156
+ -->{#if entry.kind === 'text'}<!--
107
157
  -->{@const shown =
108
- view(item.part)}<!--
109
- -->{@const rest = edytor.pin.rest(id, item.part.key)}<!--
158
+ preview ? ghost(entry.part) : view(entry.part)}<!--
110
159
  --><RenderText
111
- text={edytor.textAt(id, item.ordinal)}
160
+ text={preview ? undefined : edytor.textAt(id, entry.ordinal)}
112
161
  deltas={shown.deltas}
113
162
  empty={shown.empty}
114
- newline={item.part.text.endsWith('\n')}
115
- {placeholder}
163
+ newline={entry.part.text.endsWith('\n')}
164
+ placeholder={preview ? null : placeholder}
116
165
  /><!--
117
- -->{#if rest.length}<!--
118
- --><RenderText
119
- text={undefined}
120
- deltas={rest}
121
- empty={false}
122
- newline={false}
123
- rest
124
- /><!--
125
- -->{/if}<!--
126
- -->{:else}<!--
166
+ -->{:else if entry.kind === 'atom'}<!--
127
167
  --><RenderInlineBlock
128
- block={edytor.atomAt(id, item.part.id)}
129
- part={item.part}
168
+ block={preview ? undefined : edytor.atomAt(id, entry.part.id)}
169
+ part={entry.part}
130
170
  /><!--
131
- -->{/if}<!--
132
- -->{/each}<!--
133
- -->{#each ghosts as parts, index (index)}<!--
171
+ -->{:else if entry.kind === 'rest'}<!--
172
+ --><RenderText
173
+ text={undefined}
174
+ deltas={entry.deltas}
175
+ empty={false}
176
+ newline={false}
177
+ rest
178
+ /><!--
179
+ -->{:else}<!--
134
180
  --><span
135
- data-edytor-text-suggestion
136
- contentEditable="false"
137
- style="user-select: none; pointer-events: none">{@render session(parts)}</span
138
- ><!--
181
+ data-edytor-text-suggestion
182
+ contentEditable="false"
183
+ style="user-select: none; pointer-events: none">{@render session(entry.parts)}</span
184
+ ><!--
185
+ -->{/if}<!--
139
186
  -->{/each}<!--
140
187
  -->
@@ -0,0 +1,46 @@
1
+ <script lang="ts">
2
+ import { getContext } from 'svelte';
3
+ import type { Edytor } from '../edytor.svelte.js';
4
+ import type { Text } from '../text/text.svelte.js';
5
+ import type { RenderDelta } from '../surface/cells.js';
6
+ import Mark, { customAt, registerMark } from './Mark.svelte';
7
+ import CustomMark from './CustomMark.svelte';
8
+
9
+ /**
10
+ * Mark `index` of `delta` drawn by its record's snippet, inside the core's
11
+ * `<span data-edytor-mark>`: the snippet's `content()` is the marks after
12
+ * it, then the text.
13
+ */
14
+ let {
15
+ delta,
16
+ text,
17
+ index
18
+ }: {
19
+ text: Text | undefined;
20
+ delta: RenderDelta;
21
+ index: number;
22
+ } = $props();
23
+
24
+ const edytor = getContext<Edytor>('edytor');
25
+ const mark = $derived(delta.marks[index]);
26
+ const definition = $derived(edytor.marks.get(mark?.[0] ?? ''));
27
+ /** Another mark inside this one. */
28
+ const inner = $derived(index + 1 < delta.marks.length);
29
+ /** The text, as `content()`'s own text node when no mark is inside. */
30
+ const own = $derived(inner ? '' : delta.text);
31
+ const register = (node: HTMLElement) => registerMark(edytor, text, node, mark?.[0]);
32
+ </script>
33
+
34
+ {#snippet content()}{own}{#if !inner}{:else if customAt(edytor, delta, index + 1)}<CustomMark
35
+ index={index + 1}
36
+ {delta}
37
+ {text}
38
+ />{:else}<Mark index={index + 1} {delta} {text} />{/if}{/snippet}
39
+
40
+ <!-- The core's element around a custom snippet: a static `span` (no anchor of its own). -->
41
+ <span
42
+ data-edytor-mark={mark?.[0]}
43
+ data-edytor-mark-void={definition?.void ? '' : undefined}
44
+ contenteditable={definition?.void ? 'false' : undefined}
45
+ use:register>{@render definition?.snippet?.({ content, mark: mark?.[1], text: text! })}</span
46
+ >
@@ -0,0 +1,11 @@
1
+ import type { Text } from '../text/text.svelte.js';
2
+ import type { RenderDelta } from '../surface/cells.js';
3
+ import CustomMark from './CustomMark.svelte';
4
+ type $$ComponentProps = {
5
+ text: Text | undefined;
6
+ delta: RenderDelta;
7
+ index: number;
8
+ };
9
+ declare const CustomMark: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type CustomMark = ReturnType<typeof CustomMark>;
11
+ export default CustomMark;