edytor 1.0.0-rc.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +47 -141
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.d.ts +6 -1
  13. package/dist/clipboard/htmlFlow.js +26 -13
  14. package/dist/clipboard/insertClipboardFragment.js +5 -4
  15. package/dist/clipboard/moveText.js +16 -8
  16. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  17. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  18. package/dist/cloudflare/DocumentRoom.d.ts +22 -17
  19. package/dist/cloudflare/DocumentRoom.js +10 -5
  20. package/dist/cloudflare/index.d.ts +1 -1
  21. package/dist/cloudflare/index.js +1 -1
  22. package/dist/cloudflare/move.d.ts +1 -18
  23. package/dist/cloudflare/move.js +2 -48
  24. package/dist/cloudflare/room/admission.d.ts +1 -60
  25. package/dist/cloudflare/room/admission.js +25 -29
  26. package/dist/cloudflare/room/comments.d.ts +1 -3
  27. package/dist/cloudflare/room/comments.js +6 -6
  28. package/dist/cloudflare/room/context.d.ts +20 -82
  29. package/dist/cloudflare/room/context.js +8 -8
  30. package/dist/cloudflare/room/forged.d.ts +1 -1
  31. package/dist/cloudflare/room/forged.js +2 -12
  32. package/dist/cloudflare/room/frames.d.ts +1 -1
  33. package/dist/cloudflare/room/frames.js +1 -1
  34. package/dist/cloudflare/room/history.d.ts +1 -25
  35. package/dist/cloudflare/room/history.js +39 -54
  36. package/dist/cloudflare/room/moves.d.ts +1 -13
  37. package/dist/cloudflare/room/moves.js +33 -57
  38. package/dist/cloudflare/room/presence.d.ts +1 -11
  39. package/dist/cloudflare/room/presence.js +4 -4
  40. package/dist/cloudflare/room/purge.d.ts +1 -2
  41. package/dist/cloudflare/room/purge.js +2 -2
  42. package/dist/cloudflare/room/replicas.d.ts +1 -7
  43. package/dist/cloudflare/room/replicas.js +2 -2
  44. package/dist/cloudflare/room/storage.d.ts +9 -30
  45. package/dist/cloudflare/room/storage.js +52 -104
  46. package/dist/cloudflare/room/updates.d.ts +4 -4
  47. package/dist/cloudflare/room/updates.js +17 -24
  48. package/dist/cloudflare/room/validation.d.ts +1 -5
  49. package/dist/cloudflare/room/validation.js +16 -37
  50. package/dist/collaboration/RemoteSelections.svelte +13 -17
  51. package/dist/collaboration/comments/client.d.ts +2 -2
  52. package/dist/collaboration/comments/client.js +1 -1
  53. package/dist/collaboration/history/index.d.ts +5 -5
  54. package/dist/collaboration/history/index.js +5 -5
  55. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  56. package/dist/collaboration/history/panel.svelte.js +223 -0
  57. package/dist/collaboration/providers.d.ts +12 -3
  58. package/dist/collaboration/providers.js +5 -4
  59. package/dist/components/Block.svelte +160 -119
  60. package/dist/components/Block.svelte.d.ts +8 -3
  61. package/dist/components/Content.svelte +91 -44
  62. package/dist/components/CustomMark.svelte +46 -0
  63. package/dist/components/CustomMark.svelte.d.ts +11 -0
  64. package/dist/components/Edytor.svelte +80 -95
  65. package/dist/components/Edytor.svelte.d.ts +8 -12
  66. package/dist/components/InlineBlock.svelte +4 -9
  67. package/dist/components/Mark.svelte +46 -35
  68. package/dist/components/Mark.svelte.d.ts +7 -0
  69. package/dist/components/Ranges.svelte +96 -0
  70. package/dist/components/Ranges.svelte.d.ts +19 -0
  71. package/dist/components/Suggestion.svelte +3 -2
  72. package/dist/components/Text.svelte +48 -14
  73. package/dist/components/Text.svelte.d.ts +1 -1
  74. package/dist/crdt/admission.d.ts +2 -9
  75. package/dist/crdt/admission.js +3 -9
  76. package/dist/crdt/attribution/attribution.d.ts +11 -72
  77. package/dist/crdt/attribution/attribution.js +5 -52
  78. package/dist/crdt/attribution/block.d.ts +0 -78
  79. package/dist/crdt/attribution/block.js +1 -144
  80. package/dist/crdt/data.d.ts +8 -13
  81. package/dist/crdt/data.js +30 -70
  82. package/dist/crdt/doc/anchors.js +4 -4
  83. package/dist/crdt/doc/content.d.ts +5 -1
  84. package/dist/crdt/doc/content.js +3 -1
  85. package/dist/crdt/doc/delete.d.ts +1 -0
  86. package/dist/crdt/doc/funnel.d.ts +0 -23
  87. package/dist/crdt/doc/funnel.js +34 -85
  88. package/dist/crdt/doc/gate.d.ts +8 -9
  89. package/dist/crdt/doc/gate.js +7 -17
  90. package/dist/crdt/doc/history.d.ts +87 -14
  91. package/dist/crdt/doc/history.js +334 -149
  92. package/dist/crdt/doc/layout.d.ts +0 -1
  93. package/dist/crdt/doc/layout.js +2 -3
  94. package/dist/crdt/doc/meta.d.ts +4 -4
  95. package/dist/crdt/doc/meta.js +10 -21
  96. package/dist/crdt/doc/moves.d.ts +4 -4
  97. package/dist/crdt/doc/moves.js +5 -5
  98. package/dist/crdt/doc/plan.d.ts +2 -0
  99. package/dist/crdt/doc/plan.js +2 -0
  100. package/dist/crdt/doc/reads.d.ts +1 -5
  101. package/dist/crdt/doc/reads.js +38 -49
  102. package/dist/crdt/doc/seed.d.ts +15 -6
  103. package/dist/crdt/doc/seed.js +27 -26
  104. package/dist/crdt/doc/split-merge.d.ts +1 -3
  105. package/dist/crdt/doc/split-merge.js +4 -5
  106. package/dist/crdt/doc/steps.d.ts +3 -7
  107. package/dist/crdt/doc/steps.js +20 -9
  108. package/dist/crdt/doc/types.d.ts +0 -10
  109. package/dist/crdt/document.d.ts +24 -115
  110. package/dist/crdt/document.js +207 -305
  111. package/dist/crdt/edytor-doc.d.ts +671 -90
  112. package/dist/crdt/edytor-doc.js +73 -149
  113. package/dist/crdt/engine-api.d.ts +15 -47
  114. package/dist/crdt/engine.d.ts +7 -17
  115. package/dist/crdt/engine.js +9 -19
  116. package/dist/crdt/flow.d.ts +9 -37
  117. package/dist/crdt/flow.js +260 -238
  118. package/dist/crdt/index.d.ts +26 -85
  119. package/dist/crdt/index.js +21 -47
  120. package/dist/crdt/operations.d.ts +24 -33
  121. package/dist/crdt/operations.js +7 -17
  122. package/dist/crdt/placement/display.d.ts +0 -2
  123. package/dist/crdt/placement/display.js +0 -15
  124. package/dist/crdt/placement/model.d.ts +160 -12
  125. package/dist/crdt/placement/model.js +413 -414
  126. package/dist/crdt/placement/rank.d.ts +1 -5
  127. package/dist/crdt/placement/rank.js +28 -38
  128. package/dist/crdt/protocol.d.ts +4 -5
  129. package/dist/crdt/protocol.js +3 -4
  130. package/dist/crdt/protocols/awareness.d.ts +3 -7
  131. package/dist/crdt/protocols/awareness.js +17 -33
  132. package/dist/crdt/protocols/envelope.d.ts +9 -29
  133. package/dist/crdt/protocols/envelope.js +8 -25
  134. package/dist/crdt/protocols/sync.d.ts +15 -30
  135. package/dist/crdt/protocols/sync.js +27 -89
  136. package/dist/crdt/providers/bound.d.ts +3 -1
  137. package/dist/crdt/providers/bound.js +3 -1
  138. package/dist/crdt/providers/container.d.ts +11 -17
  139. package/dist/crdt/providers/container.js +39 -27
  140. package/dist/crdt/providers/index.d.ts +34 -6
  141. package/dist/crdt/providers/index.js +106 -111
  142. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  143. package/dist/crdt/providers/indexeddb.js +29 -90
  144. package/dist/crdt/providers/room.d.ts +58 -2
  145. package/dist/crdt/providers/room.js +38 -21
  146. package/dist/crdt/providers/websocket.d.ts +1 -1
  147. package/dist/crdt/providers/websocket.js +3 -4
  148. package/dist/crdt/purge.d.ts +2 -2
  149. package/dist/crdt/purge.js +69 -6
  150. package/dist/crdt/rangeDelete.d.ts +4 -42
  151. package/dist/crdt/rangeDelete.js +7 -6
  152. package/dist/crdt/restore.d.ts +21 -1
  153. package/dist/crdt/restore.js +54 -59
  154. package/dist/crdt/schema.d.ts +2 -2
  155. package/dist/crdt/schema.js +4 -5
  156. package/dist/crdt/semantics.d.ts +10 -15
  157. package/dist/crdt/semantics.js +22 -21
  158. package/dist/crdt/storage.d.ts +7 -13
  159. package/dist/crdt/storage.js +10 -24
  160. package/dist/crdt/structs.d.ts +42 -47
  161. package/dist/crdt/structs.js +76 -67
  162. package/dist/crdt/tables.d.ts +9 -0
  163. package/dist/crdt/tables.js +20 -0
  164. package/dist/crdt/text/delete-index.d.ts +0 -13
  165. package/dist/crdt/text/delete-index.js +7 -14
  166. package/dist/crdt/text/deletes.d.ts +9 -22
  167. package/dist/crdt/text/deletes.js +11 -74
  168. package/dist/crdt/text/index/cache.js +3 -3
  169. package/dist/crdt/text/index/fold.d.ts +1 -2
  170. package/dist/crdt/text/index/fold.js +15 -10
  171. package/dist/crdt/text/index/layout.d.ts +0 -10
  172. package/dist/crdt/text/index/layout.js +6 -20
  173. package/dist/crdt/text/index/records.js +2 -1
  174. package/dist/crdt/text/index/report.js +5 -6
  175. package/dist/crdt/text/index/shared.d.ts +11 -4
  176. package/dist/crdt/text/index/shared.js +8 -7
  177. package/dist/crdt/text/index/state.d.ts +3 -33
  178. package/dist/crdt/text/index/state.js +2 -4
  179. package/dist/crdt/text/model.d.ts +82 -2
  180. package/dist/crdt/text/model.js +344 -354
  181. package/dist/crdt/text/rows.d.ts +0 -2
  182. package/dist/crdt/text/rows.js +0 -11
  183. package/dist/crdt/text/runs.d.ts +6 -3
  184. package/dist/crdt/text/runs.js +132 -137
  185. package/dist/crdt/text/streams.d.ts +1 -1
  186. package/dist/crdt/text/streams.js +1 -1
  187. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  188. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  189. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  190. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  191. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  193. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  194. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  195. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  196. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  197. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  198. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  199. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  200. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  201. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  202. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  203. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  204. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  205. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  206. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  207. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  208. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  209. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  210. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  211. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  213. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  214. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  216. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  217. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  218. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  219. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  220. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  221. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  222. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  223. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  224. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  225. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  226. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  227. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  228. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  229. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  230. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  231. package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
  232. package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
  233. package/dist/dnd/pragmatic.d.ts +4 -22
  234. package/dist/dnd/pragmatic.js +7 -26
  235. package/dist/dnd/track.d.ts +14 -0
  236. package/dist/dnd/track.js +55 -0
  237. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  238. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  239. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  302. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  303. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  304. package/dist/edytor.svelte.d.ts +34 -64
  305. package/dist/edytor.svelte.js +118 -180
  306. package/dist/events/beforeInputCommands.d.ts +6 -11
  307. package/dist/events/beforeInputCommands.js +189 -184
  308. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  309. package/dist/events/beforeInputDeleteCommands.js +153 -204
  310. package/dist/events/domTextOffset.d.ts +9 -9
  311. package/dist/events/domTextOffset.js +20 -48
  312. package/dist/events/events.utils.d.ts +0 -2
  313. package/dist/events/events.utils.js +0 -4
  314. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  315. package/dist/events/nativeInteractiveControl.js +28 -56
  316. package/dist/events/onBeforeInput.d.ts +6 -1
  317. package/dist/events/onBeforeInput.js +207 -331
  318. package/dist/events/onCopy.js +1 -5
  319. package/dist/events/onDrop.d.ts +7 -1
  320. package/dist/events/onDrop.js +33 -72
  321. package/dist/events/onFocus.d.ts +9 -4
  322. package/dist/events/onFocus.js +92 -72
  323. package/dist/events/onInput.d.ts +8 -4
  324. package/dist/events/onInput.js +34 -147
  325. package/dist/events/onKeyDown.js +55 -122
  326. package/dist/events/onPaste.d.ts +13 -1
  327. package/dist/events/onPaste.js +46 -76
  328. package/dist/index.d.ts +10 -13
  329. package/dist/index.js +3 -3
  330. package/dist/kinds.d.ts +4 -6
  331. package/dist/kinds.js +28 -27
  332. package/dist/labels.d.ts +91 -314
  333. package/dist/labels.js +180 -396
  334. package/dist/plugins/Chrome.svelte +29 -0
  335. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  336. package/dist/plugins/Control.svelte +23 -0
  337. package/dist/plugins/Control.svelte.d.ts +30 -0
  338. package/dist/plugins/anchored.svelte.d.ts +47 -0
  339. package/dist/plugins/anchored.svelte.js +73 -0
  340. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  341. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  342. package/dist/plugins/bands.svelte.d.ts +57 -0
  343. package/dist/plugins/bands.svelte.js +95 -0
  344. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
  345. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  346. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
  347. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
  348. package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
  349. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  350. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
  351. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
  352. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  353. package/dist/plugins/blockHandles/dragPreview.js +20 -17
  354. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  355. package/dist/plugins/blockHandles/geometry.d.ts +46 -1
  356. package/dist/plugins/blockHandles/geometry.js +51 -4
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
  358. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
  359. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  360. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  361. package/dist/plugins/brand.d.ts +8 -0
  362. package/dist/plugins/brand.js +8 -0
  363. package/dist/plugins/chrome.d.ts +79 -0
  364. package/dist/plugins/chrome.js +87 -0
  365. package/dist/plugins/code/CodeHeader.svelte +12 -58
  366. package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
  367. package/dist/plugins/code/CodePlugin.svelte +75 -56
  368. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  369. package/dist/plugins/code/LanguageMenu.svelte +25 -0
  370. package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
  371. package/dist/plugins/code/code.css +5 -100
  372. package/dist/plugins/code/header.svelte.d.ts +47 -0
  373. package/dist/plugins/code/header.svelte.js +141 -0
  374. package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
  375. package/dist/plugins/code/languageMenu.svelte.js +199 -0
  376. package/dist/plugins/code/languages.d.ts +21 -10
  377. package/dist/plugins/code/languages.js +39 -126
  378. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  379. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  380. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  381. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  382. package/dist/plugins/columns/columns.css +7 -26
  383. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  384. package/dist/plugins/columns/resize.svelte.js +70 -164
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
  389. package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +18 -129
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
  393. package/dist/plugins/equation/EquationPlugin.svelte +123 -168
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.svelte.d.ts +74 -36
  397. package/dist/plugins/equation/equation.svelte.js +74 -66
  398. package/dist/plugins/equation/importUrl.d.ts +6 -0
  399. package/dist/plugins/equation/importUrl.js +6 -0
  400. package/dist/plugins/equation/katex.d.ts +8 -0
  401. package/dist/plugins/equation/katex.js +77 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +5 -151
  407. package/dist/plugins/image/ImagePlugin.svelte +49 -117
  408. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
  409. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  410. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  411. package/dist/plugins/image/controls.svelte.d.ts +6 -57
  412. package/dist/plugins/image/controls.svelte.js +51 -174
  413. package/dist/plugins/image/image.d.ts +0 -5
  414. package/dist/plugins/image/image.js +0 -3
  415. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  416. package/dist/plugins/image/toolbar.svelte.js +145 -0
  417. package/dist/plugins/index.d.ts +39 -24
  418. package/dist/plugins/index.js +30 -22
  419. package/dist/plugins/list.svelte.d.ts +128 -0
  420. package/dist/plugins/list.svelte.js +217 -0
  421. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  422. package/dist/plugins/markdownShortcuts.js +6 -5
  423. package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
  424. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
  425. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
  426. package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
  427. package/dist/plugins/marquee/marquee.d.ts +33 -0
  428. package/dist/plugins/marquee/marquee.js +89 -0
  429. package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
  430. package/dist/plugins/marquee/marqueePlugin.js +68 -0
  431. package/dist/plugins/media/AudioPlugin.svelte +3 -88
  432. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  433. package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
  434. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
  435. package/dist/plugins/media/EmbedPlugin.svelte +93 -77
  436. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
  437. package/dist/plugins/media/EmptySlot.svelte +44 -0
  438. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  439. package/dist/plugins/media/FilePlugin.svelte +35 -111
  440. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  441. package/dist/plugins/media/MediaEmpty.svelte +55 -112
  442. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  443. package/dist/plugins/media/SourceBlock.svelte +164 -0
  444. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  445. package/dist/plugins/media/VideoPlugin.svelte +4 -97
  446. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  447. package/dist/plugins/media/empty.svelte.d.ts +69 -0
  448. package/dist/plugins/media/empty.svelte.js +111 -0
  449. package/dist/plugins/media/media.d.ts +93 -30
  450. package/dist/plugins/media/media.js +79 -86
  451. package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
  452. package/dist/plugins/media/urlPaste.svelte.js +46 -75
  453. package/dist/plugins/mention/MentionPlugin.svelte +47 -124
  454. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
  455. package/dist/plugins/page/PageLink.svelte +54 -38
  456. package/dist/plugins/page/PagePlugin.svelte +20 -18
  457. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  458. package/dist/plugins/page/page.d.ts +35 -9
  459. package/dist/plugins/page/page.js +3 -4
  460. package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
  461. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
  462. package/dist/plugins/planned.d.ts +10 -0
  463. package/dist/plugins/planned.js +12 -0
  464. package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
  465. package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
  466. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  467. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  468. package/dist/plugins/richtext/EmptyBody.svelte +25 -0
  469. package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
  470. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  471. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  472. package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
  473. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
  474. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  475. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  476. package/dist/plugins/richtext/body.d.ts +9 -0
  477. package/dist/plugins/richtext/body.js +16 -0
  478. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
  479. package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
  480. package/dist/plugins/richtext/callouts.d.ts +15 -0
  481. package/dist/plugins/richtext/callouts.js +23 -0
  482. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  483. package/dist/plugins/richtext/controls.svelte.js +126 -0
  484. package/dist/plugins/richtext/richTextOperations.js +37 -28
  485. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
  486. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
  487. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
  488. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  489. package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
  490. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  491. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
  492. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  493. package/dist/plugins/table/TableChrome.svelte +96 -127
  494. package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
  495. package/dist/plugins/table/TablePlugin.svelte +116 -171
  496. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  497. package/dist/plugins/table/chrome.svelte.d.ts +110 -117
  498. package/dist/plugins/table/chrome.svelte.js +643 -289
  499. package/dist/plugins/table/ops.d.ts +47 -0
  500. package/dist/plugins/table/ops.js +233 -0
  501. package/dist/plugins/table/table.css +55 -134
  502. package/dist/plugins/table/table.d.ts +26 -7
  503. package/dist/plugins/table/table.js +23 -49
  504. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  505. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  506. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  507. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  508. package/dist/plugins/toc/toc.d.ts +41 -10
  509. package/dist/plugins/toc/toc.js +2 -3
  510. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
  511. package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
  512. package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
  513. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  514. package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
  515. package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
  516. package/dist/plugins/triggers/place.d.ts +0 -9
  517. package/dist/plugins/triggers/place.js +1 -17
  518. package/dist/plugins/triggers/triggers.d.ts +31 -9
  519. package/dist/plugins/triggers/triggers.js +82 -62
  520. package/dist/plugins/uploads.svelte.d.ts +38 -20
  521. package/dist/plugins/uploads.svelte.js +39 -32
  522. package/dist/plugins.d.ts +167 -60
  523. package/dist/selection/domSelection.d.ts +13 -4
  524. package/dist/selection/domSelection.js +110 -183
  525. package/dist/selection/pointer.svelte.d.ts +12 -10
  526. package/dist/selection/pointer.svelte.js +154 -71
  527. package/dist/selection/replaceSelection.d.ts +21 -22
  528. package/dist/selection/replaceSelection.js +60 -69
  529. package/dist/selection/selection.svelte.d.ts +5 -73
  530. package/dist/selection/selection.svelte.js +263 -542
  531. package/dist/selection/selection.utils.d.ts +34 -11
  532. package/dist/selection/selection.utils.js +128 -247
  533. package/dist/selection/visibility.d.ts +11 -8
  534. package/dist/selection/visibility.js +23 -8
  535. package/dist/session/announcer.svelte.d.ts +2 -1
  536. package/dist/session/announcer.svelte.js +7 -3
  537. package/dist/session/attempt.d.ts +33 -39
  538. package/dist/session/attempt.js +61 -53
  539. package/dist/session/bindings.js +108 -139
  540. package/dist/session/commands.d.ts +47 -22
  541. package/dist/session/commands.js +206 -208
  542. package/dist/session/composition.svelte.d.ts +2 -4
  543. package/dist/session/composition.svelte.js +55 -65
  544. package/dist/session/editing/text.d.ts +6 -0
  545. package/dist/session/editing/text.js +17 -3
  546. package/dist/session/handles.d.ts +10 -1
  547. package/dist/session/handles.js +28 -0
  548. package/dist/session/history.d.ts +0 -4
  549. package/dist/session/history.js +15 -21
  550. package/dist/session/inputRules.js +75 -84
  551. package/dist/session/keymap.d.ts +1 -6
  552. package/dist/session/keymap.js +17 -20
  553. package/dist/session/moves.d.ts +10 -10
  554. package/dist/session/moves.js +31 -59
  555. package/dist/session/navigation.d.ts +18 -3
  556. package/dist/session/navigation.js +194 -153
  557. package/dist/session/ports.d.ts +7 -0
  558. package/dist/session/selection.d.ts +4 -3
  559. package/dist/session/selection.js +8 -0
  560. package/dist/session/suggestions.svelte.d.ts +1 -1
  561. package/dist/session/suggestions.svelte.js +64 -47
  562. package/dist/session/virtual.d.ts +3 -3
  563. package/dist/session/virtual.js +18 -40
  564. package/dist/surface/attributes.d.ts +1 -0
  565. package/dist/surface/attributes.js +3 -26
  566. package/dist/surface/cells.d.ts +5 -0
  567. package/dist/surface/cells.js +5 -0
  568. package/dist/surface/lines.d.ts +32 -0
  569. package/dist/surface/lines.js +43 -0
  570. package/dist/surface/observer.svelte.d.ts +3 -20
  571. package/dist/surface/observer.svelte.js +73 -77
  572. package/dist/surface/overlay.d.ts +48 -6
  573. package/dist/surface/overlay.js +133 -23
  574. package/dist/surface/pin.svelte.d.ts +5 -0
  575. package/dist/surface/pin.svelte.js +5 -0
  576. package/dist/surface/projector.svelte.d.ts +4 -6
  577. package/dist/surface/projector.svelte.js +42 -69
  578. package/dist/text/text.svelte.d.ts +14 -40
  579. package/dist/text/text.svelte.js +35 -51
  580. package/dist/text/wordBoundary.d.ts +19 -0
  581. package/dist/text/wordBoundary.js +29 -44
  582. package/dist/themes/notion.css +315 -126
  583. package/dist/utils/json.d.ts +3 -1
  584. package/dist/utils/json.js +52 -51
  585. package/dist/utils/listen.d.ts +8 -0
  586. package/dist/utils/listen.js +19 -0
  587. package/package.json +4 -5
  588. package/dist/block/block.utils.d.ts +0 -340
  589. package/dist/block/block.utils.js +0 -356
  590. package/dist/collaboration/history/HistoryPanel.svelte +0 -525
  591. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  592. package/dist/collaboration/history/panel.d.ts +0 -43
  593. package/dist/collaboration/history/panel.js +0 -3
  594. package/dist/components/SuggestionRanges.svelte +0 -58
  595. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  596. package/dist/crdt/doc/table.d.ts +0 -21
  597. package/dist/crdt/doc/table.js +0 -288
  598. package/dist/crdt/migration/generation.d.ts +0 -58
  599. package/dist/crdt/migration/generation.js +0 -70
  600. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  601. package/dist/crdt/migration/legacy-schema.js +0 -151
  602. package/dist/crdt/migration/migrate.d.ts +0 -56
  603. package/dist/crdt/migration/migrate.js +0 -227
  604. package/dist/crdt/nodes.d.ts +0 -121
  605. package/dist/crdt/nodes.js +0 -56
  606. package/dist/crdt/text/index/checks.d.ts +0 -15
  607. package/dist/crdt/text/index/checks.js +0 -156
  608. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  609. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  610. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  611. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  612. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  613. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  614. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  615. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  616. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  617. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  618. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  619. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  620. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  621. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  622. package/dist/edytor.utils.d.ts +0 -50
  623. package/dist/edytor.utils.js +0 -67
  624. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
  625. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  626. package/dist/plugins/find/FindBar.svelte +0 -170
  627. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  628. package/dist/plugins/find/FindHighlights.svelte +0 -75
  629. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  630. package/dist/plugins/icons.d.ts +0 -2
  631. package/dist/plugins/icons.js +0 -63
  632. package/dist/plugins/image/ImageEmpty.svelte +0 -116
  633. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
  634. package/dist/plugins/keepInView.d.ts +0 -4
  635. package/dist/plugins/keepInView.js +0 -6
  636. package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
  637. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
  638. package/dist/plugins/richtext/labels.d.ts +0 -5
  639. package/dist/plugins/richtext/labels.js +0 -3
  640. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
  641. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  642. package/dist/plugins/toolbar/LinkCard.svelte +0 -118
  643. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
  644. package/dist/plugins/toolbar/Toolbar.svelte +0 -400
  645. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  646. package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
  647. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  648. package/dist/session/props.d.ts +0 -28
  649. package/dist/session/props.js +0 -162
  650. package/dist/text/deltas.d.ts +0 -22
  651. package/dist/text/deltas.js +0 -46
  652. package/dist/text/text.utils.d.ts +0 -45
  653. package/dist/text/text.utils.js +0 -199
@@ -1,34 +1,43 @@
1
1
  <script lang="ts">
2
2
  import { getContext } from 'svelte';
3
3
  import type { Edytor } from '../../edytor.svelte.js';
4
- import { equationLabels, equationViews } from './equation.svelte.js';
4
+ import { equationEnglish, labelsOf } from '../../labels.js';
5
+ import { equationViews } from './equation.svelte.js';
5
6
 
6
7
  /**
7
8
  * An equation as drawn: KaTeX's markup, its source while KaTeX loads (or
8
- * with no loader), the source marked invalid when KaTeX cannot read it,
9
- * or the placeholder when it is empty. Reads its view's renderer from the
10
- * editor it renders in (a suggestion's preview included).
9
+ * with no loader), the source marked invalid when KaTeX cannot read it
10
+ * (the app's `error` snippet, if any), or the placeholder when it is
11
+ * empty (the app's `placeholder`, if any). Reads its view's renderer from
12
+ * the editor it renders in (a suggestion's preview included).
11
13
  */
12
14
  let { expression, display }: { expression: string; display: boolean } = $props();
13
15
 
14
16
  const edytor = getContext<Edytor | undefined>('edytor');
15
17
  const view = $derived(edytor ? equationViews.get(edytor) : undefined);
16
- const labels = $derived(equationLabels.of(edytor));
18
+ const labels = $derived(labelsOf(edytor, 'equation', equationEnglish));
17
19
  const drawn = $derived(expression ? (view?.renderer.draw(expression, display) ?? null) : null);
18
20
  </script>
19
21
 
20
22
  {#if !expression}
21
- <span data-edytor-equation-placeholder
22
- ><span aria-hidden="true" data-edytor-equation-icon>√x</span>{display
23
- ? labels.blockPlaceholder
24
- : labels.inlinePlaceholder}</span
25
- >
23
+ {@const label = display ? labels.blockPlaceholder : labels.inlinePlaceholder}
24
+ {#if view?.placeholder}{@render view.placeholder({ display, label })}{:else}<span
25
+ data-edytor-equation-placeholder
26
+ ><span aria-hidden="true" data-edytor-equation-icon>√x</span>{label}</span
27
+ >{/if}
26
28
  {:else if drawn && 'html' in drawn}
27
29
  <!-- KaTeX's markup, drawn untrusted (`trust: false`). -->
28
30
  <!-- eslint-disable-next-line svelte/no-at-html-tags -->
29
31
  {@html drawn.html}
30
32
  {:else if drawn}
31
- <span data-edytor-equation-error title="{labels.invalid}: {drawn.error}">{expression}</span>
33
+ {#if view?.error}{@render view.error({
34
+ display,
35
+ expression,
36
+ error: drawn.error,
37
+ label: labels.invalid
38
+ })}{:else}<span data-edytor-equation-error title="{labels.invalid}: {drawn.error}"
39
+ >{expression}</span
40
+ >{/if}
32
41
  {:else}
33
42
  <span data-edytor-equation-source>{expression}</span>
34
43
  {/if}
@@ -1,27 +1,70 @@
1
+ import { type Snippet } from 'svelte';
2
+ import type { Attachment } from 'svelte/attachments';
1
3
  import type { Edytor } from '../../edytor.svelte.js';
2
- import { type EquationLabels, type PartialLabels } from '../../labels.js';
3
4
  /** The part of KaTeX the plugin uses: `katex.renderToString`. */
4
5
  export type KatexLike = {
5
6
  renderToString: (tex: string, options?: Record<string, unknown>) => string;
6
7
  };
7
- /** Loads KaTeX when an equation first shows: `() => import('katex')`. */
8
+ /** Loads KaTeX when an equation first shows: `() => import('katex')` from your bundle. */
8
9
  export type KatexLoader = () => Promise<KatexLike | {
9
10
  default: KatexLike;
10
11
  }>;
11
12
  export type EquationPluginOptions = {
12
13
  /**
13
- * Loads KaTeX, lazily, the first time an equation is drawn in a browser:
14
- * `() => import('katex')` (KaTeX is an optional peer dependency; import
15
- * its stylesheet, `katex/dist/katex.min.css`, in your app). Without it,
16
- * an equation shows its TeX source.
14
+ * Where KaTeX comes from, loaded the first time an equation is drawn in a
15
+ * browser (a server render shows the TeX source and loads nothing):
16
+ *
17
+ * - absent: jsDelivr (`KATEX_CDN`, KaTeX `KATEX_VERSION`): its module and
18
+ * its stylesheet, added once to the page's head; your app bundles and
19
+ * imports nothing.
20
+ * - a URL: another copy of KaTeX's `dist` files (`katex.mjs`,
21
+ * `katex.min.css` and its `fonts/`), as for jsDelivr.
22
+ * - a loader, `() => import('katex')`: KaTeX from your bundle (the
23
+ * optional peer dependency); import its stylesheet,
24
+ * `katex/dist/katex.min.css`, in your app.
25
+ * - `false`: none; an equation shows its TeX source.
26
+ *
27
+ * If KaTeX fails to load, equations keep showing their source.
17
28
  */
18
- katex?: KatexLoader;
29
+ katex?: KatexLoader | string | false;
19
30
  /** TeX macros every equation reads (`{ '\\RR': '\\mathbb{R}' }`). */
20
31
  macros?: Record<string, string>;
21
- /** The words the equations and their editor show, over the English ones. */
22
- labels?: PartialLabels<'equation'>;
23
- /** The slash menu's keywords by command id (`block.equation`, `equation.inline`), which replace its own. */
24
- keywords?: Partial<Record<string, string[]>>;
32
+ /**
33
+ * The editor's panel and its words (the source's field, KaTeX's error, Done): it
34
+ * renders under the edited equation while `editor.target` is set
35
+ * (centered under a block equation; without it, nothing shows). Put
36
+ * `{@attach editor.field}` on the source's field.
37
+ */
38
+ panel?: Snippet<[EquationEditor]>;
39
+ /**
40
+ * An empty equation's placeholder (default: `√x` and the view's
41
+ * `equation.blockPlaceholder` or `inlinePlaceholder`). A click on it
42
+ * opens the editor, as on any equation.
43
+ */
44
+ placeholder?: Snippet<[EquationPlaceholderPayload]>;
45
+ /**
46
+ * An equation KaTeX cannot read (default: its source, marked invalid,
47
+ * KaTeX's message in its title).
48
+ */
49
+ error?: Snippet<[EquationErrorPayload]>;
50
+ };
51
+ /** What an equation's `placeholder` snippet receives. */
52
+ export type EquationPlaceholderPayload = {
53
+ /** A block equation (`true`) or an inline one. */
54
+ display: boolean;
55
+ /** The view's placeholder for it (`equation.blockPlaceholder`, `inlinePlaceholder`). */
56
+ label: string;
57
+ };
58
+ /** What an equation's `error` snippet receives. */
59
+ export type EquationErrorPayload = {
60
+ /** A block equation (`true`) or an inline one. */
61
+ display: boolean;
62
+ /** Its TeX source. */
63
+ expression: string;
64
+ /** KaTeX's message. */
65
+ error: string;
66
+ /** The view's word for it (`equation.invalid`). */
67
+ label: string;
25
68
  };
26
69
  /** The data of a block equation and of an inline one: its TeX source. */
27
70
  export type EquationData = {
@@ -68,23 +111,11 @@ export declare class EquationRenderer {
68
111
  * the display asked (`display="block"`: a block), else `undefined`.
69
112
  */
70
113
  export declare const parseEquation: (element: HTMLElement, display: boolean) => EquationData | undefined;
71
- /** Each view's equation labels: the first equation plugin listed claims them, as its kinds. */
72
- export declare const equationLabels: {
73
- claim: (view: object | undefined, labels: EquationLabels) => void;
74
- of: (view: object | undefined) => EquationLabels;
75
- };
76
114
  /** The equation being edited: a block equation, or an inline one (`atom`) in block `block`. */
77
115
  export type EquationTarget = {
78
116
  block: string;
79
117
  atom?: string;
80
118
  };
81
- /** The edited equation's box, layer-relative. */
82
- export type EquationBox = {
83
- x: number;
84
- y: number;
85
- width: number;
86
- height: number;
87
- };
88
119
  /**
89
120
  * One view's equation editor (Notion's): a click on an equation of an
90
121
  * editable view (Enter on a selected one, or a new empty one) opens its
@@ -95,17 +126,21 @@ export type EquationBox = {
95
126
  * press or a focus outside close it; an inline equation closed empty is
96
127
  * removed. The editor then gives the keys back: a block equation stays
97
128
  * selected, the caret goes after an inline one.
129
+ *
130
+ * What a `panel` snippet receives: the equation being edited (`target`,
131
+ * `display` for a block one), its source (`expression`, written by
132
+ * `set`), KaTeX's error (`error`) and `close()`.
133
+ * Put `{@attach editor.field}` on the source's field: it takes the focus
134
+ * as the editor opens, Enter (Shift+Enter: a newline in a block equation)
135
+ * and Escape close the editor, and focus leaving the panel closes it.
98
136
  */
99
137
  export declare class EquationEditor {
100
138
  #private;
101
139
  private edytor;
102
- readonly renderer: EquationRenderer;
103
- readonly labels: EquationLabels;
104
140
  /** The equation being edited (reactive). */
105
141
  target: EquationTarget | null;
106
- /** Its box, measured in the overlay's frame. */
107
- box: EquationBox | null;
108
- constructor(edytor: Edytor, renderer: EquationRenderer, labels?: EquationLabels);
142
+ /** The view is readonly (reactive): the editor closes. */
143
+ get readonly(): boolean;
109
144
  /** A block equation is edited (a field of several lines). */
110
145
  get display(): boolean;
111
146
  /** The edited equation's TeX source (reactive through its block's cell). */
@@ -124,19 +159,22 @@ export declare class EquationEditor {
124
159
  * caret after the inline one.
125
160
  */
126
161
  close: (keys?: boolean) => void;
127
- /** The view turned readonly: the editor closes, the equation as it is. */
128
- lock: () => void;
129
- /** A press anywhere (capture): one outside the editor and its equation closes it. */
130
- pressed: (event: MouseEvent) => void;
131
- /** Focus left the field for somewhere outside the editor: it closes. */
132
- blurred: (event: FocusEvent) => void;
133
- /** The overlay measure: the edited equation's box; gone, the editor closes. */
134
- measure: (host: HTMLElement, origin: DOMRect) => () => void;
162
+ /**
163
+ * The source's field (`{@attach editor.field}`, a `textarea` or an
164
+ * `input`): it takes the focus as the editor opens, the caret at the end
165
+ * of the source. Enter closes the editor (Shift+Enter in a block
166
+ * equation is a newline), Escape too; the editor's own keys never see
167
+ * them. Focus leaving the panel for somewhere else closes it.
168
+ */
169
+ field: Attachment<HTMLTextAreaElement | HTMLInputElement>;
135
170
  }
136
171
  /** A view's equations: the first equation plugin listed in it owns them, as its kinds. */
137
172
  export type EquationView = {
138
173
  renderer: EquationRenderer;
139
174
  editor: EquationEditor;
175
+ /** The app's markup for an empty equation and an unreadable one, if any. */
176
+ placeholder?: Snippet<[EquationPlaceholderPayload]>;
177
+ error?: Snippet<[EquationErrorPayload]>;
140
178
  };
141
179
  /** By view. */
142
180
  export declare const equationViews: WeakMap<Edytor, EquationView>;
@@ -1,6 +1,10 @@
1
+ import { untrack } from 'svelte';
2
+ import { blockSelection } from '../../session/selection.js';
1
3
  import { InlineBlock } from '../../block/inlineBlock.svelte.js';
2
4
  import { takeKeys } from '../../events/onFocus.js';
3
- import { englishLabels, viewLabels } from '../../labels.js';
5
+ import { Anchored } from '../anchored.svelte.js';
6
+ import { escapeHtml } from '../../clipboard/serializeClipboardFragment.js';
7
+ import { all, listen } from '../../utils/listen.js';
4
8
  /** The MathML annotation that carries an equation's TeX source. */
5
9
  export const TEX = 'application/x-tex';
6
10
  /** An equation's TeX source: its `expression`, a string. */
@@ -8,7 +12,6 @@ export const expressionOf = (data) => {
8
12
  const value = data?.expression;
9
13
  return typeof value === 'string' ? value : '';
10
14
  };
11
- const escape = (value) => value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
12
15
  /** The cap of the drawings each renderer keeps. */
13
16
  const CACHE = 256;
14
17
  /**
@@ -70,7 +73,7 @@ export class EquationRenderer {
70
73
  // TeX KaTeX cannot read: the source as text, below.
71
74
  }
72
75
  }
73
- const source = escape(tex);
76
+ const source = escapeHtml(tex);
74
77
  return (`<span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML"${display ? ' display="block"' : ''}>` +
75
78
  `<semantics><mrow><mtext>${source}</mtext></mrow><annotation encoding="${TEX}">${source}</annotation></semantics></math></span>`);
76
79
  };
@@ -117,8 +120,6 @@ export const parseEquation = (element, display) => {
117
120
  math.getAttribute('alttext');
118
121
  return tex?.trim() ? { expression: tex.trim() } : undefined;
119
122
  };
120
- /** Each view's equation labels: the first equation plugin listed claims them, as its kinds. */
121
- export const equationLabels = viewLabels('equation');
122
123
  /**
123
124
  * One view's equation editor (Notion's): a click on an equation of an
124
125
  * editable view (Enter on a selected one, or a new empty one) opens its
@@ -129,19 +130,43 @@ export const equationLabels = viewLabels('equation');
129
130
  * press or a focus outside close it; an inline equation closed empty is
130
131
  * removed. The editor then gives the keys back: a block equation stays
131
132
  * selected, the caret goes after an inline one.
133
+ *
134
+ * What a `panel` snippet receives: the equation being edited (`target`,
135
+ * `display` for a block one), its source (`expression`, written by
136
+ * `set`), KaTeX's error (`error`) and `close()`.
137
+ * Put `{@attach editor.field}` on the source's field: it takes the focus
138
+ * as the editor opens, Enter (Shift+Enter: a newline in a block equation)
139
+ * and Escape close the editor, and focus leaving the panel closes it.
132
140
  */
133
141
  export class EquationEditor {
134
142
  edytor;
135
143
  renderer;
136
- labels;
137
144
  /** The equation being edited (reactive). */
138
145
  target = $state.raw(null);
139
- /** Its box, measured in the overlay's frame. */
140
- box = $state.raw(null);
141
- constructor(edytor, renderer, labels = englishLabels.equation) {
146
+ /**
147
+ * The editor's panel under the edited equation: its place, and what closes it.
148
+ * @internal
149
+ */
150
+ panel;
151
+ /** @internal */
152
+ constructor(edytor,
153
+ /** @internal */
154
+ renderer) {
142
155
  this.edytor = edytor;
143
156
  this.renderer = renderer;
144
- this.labels = labels;
157
+ this.panel = new Anchored(edytor, 'edytor-equation-editor-host', () => (this.target ? this.#node(this.target) : undefined), () => this.close(false));
158
+ }
159
+ /** The view is readonly (reactive): the editor closes. */
160
+ get readonly() {
161
+ return this.edytor.readonly;
162
+ }
163
+ /**
164
+ * Where the panel stands: under the edited equation (a block one's
165
+ * middle, an inline one's start), layer-relative.
166
+ * @internal
167
+ */
168
+ get place() {
169
+ return this.target && this.panel.place(6, this.display);
145
170
  }
146
171
  /** A block equation is edited (a field of several lines). */
147
172
  get display() {
@@ -177,9 +202,9 @@ export class EquationEditor {
177
202
  const target = this.target;
178
203
  if (!target || expression === this.expression)
179
204
  return;
180
- const data = target.atom ? this.#atom(target)?.data : this.#block(target)?.data;
181
- if (data)
182
- data.expression = expression;
205
+ const at = target.atom ? { block: target.block, atom: target.atom } : target.block;
206
+ if (target.atom ? this.#atom(target) : this.#block(target))
207
+ this.edytor.patchData(at, [{ path: ['expression'], value: expression }]);
183
208
  };
184
209
  /**
185
210
  * Close the editor. An inline equation left empty is removed; then, with
@@ -191,7 +216,7 @@ export class EquationEditor {
191
216
  if (!target)
192
217
  return;
193
218
  this.target = null;
194
- this.box = null;
219
+ this.panel.box = null;
195
220
  this.edytor.overlay.invalidate();
196
221
  const block = this.#block(target);
197
222
  if (!block)
@@ -203,7 +228,7 @@ export class EquationEditor {
203
228
  return;
204
229
  const offset = offsetOf(block, atom);
205
230
  if (!expressionOf(atom.data) && this.edytor.dispatcher.permits()) {
206
- block.removeInlineBlock({ index: atom.index });
231
+ this.edytor.removeInline(block.id, atom.id);
207
232
  if (keys)
208
233
  selection.setCaret({ block, offset });
209
234
  }
@@ -211,54 +236,44 @@ export class EquationEditor {
211
236
  selection.setCaret({ block, offset: offset + 1 });
212
237
  }
213
238
  else if (keys)
214
- selection.selectBlocks(block);
239
+ selection.select(blockSelection([block.id]));
215
240
  if (keys)
216
241
  takeKeys(this.edytor);
217
242
  };
218
- /** The view turned readonly: the editor closes, the equation as it is. */
219
- lock = () => this.close(false);
220
- /** A press anywhere (capture): one outside the editor and its equation closes it. */
221
- pressed = (event) => {
222
- const target = this.target;
223
- if (!target)
224
- return;
225
- const at = event.target;
226
- if (at?.closest?.('[data-edytor-equation-editor]'))
227
- return;
228
- if (at instanceof Node && this.#node(target)?.contains(at))
229
- return;
230
- this.close(false);
231
- };
232
- /** Focus left the field for somewhere outside the editor: it closes. */
233
- blurred = (event) => {
234
- const to = event.relatedTarget;
235
- const panel = event.currentTarget?.closest('[data-edytor-equation-editor]');
236
- // No new focus (the window went to the background): it stays.
237
- if (!(to instanceof Node) || panel?.contains(to))
238
- return;
239
- this.close(false);
240
- };
241
- /** The overlay measure: the edited equation's box; gone, the editor closes. */
242
- measure = (host, origin) => {
243
- const target = this.target;
244
- const node = target ? this.#node(target) : null;
245
- const rect = node?.isConnected ? node.getBoundingClientRect() : null;
246
- const box = rect
247
- ? {
248
- x: rect.left - origin.left,
249
- y: rect.top - origin.top,
250
- width: rect.width,
251
- height: rect.height
252
- }
253
- : null;
254
- return () => {
255
- Object.assign(host.style, { position: 'absolute', left: '0px', top: '0px' });
256
- if (target && !node)
257
- return this.close(false);
258
- if (!sameBox(box, this.box))
259
- this.box = box;
243
+ /**
244
+ * The source's field (`{@attach editor.field}`, a `textarea` or an
245
+ * `input`): it takes the focus as the editor opens, the caret at the end
246
+ * of the source. Enter closes the editor (Shift+Enter in a block
247
+ * equation is a newline), Escape too; the editor's own keys never see
248
+ * them. Focus leaving the panel for somewhere else closes it.
249
+ */
250
+ field = (node) => untrack(() => {
251
+ const keydown = (event) => {
252
+ if (event.isComposing)
253
+ return;
254
+ const enter = event.key === 'Enter' && !(event.shiftKey && this.display);
255
+ if (!enter && event.key !== 'Escape')
256
+ return;
257
+ event.preventDefault();
258
+ event.stopPropagation();
259
+ this.close();
260
260
  };
261
- };
261
+ const element = node;
262
+ const off = listen(element, 'keydown', keydown);
263
+ const off2 = listen(element, 'focusout', this.panel.blurred);
264
+ // Each equation the editor opens on: the field takes the focus, the caret at the end.
265
+ $effect(() => {
266
+ if (!this.target)
267
+ return;
268
+ untrack(() => {
269
+ if (node.ownerDocument.activeElement === node)
270
+ return;
271
+ node.focus({ preventScroll: true });
272
+ node.setSelectionRange(node.value.length, node.value.length);
273
+ });
274
+ });
275
+ return all(off, off2);
276
+ });
262
277
  #block = (target) => {
263
278
  const block = this.edytor.idToBlock.get(target.block);
264
279
  return block?.isInTree ? block : undefined;
@@ -286,10 +301,3 @@ const offsetOf = (block, atom) => {
286
301
  };
287
302
  /** By view. */
288
303
  export const equationViews = new WeakMap();
289
- const sameBox = (a, b) => a === b ||
290
- (a !== null &&
291
- b !== null &&
292
- a.x === b.x &&
293
- a.y === b.y &&
294
- a.width === b.width &&
295
- a.height === b.height);
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A module fetched by URL at run time (KaTeX from a CDN), left to the
3
+ * browser: no bundler follows it (`@vite-ignore`, `webpackIgnore`). Its own
4
+ * module, so a test can stand in for the network.
5
+ */
6
+ export declare const importUrl: (url: string) => Promise<unknown>;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A module fetched by URL at run time (KaTeX from a CDN), left to the
3
+ * browser: no bundler follows it (`@vite-ignore`, `webpackIgnore`). Its own
4
+ * module, so a test can stand in for the network.
5
+ */
6
+ export const importUrl = (url) => import(/* @vite-ignore */ /* webpackIgnore: true */ url);
@@ -0,0 +1,8 @@
1
+ /** The KaTeX version the default loader fetches: the one edytor is tested with. */
2
+ export declare const KATEX_VERSION = "0.18.7";
3
+ /**
4
+ * Where the default loader fetches KaTeX: jsDelivr's copy of the npm
5
+ * package's `dist`, at `KATEX_VERSION` exactly (`katex.mjs`,
6
+ * `katex.min.css`, and the fonts the stylesheet names).
7
+ */
8
+ export declare const KATEX_CDN = "https://cdn.jsdelivr.net/npm/katex@0.18.7/dist/";
@@ -0,0 +1,77 @@
1
+ import { importUrl } from './importUrl.js';
2
+ /** The KaTeX version the default loader fetches: the one edytor is tested with. */
3
+ export const KATEX_VERSION = '0.18.7';
4
+ /**
5
+ * Where the default loader fetches KaTeX: jsDelivr's copy of the npm
6
+ * package's `dist`, at `KATEX_VERSION` exactly (`katex.mjs`,
7
+ * `katex.min.css`, and the fonts the stylesheet names).
8
+ */
9
+ export const KATEX_CDN = `https://cdn.jsdelivr.net/npm/katex@${KATEX_VERSION}/dist/`;
10
+ /** Each base's KaTeX, loading or loaded; a failed load is forgotten, so a later view tries again. */
11
+ const loads = new Map();
12
+ /** The `katex` attribute of the stylesheets this module adds to a head. */
13
+ const MARK = 'data-edytor-katex';
14
+ /**
15
+ * KaTeX's stylesheet at `href`, added once to the document's head; settles
16
+ * when it loaded or failed (a failed stylesheet leaves KaTeX's markup
17
+ * unstyled, never the equation undrawn).
18
+ */
19
+ const stylesheet = (href) => {
20
+ const head = document.head;
21
+ let link = [...head.querySelectorAll(`link[${MARK}]`)].find((known) => known.getAttribute('href') === href);
22
+ if (link?.sheet)
23
+ return Promise.resolve();
24
+ if (!link) {
25
+ link = document.createElement('link');
26
+ link.rel = 'stylesheet';
27
+ link.href = href;
28
+ link.setAttribute(MARK, '');
29
+ head.append(link);
30
+ }
31
+ const known = link;
32
+ return new Promise((resolve) => {
33
+ for (const type of ['load', 'error'])
34
+ known.addEventListener(type, () => resolve(), { once: true });
35
+ });
36
+ };
37
+ /** The KaTeX a module exports: itself, or its default export. */
38
+ const katexOf = (module) => {
39
+ const own = module;
40
+ const katex = typeof own?.renderToString === 'function' ? own : own?.default;
41
+ if (typeof katex?.renderToString !== 'function')
42
+ throw new Error('No KaTeX in the module');
43
+ return katex;
44
+ };
45
+ /** A base URL ending with one `/`. */
46
+ const baseOf = (base) => (base.endsWith('/') ? base : `${base}/`);
47
+ /**
48
+ * A loader of KaTeX from `base` (a URL holding KaTeX's `dist` files, by
49
+ * default `KATEX_CDN`): `katex.mjs` imported and `katex.min.css` added to
50
+ * the document's head, once per base; it resolves once both settled.
51
+ * Browser only: without a document it rejects and fetches nothing.
52
+ * @internal
53
+ */
54
+ export const cdnKatex = (base = KATEX_CDN) => () => {
55
+ const root = baseOf(base);
56
+ if (typeof document === 'undefined')
57
+ return Promise.reject(new Error('KaTeX loads in a browser only'));
58
+ let pending = loads.get(root);
59
+ if (!pending) {
60
+ pending = Promise.all([
61
+ importUrl(`${root}katex.mjs`),
62
+ stylesheet(`${root}katex.min.css`)
63
+ ]).then(([module]) => katexOf(module));
64
+ loads.set(root, pending);
65
+ pending.catch(() => {
66
+ if (loads.get(root) === pending)
67
+ loads.delete(root);
68
+ });
69
+ }
70
+ return pending;
71
+ };
72
+ /**
73
+ * The loader the plugin's `katex` option names: its own loader, a base URL
74
+ * (`cdnKatex`), none for `false`, else jsDelivr (`KATEX_CDN`).
75
+ * @internal
76
+ */
77
+ export const katexLoaderOf = (option) => option === false ? undefined : typeof option === 'function' ? option : cdnKatex(option);
@@ -1,11 +1,10 @@
1
- import type { Action } from 'svelte/action';
2
- import type { BlockOperations } from '../../block/block.utils.js';
1
+ import type { Attachment } from 'svelte/attachments';
2
+ import type { Commands } from '../../plugins.js';
3
3
  import type { Edytor } from '../../edytor.svelte.js';
4
4
  import type { CommandResult } from '../../session/commands.js';
5
5
  import { type FindMatch } from './search.js';
6
- import { type FindLabels } from '../../labels.js';
7
6
  /** What `replaceMatches` (one command, one undo step) writes: each match replaced by `replacement`. */
8
- export type ReplaceMatches = BlockOperations['replaceMatches'];
7
+ export type ReplaceMatches = Commands['replaceMatches'];
9
8
  /**
10
9
  * The find bar's state and actions (`plugins/find`): the query, the matches
11
10
  * in reading order, the current one and the replacements. It reads the
@@ -15,14 +14,10 @@ export type ReplaceMatches = BlockOperations['replaceMatches'];
15
14
  export declare class FindController {
16
15
  #private;
17
16
  private edytor;
18
- /** The words the bar shows (the plugin's `labels`): read them in a custom `bar`. */
19
- readonly labels: FindLabels;
20
17
  isOpen: boolean;
21
18
  /** The replacement text. */
22
19
  replacement: string;
23
- constructor(edytor: Edytor,
24
- /** The words the bar shows (the plugin's `labels`): read them in a custom `bar`. */
25
- labels?: FindLabels);
20
+ constructor(edytor: Edytor);
26
21
  /** What the bar searches for; setting it shows the current match. */
27
22
  get query(): string;
28
23
  set query(value: string);
@@ -58,10 +53,10 @@ export declare class FindController {
58
53
  replace: () => CommandResult["status"];
59
54
  /** Replace every match: one command, one undo step. Answers its status. */
60
55
  replaceAll: () => CommandResult["status"];
61
- /** The query field (`use:find.field`): focused on each Mod+F; Enter, Shift+Enter, Escape, Mod+F. */
62
- field: Action<HTMLInputElement>;
63
- /** The replacement field (`use:find.replaceField`): Enter replaces, Escape closes. */
64
- replaceField: Action<HTMLInputElement>;
56
+ /** The query field (`{@attach find.field}`): focused on each Mod+F; Enter, Shift+Enter, Escape, Mod+F. */
57
+ field: Attachment<HTMLInputElement>;
58
+ /** The replacement field (`{@attach find.replaceField}`): Enter replaces, Escape closes. */
59
+ replaceField: Attachment<HTMLInputElement>;
65
60
  /** Stop following the document (the editor is going away). */
66
61
  destroy: () => void;
67
62
  }