edytor 1.0.0-rc.3 → 2.0.0

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