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,11 +1,8 @@
1
- import { englishLabels } from '../../labels.js';
2
- import { isLonePress, takeKeys } from '../../events/onFocus.js';
3
- import { imageAlignOf, imageAltOf, imageWidthOf, MIN_IMAGE_WIDTH } from './image.js';
4
- import { identify, keepFocus } from '../chrome.js';
5
- /** Where a press keeps the alt field open: the toolbar (its Alt button toggles it) and the field's own. */
6
- const ALT_CHROME = '[data-edytor-image-alt-panel], [data-edytor-image-toolbar], [data-edytor-image-alt]';
1
+ import { BandDrag } from '../bands.svelte.js';
2
+ import { layerBox, pin, sameValues } from '../../surface/overlay.js';
3
+ import { imageAlignOf, imageWidthOf, MIN_IMAGE_WIDTH } from './image.js';
7
4
  /** The image element of a shown image block (none while it uploads); an image holds no block. */
8
- const imageOf = (node) => node?.querySelector('[data-edytor-image]:not([data-edytor-image-uploading]) > img') ?? null;
5
+ const imageOf = (node) => node?.querySelector('[data-edytor-image] > img') ?? null;
9
6
  /**
10
7
  * The image chrome (Notion's), in the overlay: on the image under
11
8
  * the pointer of an editable view, a resize handle on each side and a
@@ -21,24 +18,27 @@ const imageOf = (node) => node?.querySelector('[data-edytor-image]:not([data-edy
21
18
  */
22
19
  export class ImageControls {
23
20
  edytor;
24
- labels;
25
21
  /** The image block under the pointer. */
26
22
  hovered = $state(null);
27
- /** The image whose alt field is open: the chrome stays on it. */
28
- editing = $state(null);
23
+ /** The image the toolbar holds (its alt field is open): the chrome stays on it. @internal */
24
+ held = $state(null);
29
25
  /** The measured box of the image the chrome is on. */
30
26
  box = $state(null);
31
- /** The handle being dragged. */
32
- drag = $state(null);
33
27
  /** The dragged image's width at the pointer (view only). @internal */
34
28
  preview = $state.raw(null);
35
- /** Ends the drag in progress without a write. */
36
- #cancel = null;
37
- constructor(edytor,
38
- /** The words the chrome shows (the plugin's `labels`). */
39
- labels = englishLabels.image) {
29
+ /** The handles' gesture (a resize band's: press, view-only preview, one write). @internal */
30
+ band;
31
+ /** The view's image toolbar, when its plugin is listed. @internal */
32
+ toolbar;
33
+ constructor(
34
+ /** @internal */
35
+ edytor) {
40
36
  this.edytor = edytor;
41
- this.labels = labels;
37
+ this.band = new BandDrag(edytor);
38
+ }
39
+ /** The handle being dragged. */
40
+ get drag() {
41
+ return this.band.drag;
42
42
  }
43
43
  /** The view is readonly (reactive). */
44
44
  get readonly() {
@@ -46,7 +46,7 @@ export class ImageControls {
46
46
  }
47
47
  /** A text selection is in progress: the chrome takes no pointer. */
48
48
  get selecting() {
49
- return this.drag === null && this.edytor.selection.dragging;
49
+ return this.band.selecting;
50
50
  }
51
51
  /** The image block that is the whole block selection, if any (reactive): the keyboard's image. */
52
52
  get selected() {
@@ -61,7 +61,7 @@ export class ImageControls {
61
61
  * edited, the hovered one, else the selected one (no pointer needed).
62
62
  */
63
63
  get target() {
64
- return this.drag?.id ?? this.editing ?? this.hovered ?? this.selected;
64
+ return this.drag?.id ?? this.held ?? this.hovered ?? this.selected;
65
65
  }
66
66
  /** Whether the chrome shows: over an image of an editable view, or while a handle drags. */
67
67
  get shown() {
@@ -94,160 +94,34 @@ export class ImageControls {
94
94
  measure = (host, origin) => {
95
95
  const id = this.target;
96
96
  const block = id ? this.edytor.idToBlock.get(id) : undefined;
97
- const img = imageOf(block?.node);
98
- const rect = img?.isConnected ? img.getBoundingClientRect() : null;
99
- const box = id && block && rect
100
- ? {
101
- id,
102
- x: rect.left - origin.left,
103
- y: rect.top - origin.top,
104
- width: rect.width,
105
- height: rect.height,
106
- align: imageAlignOf(block.data)
107
- }
108
- : null;
97
+ const rect = layerBox(imageOf(block?.node), origin);
98
+ const box = id && block && rect ? { id, ...rect, align: imageAlignOf(block.data) } : null;
109
99
  return () => {
110
100
  // Layer-relative, as the rest of the overlay's chrome.
111
- Object.assign(host.style, { position: 'absolute', left: '0px', top: '0px' });
112
- if (!sameBox(box, this.box))
101
+ pin(host);
102
+ if (!sameValues(box, this.box))
113
103
  this.box = box;
114
- if (!box && this.editing === id)
115
- this.editing = null;
104
+ if (!box && this.held === id)
105
+ this.held = null;
116
106
  };
117
107
  };
118
108
  /** Measure again in the overlay's next frame. @internal */
119
109
  invalidate = () => this.edytor.overlay.invalidate();
120
- /** Set the target image's alignment: one `patchData` command. */
121
- align = (align) => {
122
- const block = this.#block();
123
- if (block && imageAlignOf(block.data) !== align)
124
- block.data.align = align;
125
- };
126
- /** The target image's alt text. */
127
- get alt() {
128
- return imageAltOf(this.#block()?.data);
129
- }
130
- /** Write the alt text as it is typed: the dispatcher groups the keystrokes into one step. */
131
- setAlt = (alt) => {
132
- const block = this.#block();
133
- if (block && imageAltOf(block.data) !== alt)
134
- block.data.alt = alt;
135
- };
136
- /** Open (or close) the alt field of the target image. */
137
- toggleAlt = () => {
138
- this.editing = this.editing ? null : (this.box?.id ?? null);
139
- this.edytor.overlay.invalidate();
140
- };
141
110
  /**
142
- * A press anywhere (`onPress`, capture): one outside the alt panel and the
143
- * toolbar (whose Alt button toggles it) closes the field, so the chrome
144
- * follows the pointer again.
145
- * @internal
146
- */
147
- pressed = (event) => {
148
- const target = event.target;
149
- if (this.editing === null)
150
- return;
151
- if (target?.closest?.(ALT_CHROME))
152
- return;
153
- this.closeAlt();
154
- };
155
- /** Focus left the alt field: for somewhere outside its panel, the field closes. @internal */
156
- blurred = (event) => {
157
- const to = event.relatedTarget;
158
- const field = event.currentTarget;
159
- const panel = field?.closest('[data-edytor-image-alt-panel]') ?? field;
160
- // No new focus (the window went to the background): the field stays.
161
- if (!(to instanceof Node) || panel?.contains(to))
162
- return;
163
- this.closeAlt();
164
- };
165
- /**
166
- * The image's toolbar (`{@attach controls.bar}`): its `toolbar` role and
167
- * name unless it has its own, the mark a press outside the alt field
168
- * reads (a press on the toolbar keeps the field open, so its Alt button
169
- * toggles it), and presses that keep the editor's focus.
170
- */
171
- bar = (node) => {
172
- if (!node.hasAttribute('role'))
173
- node.setAttribute('role', 'toolbar');
174
- if (!node.hasAttribute('aria-label'))
175
- node.setAttribute('aria-label', this.labels.toolbar);
176
- node.setAttribute('data-edytor-image-toolbar', '');
177
- node.addEventListener('mousedown', keepFocus);
178
- return () => node.removeEventListener('mousedown', keepFocus);
179
- };
180
- /**
181
- * The alt text field (`{@attach controls.altField}`): focused when it
182
- * opens; Enter or Escape closes it and gives the editor its keys back,
183
- * focus moving out of it (or of the element marked
184
- * `data-edytor-image-alt-panel` around it) closes it, and a press on it
185
- * keeps it open. Write its value with `setAlt`.
186
- */
187
- altField = (node) => {
188
- identify(node, this.edytor.popups.idOf('image-alt'), undefined, this.labels.alt);
189
- node.setAttribute('data-edytor-image-alt', '');
190
- node.focus({ preventScroll: true });
191
- const keydown = (event) => {
192
- if (event.isComposing || (event.key !== 'Enter' && event.key !== 'Escape'))
193
- return;
194
- event.preventDefault();
195
- this.closeAlt(true);
196
- };
197
- node.addEventListener('keydown', keydown);
198
- node.addEventListener('focusout', this.blurred);
199
- return () => {
200
- node.removeEventListener('keydown', keydown);
201
- node.removeEventListener('focusout', this.blurred);
202
- };
203
- };
204
- /** Close the alt field; with `keys`, the editor takes the keys back. */
205
- closeAlt = (keys = false) => {
206
- if (this.editing === null)
207
- return;
208
- this.editing = null;
209
- this.edytor.overlay.invalidate();
210
- if (keys)
211
- takeKeys(this.edytor);
212
- };
213
- #block = () => {
214
- const id = this.box?.id;
215
- const block = id ? this.edytor.idToBlock.get(id) : undefined;
216
- return block?.isInTree ? block : undefined;
217
- };
218
- /**
219
- * A `mousedown` on a handle: no native selection starts there; the press
220
- * itself when no `pointerdown` came before it (`isLonePress`: WebKit's
221
- * first press after a drag), which starts the drag as one would.
222
- * @internal
223
- */
224
- mousedown = (event, side) => {
225
- event.preventDefault();
226
- if (isLonePress(this.edytor, event))
227
- this.start(event, side);
228
- };
229
- /**
230
- * Press on a handle: the drag starts, nothing is written until the
231
- * release. A `pointerdown` tracks its pointer (captured, on the document);
232
- * a lone `mousedown` tracks the mouse on the window.
111
+ * Press on a handle (`{@attach band.press(…)}`): the drag starts, nothing
112
+ * is written until the release.
233
113
  * @internal
234
114
  */
235
115
  start = (event, side) => {
236
116
  const { edytor } = this;
237
117
  const box = this.box;
238
- if (event.button !== 0 || !edytor.dispatcher.permits() || this.drag || !box)
118
+ if (!edytor.dispatcher.permits() || !box)
239
119
  return;
240
120
  const img = imageOf(edytor.idToBlock.get(box.id)?.node);
241
121
  const frame = img?.parentElement;
242
122
  if (!img || !frame)
243
123
  return;
244
- event.preventDefault();
245
- event.stopPropagation();
246
- const target = event.currentTarget;
247
- const pointer = event.type === 'pointerdown';
248
- if (pointer)
249
- target?.setPointerCapture?.(event.pointerId);
250
- this.drag = {
124
+ const drag = {
251
125
  id: box.id,
252
126
  side,
253
127
  from: event.clientX,
@@ -256,57 +130,21 @@ export class ImageControls {
256
130
  max: frame.getBoundingClientRect().width,
257
131
  factor: box.align === 'center' ? 2 : 1
258
132
  };
259
- const document = target?.ownerDocument ?? edytor.node?.ownerDocument;
260
- const tracked = pointer ? document : document?.defaultView;
261
- const [moves, ups] = pointer ? ['pointermove', 'pointerup'] : ['mousemove', 'mouseup'];
262
- const move = (moved) => {
263
- const drag = this.drag;
264
- if (!drag)
265
- return;
266
- if (!edytor.dispatcher.permits())
267
- return end(moved);
268
- drag.at = moved.clientX;
269
- this.preview = { id: drag.id, width: widthAt(drag) };
270
- edytor.overlay.invalidate();
271
- };
272
- const end = (ended) => {
273
- tracked?.removeEventListener(moves, move);
274
- tracked?.removeEventListener(ups, end);
275
- tracked?.removeEventListener('pointercancel', end);
276
- document?.removeEventListener('keydown', escape, true);
277
- const drag = this.drag;
278
- this.drag = null;
279
- this.#cancel = null;
280
- edytor.overlay.invalidate();
281
- if (drag && ended.type === ups) {
282
- drag.at = ended.clientX;
283
- this.#release(drag);
284
- // The editor holds the keys after the release (Notion: Mod+Z right after).
285
- takeKeys(edytor);
286
- }
133
+ this.band.start(event, drag, (done) => {
134
+ if (done)
135
+ this.#release(done);
287
136
  // After the release's write: the stored width replaces the preview in one flush.
288
137
  this.preview = null;
289
- };
290
- const escape = (key) => {
291
- if (key.key !== 'Escape')
292
- return;
293
- key.preventDefault();
294
- key.stopPropagation();
295
- end(key);
296
- };
297
- this.#cancel = () => end(new Event('cancel'));
298
- tracked?.addEventListener(moves, move);
299
- tracked?.addEventListener(ups, end);
300
- if (pointer)
301
- tracked?.addEventListener('pointercancel', end);
302
- document?.addEventListener('keydown', escape, true);
303
- edytor.overlay.invalidate();
138
+ }, () => {
139
+ const moving = this.band.drag;
140
+ if (moving)
141
+ this.preview = { id: moving.id, width: widthAt(moving) };
142
+ });
304
143
  };
305
144
  /** The view turned readonly: a drag in progress ends at once, nothing written. @internal */
306
145
  lock = () => {
307
- if (this.drag && !this.edytor.dispatcher.permits())
308
- this.#cancel?.();
309
- this.editing = null;
146
+ this.band.lock();
147
+ this.held = null;
310
148
  };
311
149
  /** The release: `data.width`, rounded to the px, one undo step; nothing when nothing moved. */
312
150
  #release(drag) {
@@ -315,7 +153,7 @@ export class ImageControls {
315
153
  if (!block?.isInTree || Math.abs(widthAt(drag) - drag.width) < 1)
316
154
  return;
317
155
  if (imageWidthOf(block.data) !== width)
318
- block.data.width = width;
156
+ block.edytor.patchData(block.id, [{ path: ['width'], value: width }]);
319
157
  }
320
158
  }
321
159
  /** The image's width at the drag's pointer, held between the minimum and its frame's width. */
@@ -324,12 +162,5 @@ const widthAt = ({ side, from, at, width, max, factor }) => {
324
162
  const hi = Math.max(max, width);
325
163
  return Math.min(hi, Math.max(lo, width + (side === 'right' ? 1 : -1) * factor * (at - from)));
326
164
  };
327
- const sameBox = (a, b) => a === b ||
328
- (a !== null &&
329
- b !== null &&
330
- a.id === b.id &&
331
- a.x === b.x &&
332
- a.y === b.y &&
333
- a.width === b.width &&
334
- a.height === b.height &&
335
- a.align === b.align);
165
+ /** Each view's image chrome (the first image plugin listed claims it). */
166
+ export const imageControls = new WeakMap();
@@ -1,8 +1,3 @@
1
- /** Each view's image labels: the first image plugin listed claims them, as its kind. */
2
- export declare const imageLabels: {
3
- claim: (view: object | undefined, labels: import("../../labels.js").ImageLabels) => void;
4
- of: (view: object | undefined) => import("../../labels.js").ImageLabels;
5
- };
6
1
  /** An image source the block may render: http(s), blob, or an inline image. */
7
2
  export declare const safeImageSrc: (value: unknown) => string | null;
8
3
  /**
@@ -1,6 +1,3 @@
1
- import { viewLabels } from '../../labels.js';
2
- /** Each view's image labels: the first image plugin listed claims them, as its kind. */
3
- export const imageLabels = viewLabels('image');
4
1
  /** An image source the block may render: http(s), blob, or an inline image. */
5
2
  export const safeImageSrc = (value) => {
6
3
  if (typeof value !== 'string')
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The image toolbar (Notion's), its own plugin: the app's `toolbar` over
3
+ * the image the view's image chrome is on (`ImageControls`), at its top
4
+ * right: the alignments and the alt text field. An alignment is one
5
+ * `patchData` command; the alt text is written as it is typed (the
6
+ * dispatcher groups the keystrokes into one step). While the alt field is
7
+ * open the chrome stays on its image; a press outside the toolbar and the
8
+ * field (`onPress`) or focus leaving the field closes it.
9
+ */
10
+ import type { Attachment } from 'svelte/attachments';
11
+ import type { Snippet } from 'svelte';
12
+ import type { Plugin } from '../../plugins.js';
13
+ import { type ImageAlign } from './image.js';
14
+ import { type ImageControls } from './controls.svelte.js';
15
+ /**
16
+ * What a `toolbar` snippet receives: the image the chrome is on (`box`),
17
+ * its alignment (`align`) and alt text (`alt`, `setAlt`), the alt field's
18
+ * state (`editing`, `toggleAlt`, `closeAlt`) and the attachments that give
19
+ * your markup its behavior (`bar`, `altField`).
20
+ */
21
+ export declare class ImageToolbar {
22
+ #private;
23
+ constructor(
24
+ /** @internal */
25
+ controls: ImageControls);
26
+ /** The measured image the toolbar is on (`null`: none). */
27
+ get box(): import("./controls.svelte.js").ImageBox | null;
28
+ /** The view is readonly (reactive). */
29
+ get readonly(): boolean;
30
+ /** The image whose alt field is open: the chrome stays on it. */
31
+ get editing(): string | null;
32
+ set editing(id: string | null);
33
+ /** Set the target image's alignment: one `patchData` command. */
34
+ align: (align: ImageAlign) => void;
35
+ /** The target image's alt text. */
36
+ get alt(): string;
37
+ /** Write the alt text as it is typed: the dispatcher groups the keystrokes into one step. */
38
+ setAlt: (alt: string) => void;
39
+ /** Open (or close) the alt field of the target image. */
40
+ toggleAlt: () => void;
41
+ /**
42
+ * The image's toolbar (`{@attach controls.bar}`, named by your markup): its
43
+ * `toolbar` role unless it has its own, the mark a press outside the alt field
44
+ * reads (a press on the toolbar keeps the field open, so its Alt button
45
+ * toggles it), and presses that keep the editor's focus.
46
+ */
47
+ bar: Attachment<HTMLElement>;
48
+ /**
49
+ * The alt text field (`{@attach controls.altField}`): focused when it
50
+ * opens; Enter or Escape closes it and gives the editor its keys back,
51
+ * focus moving out of it (or of the element marked
52
+ * `data-edytor-image-alt-panel` around it) closes it, and a press on it
53
+ * keeps it open. Write its value with `setAlt`.
54
+ */
55
+ altField: Attachment<HTMLInputElement>;
56
+ /** Close the alt field; with `keys`, the editor takes the keys back. */
57
+ closeAlt: (keys?: boolean) => void;
58
+ }
59
+ export type ImageToolbarOptions = {
60
+ /**
61
+ * The toolbar over the hovered image (the alignments and the alt field);
62
+ * it renders while the image chrome shows and no handle drags, at the
63
+ * image's top right. Keep its behaviour with `{@attach toolbar.bar}` on
64
+ * the toolbar and `{@attach toolbar.altField}` on the alt field.
65
+ */
66
+ toolbar: Snippet<[ImageToolbar]>;
67
+ };
68
+ /** The image toolbar: your `toolbar` over the image the chrome is on. The first listed claims the view. */
69
+ export declare const createImageToolbarPlugin: ({ toolbar }: ImageToolbarOptions) => Plugin;
@@ -0,0 +1,145 @@
1
+ import { onPress, takeKeys } from '../../events/onFocus.js';
2
+ import { pin } from '../../surface/overlay.js';
3
+ import { imageAlignOf, imageAltOf } from './image.js';
4
+ import { imageControls } from './controls.svelte.js';
5
+ import { identify, keepFocus } from '../chrome.js';
6
+ import { all, listen } from '../../utils/listen.js';
7
+ import ImageToolbarHost from './ImageToolbarHost.svelte';
8
+ /** Where a press keeps the alt field open: the toolbar (its Alt button toggles it) and the field's own. */
9
+ const ALT_CHROME = '[data-edytor-image-alt-panel], [data-edytor-image-toolbar], [data-edytor-image-alt]';
10
+ /**
11
+ * What a `toolbar` snippet receives: the image the chrome is on (`box`),
12
+ * its alignment (`align`) and alt text (`alt`, `setAlt`), the alt field's
13
+ * state (`editing`, `toggleAlt`, `closeAlt`) and the attachments that give
14
+ * your markup its behavior (`bar`, `altField`).
15
+ */
16
+ export class ImageToolbar {
17
+ controls;
18
+ constructor(
19
+ /** @internal */
20
+ controls) {
21
+ this.controls = controls;
22
+ }
23
+ /** The measured image the toolbar is on (`null`: none). */
24
+ get box() {
25
+ return this.controls.box;
26
+ }
27
+ /** The view is readonly (reactive). */
28
+ get readonly() {
29
+ return this.controls.readonly;
30
+ }
31
+ /** The image whose alt field is open: the chrome stays on it. */
32
+ get editing() {
33
+ return this.controls.held;
34
+ }
35
+ set editing(id) {
36
+ this.controls.held = id;
37
+ }
38
+ get #edytor() {
39
+ return this.controls.edytor;
40
+ }
41
+ /** Set the target image's alignment: one `patchData` command. */
42
+ align = (align) => {
43
+ const block = this.#block();
44
+ if (block && imageAlignOf(block.data) !== align)
45
+ block.edytor.patchData(block.id, [{ path: ['align'], value: align }]);
46
+ };
47
+ /** The target image's alt text. */
48
+ get alt() {
49
+ return imageAltOf(this.#block()?.data);
50
+ }
51
+ /** Write the alt text as it is typed: the dispatcher groups the keystrokes into one step. */
52
+ setAlt = (alt) => {
53
+ const block = this.#block();
54
+ if (block && imageAltOf(block.data) !== alt)
55
+ block.edytor.patchData(block.id, [{ path: ['alt'], value: alt }]);
56
+ };
57
+ /** Open (or close) the alt field of the target image. */
58
+ toggleAlt = () => {
59
+ this.editing = this.editing ? null : (this.box?.id ?? null);
60
+ this.#edytor.overlay.invalidate();
61
+ };
62
+ /**
63
+ * A press anywhere (`onPress`, capture): one outside the alt panel and the
64
+ * toolbar (whose Alt button toggles it) closes the field, so the chrome
65
+ * follows the pointer again.
66
+ * @internal
67
+ */
68
+ pressed = (event) => {
69
+ const target = event.target;
70
+ if (this.editing === null)
71
+ return;
72
+ if (target?.closest?.(ALT_CHROME))
73
+ return;
74
+ this.closeAlt();
75
+ };
76
+ /** Focus left the alt field: for somewhere outside its panel, the field closes. @internal */
77
+ blurred = (event) => {
78
+ const to = event.relatedTarget;
79
+ const field = event.currentTarget;
80
+ const panel = field?.closest('[data-edytor-image-alt-panel]') ?? field;
81
+ // No new focus (the window went to the background): the field stays.
82
+ if (!(to instanceof Node) || panel?.contains(to))
83
+ return;
84
+ this.closeAlt();
85
+ };
86
+ /**
87
+ * The image's toolbar (`{@attach controls.bar}`, named by your markup): its
88
+ * `toolbar` role unless it has its own, the mark a press outside the alt field
89
+ * reads (a press on the toolbar keeps the field open, so its Alt button
90
+ * toggles it), and presses that keep the editor's focus.
91
+ */
92
+ bar = (node) => {
93
+ if (!node.hasAttribute('role'))
94
+ node.setAttribute('role', 'toolbar');
95
+ node.setAttribute('data-edytor-image-toolbar', '');
96
+ return listen(node, 'mousedown', keepFocus);
97
+ };
98
+ /**
99
+ * The alt text field (`{@attach controls.altField}`): focused when it
100
+ * opens; Enter or Escape closes it and gives the editor its keys back,
101
+ * focus moving out of it (or of the element marked
102
+ * `data-edytor-image-alt-panel` around it) closes it, and a press on it
103
+ * keeps it open. Write its value with `setAlt`.
104
+ */
105
+ altField = (node) => {
106
+ identify(node, this.#edytor.popups.idOf('image-alt'));
107
+ node.setAttribute('data-edytor-image-alt', '');
108
+ node.focus({ preventScroll: true });
109
+ const keydown = (event) => {
110
+ if (event.isComposing || (event.key !== 'Enter' && event.key !== 'Escape'))
111
+ return;
112
+ event.preventDefault();
113
+ this.closeAlt(true);
114
+ };
115
+ return all(listen(node, 'keydown', keydown), listen(node, 'focusout', this.blurred));
116
+ };
117
+ /** Close the alt field; with `keys`, the editor takes the keys back. */
118
+ closeAlt = (keys = false) => {
119
+ if (this.editing === null)
120
+ return;
121
+ this.editing = null;
122
+ this.#edytor.overlay.invalidate();
123
+ if (keys)
124
+ takeKeys(this.#edytor);
125
+ };
126
+ #block = () => {
127
+ const id = this.box?.id;
128
+ const block = id ? this.#edytor.idToBlock.get(id) : undefined;
129
+ return block?.isInTree ? block : undefined;
130
+ };
131
+ }
132
+ /** The image toolbar: your `toolbar` over the image the chrome is on. The first listed claims the view. */
133
+ export const createImageToolbarPlugin = ({ toolbar }) => (edytor) => ({
134
+ onEdytorAttached: ({ node }) => {
135
+ const controls = imageControls.get(edytor);
136
+ if (!controls || controls.toolbar)
137
+ return;
138
+ const bar = (controls.toolbar = new ImageToolbar(controls));
139
+ return all(
140
+ // A press outside the alt panel closes it (WebKit's lone `mousedown` too).
141
+ onPress(edytor, node.ownerDocument, bar.pressed, true), edytor.overlay.mount(ImageToolbarHost, { toolbar: bar, snippet: toolbar }, 'edytor-image-toolbar-host',
142
+ // With the image chrome: above the block handles and the column bands.
143
+ 7, (host) => () => pin(host)), () => (controls.toolbar = undefined));
144
+ }
145
+ });
@@ -1,46 +1,51 @@
1
- export { richTextPlugin, createRichTextPlugin, richTextOperations, richTextPlaceholder, createRichTextPlaceholder, CALLOUT_ICONS, type CalloutIconPicker, type CalloutIconOption, type RichTextPluginOptions } from './richtext/RichTextPlugin.svelte';
2
- export { arrowMovePlugin } from './arrowMove/arrowMove.js';
3
- export type { MenuItemPayload, OptionAttributes } from './chrome.js';
1
+ export { createRichTextPlugin, richTextOperations, richTextPlaceholder, type RichTextPluginOptions, type TodoCheckboxPayload, type CalloutIconPayload, type EmptyBodyPayload } from './richtext/RichTextPlugin.svelte';
2
+ export { CALLOUT_ICONS, createCalloutIconsPlugin, type CalloutIconPicker, type CalloutIconsOptions } from './richtext/calloutIcons.svelte.js';
3
+ export { createUploadsPlugin, type UploadsOptions } from './uploads.svelte.js';
4
+ export { createArrowMovePlugin } from './arrowMove/arrowMove.js';
5
+ export type { MenuItemPayload } from './chrome.js';
4
6
  export { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT, type BlockActivation, type BlockAddition } from './blockHandles/BlockHandleController.svelte.js';
5
- export { TOOLBAR_COLORS } from './toolbar/ToolbarController.svelte.js';
6
- export { blockHandlesPlugin, createBlockHandlesPlugin, type BlockHandleActivation, type BlockHandlesOptions, type BlockHandleSnippetPayload } from './blockHandles/blockHandlesPlugin.js';
7
- export { codePlugin, createCodePlugin, CODE_LANGUAGES, loadCodeLanguage, type CodeLanguage, type CodePluginOptions } from './code/CodePlugin.svelte';
7
+ export { createBlockHandlesPlugin, type BlockHandlesOptions, type BlockHandleSnippetPayload } from './blockHandles/blockHandlesPlugin.js';
8
+ export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage, type CodeLanguage, type CodePluginOptions } from './code/CodePlugin.svelte';
8
9
  export type { CodeHeader } from './code/header.svelte.js';
9
10
  export type { LanguageMenu, LanguageMenuItem, LanguageRow } from './code/languageMenu.svelte.js';
10
- export { markdownShortcutsPlugin } from './markdownShortcuts.js';
11
+ export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
11
12
  export { createMentionPlugin, type MentionItem, type MentionData, type MentionPluginOptions } from './mention/MentionPlugin.svelte';
12
13
  export { createPageLinkPlugin, type PageLinkItem, type PageLinkData, type PageLinkPluginOptions } from './pageLink/PageLinkPlugin.svelte';
13
14
  export type { TriggerMenuController } from './triggers/TriggerController.svelte.js';
14
- export { slashMenuPlugin, createSlashMenuPlugin, type SlashMenuOptions, type SlashMenuItem } from './slashMenu/slashMenuPlugin.js';
15
+ export { withRulesAndTriggers } from './triggers/triggers.js';
16
+ export { createSlashMenuPlugin, type SlashMenuOptions } from './slashMenu/slashMenuPlugin.js';
15
17
  export type { SlashMenuController } from './slashMenu/SlashMenuController.svelte.js';
16
- export { toolbarPlugin, createToolbarPlugin, type ToolbarOptions } from './toolbar/toolbarPlugin.js';
18
+ export { createToolbarPlugin, type ToolbarOptions } from './toolbar/toolbarPlugin.js';
17
19
  export type { ToolbarController } from './toolbar/ToolbarController.svelte.js';
18
- export { blockMenuPlugin, createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
19
- export { suggestionsPlugin, createSuggestionsPlugin, isSuggestionsPlugin, type SuggestionsOptions, type SuggestionBarPayload } from './suggestions/suggestionsPlugin.js';
20
+ export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
21
+ export { createSuggestionsPlugin, type SuggestionBarOptions, type SuggestionBarPayload } from './suggestions/suggestionsPlugin.js';
22
+ export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
20
23
  export type { BlockMenuOptions, BlockMenuController, BlockMenuAction, BlockMenuColor } from './blockMenu/BlockMenuController.svelte.js';
21
- export { imagePlugin, createImagePlugin, isImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, type ImagePluginOptions, type ImageData, type ImageAlign } from './image/ImagePlugin.svelte';
22
- export { embedPlugin, createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf, type EmbedProvider, type EmbedPluginOptions } from './media/EmbedPlugin.svelte';
23
- export { bookmarkPlugin, createBookmarkPlugin, type BookmarkPluginOptions, type BookmarkPreview } from './media/BookmarkPlugin.svelte';
24
- export { filePlugin, createFilePlugin } from './media/FilePlugin.svelte';
25
- export { videoPlugin, createVideoPlugin } from './media/VideoPlugin.svelte';
26
- export { audioPlugin, createAudioPlugin } from './media/AudioPlugin.svelte';
27
- export { safeWebUrl, safeMediaSrc, type MediaKind, type MediaPluginOptions } from './media/media.js';
24
+ export { createImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, type ImageData, type ImageAlign } from './image/ImagePlugin.svelte';
25
+ export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf, type EmbedProvider, type EmbedPluginOptions, type EmbedFallbackPayload } from './media/EmbedPlugin.svelte';
26
+ export { createBookmarkPlugin, type BookmarkPluginOptions, type BookmarkPreview, type BookmarkCardPayload } from './media/BookmarkPlugin.svelte';
27
+ export { createFilePlugin, type FilePluginOptions, type FileRowPayload } from './media/FilePlugin.svelte';
28
+ export { createVideoPlugin } from './media/VideoPlugin.svelte';
29
+ export { createAudioPlugin } from './media/AudioPlugin.svelte';
30
+ export { safeWebUrl, safeMediaSrc, type MediaKind } from './media/media.js';
28
31
  export type { MediaEmptyController, MediaEmptyFailure } from './media/empty.svelte.js';
32
+ export { createMediaEmptyPlugin, type MediaEmptyOptions } from './media/MediaEmpty.svelte';
29
33
  export type { UrlPasteController, UrlPasteOffer, UrlPasteOption } from './media/urlPaste.svelte.js';
30
34
  export type { ImageControls, ImageBox } from './image/controls.svelte.js';
31
- export type { ImageEmptyController, ImageEmptyFailure } from './image/empty.svelte.js';
35
+ export { createImageToolbarPlugin, type ImageToolbar, type ImageToolbarOptions } from './image/toolbar.svelte.js';
32
36
  export type { BlockHandleController } from './blockHandles/BlockHandleController.svelte.js';
33
- export { columnsPlugin, createColumnsPlugin, isColumnsPlugin, type ColumnsPluginOptions } from './columns/ColumnsPlugin.svelte';
34
- export { findPlugin, createFindPlugin, findController, type FindPluginOptions } from './find/findPlugin.js';
37
+ export { createColumnsPlugin, type ColumnsPluginOptions } from './columns/ColumnsPlugin.svelte';
38
+ export { createFindPlugin, findController, type FindPluginOptions } from './find/findPlugin.js';
35
39
  export type { FindController, ReplaceMatches } from './find/FindController.svelte.js';
36
- export { marqueePlugin, createMarqueePlugin, type MarqueePluginOptions } from './marquee/marqueePlugin.js';
40
+ export { createMarqueePlugin, type MarqueePluginOptions } from './marquee/marqueePlugin.js';
37
41
  export type { MarqueeBoxPayload } from './marquee/MarqueeController.svelte.js';
38
42
  export { findMatches, type FindMatch, type FindOptions } from './find/search.js';
39
43
  export { createCommentsPlugin, commentsController, type CommentsPluginOptions, type CommentCardPayload } from './comments/commentsPlugin.js';
40
44
  export type { CommentsController, CommentDraft, CommentNotice, CommentUser, PlacedThread } from './comments/CommentsController.svelte.js';
41
- export { pagePlugin, createPagePlugin, type PagePluginOptions } from './page/PagePlugin.svelte';
42
- export { tocPlugin, createTocPlugin, type TocPluginOptions, type TocHeadingLevel } from './toc/TocPlugin.svelte';
43
- export { tablePlugin, createTablePlugin, isTablePlugin, type TablePluginOptions } from './table/TablePlugin.svelte';
45
+ export { createPagePlugin, type PagePluginOptions, type PageBlockLinkPayload } from './page/PagePlugin.svelte';
46
+ export { createTocPlugin, type TocPluginOptions, type TocHeadingLevel, type TocEntryPayload, type TocEmptyPayload } from './toc/TocPlugin.svelte';
47
+ export { createTablePlugin, type TablePluginOptions } from './table/TablePlugin.svelte';
48
+ export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
44
49
  export type { TableChrome, TableMenu, TableMenuRow, TableMenuItem, TableGripPayload, TableAddPayload } from './table/chrome.svelte.js';
45
50
  export { tableBlock, type TableBlockOptions } from '../crdt/tables.js';
46
- export { createEquationPlugin, KATEX_CDN, KATEX_VERSION, type EquationPluginOptions, type EquationData, type EquationEditor, type EquationTarget, type KatexLike, type KatexLoader } from './equation/EquationPlugin.svelte';
51
+ export { createEquationPlugin, KATEX_CDN, KATEX_VERSION, type EquationPluginOptions, type EquationData, type EquationEditor, type EquationErrorPayload, type EquationPlaceholderPayload, type EquationTarget, type KatexLike, type KatexLoader } from './equation/EquationPlugin.svelte';