edytor 1.0.0-rc.3 → 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 (642) 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 +27 -137
  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.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +19 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/comments/client.d.ts +2 -2
  49. package/dist/collaboration/comments/client.js +1 -1
  50. package/dist/collaboration/history/index.d.ts +5 -5
  51. package/dist/collaboration/history/index.js +5 -5
  52. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  53. package/dist/collaboration/history/panel.svelte.js +223 -0
  54. package/dist/collaboration/providers.d.ts +12 -3
  55. package/dist/collaboration/providers.js +5 -4
  56. package/dist/components/Block.svelte +39 -55
  57. package/dist/components/Block.svelte.d.ts +7 -5
  58. package/dist/components/Content.svelte +1 -5
  59. package/dist/components/Edytor.svelte +53 -96
  60. package/dist/components/Edytor.svelte.d.ts +8 -12
  61. package/dist/components/Ranges.svelte +96 -0
  62. package/dist/components/Ranges.svelte.d.ts +19 -0
  63. package/dist/components/Suggestion.svelte +3 -2
  64. package/dist/components/Text.svelte +2 -5
  65. package/dist/components/Text.svelte.d.ts +1 -1
  66. package/dist/crdt/admission.d.ts +2 -9
  67. package/dist/crdt/admission.js +3 -9
  68. package/dist/crdt/attribution/attribution.d.ts +11 -72
  69. package/dist/crdt/attribution/attribution.js +5 -52
  70. package/dist/crdt/attribution/block.d.ts +0 -78
  71. package/dist/crdt/attribution/block.js +1 -144
  72. package/dist/crdt/data.d.ts +8 -13
  73. package/dist/crdt/data.js +30 -70
  74. package/dist/crdt/doc/anchors.js +4 -4
  75. package/dist/crdt/doc/content.d.ts +5 -1
  76. package/dist/crdt/doc/content.js +3 -1
  77. package/dist/crdt/doc/delete.d.ts +1 -0
  78. package/dist/crdt/doc/funnel.d.ts +0 -23
  79. package/dist/crdt/doc/funnel.js +34 -85
  80. package/dist/crdt/doc/gate.d.ts +8 -9
  81. package/dist/crdt/doc/gate.js +7 -17
  82. package/dist/crdt/doc/history.d.ts +87 -14
  83. package/dist/crdt/doc/history.js +334 -149
  84. package/dist/crdt/doc/layout.d.ts +0 -1
  85. package/dist/crdt/doc/layout.js +2 -3
  86. package/dist/crdt/doc/meta.d.ts +4 -4
  87. package/dist/crdt/doc/meta.js +10 -21
  88. package/dist/crdt/doc/moves.d.ts +4 -4
  89. package/dist/crdt/doc/moves.js +5 -5
  90. package/dist/crdt/doc/plan.d.ts +2 -0
  91. package/dist/crdt/doc/plan.js +2 -0
  92. package/dist/crdt/doc/reads.d.ts +1 -5
  93. package/dist/crdt/doc/reads.js +38 -49
  94. package/dist/crdt/doc/seed.d.ts +15 -6
  95. package/dist/crdt/doc/seed.js +27 -26
  96. package/dist/crdt/doc/split-merge.d.ts +1 -3
  97. package/dist/crdt/doc/split-merge.js +4 -5
  98. package/dist/crdt/doc/steps.d.ts +3 -7
  99. package/dist/crdt/doc/steps.js +20 -9
  100. package/dist/crdt/doc/types.d.ts +0 -10
  101. package/dist/crdt/document.d.ts +24 -115
  102. package/dist/crdt/document.js +207 -305
  103. package/dist/crdt/edytor-doc.d.ts +671 -90
  104. package/dist/crdt/edytor-doc.js +73 -149
  105. package/dist/crdt/engine-api.d.ts +15 -47
  106. package/dist/crdt/engine.d.ts +7 -17
  107. package/dist/crdt/engine.js +9 -19
  108. package/dist/crdt/flow.d.ts +9 -37
  109. package/dist/crdt/flow.js +260 -238
  110. package/dist/crdt/index.d.ts +26 -85
  111. package/dist/crdt/index.js +21 -47
  112. package/dist/crdt/operations.d.ts +24 -33
  113. package/dist/crdt/operations.js +7 -17
  114. package/dist/crdt/placement/display.d.ts +0 -2
  115. package/dist/crdt/placement/display.js +0 -15
  116. package/dist/crdt/placement/model.d.ts +160 -12
  117. package/dist/crdt/placement/model.js +413 -414
  118. package/dist/crdt/placement/rank.d.ts +1 -5
  119. package/dist/crdt/placement/rank.js +28 -38
  120. package/dist/crdt/protocol.d.ts +4 -5
  121. package/dist/crdt/protocol.js +3 -4
  122. package/dist/crdt/protocols/awareness.d.ts +3 -7
  123. package/dist/crdt/protocols/awareness.js +17 -33
  124. package/dist/crdt/protocols/envelope.d.ts +9 -29
  125. package/dist/crdt/protocols/envelope.js +8 -25
  126. package/dist/crdt/protocols/sync.d.ts +15 -30
  127. package/dist/crdt/protocols/sync.js +27 -89
  128. package/dist/crdt/providers/bound.d.ts +3 -1
  129. package/dist/crdt/providers/bound.js +3 -1
  130. package/dist/crdt/providers/container.d.ts +11 -17
  131. package/dist/crdt/providers/container.js +39 -27
  132. package/dist/crdt/providers/index.d.ts +34 -6
  133. package/dist/crdt/providers/index.js +106 -111
  134. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  135. package/dist/crdt/providers/indexeddb.js +29 -90
  136. package/dist/crdt/providers/room.d.ts +58 -2
  137. package/dist/crdt/providers/room.js +38 -21
  138. package/dist/crdt/providers/websocket.d.ts +1 -1
  139. package/dist/crdt/providers/websocket.js +3 -4
  140. package/dist/crdt/purge.d.ts +2 -2
  141. package/dist/crdt/purge.js +69 -6
  142. package/dist/crdt/rangeDelete.d.ts +4 -42
  143. package/dist/crdt/rangeDelete.js +7 -6
  144. package/dist/crdt/restore.d.ts +21 -1
  145. package/dist/crdt/restore.js +54 -59
  146. package/dist/crdt/schema.d.ts +2 -2
  147. package/dist/crdt/schema.js +4 -5
  148. package/dist/crdt/semantics.d.ts +10 -15
  149. package/dist/crdt/semantics.js +22 -21
  150. package/dist/crdt/storage.d.ts +7 -13
  151. package/dist/crdt/storage.js +10 -24
  152. package/dist/crdt/structs.d.ts +42 -47
  153. package/dist/crdt/structs.js +76 -67
  154. package/dist/crdt/tables.d.ts +9 -0
  155. package/dist/crdt/tables.js +20 -0
  156. package/dist/crdt/text/delete-index.d.ts +0 -13
  157. package/dist/crdt/text/delete-index.js +7 -14
  158. package/dist/crdt/text/deletes.d.ts +9 -22
  159. package/dist/crdt/text/deletes.js +11 -74
  160. package/dist/crdt/text/index/cache.js +3 -3
  161. package/dist/crdt/text/index/fold.d.ts +1 -2
  162. package/dist/crdt/text/index/fold.js +15 -10
  163. package/dist/crdt/text/index/layout.d.ts +0 -10
  164. package/dist/crdt/text/index/layout.js +6 -20
  165. package/dist/crdt/text/index/records.js +2 -1
  166. package/dist/crdt/text/index/report.js +5 -6
  167. package/dist/crdt/text/index/shared.d.ts +11 -4
  168. package/dist/crdt/text/index/shared.js +8 -7
  169. package/dist/crdt/text/index/state.d.ts +3 -33
  170. package/dist/crdt/text/index/state.js +2 -4
  171. package/dist/crdt/text/model.d.ts +82 -2
  172. package/dist/crdt/text/model.js +344 -354
  173. package/dist/crdt/text/rows.d.ts +0 -2
  174. package/dist/crdt/text/rows.js +0 -11
  175. package/dist/crdt/text/runs.d.ts +6 -3
  176. package/dist/crdt/text/runs.js +132 -137
  177. package/dist/crdt/text/streams.d.ts +1 -1
  178. package/dist/crdt/text/streams.js +1 -1
  179. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  180. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  181. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  182. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  183. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  184. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  185. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  186. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  187. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  188. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  189. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  190. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  191. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  192. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  193. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  194. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  195. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  196. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  197. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  198. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  199. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  200. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  201. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  202. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  203. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  204. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  205. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  206. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  207. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  208. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  209. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  211. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  212. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  213. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  214. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  215. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  216. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  217. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  218. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  219. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  220. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  221. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  222. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  223. package/dist/dnd/autoScroll.js +1 -2
  224. package/dist/dnd/pragmatic.d.ts +4 -22
  225. package/dist/dnd/pragmatic.js +7 -26
  226. package/dist/dnd/track.d.ts +14 -0
  227. package/dist/dnd/track.js +55 -0
  228. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  229. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  230. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  231. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  232. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  233. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  234. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  235. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  236. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  237. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  238. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  239. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  240. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  241. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  254. 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
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  293. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  294. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  295. package/dist/edytor.svelte.d.ts +34 -64
  296. package/dist/edytor.svelte.js +116 -180
  297. package/dist/events/beforeInputCommands.d.ts +6 -11
  298. package/dist/events/beforeInputCommands.js +185 -181
  299. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  300. package/dist/events/beforeInputDeleteCommands.js +153 -204
  301. package/dist/events/domTextOffset.d.ts +9 -9
  302. package/dist/events/domTextOffset.js +20 -48
  303. package/dist/events/events.utils.d.ts +0 -2
  304. package/dist/events/events.utils.js +0 -4
  305. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  306. package/dist/events/nativeInteractiveControl.js +28 -56
  307. package/dist/events/onBeforeInput.d.ts +6 -1
  308. package/dist/events/onBeforeInput.js +207 -331
  309. package/dist/events/onCopy.js +1 -5
  310. package/dist/events/onDrop.d.ts +1 -1
  311. package/dist/events/onDrop.js +27 -69
  312. package/dist/events/onFocus.d.ts +9 -4
  313. package/dist/events/onFocus.js +45 -67
  314. package/dist/events/onInput.d.ts +8 -4
  315. package/dist/events/onInput.js +34 -147
  316. package/dist/events/onKeyDown.js +55 -122
  317. package/dist/events/onPaste.d.ts +13 -1
  318. package/dist/events/onPaste.js +46 -76
  319. package/dist/index.d.ts +10 -14
  320. package/dist/index.js +3 -3
  321. package/dist/kinds.d.ts +4 -6
  322. package/dist/kinds.js +28 -27
  323. package/dist/labels.d.ts +81 -320
  324. package/dist/labels.js +180 -408
  325. package/dist/plugins/Chrome.svelte +29 -0
  326. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  327. package/dist/plugins/Control.svelte +23 -0
  328. package/dist/plugins/Control.svelte.d.ts +30 -0
  329. package/dist/plugins/anchored.svelte.d.ts +47 -0
  330. package/dist/plugins/anchored.svelte.js +73 -0
  331. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  332. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  333. package/dist/plugins/bands.svelte.d.ts +57 -0
  334. package/dist/plugins/bands.svelte.js +95 -0
  335. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  336. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  337. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +39 -94
  338. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +190 -247
  339. package/dist/plugins/blockHandles/BlockHandles.svelte +27 -17
  340. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  341. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  342. package/dist/plugins/blockHandles/blockHandlesPlugin.js +129 -185
  343. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  344. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  345. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  346. package/dist/plugins/blockHandles/geometry.d.ts +2 -1
  347. package/dist/plugins/blockHandles/geometry.js +6 -6
  348. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  349. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  350. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  351. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  352. package/dist/plugins/brand.d.ts +8 -0
  353. package/dist/plugins/brand.js +8 -0
  354. package/dist/plugins/chrome.d.ts +45 -38
  355. package/dist/plugins/chrome.js +59 -36
  356. package/dist/plugins/code/CodeHeader.svelte +3 -35
  357. package/dist/plugins/code/CodePlugin.svelte +50 -53
  358. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  359. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  360. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  361. package/dist/plugins/code/code.css +5 -117
  362. package/dist/plugins/code/header.svelte.d.ts +2 -11
  363. package/dist/plugins/code/header.svelte.js +11 -38
  364. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  365. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  366. package/dist/plugins/code/languages.d.ts +9 -19
  367. package/dist/plugins/code/languages.js +39 -126
  368. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  369. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  370. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  371. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  372. package/dist/plugins/columns/columns.css +7 -26
  373. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  374. package/dist/plugins/columns/resize.svelte.js +70 -164
  375. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  376. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  377. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  378. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  379. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  380. package/dist/plugins/comments/commentsPlugin.js +12 -10
  381. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  382. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  383. package/dist/plugins/equation/EquationPlugin.svelte +109 -165
  384. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +2 -2
  385. package/dist/plugins/equation/EquationView.svelte +20 -11
  386. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  387. package/dist/plugins/equation/equation.svelte.js +20 -94
  388. package/dist/plugins/equation/katex.js +6 -9
  389. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  390. package/dist/plugins/find/FindController.svelte.js +34 -55
  391. package/dist/plugins/find/findPlugin.d.ts +4 -8
  392. package/dist/plugins/find/findPlugin.js +29 -9
  393. package/dist/plugins/image/ImageChrome.svelte +6 -167
  394. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  395. package/dist/plugins/image/ImagePlugin.svelte +45 -134
  396. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -42
  397. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  398. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  399. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  400. package/dist/plugins/image/controls.svelte.js +43 -212
  401. package/dist/plugins/image/image.d.ts +0 -5
  402. package/dist/plugins/image/image.js +0 -3
  403. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  404. package/dist/plugins/image/toolbar.svelte.js +145 -0
  405. package/dist/plugins/index.d.ts +31 -26
  406. package/dist/plugins/index.js +29 -22
  407. package/dist/plugins/list.svelte.d.ts +128 -0
  408. package/dist/plugins/list.svelte.js +217 -0
  409. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  410. package/dist/plugins/markdownShortcuts.js +6 -5
  411. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  412. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  413. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  414. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  415. package/dist/plugins/marquee/marquee.js +4 -21
  416. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  417. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  418. package/dist/plugins/media/AudioPlugin.svelte +3 -90
  419. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  420. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  421. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  422. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  423. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  424. package/dist/plugins/media/EmptySlot.svelte +44 -0
  425. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  426. package/dist/plugins/media/FilePlugin.svelte +35 -113
  427. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  428. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  429. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  430. package/dist/plugins/media/SourceBlock.svelte +164 -0
  431. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  432. package/dist/plugins/media/VideoPlugin.svelte +4 -99
  433. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  434. package/dist/plugins/media/empty.svelte.d.ts +36 -44
  435. package/dist/plugins/media/empty.svelte.js +41 -45
  436. package/dist/plugins/media/media.d.ts +90 -44
  437. package/dist/plugins/media/media.js +77 -99
  438. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  439. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  440. package/dist/plugins/mention/MentionPlugin.svelte +42 -123
  441. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +6 -25
  442. package/dist/plugins/page/PageLink.svelte +54 -38
  443. package/dist/plugins/page/PagePlugin.svelte +20 -18
  444. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  445. package/dist/plugins/page/page.d.ts +35 -9
  446. package/dist/plugins/page/page.js +3 -4
  447. package/dist/plugins/pageLink/PageLinkPlugin.svelte +47 -107
  448. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +6 -25
  449. package/dist/plugins/planned.d.ts +10 -0
  450. package/dist/plugins/planned.js +12 -0
  451. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  452. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  453. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  454. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  455. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  456. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  457. package/dist/plugins/richtext/RichTextPlugin.svelte +161 -177
  458. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +33 -34
  459. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  460. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  461. package/dist/plugins/richtext/body.js +2 -2
  462. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  463. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  464. package/dist/plugins/richtext/callouts.d.ts +15 -0
  465. package/dist/plugins/richtext/callouts.js +23 -0
  466. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  467. package/dist/plugins/richtext/controls.svelte.js +126 -0
  468. package/dist/plugins/richtext/richTextOperations.js +37 -28
  469. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  470. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  471. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  472. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  473. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  474. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  475. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  476. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  477. package/dist/plugins/table/TableChrome.svelte +40 -124
  478. package/dist/plugins/table/TablePlugin.svelte +106 -168
  479. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  480. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  481. package/dist/plugins/table/chrome.svelte.js +339 -589
  482. package/dist/plugins/table/ops.d.ts +47 -0
  483. package/dist/plugins/table/ops.js +233 -0
  484. package/dist/plugins/table/table.css +16 -152
  485. package/dist/plugins/table/table.d.ts +15 -14
  486. package/dist/plugins/table/table.js +22 -16
  487. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  488. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  489. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  490. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  491. package/dist/plugins/toc/toc.d.ts +41 -10
  492. package/dist/plugins/toc/toc.js +2 -3
  493. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  494. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  495. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  496. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  497. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  498. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  499. package/dist/plugins/triggers/place.d.ts +0 -9
  500. package/dist/plugins/triggers/place.js +1 -17
  501. package/dist/plugins/triggers/triggers.d.ts +31 -9
  502. package/dist/plugins/triggers/triggers.js +82 -62
  503. package/dist/plugins/uploads.svelte.d.ts +38 -20
  504. package/dist/plugins/uploads.svelte.js +39 -32
  505. package/dist/plugins.d.ts +154 -59
  506. package/dist/selection/domSelection.d.ts +13 -4
  507. package/dist/selection/domSelection.js +110 -183
  508. package/dist/selection/pointer.svelte.d.ts +8 -10
  509. package/dist/selection/pointer.svelte.js +32 -73
  510. package/dist/selection/replaceSelection.d.ts +21 -22
  511. package/dist/selection/replaceSelection.js +60 -69
  512. package/dist/selection/selection.svelte.d.ts +5 -73
  513. package/dist/selection/selection.svelte.js +224 -542
  514. package/dist/selection/selection.utils.d.ts +34 -11
  515. package/dist/selection/selection.utils.js +128 -247
  516. package/dist/selection/visibility.d.ts +3 -8
  517. package/dist/selection/visibility.js +7 -5
  518. package/dist/session/announcer.svelte.d.ts +2 -1
  519. package/dist/session/announcer.svelte.js +7 -3
  520. package/dist/session/attempt.d.ts +33 -39
  521. package/dist/session/attempt.js +61 -55
  522. package/dist/session/bindings.js +108 -139
  523. package/dist/session/commands.d.ts +47 -22
  524. package/dist/session/commands.js +206 -208
  525. package/dist/session/composition.svelte.d.ts +2 -4
  526. package/dist/session/composition.svelte.js +55 -65
  527. package/dist/session/editing/text.d.ts +6 -0
  528. package/dist/session/editing/text.js +17 -3
  529. package/dist/session/handles.d.ts +10 -1
  530. package/dist/session/handles.js +28 -0
  531. package/dist/session/history.d.ts +0 -4
  532. package/dist/session/history.js +15 -21
  533. package/dist/session/inputRules.js +75 -84
  534. package/dist/session/keymap.d.ts +1 -6
  535. package/dist/session/keymap.js +17 -20
  536. package/dist/session/moves.d.ts +10 -10
  537. package/dist/session/moves.js +31 -59
  538. package/dist/session/navigation.d.ts +3 -2
  539. package/dist/session/navigation.js +127 -168
  540. package/dist/session/ports.d.ts +2 -7
  541. package/dist/session/selection.d.ts +4 -3
  542. package/dist/session/selection.js +5 -0
  543. package/dist/session/suggestions.svelte.d.ts +1 -1
  544. package/dist/session/suggestions.svelte.js +42 -47
  545. package/dist/session/virtual.d.ts +3 -3
  546. package/dist/session/virtual.js +18 -40
  547. package/dist/surface/attributes.d.ts +1 -0
  548. package/dist/surface/attributes.js +3 -26
  549. package/dist/surface/cells.d.ts +5 -0
  550. package/dist/surface/cells.js +5 -0
  551. package/dist/surface/lines.d.ts +2 -2
  552. package/dist/surface/lines.js +1 -1
  553. package/dist/surface/observer.svelte.d.ts +3 -20
  554. package/dist/surface/observer.svelte.js +52 -72
  555. package/dist/surface/overlay.d.ts +41 -3
  556. package/dist/surface/overlay.js +92 -37
  557. package/dist/surface/pin.svelte.d.ts +5 -0
  558. package/dist/surface/pin.svelte.js +5 -0
  559. package/dist/surface/projector.svelte.d.ts +4 -6
  560. package/dist/surface/projector.svelte.js +42 -69
  561. package/dist/text/text.svelte.d.ts +14 -40
  562. package/dist/text/text.svelte.js +35 -51
  563. package/dist/text/wordBoundary.d.ts +19 -0
  564. package/dist/text/wordBoundary.js +29 -44
  565. package/dist/themes/notion.css +263 -106
  566. package/dist/utils/json.d.ts +3 -1
  567. package/dist/utils/json.js +52 -51
  568. package/dist/utils/listen.d.ts +8 -0
  569. package/dist/utils/listen.js +19 -0
  570. package/package.json +4 -5
  571. package/dist/block/block.utils.d.ts +0 -340
  572. package/dist/block/block.utils.js +0 -356
  573. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  574. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  575. package/dist/collaboration/history/panel.d.ts +0 -61
  576. package/dist/collaboration/history/panel.js +0 -3
  577. package/dist/components/SuggestionRanges.svelte +0 -58
  578. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  579. package/dist/crdt/doc/table.d.ts +0 -21
  580. package/dist/crdt/doc/table.js +0 -288
  581. package/dist/crdt/migration/generation.d.ts +0 -58
  582. package/dist/crdt/migration/generation.js +0 -70
  583. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  584. package/dist/crdt/migration/legacy-schema.js +0 -151
  585. package/dist/crdt/migration/migrate.d.ts +0 -56
  586. package/dist/crdt/migration/migrate.js +0 -227
  587. package/dist/crdt/nodes.d.ts +0 -121
  588. package/dist/crdt/nodes.js +0 -56
  589. package/dist/crdt/text/index/checks.d.ts +0 -15
  590. package/dist/crdt/text/index/checks.js +0 -156
  591. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  592. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  593. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  594. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  595. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  596. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  597. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  598. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  599. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  600. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  601. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  602. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  603. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  604. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  605. package/dist/edytor.utils.d.ts +0 -50
  606. package/dist/edytor.utils.js +0 -67
  607. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  608. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  609. package/dist/plugins/find/FindBar.svelte +0 -170
  610. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  611. package/dist/plugins/find/FindHighlights.svelte +0 -75
  612. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  613. package/dist/plugins/icons.d.ts +0 -2
  614. package/dist/plugins/icons.js +0 -63
  615. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  616. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  617. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  618. package/dist/plugins/image/empty.svelte.js +0 -83
  619. package/dist/plugins/keepInView.d.ts +0 -4
  620. package/dist/plugins/keepInView.js +0 -6
  621. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  622. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  623. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  624. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  625. package/dist/plugins/richtext/labels.d.ts +0 -9
  626. package/dist/plugins/richtext/labels.js +0 -7
  627. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  628. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  629. package/dist/plugins/table/dragPreview.d.ts +0 -29
  630. package/dist/plugins/table/dragPreview.js +0 -103
  631. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  632. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  633. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  634. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  635. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  636. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  637. package/dist/session/props.d.ts +0 -28
  638. package/dist/session/props.js +0 -162
  639. package/dist/text/deltas.d.ts +0 -22
  640. package/dist/text/deltas.js +0 -46
  641. package/dist/text/text.utils.d.ts +0 -45
  642. package/dist/text/text.utils.js +0 -199
@@ -1,66 +1,68 @@
1
1
  <script module lang="ts">
2
2
  import type { Plugin, BlockSnippetPayload } from '../../plugins.js';
3
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';
4
+ import EmptySlot from './EmptySlot.svelte';
5
+ import Control from '../Control.svelte';
7
6
  import type { Snippet } from 'svelte';
8
7
  import { urlPaste, type UrlPasteController } from './urlPaste.svelte.js';
9
- import type { MediaEmptyController } from './empty.svelte.js';
10
- import { keywordsOf, labelsWith, type PartialLabels } from '../../labels.js';
11
8
  import {
12
9
  EMBED_ALLOW,
13
10
  EMBED_PROVIDERS,
14
11
  EMBED_SANDBOX,
12
+ MEDIA_ICONS,
15
13
  claimed,
16
14
  embedSourceOf,
17
- mediaLabels,
18
- mediaEmpty,
19
15
  escapeHtml,
16
+ mediaControl,
17
+ mediaLink,
18
+ LINK_REL,
19
+ mediaPlugin,
20
+ mediaView,
20
21
  safeWebUrl,
22
+ type EmbedFallbackPayload,
21
23
  type EmbedProvider
22
24
  } from './media.js';
23
25
 
24
- export { EMBED_ALLOW, EMBED_PROVIDERS, EMBED_SANDBOX, embedSourceOf, type EmbedProvider };
26
+ export {
27
+ EMBED_ALLOW,
28
+ EMBED_PROVIDERS,
29
+ EMBED_SANDBOX,
30
+ embedSourceOf,
31
+ type EmbedFallbackPayload,
32
+ type EmbedProvider
33
+ };
25
34
 
26
35
  export type EmbedPluginOptions = {
27
36
  /** The allowlist (default {@link EMBED_PROVIDERS}); a link none of them plays shows no frame. */
28
37
  providers?: readonly EmbedProvider[];
29
- /** The words the block shows (its empty panel, its menu row), over the English ones. */
30
- labels?: PartialLabels<'media'>;
31
- /** The slash menu's keywords of its command (`block.<kind>`), which replace its own. */
32
- keywords?: Partial<Record<string, string[]>>;
33
38
  /**
34
- * Replace the menu a URL pasted on an empty line opens (Link, Embed,
35
- * Bookmark); it renders while `controller.open`, under the line. The
39
+ * The menu a URL pasted on an empty line opens (Link, Embed, Bookmark);
40
+ * it renders while `controller.open`, under the line (without it, the
41
+ * link is kept and nothing shows). The
36
42
  * view's one menu takes the first `menu` its embed and bookmark
37
43
  * plugins pass. Its keys stay the editor's; keep its ARIA with
38
44
  * `{@attach controller.popup}` on the list and
39
- * `{...controller.option(index)}` on each row.
45
+ * `{@attach controller.option(index)}` on each row.
40
46
  */
41
47
  menu?: Snippet<[UrlPasteController]>;
42
48
  /**
43
- * Replace an empty block's markup (its "Add …" button and link panel,
44
- * or a readonly view's placeholder): it receives the block's
45
- * `MediaEmptyController` (`open`, `draft`, `failed`, `embed`, `readonly`).
49
+ * An embed whose link no allowed provider plays (a peer may store any),
50
+ * or a suggestion's preview: a plain link, never a frame (default: the
51
+ * URL as a link): `<a href={fallback.url} {@attach fallback.link}>`. The first embed
52
+ * plugin listed in a view gives it.
46
53
  */
47
- empty?: Snippet<[MediaEmptyController]>;
54
+ fallback?: Snippet<[EmbedFallbackPayload]>;
48
55
  };
49
56
 
50
- const providersOf = new WeakMap<Edytor, readonly EmbedProvider[]>();
57
+ /** The view's fallback markup, if the app gave one. */
58
+ const fallbackOf = mediaControl('embed', 'fallback');
59
+
51
60
  /**
52
61
  * The view's allowlist: the first embed plugin listed in it (first wins,
53
62
  * as for the kind). Never a broader list: no entry plays nothing.
54
63
  */
55
- const providers = (block: Block | undefined) => (block && providersOf.get(block.edytor)) ?? [];
56
-
57
- /** Store `value` as the block's link when a provider plays it; answers whether it did. */
58
- const embedLink = (block: Block | undefined, value: string) => {
59
- const url = safeWebUrl(value);
60
- if (!block || !url || !embedSourceOf(url, providers(block))) return false;
61
- block.data.url = url;
62
- return true;
63
- };
64
+ const providers = (block: Block | undefined) =>
65
+ mediaView(block?.edytor, 'embed')?.providers ?? [];
64
66
 
65
67
  /**
66
68
  * Notion's embed block: an "Embed a link" panel until it has a link, then
@@ -71,68 +73,54 @@
71
73
  * text is the caption. Pasting a link a provider plays on an empty line
72
74
  * offers "Embed".
73
75
  */
74
- export const createEmbedPlugin =
75
- (options: EmbedPluginOptions = {}): Plugin =>
76
- (edytor) => {
77
- const allowed = options.providers ?? EMBED_PROVIDERS;
78
- if (!providersOf.has(edytor)) providersOf.set(edytor, allowed);
79
- const labels = labelsWith('media', options.labels);
80
- mediaLabels.embed.claim(edytor, labels);
81
- mediaEmpty.claim(edytor, 'embed', options.empty);
82
- return {
83
- ...urlPaste(
76
+ export const createEmbedPlugin = (options: EmbedPluginOptions = {}): Plugin => {
77
+ const allowed = options.providers ?? EMBED_PROVIDERS;
78
+ return mediaPlugin(
79
+ 'embed',
80
+ ['iframe', 'youtube', 'vimeo', 'loom', 'figma', 'codepen', 'spotify'],
81
+ (edytor) => ({
82
+ providers: allowed,
83
+ fallback: options.fallback,
84
+ // The block's link, when a provider plays it.
85
+ store: (block, value) => {
86
+ const url = safeWebUrl(value);
87
+ if (!url || !embedSourceOf(url, allowed)) return 'invalid';
88
+ block.edytor.patchData(block.id, [{ path: ['url'], value: url }]);
89
+ return null;
90
+ },
91
+ hooks: urlPaste(
84
92
  edytor,
85
93
  {
86
94
  type: 'embed',
87
- label: labels.embed.offer,
88
- icon: '⧉',
95
+ icon: MEDIA_ICONS.embed,
89
96
  data: (url) => (embedSourceOf(url, allowed) ? { url } : null)
90
97
  },
91
- labels,
92
98
  options.menu
93
99
  ),
94
- blocks: {
95
- embed: {
96
- ...mediaKinds.embed,
97
- snippet: embed,
98
- element: 'figure',
99
- presets: [
100
- {
101
- label: labels.embed.label,
102
- icon: '⧉',
103
- keywords: keywordsOf(
104
- 'block.embed',
105
- ['iframe', 'youtube', 'vimeo', 'loom', 'figma', 'codepen', 'spotify'],
106
- options.keywords
107
- ),
108
- group: 'Media'
109
- }
110
- ],
111
- html: (block, caption) => {
112
- const player = embedSourceOf(block.data?.url, allowed);
113
- const url = safeWebUrl(block.data?.url);
114
- const media = player
115
- ? `<iframe src="${escapeHtml(player.src)}" title="${escapeHtml(player.provider.name)}" sandbox="${EMBED_SANDBOX}" allowfullscreen></iframe>`
116
- : url
117
- ? `<a href="${escapeHtml(url)}">${escapeHtml(url)}</a>`
118
- : '';
119
- return `<figure>${media}<figcaption>${caption}</figcaption></figure>`;
120
- },
121
- plain: (block, caption) =>
122
- [safeWebUrl(block.data?.url), caption].filter(Boolean).join('\n'),
123
- // An allowlisted `iframe` (bare, or in a `figure`): its `src` is the link.
124
- parse: (el) => {
125
- const src = claimed(el, 'iframe')?.getAttribute('src');
126
- const url = embedSourceOf(src, allowed) && safeWebUrl(src);
127
- return url ? { url } : undefined;
128
- }
100
+ record: {
101
+ snippet: embed,
102
+ html: (block, caption) => {
103
+ const player = embedSourceOf(block.data?.url, allowed);
104
+ const url = safeWebUrl(block.data?.url);
105
+ const media = player
106
+ ? `<iframe src="${escapeHtml(player.src)}" title="${escapeHtml(player.provider.name)}" sandbox="${EMBED_SANDBOX}" allowfullscreen></iframe>`
107
+ : url
108
+ ? `<a href="${escapeHtml(url)}">${escapeHtml(url)}</a>`
109
+ : '';
110
+ return `<figure>${media}<figcaption>${caption}</figcaption></figure>`;
111
+ },
112
+ plain: (block, caption) =>
113
+ [safeWebUrl(block.data?.url), caption].filter(Boolean).join('\n'),
114
+ // An allowlisted `iframe` (bare, or in a `figure`): its `src` is the link.
115
+ parse: (el) => {
116
+ const src = claimed(el, 'iframe')?.getAttribute('src');
117
+ const url = embedSourceOf(src, allowed) && safeWebUrl(src);
118
+ return url ? { url } : undefined;
129
119
  }
130
120
  }
131
- };
132
- };
133
-
134
- /** The embed block with the default providers. */
135
- export const embedPlugin = createEmbedPlugin();
121
+ })
122
+ );
123
+ };
136
124
  </script>
137
125
 
138
126
  {#snippet embed({ block, content }: BlockSnippetPayload<{ url?: string }>)}
@@ -161,15 +149,18 @@
161
149
  <!-- A link no provider plays (a peer may store any), or a suggestion's preview (no handle, so no
162
150
  view's allowlist): a plain link, never a frame. -->
163
151
  <div use:block.void data-edytor-embed-unsupported>
164
- <a href={url} target="_blank" rel="noopener noreferrer nofollow">{url}</a>
152
+ <Control
153
+ own={fallbackOf}
154
+ {initial}
155
+ payload={{ block: block.handle, url, link: mediaLink() }}
156
+ />
165
157
  </div>
166
158
  {:else}
167
159
  <div use:block.void data-edytor-media-empty>
168
- <MediaEmpty
160
+ <EmptySlot
169
161
  block={block.handle}
170
162
  kind="embed"
171
- icon="⧉"
172
- link={(value) => embedLink(block.handle, value)}
163
+ viewOf={(edytor) => mediaView(edytor, 'embed')}
173
164
  />
174
165
  </div>
175
166
  {/if}
@@ -177,3 +168,8 @@
177
168
  <!-- svelte-ignore a11y_figcaption_parent -->
178
169
  <figcaption>{@render content()}</figcaption>
179
170
  {/snippet}
171
+
172
+ <!-- The link itself. -->
173
+ {#snippet initial({ url, link }: EmbedFallbackPayload)}
174
+ <a href={url} target="_blank" rel={LINK_REL} {@attach link}>{url}</a>
175
+ {/snippet}
@@ -1,32 +1,28 @@
1
1
  import type { Plugin } from '../../plugins.js';
2
2
  import type { Snippet } from 'svelte';
3
3
  import { type UrlPasteController } from './urlPaste.svelte.js';
4
- import type { MediaEmptyController } from './empty.svelte.js';
5
- import { type PartialLabels } from '../../labels.js';
6
- import { EMBED_ALLOW, EMBED_PROVIDERS, EMBED_SANDBOX, embedSourceOf, type EmbedProvider } from './media.js';
7
- export { EMBED_ALLOW, EMBED_PROVIDERS, EMBED_SANDBOX, embedSourceOf, type EmbedProvider };
4
+ import { EMBED_ALLOW, EMBED_PROVIDERS, EMBED_SANDBOX, embedSourceOf, type EmbedFallbackPayload, type EmbedProvider } from './media.js';
5
+ export { EMBED_ALLOW, EMBED_PROVIDERS, EMBED_SANDBOX, embedSourceOf, type EmbedFallbackPayload, type EmbedProvider };
8
6
  export type EmbedPluginOptions = {
9
7
  /** The allowlist (default {@link EMBED_PROVIDERS}); a link none of them plays shows no frame. */
10
8
  providers?: readonly EmbedProvider[];
11
- /** The words the block shows (its empty panel, its menu row), over the English ones. */
12
- labels?: PartialLabels<'media'>;
13
- /** The slash menu's keywords of its command (`block.<kind>`), which replace its own. */
14
- keywords?: Partial<Record<string, string[]>>;
15
9
  /**
16
- * Replace the menu a URL pasted on an empty line opens (Link, Embed,
17
- * Bookmark); it renders while `controller.open`, under the line. The
10
+ * The menu a URL pasted on an empty line opens (Link, Embed, Bookmark);
11
+ * it renders while `controller.open`, under the line (without it, the
12
+ * link is kept and nothing shows). The
18
13
  * view's one menu takes the first `menu` its embed and bookmark
19
14
  * plugins pass. Its keys stay the editor's; keep its ARIA with
20
15
  * `{@attach controller.popup}` on the list and
21
- * `{...controller.option(index)}` on each row.
16
+ * `{@attach controller.option(index)}` on each row.
22
17
  */
23
18
  menu?: Snippet<[UrlPasteController]>;
24
19
  /**
25
- * Replace an empty block's markup (its "Add …" button and link panel,
26
- * or a readonly view's placeholder): it receives the block's
27
- * `MediaEmptyController` (`open`, `draft`, `failed`, `embed`, `readonly`).
20
+ * An embed whose link no allowed provider plays (a peer may store any),
21
+ * or a suggestion's preview: a plain link, never a frame (default: the
22
+ * URL as a link): `<a href={fallback.url} {@attach fallback.link}>`. The first embed
23
+ * plugin listed in a view gives it.
28
24
  */
29
- empty?: Snippet<[MediaEmptyController]>;
25
+ fallback?: Snippet<[EmbedFallbackPayload]>;
30
26
  };
31
27
  /**
32
28
  * Notion's embed block: an "Embed a link" panel until it has a link, then
@@ -38,8 +34,6 @@ export type EmbedPluginOptions = {
38
34
  * offers "Embed".
39
35
  */
40
36
  export declare const createEmbedPlugin: (options?: EmbedPluginOptions) => Plugin;
41
- /** The embed block with the default providers. */
42
- export declare const embedPlugin: Plugin;
43
37
  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> {
44
38
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
45
39
  $$bindings?: Bindings;
@@ -0,0 +1,44 @@
1
+ <script lang="ts" module>
2
+ import type { Component, Snippet } from 'svelte';
3
+ import type { Block } from '../../block/block.svelte.js';
4
+ import type { Edytor } from '../../edytor.svelte.js';
5
+ import type { MediaKind } from './media.js';
6
+ import type { EmptyView, MediaEmptyController } from './empty.svelte.js';
7
+
8
+ /** What an empty image or media block renders in its view: the media empty plugin's host and snippet. */
9
+ type EmptyHost = {
10
+ Host: Component<{
11
+ block: Block | undefined;
12
+ kind: MediaKind | 'image';
13
+ viewOf: (edytor: Edytor | undefined) => EmptyView | undefined;
14
+ empty: Snippet<[MediaEmptyController]>;
15
+ }>;
16
+ empty: Snippet<[MediaEmptyController]>;
17
+ };
18
+
19
+ /** Each view's empty-block chrome (the first media empty plugin listed claims it). */
20
+ export const emptyHosts = new WeakMap<object, EmptyHost>();
21
+ </script>
22
+
23
+ <script lang="ts">
24
+ import { getContext, untrack } from 'svelte';
25
+
26
+ /**
27
+ * Where an empty image or media block shows its empty state: the view's
28
+ * media empty plugin's host, when one is listed (else nothing). The view
29
+ * rendering it is the block's, or a suggestion preview's.
30
+ */
31
+ let {
32
+ block,
33
+ kind,
34
+ viewOf
35
+ }: {
36
+ block: Block | undefined;
37
+ kind: MediaKind | 'image';
38
+ viewOf: (edytor: Edytor | undefined) => EmptyView | undefined;
39
+ } = $props();
40
+ const view = getContext<Edytor>('edytor');
41
+ const host = untrack(() => emptyHosts.get(block?.edytor ?? view));
42
+ </script>
43
+
44
+ {#if host}<host.Host {block} {kind} {viewOf} empty={host.empty} />{/if}
@@ -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,28 +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
- mediaEmpty,
13
- safeMediaSrc,
14
- mediaUploads,
15
- type MediaPluginOptions
16
- } 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';
17
6
 
18
- const uploadOf = new WeakMap<Edytor, MediaPluginOptions['upload']>();
7
+ export type { FileRowPayload };
19
8
 
20
- /** Store a file's source, name and size on `block` as one data write; answers whether it did. */
21
- const attach = (block: Block | undefined, value: string, name?: string, size?: number) => {
22
- const src = safeMediaSrc(value);
23
- if (!block || !src) return false;
24
- block.setData({ src, name: name || fileNameOf(src), ...(size !== undefined ? { size } : {}) });
25
- 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]>;
26
16
  };
27
17
 
28
18
  /**
@@ -30,96 +20,28 @@
30
20
  * linked), shown as its name and size, linking to the file, with an
31
21
  * editable caption. Void: its only text is the caption.
32
22
  */
33
- export const createFilePlugin =
34
- (options: MediaPluginOptions = {}): Plugin =>
35
- (edytor) => {
36
- // First wins, as for the kind: a second listing never replaces it.
37
- const first = !!edytor && !uploadOf.has(edytor);
38
- if (first) uploadOf.set(edytor, options.upload);
39
- const onPaste = first ? mediaUploads(edytor, 'file', options.upload) : undefined;
40
- const labels = labelsWith('media', options.labels);
41
- mediaLabels.file.claim(edytor, labels);
42
- mediaEmpty.claim(edytor, 'file', options.empty);
43
- return {
44
- ...(onPaste ? { onPaste } : {}),
45
- blocks: {
46
- file: {
47
- ...mediaKinds.file,
48
- snippet: file,
49
- element: 'figure',
50
- presets: [
51
- {
52
- label: labels.file.label,
53
- icon: '📎',
54
- keywords: keywordsOf(
55
- 'block.file',
56
- ['attachment', 'upload', 'pdf', 'document'],
57
- options.keywords
58
- ),
59
- group: 'Media'
60
- }
61
- ],
62
- html: (block, caption) => {
63
- const src = safeMediaSrc(block.data?.src);
64
- const name = String(block.data?.name || (src && fileNameOf(src)) || '');
65
- const link = src ? `<a href="${escapeHtml(src)}">${escapeHtml(name)}</a>` : '';
66
- return `<figure data-edytor-file>${link}<figcaption>${caption}</figcaption></figure>`;
67
- },
68
- plain: (block, caption) =>
69
- [safeMediaSrc(block.data?.src), caption].filter(Boolean).join('\n'),
70
- // Its own export: a `figure[data-edytor-file]` holding the link.
71
- parse: (el) => {
72
- if (el.localName !== 'figure' || !el.hasAttribute('data-edytor-file')) return;
73
- const anchor = el.querySelector('a[href]');
74
- const src = safeMediaSrc(anchor?.getAttribute('href'));
75
- const name = anchor?.textContent?.trim().slice(0, 300);
76
- return src ? { src, name: name || fileNameOf(src) } : undefined;
77
- }
78
- }
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;
79
43
  }
80
- };
81
- };
82
-
83
- /** The file block, links only. */
84
- export const filePlugin = createFilePlugin();
44
+ },
45
+ { row: options.row }
46
+ );
85
47
  </script>
86
-
87
- {#snippet file({ block, content }: BlockSnippetPayload<Record<string, unknown>>)}
88
- {@const src = safeMediaSrc(block.data.src)}
89
- {#if src}
90
- {@const name =
91
- typeof block.data.name === 'string' && block.data.name ? block.data.name : fileNameOf(src)}
92
- {@const size =
93
- typeof block.data.size === 'number'
94
- ? mediaLabels.file.of(block.handle?.edytor).fileSize(block.data.size)
95
- : ''}
96
- <div use:block.void data-edytor-file>
97
- <a
98
- href={src}
99
- target="_blank"
100
- rel="noopener noreferrer nofollow"
101
- download={name}
102
- draggable="false"
103
- >
104
- <span aria-hidden="true">📎</span>
105
- <span data-edytor-file-name>{name}</span>
106
- {#if size}<span data-edytor-file-size>{size}</span>{/if}
107
- </a>
108
- </div>
109
- {:else}
110
- {@const upload = block.handle && uploadOf.get(block.handle.edytor)}
111
- <div use:block.void data-edytor-media-empty>
112
- <MediaEmpty
113
- block={block.handle}
114
- kind="file"
115
- icon="📎"
116
- {upload}
117
- link={(value) => attach(block.handle, value)}
118
- file={(picked, src) => attach(block.handle, src, picked.name, picked.size)}
119
- />
120
- </div>
121
- {/if}
122
- <!-- The core renders the kind's <figure> around this markup. -->
123
- <!-- svelte-ignore a11y_figcaption_parent -->
124
- <figcaption>{@render content()}</figcaption>
125
- {/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;