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
@@ -0,0 +1,25 @@
1
+ import type { Component, Snippet } from 'svelte';
2
+ import type { Block } from '../../block/block.svelte.js';
3
+ import type { Edytor } from '../../edytor.svelte.js';
4
+ import type { MediaKind } from './media.js';
5
+ import type { EmptyView, MediaEmptyController } from './empty.svelte.js';
6
+ /** What an empty image or media block renders in its view: the media empty plugin's host and snippet. */
7
+ type EmptyHost = {
8
+ Host: Component<{
9
+ block: Block | undefined;
10
+ kind: MediaKind | 'image';
11
+ viewOf: (edytor: Edytor | undefined) => EmptyView | undefined;
12
+ empty: Snippet<[MediaEmptyController]>;
13
+ }>;
14
+ empty: Snippet<[MediaEmptyController]>;
15
+ };
16
+ /** Each view's empty-block chrome (the first media empty plugin listed claims it). */
17
+ export declare const emptyHosts: WeakMap<object, EmptyHost>;
18
+ type $$ComponentProps = {
19
+ block: Block | undefined;
20
+ kind: MediaKind | 'image';
21
+ viewOf: (edytor: Edytor | undefined) => EmptyView | undefined;
22
+ };
23
+ declare const EmptySlot: Component<$$ComponentProps, {}, "">;
24
+ type EmptySlot = ReturnType<typeof EmptySlot>;
25
+ export default EmptySlot;
@@ -1,27 +1,18 @@
1
1
  <script module lang="ts">
2
- import type { Plugin, BlockSnippetPayload } from '../../plugins.js';
3
- import type { Block } from '../../block/block.svelte.js';
4
- import type { Edytor } from '../../edytor.svelte.js';
5
- import MediaEmpty from './MediaEmpty.svelte';
6
- import { mediaKinds } from '../../crdt/semantics.js';
7
- import { keywordsOf, labelsWith } from '../../labels.js';
8
- import {
9
- escapeHtml,
10
- fileNameOf,
11
- mediaLabels,
12
- safeMediaSrc,
13
- mediaUploads,
14
- type MediaPluginOptions
15
- } from './media.js';
2
+ import type { Snippet } from 'svelte';
3
+ import type { Plugin } from '../../plugins.js';
4
+ import { escapeHtml, fileNameOf, safeMediaSrc, type FileRowPayload } from './media.js';
5
+ import { sourcePlugin } from './SourceBlock.svelte';
16
6
 
17
- const uploadOf = new WeakMap<Edytor, MediaPluginOptions['upload']>();
7
+ export type { FileRowPayload };
18
8
 
19
- /** Store a file's source, name and size on `block` as one data write; answers whether it did. */
20
- const attach = (block: Block | undefined, value: string, name?: string, size?: number) => {
21
- const src = safeMediaSrc(value);
22
- if (!block || !src) return false;
23
- block.setData({ src, name: name || fileNameOf(src), ...(size !== undefined ? { size } : {}) });
24
- return true;
9
+ export type FilePluginOptions = {
10
+ /**
11
+ * A file's row once it has a source (default: Notion's, a paperclip,
12
+ * its name and size): `<a href={row.src} {@attach row.link}>`, which
13
+ * downloads the file. The first file plugin listed in a view gives its row.
14
+ */
15
+ row?: Snippet<[FileRowPayload]>;
25
16
  };
26
17
 
27
18
  /**
@@ -29,95 +20,28 @@
29
20
  * linked), shown as its name and size, linking to the file, with an
30
21
  * editable caption. Void: its only text is the caption.
31
22
  */
32
- export const createFilePlugin =
33
- (options: MediaPluginOptions = {}): Plugin =>
34
- (edytor) => {
35
- // First wins, as for the kind: a second listing never replaces it.
36
- const first = !!edytor && !uploadOf.has(edytor);
37
- if (first) uploadOf.set(edytor, options.upload);
38
- const onPaste = first ? mediaUploads(edytor, 'file', options.upload) : undefined;
39
- const labels = labelsWith('media', options.labels);
40
- mediaLabels.file.claim(edytor, labels);
41
- return {
42
- ...(onPaste ? { onPaste } : {}),
43
- blocks: {
44
- file: {
45
- ...mediaKinds.file,
46
- snippet: file,
47
- element: 'figure',
48
- presets: [
49
- {
50
- label: labels.file.label,
51
- icon: '📎',
52
- keywords: keywordsOf(
53
- 'block.file',
54
- ['attachment', 'upload', 'pdf', 'document'],
55
- options.keywords
56
- ),
57
- group: 'Media'
58
- }
59
- ],
60
- html: (block, caption) => {
61
- const src = safeMediaSrc(block.data?.src);
62
- const name = String(block.data?.name || (src && fileNameOf(src)) || '');
63
- const link = src ? `<a href="${escapeHtml(src)}">${escapeHtml(name)}</a>` : '';
64
- return `<figure data-edytor-file>${link}<figcaption>${caption}</figcaption></figure>`;
65
- },
66
- plain: (block, caption) =>
67
- [safeMediaSrc(block.data?.src), caption].filter(Boolean).join('\n'),
68
- // Its own export: a `figure[data-edytor-file]` holding the link.
69
- parse: (el) => {
70
- if (el.localName !== 'figure' || !el.hasAttribute('data-edytor-file')) return;
71
- const anchor = el.querySelector('a[href]');
72
- const src = safeMediaSrc(anchor?.getAttribute('href'));
73
- const name = anchor?.textContent?.trim().slice(0, 300);
74
- return src ? { src, name: name || fileNameOf(src) } : undefined;
75
- }
76
- }
23
+ export const createFilePlugin = (options: FilePluginOptions = {}): Plugin =>
24
+ sourcePlugin(
25
+ 'file',
26
+ ['attachment', 'upload', 'pdf', 'document'],
27
+ {
28
+ html: (block, caption) => {
29
+ const src = safeMediaSrc(block.data?.src);
30
+ const name = String(block.data?.name || (src && fileNameOf(src)) || '');
31
+ const link = src ? `<a href="${escapeHtml(src)}">${escapeHtml(name)}</a>` : '';
32
+ return `<figure data-edytor-file>${link}<figcaption>${caption}</figcaption></figure>`;
33
+ },
34
+ plain: (block, caption) =>
35
+ [safeMediaSrc(block.data?.src), caption].filter(Boolean).join('\n'),
36
+ // Its own export: a `figure[data-edytor-file]` holding the link.
37
+ parse: (el) => {
38
+ if (el.localName !== 'figure' || !el.hasAttribute('data-edytor-file')) return;
39
+ const anchor = el.querySelector('a[href]');
40
+ const src = safeMediaSrc(anchor?.getAttribute('href'));
41
+ const name = anchor?.textContent?.trim().slice(0, 300);
42
+ return src ? { src, name: name || fileNameOf(src) } : undefined;
77
43
  }
78
- };
79
- };
80
-
81
- /** The file block, links only. */
82
- export const filePlugin = createFilePlugin();
44
+ },
45
+ { row: options.row }
46
+ );
83
47
  </script>
84
-
85
- {#snippet file({ block, content }: BlockSnippetPayload<Record<string, unknown>>)}
86
- {@const src = safeMediaSrc(block.data.src)}
87
- {#if src}
88
- {@const name =
89
- typeof block.data.name === 'string' && block.data.name ? block.data.name : fileNameOf(src)}
90
- {@const size =
91
- typeof block.data.size === 'number'
92
- ? mediaLabels.file.of(block.handle?.edytor).fileSize(block.data.size)
93
- : ''}
94
- <div use:block.void data-edytor-file>
95
- <a
96
- href={src}
97
- target="_blank"
98
- rel="noopener noreferrer nofollow"
99
- download={name}
100
- draggable="false"
101
- >
102
- <span aria-hidden="true">📎</span>
103
- <span data-edytor-file-name>{name}</span>
104
- {#if size}<span data-edytor-file-size>{size}</span>{/if}
105
- </a>
106
- </div>
107
- {:else}
108
- {@const upload = block.handle && uploadOf.get(block.handle.edytor)}
109
- <div use:block.void data-edytor-media-empty>
110
- <MediaEmpty
111
- block={block.handle}
112
- kind="file"
113
- icon="📎"
114
- {upload}
115
- link={(value) => attach(block.handle, value)}
116
- file={(picked, src) => attach(block.handle, src, picked.name, picked.size)}
117
- />
118
- </div>
119
- {/if}
120
- <!-- The core renders the kind's <figure> around this markup. -->
121
- <!-- svelte-ignore a11y_figcaption_parent -->
122
- <figcaption>{@render content()}</figcaption>
123
- {/snippet}
@@ -1,13 +1,21 @@
1
+ import type { Snippet } from 'svelte';
1
2
  import type { Plugin } from '../../plugins.js';
2
- import { type MediaPluginOptions } from './media.js';
3
+ import { type FileRowPayload } from './media.js';
4
+ export type { FileRowPayload };
5
+ export type FilePluginOptions = {
6
+ /**
7
+ * A file's row once it has a source (default: Notion's, a paperclip,
8
+ * its name and size): `<a href={row.src} {@attach row.link}>`, which
9
+ * downloads the file. The first file plugin listed in a view gives its row.
10
+ */
11
+ row?: Snippet<[FileRowPayload]>;
12
+ };
3
13
  /**
4
14
  * Notion's file block: an attachment, uploaded through `upload` (or
5
15
  * linked), shown as its name and size, linking to the file, with an
6
16
  * editable caption. Void: its only text is the caption.
7
17
  */
8
- export declare const createFilePlugin: (options?: MediaPluginOptions) => Plugin;
9
- /** The file block, links only. */
10
- export declare const filePlugin: Plugin;
18
+ export declare const createFilePlugin: (options?: FilePluginOptions) => Plugin;
11
19
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
12
20
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
13
21
  $$bindings?: Bindings;
@@ -1,139 +1,82 @@
1
+ <script lang="ts" module>
2
+ import type { Snippet } from 'svelte';
3
+ import type { Plugin } from '../../plugins.js';
4
+ import { emptyHosts } from './EmptySlot.svelte';
5
+ import Self from './MediaEmpty.svelte';
6
+
7
+ export type MediaEmptyOptions = {
8
+ /**
9
+ * An empty image's or media block's markup and its words (Notion's "Add
10
+ * an image", "Embed a video"… and their link panel, a pasted or dropped
11
+ * file's upload, or a readonly view's placeholder): it receives the
12
+ * block's `MediaEmptyController` (`kind` says which: image, embed,
13
+ * bookmark, file, video, audio).
14
+ */
15
+ empty: Snippet<[MediaEmptyController]>;
16
+ };
17
+
18
+ /**
19
+ * The empty image and media blocks' chrome: your `empty` snippet for each
20
+ * of them (without the plugin, an empty block shows nothing). The first
21
+ * listed claims the view.
22
+ */
23
+ export const createMediaEmptyPlugin =
24
+ ({ empty }: MediaEmptyOptions): Plugin =>
25
+ (edytor) => {
26
+ if (edytor && !emptyHosts.has(edytor)) emptyHosts.set(edytor, { Host: Self, empty });
27
+ return {};
28
+ };
29
+ </script>
30
+
1
31
  <script lang="ts">
2
- import { getContext, untrack } from 'svelte';
32
+ import { untrack } from 'svelte';
3
33
  import type { Block } from '../../block/block.svelte.js';
4
34
  import type { Edytor } from '../../edytor.svelte.js';
5
- import { mediaLabels, type MediaKind } from './media.js';
6
- import { fileUploads, type Uploader } from '../uploads.svelte.js';
35
+ import type { MediaKind } from './media.js';
36
+ import { MediaEmptyController, type EmptyView } from './empty.svelte.js';
37
+ import { fileUploads } from '../uploads.svelte.js';
7
38
 
8
39
  /**
9
- * A media block's empty state (the image's pattern, Notion): an "Add …"
10
- * button, then a link field (and Upload with an `upload`). `link` answers
11
- * whether it took the link; `file` stores an uploaded file's URL (an
12
- * upload fills `src`, and only a block still empty when it lands). A
13
- * readonly view, or a suggestion's preview (no `block`), shows a passive
14
- * placeholder: no control may run `upload` (or a bookmark's `unfurl`) for
15
- * a write the view would refuse. A pasted or dropped file (`media.files`)
16
- * shows its upload and progress here; a failed one opens the panel with
17
- * its error; data answered while the block was not shown fills it as soon
18
- * as it shows.
40
+ * An image's or a media block's empty state: a `MediaEmptyController`,
41
+ * which the view's `empty` snippet draws. The kind in the
42
+ * block's view (`viewOf`) stores the link, or an uploaded file's URL
43
+ * (only on a block still empty when it lands). A readonly view, or a
44
+ * suggestion's preview (no `block`), may not write: no control may run
45
+ * `upload`. A pasted or dropped file shows its upload (`pending`); a
46
+ * failed one opens the panel with its error; data answered while the
47
+ * block was not shown fills it as soon as it shows.
19
48
  */
20
49
  let {
21
50
  block,
22
51
  kind,
23
- icon,
24
- accept,
25
- upload,
26
- link,
27
- file
52
+ viewOf,
53
+ empty
28
54
  }: {
29
55
  block: Block | undefined;
30
- /** Whose words it shows, in the labels of the view rendering it (a suggestion's preview included). */
31
- kind: MediaKind;
32
- icon: string;
33
- /** The file picker's `accept`. */
34
- accept?: string;
35
- upload?: Uploader;
36
- link: (value: string) => boolean;
37
- file?: (file: File, src: string) => boolean;
56
+ kind: MediaKind | 'image';
57
+ /** The kind in a view: how it stores a source. */
58
+ viewOf: (edytor: Edytor | undefined) => EmptyView | undefined;
59
+ /** The view's `empty` snippet. */
60
+ empty: Snippet<[MediaEmptyController]>;
38
61
  } = $props();
39
- /** The view rendering it (a suggestion's preview included): whose labels it shows. */
40
- const view = getContext<Edytor>('edytor');
41
- const labels = $derived(mediaLabels[kind].of(view));
42
- const words = $derived(labels[kind]);
43
- /** The button and placeholder text ("Embed a link"); the file's names its upload. */
44
- const label = $derived(upload && 'addOrUpload' in words ? words.addOrUpload : words.add);
45
- const { placeholder, submit, invalid } = $derived(words);
62
+ const panel = untrack(() => new MediaEmptyController(block, kind, viewOf(block?.edytor)));
46
63
  /** The upload of a pasted or dropped file into this block, if any. */
47
- const uploads = $derived(block ? fileUploads(block.edytor) : undefined);
48
- const pending = $derived(block ? uploads?.of(block.id) : undefined);
64
+ const pending = $derived(panel.pending);
49
65
  // After the flush that shows the block: never inside the transaction that showed it.
50
66
  $effect(() => {
51
67
  if (pending?.status === 'landed' && block && !block.edytor.readonly) {
52
68
  const id = block.id;
53
- untrack(() => uploads?.fill(id));
69
+ untrack(() => fileUploads(block.edytor)?.fill(id));
54
70
  }
55
71
  });
56
- let draft = $state('');
57
- let open = $state(false);
58
- let failed = $state<'invalid' | 'upload' | false>(false);
59
72
  // The panel opens on a failed upload, with its error; the user closes it.
60
73
  $effect(() => {
61
74
  if (pending?.status === 'failed')
62
75
  untrack(() => {
63
- open = true;
64
- failed = 'upload';
76
+ panel.open = true;
77
+ panel.failed = 'upload';
65
78
  });
66
79
  });
67
-
68
- const embed = (value: string) => {
69
- failed = link(value) ? false : 'invalid';
70
- if (!failed && block) uploads?.clear(block.id);
71
- };
72
80
  </script>
73
81
 
74
- {#if pending?.status === 'uploading'}
75
- <div data-edytor-media-uploading role="status">
76
- <span aria-hidden="true">{icon}</span>
77
- <progress value={pending.progress ?? undefined} max="1"></progress>
78
- {labels.uploading}
79
- </div>
80
- {:else if !block || block.edytor.readonly}
81
- <div data-edytor-media-placeholder><span aria-hidden="true">{icon}</span> {label}</div>
82
- {:else}
83
- <button
84
- type="button"
85
- data-edytor-media-add
86
- onmousedown={(event) => event.preventDefault()}
87
- onclick={() => (open = !open)}><span aria-hidden="true">{icon}</span> {label}</button
88
- >
89
- {#if open}
90
- <div data-edytor-media-form>
91
- <input
92
- {placeholder}
93
- aria-label={placeholder}
94
- bind:value={draft}
95
- onkeydown={(event) => {
96
- if (event.key === 'Enter') {
97
- event.preventDefault();
98
- embed(draft);
99
- }
100
- }}
101
- />
102
- <button type="button" onclick={() => embed(draft)}>{submit}</button>
103
- {#if upload}
104
- <label data-edytor-media-upload>
105
- {labels.upload}
106
- <input
107
- type="file"
108
- {accept}
109
- hidden
110
- onchange={async (event) => {
111
- const picked = event.currentTarget.files?.[0];
112
- if (!picked || !block || block.edytor.readonly) return;
113
- const { edytor, id, type } = block;
114
- let src: string;
115
- try {
116
- src = await upload(picked, { progress: () => {} });
117
- } catch {
118
- failed = 'upload';
119
- return;
120
- }
121
- // Write only to the block as it was picked from: still in the
122
- // tree, of its kind and empty (a peer may have set a source, or
123
- // deleted it, while the upload ran).
124
- const live = edytor.idToBlock.get(id);
125
- if (!live?.isInTree || live.type !== type || edytor.readonly) return;
126
- if (edytor.facade.blockDataOf(id)?.src !== undefined) return;
127
- failed = (file ? file(picked, src) : link(src)) ? false : 'invalid';
128
- }}
129
- />
130
- </label>
131
- {/if}
132
- {#if failed === 'upload'}
133
- <small data-edytor-media-error="upload">{labels.uploadFailed}</small>
134
- {:else if failed}
135
- <small data-edytor-media-error="invalid">{invalid}</small>
136
- {/if}
137
- </div>
138
- {/if}
139
- {/if}
82
+ {@render empty(panel)}
@@ -1,16 +1,32 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { Plugin } from '../../plugins.js';
3
+ export type MediaEmptyOptions = {
4
+ /**
5
+ * An empty image's or media block's markup and its words (Notion's "Add
6
+ * an image", "Embed a video"… and their link panel, a pasted or dropped
7
+ * file's upload, or a readonly view's placeholder): it receives the
8
+ * block's `MediaEmptyController` (`kind` says which: image, embed,
9
+ * bookmark, file, video, audio).
10
+ */
11
+ empty: Snippet<[MediaEmptyController]>;
12
+ };
13
+ /**
14
+ * The empty image and media blocks' chrome: your `empty` snippet for each
15
+ * of them (without the plugin, an empty block shows nothing). The first
16
+ * listed claims the view.
17
+ */
18
+ export declare const createMediaEmptyPlugin: ({ empty }: MediaEmptyOptions) => Plugin;
1
19
  import type { Block } from '../../block/block.svelte.js';
2
- import { type MediaKind } from './media.js';
3
- import { type Uploader } from '../uploads.svelte.js';
20
+ import type { Edytor } from '../../edytor.svelte.js';
21
+ import type { MediaKind } from './media.js';
22
+ import { MediaEmptyController, type EmptyView } from './empty.svelte.js';
4
23
  type $$ComponentProps = {
5
24
  block: Block | undefined;
6
- /** Whose words it shows, in the labels of the view rendering it (a suggestion's preview included). */
7
- kind: MediaKind;
8
- icon: string;
9
- /** The file picker's `accept`. */
10
- accept?: string;
11
- upload?: Uploader;
12
- link: (value: string) => boolean;
13
- file?: (file: File, src: string) => boolean;
25
+ kind: MediaKind | 'image';
26
+ /** The kind in a view: how it stores a source. */
27
+ viewOf: (edytor: Edytor | undefined) => EmptyView | undefined;
28
+ /** The view's `empty` snippet. */
29
+ empty: Snippet<[MediaEmptyController]>;
14
30
  };
15
31
  declare const MediaEmpty: import("svelte").Component<$$ComponentProps, {}, "">;
16
32
  type MediaEmpty = ReturnType<typeof MediaEmpty>;
@@ -0,0 +1,164 @@
1
+ <script module lang="ts">
2
+ import type { BlockDefinition, BlockSnippetPayload, Plugin } from '../../plugins.js';
3
+ import EmptySlot from './EmptySlot.svelte';
4
+ import Control from '../Control.svelte';
5
+ import { labelsOf, mediaEnglish } from '../../labels.js';
6
+ import {
7
+ claimed,
8
+ escapeHtml,
9
+ fileNameOf,
10
+ mediaControl,
11
+ mediaLink,
12
+ mediaPlugin,
13
+ mediaSourceOf,
14
+ mediaView,
15
+ safeMediaSrc,
16
+ LINK_REL,
17
+ type FileRowPayload,
18
+ type MediaView
19
+ } from './media.js';
20
+
21
+ type SourceKind = 'video' | 'audio' | 'file';
22
+
23
+ /** The view's file row markup, if the app gave one. */
24
+ const rowOf = mediaControl('file', 'row');
25
+
26
+ /** The files each kind takes: a video, an audio track, any other file. */
27
+ const ACCEPTS: Record<SourceKind, (file: File) => boolean> = {
28
+ video: (file) => /^video\//i.test(file.type),
29
+ audio: (file) => /^audio\//i.test(file.type),
30
+ file: () => true
31
+ };
32
+
33
+ /**
34
+ * The data a source stores: a `safeMediaSrc`, and a file's name (the
35
+ * uploaded `file`'s, else its URL's last segment) and size; `null` for
36
+ * no source.
37
+ */
38
+ const sourceData = (kind: SourceKind, value: string, file?: File) => {
39
+ const src = safeMediaSrc(value);
40
+ if (!src) return null;
41
+ return kind === 'file'
42
+ ? { src, name: file?.name || fileNameOf(src), ...(file ? { size: file.size } : {}) }
43
+ : { src };
44
+ };
45
+
46
+ /**
47
+ * The plugin of a kind holding one source (a video, an audio track, an
48
+ * attachment; Notion's): a media kind (`mediaPlugin`) drawn by this
49
+ * snippet, a link or an uploaded file stored as one data write (a file's
50
+ * whole data, its source, name and size; a video's or audio track's
51
+ * `src`), and with an `upload`, the pasted and dropped files it takes
52
+ * (`media.files`, its first listing in a view). A video or an audio track
53
+ * exports as its tag in a `figure` and imports from one (bare, or in a
54
+ * `figure`) with a safe `src` or `source`; the file kind brings its own
55
+ * (`record`), and its `row` markup (`own`).
56
+ */
57
+ export const sourcePlugin = (
58
+ kind: SourceKind,
59
+ keywords: string[],
60
+ record: Partial<BlockDefinition> = {
61
+ html: (block, caption) => {
62
+ const src = safeMediaSrc(block.data?.src);
63
+ // The tag, then its attributes: `<video src="…" controls></video>`.
64
+ const media = src ? `<${kind}` + ` src="${escapeHtml(src)}" controls></${kind}>` : '';
65
+ return `<figure>${media}<figcaption>${caption}</figcaption></figure>`;
66
+ },
67
+ parse: (el) => {
68
+ const src = mediaSourceOf(claimed(el, kind));
69
+ return src ? { src } : undefined;
70
+ }
71
+ },
72
+ own: Pick<MediaView, 'row'> = {}
73
+ ): Plugin =>
74
+ mediaPlugin(kind, keywords, () => {
75
+ return {
76
+ ...own,
77
+ store: (block, value, file) => {
78
+ const data = sourceData(kind, value, file);
79
+ if (!data) return 'invalid';
80
+ if (kind === 'file') block.edytor.patchData(block.id, [{ path: [], value: data }]);
81
+ else block.edytor.patchData(block.id, [{ path: ['src'], value: data.src }]);
82
+ return null;
83
+ },
84
+ record: {
85
+ snippet: source,
86
+ // Its files: with the uploads plugin, an Upload and pasted or dropped files.
87
+ upload: {
88
+ accepts: ACCEPTS[kind],
89
+ fallback: kind === 'file',
90
+ data: (file, answer) => sourceData(kind, answer, file),
91
+ filled: (data) => safeMediaSrc(data.src) !== null
92
+ },
93
+ ...record
94
+ }
95
+ };
96
+ });
97
+ </script>
98
+
99
+ <!--
100
+ A file (its name and size, linking to it), a video or an audio track in
101
+ the browser's player, or the empty block until it has a source; its
102
+ caption below.
103
+ -->
104
+ {#snippet source({ block, content }: BlockSnippetPayload<Record<string, unknown>>)}
105
+ {@const src = safeMediaSrc(block.data.src)}
106
+ {#if src && block.type === 'file'}
107
+ {@const name =
108
+ typeof block.data.name === 'string' && block.data.name ? block.data.name : fileNameOf(src)}
109
+ {@const size = typeof block.data.size === 'number' ? block.data.size : undefined}
110
+ <div use:block.void data-edytor-file>
111
+ <Control
112
+ own={rowOf}
113
+ {initial}
114
+ payload={{
115
+ block: block.handle,
116
+ src,
117
+ name,
118
+ size,
119
+ sizeLabel:
120
+ size === undefined
121
+ ? ''
122
+ : labelsOf(block.handle?.edytor, 'media', mediaEnglish).fileSize(size),
123
+ link: mediaLink({ draggable: 'false', download: name })
124
+ }}
125
+ />
126
+ </div>
127
+ {:else if src && block.type === 'video'}
128
+ <div use:block.void data-edytor-video>
129
+ <!-- svelte-ignore a11y_media_has_caption -->
130
+ <video
131
+ {src}
132
+ controls
133
+ preload="metadata"
134
+ playsinline
135
+ draggable="false"
136
+ style="display: block; width: 100%"
137
+ ></video>
138
+ </div>
139
+ {:else if src}
140
+ <div use:block.void data-edytor-audio>
141
+ <audio {src} controls preload="metadata" style="display: block; width: 100%"></audio>
142
+ </div>
143
+ {:else}
144
+ <div use:block.void data-edytor-media-empty>
145
+ <EmptySlot
146
+ block={block.handle}
147
+ kind={block.type as SourceKind}
148
+ viewOf={(edytor) => mediaView(edytor, block.type as SourceKind)}
149
+ />
150
+ </div>
151
+ {/if}
152
+ <!-- The core renders the kind's <figure> around this markup. -->
153
+ <!-- svelte-ignore a11y_figcaption_parent -->
154
+ <figcaption>{@render content()}</figcaption>
155
+ {/snippet}
156
+
157
+ <!-- A file: its name and size, a link downloading it. -->
158
+ {#snippet initial({ src, name, sizeLabel, link }: FileRowPayload)}
159
+ <a href={src} target="_blank" rel={LINK_REL} draggable="false" download={name} {@attach link}>
160
+ <span aria-hidden="true">📎</span>
161
+ <span data-edytor-file-name>{name}</span>
162
+ {#if sizeLabel}<span data-edytor-file-size>{sizeLabel}</span>{/if}
163
+ </a>
164
+ {/snippet}
@@ -0,0 +1,33 @@
1
+ import type { BlockDefinition, Plugin } from '../../plugins.js';
2
+ import { type MediaView } from './media.js';
3
+ type SourceKind = 'video' | 'audio' | 'file';
4
+ /**
5
+ * The plugin of a kind holding one source (a video, an audio track, an
6
+ * attachment; Notion's): a media kind (`mediaPlugin`) drawn by this
7
+ * snippet, a link or an uploaded file stored as one data write (a file's
8
+ * whole data, its source, name and size; a video's or audio track's
9
+ * `src`), and with an `upload`, the pasted and dropped files it takes
10
+ * (`media.files`, its first listing in a view). A video or an audio track
11
+ * exports as its tag in a `figure` and imports from one (bare, or in a
12
+ * `figure`) with a safe `src` or `source`; the file kind brings its own
13
+ * (`record`), and its `row` markup (`own`).
14
+ */
15
+ export declare const sourcePlugin: (kind: SourceKind, keywords: string[], record?: Partial<BlockDefinition>, own?: Pick<MediaView, "row">) => Plugin;
16
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
17
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
18
+ $$bindings?: Bindings;
19
+ } & Exports;
20
+ (internal: unknown, props: {
21
+ $$events?: Events;
22
+ $$slots?: Slots;
23
+ }): Exports & {
24
+ $set?: any;
25
+ $on?: any;
26
+ };
27
+ z_$$bindings?: Bindings;
28
+ }
29
+ declare const SourceBlock: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
30
+ [evt: string]: CustomEvent<any>;
31
+ }, {}, {}, string>;
32
+ type SourceBlock = InstanceType<typeof SourceBlock>;
33
+ export default SourceBlock;