edytor 1.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +21 -39
  2. package/dist/block/block.svelte.d.ts +11 -84
  3. package/dist/block/block.svelte.js +30 -134
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +11 -9
  9. package/dist/block/inlineBlock.svelte.js +18 -21
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +25 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/awarenessSelection.d.ts +22 -1
  49. package/dist/collaboration/awarenessSelection.js +42 -0
  50. package/dist/collaboration/comments/client.d.ts +2 -2
  51. package/dist/collaboration/comments/client.js +1 -1
  52. package/dist/collaboration/history/index.d.ts +5 -5
  53. package/dist/collaboration/history/index.js +5 -5
  54. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  55. package/dist/collaboration/history/panel.svelte.js +223 -0
  56. package/dist/collaboration/providers.d.ts +12 -3
  57. package/dist/collaboration/providers.js +5 -4
  58. package/dist/components/Block.svelte +42 -56
  59. package/dist/components/Block.svelte.d.ts +7 -5
  60. package/dist/components/Content.svelte +1 -5
  61. package/dist/components/Edytor.svelte +82 -99
  62. package/dist/components/Edytor.svelte.d.ts +16 -13
  63. package/dist/components/InlineBlock.svelte +1 -1
  64. package/dist/components/Ranges.svelte +96 -0
  65. package/dist/components/Ranges.svelte.d.ts +19 -0
  66. package/dist/components/Suggestion.svelte +3 -2
  67. package/dist/components/Text.svelte +2 -5
  68. package/dist/components/Text.svelte.d.ts +1 -1
  69. package/dist/crdt/admission.d.ts +2 -9
  70. package/dist/crdt/admission.js +3 -9
  71. package/dist/crdt/attribution/attribution.d.ts +11 -72
  72. package/dist/crdt/attribution/attribution.js +5 -52
  73. package/dist/crdt/attribution/block.d.ts +0 -78
  74. package/dist/crdt/attribution/block.js +1 -144
  75. package/dist/crdt/data.d.ts +18 -13
  76. package/dist/crdt/data.js +49 -71
  77. package/dist/crdt/doc/anchors.js +4 -4
  78. package/dist/crdt/doc/content.d.ts +5 -1
  79. package/dist/crdt/doc/content.js +3 -1
  80. package/dist/crdt/doc/delete.d.ts +1 -0
  81. package/dist/crdt/doc/funnel.d.ts +0 -23
  82. package/dist/crdt/doc/funnel.js +34 -85
  83. package/dist/crdt/doc/gate.d.ts +8 -9
  84. package/dist/crdt/doc/gate.js +7 -17
  85. package/dist/crdt/doc/history.d.ts +87 -14
  86. package/dist/crdt/doc/history.js +334 -149
  87. package/dist/crdt/doc/layout.d.ts +0 -1
  88. package/dist/crdt/doc/layout.js +2 -3
  89. package/dist/crdt/doc/meta.d.ts +4 -4
  90. package/dist/crdt/doc/meta.js +10 -21
  91. package/dist/crdt/doc/moves.d.ts +4 -4
  92. package/dist/crdt/doc/moves.js +5 -5
  93. package/dist/crdt/doc/plan.d.ts +2 -0
  94. package/dist/crdt/doc/plan.js +2 -0
  95. package/dist/crdt/doc/reads.d.ts +8 -5
  96. package/dist/crdt/doc/reads.js +49 -50
  97. package/dist/crdt/doc/seed.d.ts +15 -6
  98. package/dist/crdt/doc/seed.js +27 -26
  99. package/dist/crdt/doc/split-merge.d.ts +1 -3
  100. package/dist/crdt/doc/split-merge.js +4 -5
  101. package/dist/crdt/doc/steps.d.ts +3 -7
  102. package/dist/crdt/doc/steps.js +20 -9
  103. package/dist/crdt/doc/types.d.ts +0 -10
  104. package/dist/crdt/document.d.ts +32 -115
  105. package/dist/crdt/document.js +216 -302
  106. package/dist/crdt/edytor-doc.d.ts +689 -90
  107. package/dist/crdt/edytor-doc.js +74 -149
  108. package/dist/crdt/engine-api.d.ts +15 -47
  109. package/dist/crdt/engine.d.ts +7 -17
  110. package/dist/crdt/engine.js +9 -19
  111. package/dist/crdt/flow.d.ts +9 -37
  112. package/dist/crdt/flow.js +260 -238
  113. package/dist/crdt/index.d.ts +32 -85
  114. package/dist/crdt/index.js +21 -47
  115. package/dist/crdt/operations.d.ts +24 -33
  116. package/dist/crdt/operations.js +8 -17
  117. package/dist/crdt/placement/display.d.ts +0 -2
  118. package/dist/crdt/placement/display.js +0 -15
  119. package/dist/crdt/placement/model.d.ts +160 -12
  120. package/dist/crdt/placement/model.js +413 -414
  121. package/dist/crdt/placement/rank.d.ts +1 -5
  122. package/dist/crdt/placement/rank.js +28 -38
  123. package/dist/crdt/props.d.ts +32 -0
  124. package/dist/crdt/props.js +172 -0
  125. package/dist/crdt/protocol.d.ts +4 -5
  126. package/dist/crdt/protocol.js +3 -4
  127. package/dist/crdt/protocols/awareness.d.ts +3 -7
  128. package/dist/crdt/protocols/awareness.js +17 -33
  129. package/dist/crdt/protocols/envelope.d.ts +9 -29
  130. package/dist/crdt/protocols/envelope.js +8 -25
  131. package/dist/crdt/protocols/sync.d.ts +15 -30
  132. package/dist/crdt/protocols/sync.js +27 -89
  133. package/dist/crdt/providers/bound.d.ts +3 -1
  134. package/dist/crdt/providers/bound.js +3 -1
  135. package/dist/crdt/providers/container.d.ts +11 -17
  136. package/dist/crdt/providers/container.js +39 -27
  137. package/dist/crdt/providers/index.d.ts +34 -6
  138. package/dist/crdt/providers/index.js +106 -111
  139. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  140. package/dist/crdt/providers/indexeddb.js +29 -90
  141. package/dist/crdt/providers/room.d.ts +58 -2
  142. package/dist/crdt/providers/room.js +38 -21
  143. package/dist/crdt/providers/websocket.d.ts +1 -1
  144. package/dist/crdt/providers/websocket.js +3 -4
  145. package/dist/crdt/purge.d.ts +2 -2
  146. package/dist/crdt/purge.js +69 -6
  147. package/dist/crdt/rangeDelete.d.ts +4 -42
  148. package/dist/crdt/rangeDelete.js +7 -6
  149. package/dist/crdt/restore.d.ts +21 -1
  150. package/dist/crdt/restore.js +54 -59
  151. package/dist/crdt/schema.d.ts +2 -2
  152. package/dist/crdt/schema.js +4 -5
  153. package/dist/crdt/semantics.d.ts +10 -15
  154. package/dist/crdt/semantics.js +22 -21
  155. package/dist/crdt/storage.d.ts +7 -13
  156. package/dist/crdt/storage.js +10 -24
  157. package/dist/crdt/structs.d.ts +42 -47
  158. package/dist/crdt/structs.js +76 -67
  159. package/dist/crdt/tables.d.ts +9 -0
  160. package/dist/crdt/tables.js +20 -0
  161. package/dist/crdt/text/delete-index.d.ts +0 -13
  162. package/dist/crdt/text/delete-index.js +7 -14
  163. package/dist/crdt/text/deletes.d.ts +9 -22
  164. package/dist/crdt/text/deletes.js +11 -74
  165. package/dist/crdt/text/index/cache.js +3 -3
  166. package/dist/crdt/text/index/fold.d.ts +1 -2
  167. package/dist/crdt/text/index/fold.js +15 -10
  168. package/dist/crdt/text/index/layout.d.ts +0 -10
  169. package/dist/crdt/text/index/layout.js +6 -20
  170. package/dist/crdt/text/index/records.js +2 -1
  171. package/dist/crdt/text/index/report.js +5 -6
  172. package/dist/crdt/text/index/shared.d.ts +11 -4
  173. package/dist/crdt/text/index/shared.js +8 -7
  174. package/dist/crdt/text/index/state.d.ts +3 -33
  175. package/dist/crdt/text/index/state.js +2 -4
  176. package/dist/crdt/text/model.d.ts +82 -2
  177. package/dist/crdt/text/model.js +344 -354
  178. package/dist/crdt/text/rows.d.ts +0 -2
  179. package/dist/crdt/text/rows.js +0 -11
  180. package/dist/crdt/text/runs.d.ts +6 -3
  181. package/dist/crdt/text/runs.js +132 -137
  182. package/dist/crdt/text/streams.d.ts +1 -1
  183. package/dist/crdt/text/streams.js +1 -1
  184. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  185. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  186. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  187. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  188. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  189. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  190. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  191. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  193. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  194. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  195. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  196. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  197. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  198. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  199. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  200. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  201. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  202. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  203. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  204. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  205. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  206. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  207. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  208. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  209. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  211. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  213. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  214. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  216. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  217. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  218. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  219. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  220. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  221. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  222. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  223. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  224. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  225. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  226. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  227. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  228. package/dist/dnd/autoScroll.js +1 -2
  229. package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
  230. package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
  231. package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
  232. package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
  233. package/dist/dnd/placement.d.ts +200 -0
  234. package/dist/dnd/placement.js +426 -0
  235. package/dist/dnd/pragmatic.d.ts +4 -22
  236. package/dist/dnd/pragmatic.js +7 -26
  237. package/dist/dnd/track.d.ts +14 -0
  238. package/dist/dnd/track.js +55 -0
  239. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  242. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  243. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  302. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  303. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  304. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  305. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  306. package/dist/edytor.svelte.d.ts +46 -63
  307. package/dist/edytor.svelte.js +126 -181
  308. package/dist/events/beforeInputCommands.d.ts +6 -11
  309. package/dist/events/beforeInputCommands.js +189 -181
  310. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  311. package/dist/events/beforeInputDeleteCommands.js +153 -204
  312. package/dist/events/domTextOffset.d.ts +9 -9
  313. package/dist/events/domTextOffset.js +20 -48
  314. package/dist/events/events.utils.d.ts +0 -2
  315. package/dist/events/events.utils.js +0 -4
  316. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  317. package/dist/events/nativeInteractiveControl.js +28 -56
  318. package/dist/events/onBeforeInput.d.ts +6 -1
  319. package/dist/events/onBeforeInput.js +207 -331
  320. package/dist/events/onCopy.js +1 -5
  321. package/dist/events/onDrop.d.ts +7 -1
  322. package/dist/events/onDrop.js +64 -78
  323. package/dist/events/onFocus.d.ts +9 -4
  324. package/dist/events/onFocus.js +45 -67
  325. package/dist/events/onInput.d.ts +8 -4
  326. package/dist/events/onInput.js +34 -147
  327. package/dist/events/onKeyDown.js +55 -122
  328. package/dist/events/onPaste.d.ts +14 -1
  329. package/dist/events/onPaste.js +51 -76
  330. package/dist/index.d.ts +11 -15
  331. package/dist/index.js +3 -3
  332. package/dist/kinds.d.ts +4 -6
  333. package/dist/kinds.js +28 -27
  334. package/dist/labels.d.ts +83 -320
  335. package/dist/labels.js +181 -408
  336. package/dist/plugins/Chrome.svelte +29 -0
  337. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  338. package/dist/plugins/Control.svelte +23 -0
  339. package/dist/plugins/Control.svelte.d.ts +30 -0
  340. package/dist/plugins/anchored.svelte.d.ts +47 -0
  341. package/dist/plugins/anchored.svelte.js +73 -0
  342. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  343. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  344. package/dist/plugins/bands.svelte.d.ts +57 -0
  345. package/dist/plugins/bands.svelte.js +95 -0
  346. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  347. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  348. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
  349. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
  350. package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
  351. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  352. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  353. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
  354. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  355. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  356. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  358. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  359. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  360. package/dist/plugins/brand.d.ts +8 -0
  361. package/dist/plugins/brand.js +8 -0
  362. package/dist/plugins/chrome.d.ts +45 -38
  363. package/dist/plugins/chrome.js +59 -36
  364. package/dist/plugins/code/CodeHeader.svelte +8 -38
  365. package/dist/plugins/code/CodePlugin.svelte +53 -56
  366. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  367. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  368. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  369. package/dist/plugins/code/code.css +5 -117
  370. package/dist/plugins/code/header.svelte.d.ts +2 -11
  371. package/dist/plugins/code/header.svelte.js +11 -38
  372. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  373. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  374. package/dist/plugins/code/languages.d.ts +9 -22
  375. package/dist/plugins/code/languages.js +39 -128
  376. package/dist/plugins/columns/ColumnResize.svelte +16 -27
  377. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  378. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  379. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  380. package/dist/plugins/columns/columns.css +7 -26
  381. package/dist/plugins/columns/gaps.d.ts +7 -5
  382. package/dist/plugins/columns/gaps.js +11 -6
  383. package/dist/plugins/columns/resize.svelte.d.ts +17 -54
  384. package/dist/plugins/columns/resize.svelte.js +80 -173
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  389. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  393. package/dist/plugins/equation/EquationPlugin.svelte +109 -172
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.css +7 -0
  397. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  398. package/dist/plugins/equation/equation.svelte.js +20 -94
  399. package/dist/plugins/equation/katex.js +6 -9
  400. package/dist/plugins/fileDrop.d.ts +28 -0
  401. package/dist/plugins/fileDrop.js +116 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +6 -167
  407. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  408. package/dist/plugins/image/ImagePlugin.svelte +71 -151
  409. package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
  410. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  411. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  412. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  413. package/dist/plugins/image/controls.svelte.js +43 -212
  414. package/dist/plugins/image/image.css +17 -0
  415. package/dist/plugins/image/image.d.ts +0 -5
  416. package/dist/plugins/image/image.js +0 -3
  417. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  418. package/dist/plugins/image/toolbar.svelte.js +145 -0
  419. package/dist/plugins/index.d.ts +30 -26
  420. package/dist/plugins/index.js +28 -22
  421. package/dist/plugins/list.svelte.d.ts +128 -0
  422. package/dist/plugins/list.svelte.js +217 -0
  423. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  424. package/dist/plugins/markdownShortcuts.js +10 -9
  425. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  426. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  427. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  428. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  429. package/dist/plugins/marquee/marquee.js +4 -21
  430. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  431. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  432. package/dist/plugins/media/AudioPlugin.svelte +13 -88
  433. package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
  434. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  435. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  436. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  437. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  438. package/dist/plugins/media/EmptySlot.svelte +44 -0
  439. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  440. package/dist/plugins/media/FilePlugin.svelte +45 -113
  441. package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
  442. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  443. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  444. package/dist/plugins/media/SourceBlock.svelte +200 -0
  445. package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
  446. package/dist/plugins/media/UploadPreview.svelte +32 -0
  447. package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
  448. package/dist/plugins/media/VideoPlugin.svelte +14 -97
  449. package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
  450. package/dist/plugins/media/empty.svelte.d.ts +47 -46
  451. package/dist/plugins/media/empty.svelte.js +67 -60
  452. package/dist/plugins/media/media.d.ts +97 -44
  453. package/dist/plugins/media/media.js +77 -99
  454. package/dist/plugins/media/upload.css +23 -0
  455. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  456. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  457. package/dist/plugins/mention/MentionPlugin.svelte +84 -126
  458. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
  459. package/dist/plugins/mention/mention.css +6 -0
  460. package/dist/plugins/page/PageLink.svelte +54 -38
  461. package/dist/plugins/page/PagePlugin.svelte +20 -18
  462. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  463. package/dist/plugins/page/page.d.ts +35 -9
  464. package/dist/plugins/page/page.js +3 -4
  465. package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
  466. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
  467. package/dist/plugins/pageLink/pageLink.css +6 -0
  468. package/dist/plugins/planned.d.ts +10 -0
  469. package/dist/plugins/planned.js +12 -0
  470. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  471. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  472. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  473. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  474. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  475. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  476. package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
  477. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
  478. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  479. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  480. package/dist/plugins/richtext/body.js +2 -2
  481. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  482. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  483. package/dist/plugins/richtext/callouts.d.ts +15 -0
  484. package/dist/plugins/richtext/callouts.js +23 -0
  485. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  486. package/dist/plugins/richtext/controls.svelte.js +126 -0
  487. package/dist/plugins/richtext/richTextOperations.js +37 -28
  488. package/dist/plugins/richtext/richtext.css +6 -0
  489. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  490. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  491. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  492. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  493. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  494. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  495. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  496. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  497. package/dist/plugins/table/TableChrome.svelte +40 -124
  498. package/dist/plugins/table/TablePlugin.svelte +106 -168
  499. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  500. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  501. package/dist/plugins/table/chrome.svelte.js +340 -589
  502. package/dist/plugins/table/ops.d.ts +47 -0
  503. package/dist/plugins/table/ops.js +233 -0
  504. package/dist/plugins/table/table.css +16 -152
  505. package/dist/plugins/table/table.d.ts +15 -14
  506. package/dist/plugins/table/table.js +22 -16
  507. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  508. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  509. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  510. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  511. package/dist/plugins/toc/toc.d.ts +41 -10
  512. package/dist/plugins/toc/toc.js +2 -3
  513. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  514. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  515. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  516. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  517. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  518. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  519. package/dist/plugins/triggers/place.d.ts +0 -9
  520. package/dist/plugins/triggers/place.js +1 -17
  521. package/dist/plugins/triggers/triggers.d.ts +31 -9
  522. package/dist/plugins/triggers/triggers.js +82 -62
  523. package/dist/plugins/uploads.svelte.d.ts +55 -24
  524. package/dist/plugins/uploads.svelte.js +123 -50
  525. package/dist/plugins.d.ts +187 -66
  526. package/dist/selection/domSelection.d.ts +13 -4
  527. package/dist/selection/domSelection.js +110 -183
  528. package/dist/selection/pointer.svelte.d.ts +8 -10
  529. package/dist/selection/pointer.svelte.js +32 -73
  530. package/dist/selection/replaceSelection.d.ts +21 -22
  531. package/dist/selection/replaceSelection.js +60 -69
  532. package/dist/selection/selection.svelte.d.ts +5 -73
  533. package/dist/selection/selection.svelte.js +224 -542
  534. package/dist/selection/selection.utils.d.ts +34 -11
  535. package/dist/selection/selection.utils.js +128 -247
  536. package/dist/selection/visibility.d.ts +3 -8
  537. package/dist/selection/visibility.js +7 -5
  538. package/dist/session/announcer.svelte.d.ts +2 -1
  539. package/dist/session/announcer.svelte.js +7 -3
  540. package/dist/session/attempt.d.ts +43 -39
  541. package/dist/session/attempt.js +62 -55
  542. package/dist/session/bindings.js +117 -145
  543. package/dist/session/commands.d.ts +47 -22
  544. package/dist/session/commands.js +208 -208
  545. package/dist/session/composition.svelte.d.ts +2 -4
  546. package/dist/session/composition.svelte.js +55 -65
  547. package/dist/session/editing/text.d.ts +6 -0
  548. package/dist/session/editing/text.js +17 -3
  549. package/dist/session/handles.d.ts +10 -1
  550. package/dist/session/handles.js +28 -0
  551. package/dist/session/history.d.ts +0 -4
  552. package/dist/session/history.js +16 -21
  553. package/dist/session/inputRules.d.ts +6 -3
  554. package/dist/session/inputRules.js +78 -83
  555. package/dist/session/keymap.d.ts +1 -6
  556. package/dist/session/keymap.js +17 -20
  557. package/dist/session/moves.d.ts +43 -10
  558. package/dist/session/moves.js +101 -59
  559. package/dist/session/navigation.d.ts +10 -2
  560. package/dist/session/navigation.js +140 -172
  561. package/dist/session/ports.d.ts +2 -7
  562. package/dist/session/props.d.ts +25 -25
  563. package/dist/session/props.js +62 -159
  564. package/dist/session/selection.d.ts +4 -3
  565. package/dist/session/selection.js +5 -0
  566. package/dist/session/suggestions.svelte.d.ts +1 -1
  567. package/dist/session/suggestions.svelte.js +42 -47
  568. package/dist/session/uploads.d.ts +29 -0
  569. package/dist/session/uploads.js +10 -0
  570. package/dist/session/virtual.d.ts +3 -3
  571. package/dist/session/virtual.js +18 -40
  572. package/dist/surface/attributes.d.ts +1 -0
  573. package/dist/surface/attributes.js +3 -26
  574. package/dist/surface/cells.d.ts +5 -0
  575. package/dist/surface/cells.js +5 -0
  576. package/dist/surface/lines.d.ts +2 -2
  577. package/dist/surface/lines.js +1 -1
  578. package/dist/surface/observer.svelte.d.ts +3 -20
  579. package/dist/surface/observer.svelte.js +52 -72
  580. package/dist/surface/overlay.d.ts +41 -3
  581. package/dist/surface/overlay.js +92 -37
  582. package/dist/surface/pin.svelte.d.ts +5 -0
  583. package/dist/surface/pin.svelte.js +5 -0
  584. package/dist/surface/projector.svelte.d.ts +4 -6
  585. package/dist/surface/projector.svelte.js +42 -69
  586. package/dist/text/text.svelte.d.ts +14 -40
  587. package/dist/text/text.svelte.js +35 -51
  588. package/dist/text/wordBoundary.d.ts +19 -0
  589. package/dist/text/wordBoundary.js +29 -44
  590. package/dist/themes/notion.css +272 -106
  591. package/dist/utils/json.d.ts +3 -1
  592. package/dist/utils/json.js +52 -51
  593. package/dist/utils/listen.d.ts +8 -0
  594. package/dist/utils/listen.js +19 -0
  595. package/package.json +4 -5
  596. package/dist/block/block.utils.d.ts +0 -340
  597. package/dist/block/block.utils.js +0 -356
  598. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  599. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  600. package/dist/collaboration/history/panel.d.ts +0 -61
  601. package/dist/collaboration/history/panel.js +0 -3
  602. package/dist/components/SuggestionRanges.svelte +0 -58
  603. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  604. package/dist/crdt/doc/table.d.ts +0 -21
  605. package/dist/crdt/doc/table.js +0 -288
  606. package/dist/crdt/migration/generation.d.ts +0 -58
  607. package/dist/crdt/migration/generation.js +0 -70
  608. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  609. package/dist/crdt/migration/legacy-schema.js +0 -151
  610. package/dist/crdt/migration/migrate.d.ts +0 -56
  611. package/dist/crdt/migration/migrate.js +0 -227
  612. package/dist/crdt/nodes.d.ts +0 -121
  613. package/dist/crdt/nodes.js +0 -56
  614. package/dist/crdt/text/index/checks.d.ts +0 -15
  615. package/dist/crdt/text/index/checks.js +0 -156
  616. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  617. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  618. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  619. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  620. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  621. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  622. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  623. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  624. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  625. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  626. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  627. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  628. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  629. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  630. package/dist/edytor.utils.d.ts +0 -50
  631. package/dist/edytor.utils.js +0 -67
  632. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  633. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  634. package/dist/plugins/find/FindBar.svelte +0 -170
  635. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  636. package/dist/plugins/find/FindHighlights.svelte +0 -75
  637. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  638. package/dist/plugins/icons.d.ts +0 -2
  639. package/dist/plugins/icons.js +0 -63
  640. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  641. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  642. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  643. package/dist/plugins/image/empty.svelte.js +0 -83
  644. package/dist/plugins/keepInView.d.ts +0 -4
  645. package/dist/plugins/keepInView.js +0 -6
  646. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  647. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  648. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  649. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  650. package/dist/plugins/richtext/labels.d.ts +0 -9
  651. package/dist/plugins/richtext/labels.js +0 -7
  652. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  653. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  654. package/dist/plugins/table/dragPreview.d.ts +0 -29
  655. package/dist/plugins/table/dragPreview.js +0 -103
  656. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  657. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  658. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  659. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  660. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  661. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  662. package/dist/text/deltas.d.ts +0 -22
  663. package/dist/text/deltas.js +0 -46
  664. package/dist/text/text.utils.d.ts +0 -45
  665. package/dist/text/text.utils.js +0 -199
  666. /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
  667. /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
@@ -1,13 +1,19 @@
1
+ <svelte:options runes />
2
+
1
3
  <script module lang="ts">
4
+ import './pageLink.css';
2
5
  import type { Snippet } from 'svelte';
3
6
  import type {
4
7
  InlineBlockSnippetPayload,
5
8
  Plugin,
6
- TriggerContext,
7
- TriggerItemPayload
9
+ PluginOperations,
10
+ TriggerContext
8
11
  } from '../../plugins.js';
12
+ import type { Edytor } from '../../edytor.svelte.js';
13
+ import type { TextAnchor } from '../../selection/selection.svelte.js';
9
14
  import type { TriggerMenuController } from '../triggers/TriggerController.svelte.js';
10
- import { labelsWith, viewLabels, type PartialLabels } from '../../labels.js';
15
+ import { withRulesAndTriggers } from '../triggers/triggers.js';
16
+ import { pageLinkEnglish, labelsOf } from '../../labels.js';
11
17
  import { sanitizeLinkHref } from '../richtext/richTextOperations.js';
12
18
 
13
19
  /** A page the page-link menu offers: what your app's search answers. */
@@ -33,141 +39,180 @@
33
39
  ) => readonly PageLinkItem[] | Promise<readonly PageLinkItem[]>;
34
40
  /** A page's URL when the search answers none (`/pages/<id>`, say). */
35
41
  href?: (page: PageLinkItem) => string | undefined;
42
+ /**
43
+ * The page a pasted text names (your app's URL for it, `page:roadmap`…),
44
+ * at once or as a promise; `null` when it names none. Asked for a plain
45
+ * text paste at a caret that is one item (trimmed, one line): a page
46
+ * turns the pasted text into a `pageLink` atom, an undo step of its own
47
+ * after the paste, so undo gives the text back. A promise lets the paste
48
+ * land as it would without this option and swaps it when it answers, if
49
+ * the text is still there.
50
+ */
51
+ fromPaste?: (
52
+ text: string
53
+ ) => PageLinkItem | null | undefined | Promise<PageLinkItem | null | undefined>;
36
54
  /** The text that opens the menu (default `[[`). */
37
55
  char?: string;
38
- /** Replace each row of the menu. */
39
- item?: Snippet<[TriggerItemPayload<PageLinkItem>]>;
40
56
  /**
41
- * Replace the whole menu; it renders while `controller.isOpen`, at the
42
- * caret. Keep its ARIA with `{@attach controller.popup}` on the list and
57
+ * The menu's markup and its words; it renders while `controller.isOpen`,
58
+ * at the caret (without it, nothing shows). Keep its ARIA with `{@attach
59
+ * controller.popup}` on the list (name it) and
43
60
  * `{...controller.option(index)}` on each row.
44
61
  */
45
62
  menu?: Snippet<[TriggerMenuController<PageLinkItem>]>;
46
- /** The words the menu and the atom show, over the English ones. */
47
- labels?: PartialLabels<'pageLink'>;
48
63
  };
49
64
 
50
- /** Each view's page link labels: the first page link plugin listed claims them, as its atom. */
51
- const pageLinkLabels = viewLabels('pageLink');
65
+ /** The atom for `page`, its href sanitized. */
66
+ const atomOf = (page: PageLinkItem, options: PageLinkPluginOptions) => {
67
+ const href = sanitizeLinkHref(page.href ?? options.href?.(page)) ?? undefined;
68
+ const data: PageLinkData = {
69
+ id: page.id,
70
+ title: page.title,
71
+ ...(href ? { href } : {}),
72
+ ...(page.icon ? { icon: page.icon } : {})
73
+ };
74
+ return { type: 'pageLink', data };
75
+ };
76
+
77
+ const isPromise = <T,>(value: unknown): value is Promise<T> =>
78
+ typeof (value as Promise<T> | null)?.then === 'function';
79
+
80
+ /**
81
+ * Swap the pasted `item`, where the paste put it (right after `start`,
82
+ * past leading spaces), for `page`'s atom: one `autolink` step, so undo
83
+ * gives the text back. Nothing when the view is readonly or the text is
84
+ * no longer there; the caret follows the atom when it was at the text's end.
85
+ */
86
+ const swapPasted = (
87
+ edytor: Edytor,
88
+ start: TextAnchor,
89
+ item: string,
90
+ page: PageLinkItem,
91
+ options: PageLinkPluginOptions
92
+ ) => {
93
+ if (edytor.readonly) return;
94
+ const at = edytor.selection.resolveTextAnchor(start);
95
+ if (!at) return;
96
+ const { text } = at;
97
+ const content = text.stringContent;
98
+ let from = at.offset;
99
+ while (from < content.length && /\s/.test(content[from])) from++;
100
+ if (content.slice(from, from + item.length) !== item) return;
101
+ const block = text.parent;
102
+ const offset = text.segStart + from;
103
+ const caret = edytor.selection.caret;
104
+ const follows = caret?.block === block && caret.offset === offset + item.length;
105
+ edytor.dispatcher.run('autolink', () => {
106
+ if (edytor.deleteText(block.id, offset, item.length).status !== 'applied') return;
107
+ edytor.insertInline(block.id, offset, atomOf(page, options));
108
+ if (follows) edytor.dispatcher.caret({ block, offset: offset + 1 });
109
+ });
110
+ };
111
+
112
+ /**
113
+ * The paste hook of `fromPaste` (it runs before the other plugins'
114
+ * `onPaste`, `pasteFirst`): a plain text paste at a caret in a text,
115
+ * outside islands and voids, that is one item. A page answered at once
116
+ * claims the paste (the text, then the swap); a promise claims nothing
117
+ * (the rich text link, the URL menu or the plain paste take it) and swaps
118
+ * what landed when it answers a page.
119
+ */
120
+ const pasteHook = (edytor: Edytor, options: PageLinkPluginOptions): PluginOperations['onPaste'] =>
121
+ options.fromPaste &&
122
+ (({ e, prevent, at }) => {
123
+ const { fromPaste } = options;
124
+ if (!fromPaste || at || edytor.readonly) return;
125
+ const plain = e.clipboardData?.getData('text/plain') ?? '';
126
+ const item = plain.trim();
127
+ if (!item || /[\r\n]/.test(item)) return;
128
+ const { value, projection } = edytor.selection;
129
+ if (value.kind !== 'text' || !projection.isCollapsed) return;
130
+ if (projection.islandRoot !== null || projection.voidRoot !== null) return;
131
+ const { startText: text, yStart } = edytor.selection.textRange();
132
+ if (!text) return;
133
+ const start = edytor.selection.createTextAnchor(text, yStart, 'left');
134
+ if (!start) return;
135
+ let answer: ReturnType<typeof fromPaste>;
136
+ try {
137
+ answer = fromPaste(item);
138
+ } catch {
139
+ return;
140
+ }
141
+ if (isPromise<PageLinkItem | null | undefined>(answer)) {
142
+ answer.then(
143
+ (page) => page && swapPasted(edytor, start, item, page, options),
144
+ () => {}
145
+ );
146
+ return;
147
+ }
148
+ const page = answer;
149
+ if (!page) return;
150
+ prevent(() => {
151
+ edytor.dispatcher.run('insertFromPaste', () => {
152
+ edytor.insertText(text.parent.id, text.segStart + yStart, item);
153
+ edytor.dispatcher.caret(text, yStart + item.length);
154
+ });
155
+ if (edytor.dispatcher.last?.status === 'applied')
156
+ swapPasted(edytor, start, item, page, options);
157
+ });
158
+ });
52
159
 
53
160
  /**
54
161
  * Links to your app's pages, as Notion's `[[`: it opens a menu of the pages
55
162
  * your app's `search(query)` answers; picking one replaces `[[query` with
56
163
  * a `pageLink` atom (`{ id, title, href, icon }`), an `<a>` to the page,
57
- * and puts the caret after it, in one undo step.
164
+ * and puts the caret after it, in one undo step. With `fromPaste`, a
165
+ * pasted text your app recognizes becomes a page link too.
58
166
  */
59
167
  export const createPageLinkPlugin =
60
168
  (options: PageLinkPluginOptions): Plugin =>
61
- (edytor) => {
62
- const labels = labelsWith('pageLink', options.labels);
63
- pageLinkLabels.claim(edytor, labels);
64
- return {
65
- inlineBlocks: {
66
- pageLink: {
67
- snippet: pageLink,
68
- plain: (data) => {
69
- const title = (data as Partial<PageLinkData> | undefined)?.title;
70
- return typeof title === 'string' ? title : '';
169
+ (edytor) =>
170
+ withRulesAndTriggers(
171
+ edytor,
172
+ {
173
+ ...(edytor && options.fromPaste
174
+ ? { onPaste: pasteHook(edytor, options), pasteFirst: true }
175
+ : {}),
176
+ inlineBlocks: {
177
+ pageLink: {
178
+ snippet: pageLink,
179
+ plain: (data) => {
180
+ const title = (data as Partial<PageLinkData> | undefined)?.title;
181
+ return typeof title === 'string' ? title : '';
182
+ }
71
183
  }
72
184
  }
73
185
  },
74
- triggers: [
75
- {
76
- char: options.char ?? '[[',
77
- name: labels.menu,
78
- empty: labels.noResults,
79
- searching: labels.searching,
80
- items: (query, ctx) => options.search(query, ctx),
81
- label: (page: PageLinkItem) => page.title,
82
- key: (page: PageLinkItem) => page.id,
83
- item: options.item ?? row,
84
- menu: options.menu,
85
- onPick: (page: PageLinkItem, { block, from, caret }) => {
86
- const href = sanitizeLinkHref(page.href ?? options.href?.(page)) ?? undefined;
87
- const data: PageLinkData = {
88
- id: page.id,
89
- title: page.title,
90
- ...(href ? { href } : {}),
91
- ...(page.icon ? { icon: page.icon } : {})
92
- };
93
- const after = block.addInlineBlock({
94
- offset: from,
95
- block: { type: 'pageLink', data }
96
- });
97
- if (after) caret(from + 1);
98
- return !!after;
186
+ {
187
+ triggers: [
188
+ {
189
+ char: options.char ?? '[[',
190
+ items: (query, ctx) => options.search(query, ctx),
191
+ label: (page: PageLinkItem) => page.title,
192
+ key: (page: PageLinkItem) => page.id,
193
+ menu: options.menu,
194
+ onPick: (page: PageLinkItem, { edytor, block, from, caret }) => {
195
+ const atom = atomOf(page, options);
196
+ const written = edytor.insertInline(block.id, from, atom).status === 'applied';
197
+ if (written) caret(from + 1);
198
+ return written;
199
+ }
99
200
  }
100
- }
101
- ]
102
- };
103
- };
201
+ ]
202
+ }
203
+ );
104
204
  </script>
105
205
 
106
206
  {#snippet pageLink({ block }: InlineBlockSnippetPayload<Partial<PageLinkData>>)}
107
207
  <a
108
208
  class="edytor-page-link"
109
- class:selected={block.selected}
209
+ data-selected={block.selected ? 'true' : undefined}
110
210
  href={sanitizeLinkHref(block.data.href) ?? undefined}
111
211
  data-edytor-page-link
112
212
  data-page-id={block.data.id}
113
213
  ><span class="icon" aria-hidden="true">{block.data.icon ?? '📄'}</span><span class="title"
114
- >{block.data.title ?? pageLinkLabels.of(block.handle?.edytor).untitled}</span
214
+ >{block.data.title ??
215
+ labelsOf(block.handle?.edytor, 'pageLink', pageLinkEnglish).untitled}</span
115
216
  ></a
116
217
  >
117
218
  {/snippet}
118
-
119
- {#snippet row({ item, option, run, select }: TriggerItemPayload<PageLinkItem>)}
120
- <button
121
- type="button"
122
- class="edytor-page-link-row"
123
- {...option}
124
- data-testid="trigger-menu-item"
125
- onmousemove={select}
126
- onclick={run}
127
- >
128
- <span class="icon" aria-hidden="true">{item.icon ?? '📄'}</span>
129
- <span class="title">{item.title}</span>
130
- </button>
131
- {/snippet}
132
-
133
- <style>
134
- .edytor-page-link {
135
- color: inherit;
136
- text-decoration: none;
137
- white-space: nowrap;
138
- }
139
- .edytor-page-link .title {
140
- border-bottom: 1px solid rgba(55, 53, 47, 0.25);
141
- font-weight: 500;
142
- }
143
- .edytor-page-link .icon {
144
- margin-right: 2px;
145
- }
146
- .edytor-page-link.selected {
147
- border-radius: 3px;
148
- background: rgba(35, 131, 226, 0.14);
149
- }
150
- .edytor-page-link-row {
151
- display: flex;
152
- align-items: center;
153
- gap: 8px;
154
- width: 100%;
155
- height: 28px;
156
- padding: 0 8px;
157
- border: 0;
158
- border-radius: 6px;
159
- background: none;
160
- color: inherit;
161
- font: inherit;
162
- text-align: left;
163
- cursor: pointer;
164
- }
165
- .edytor-page-link-row[data-selected='true'] {
166
- background: rgba(33, 27, 23, 0.06);
167
- }
168
- .edytor-page-link-row .title {
169
- overflow: hidden;
170
- text-overflow: ellipsis;
171
- white-space: nowrap;
172
- }
173
- </style>
@@ -1,7 +1,7 @@
1
+ import './pageLink.css';
1
2
  import type { Snippet } from 'svelte';
2
- import type { Plugin, TriggerContext, TriggerItemPayload } from '../../plugins.js';
3
+ import type { Plugin, TriggerContext } from '../../plugins.js';
3
4
  import type { TriggerMenuController } from '../triggers/TriggerController.svelte.js';
4
- import { type PartialLabels } from '../../labels.js';
5
5
  /** A page the page-link menu offers: what your app's search answers. */
6
6
  export type PageLinkItem = {
7
7
  /** The page's id in your app: stored in the atom. */
@@ -25,41 +25,34 @@ export type PageLinkPluginOptions = {
25
25
  search: (query: string, ctx: TriggerContext) => readonly PageLinkItem[] | Promise<readonly PageLinkItem[]>;
26
26
  /** A page's URL when the search answers none (`/pages/<id>`, say). */
27
27
  href?: (page: PageLinkItem) => string | undefined;
28
+ /**
29
+ * The page a pasted text names (your app's URL for it, `page:roadmap`…),
30
+ * at once or as a promise; `null` when it names none. Asked for a plain
31
+ * text paste at a caret that is one item (trimmed, one line): a page
32
+ * turns the pasted text into a `pageLink` atom, an undo step of its own
33
+ * after the paste, so undo gives the text back. A promise lets the paste
34
+ * land as it would without this option and swaps it when it answers, if
35
+ * the text is still there.
36
+ */
37
+ fromPaste?: (text: string) => PageLinkItem | null | undefined | Promise<PageLinkItem | null | undefined>;
28
38
  /** The text that opens the menu (default `[[`). */
29
39
  char?: string;
30
- /** Replace each row of the menu. */
31
- item?: Snippet<[TriggerItemPayload<PageLinkItem>]>;
32
40
  /**
33
- * Replace the whole menu; it renders while `controller.isOpen`, at the
34
- * caret. Keep its ARIA with `{@attach controller.popup}` on the list and
41
+ * The menu's markup and its words; it renders while `controller.isOpen`,
42
+ * at the caret (without it, nothing shows). Keep its ARIA with `{@attach
43
+ * controller.popup}` on the list (name it) and
35
44
  * `{...controller.option(index)}` on each row.
36
45
  */
37
46
  menu?: Snippet<[TriggerMenuController<PageLinkItem>]>;
38
- /** The words the menu and the atom show, over the English ones. */
39
- labels?: PartialLabels<'pageLink'>;
40
47
  };
41
48
  /**
42
49
  * Links to your app's pages, as Notion's `[[`: it opens a menu of the pages
43
50
  * your app's `search(query)` answers; picking one replaces `[[query` with
44
51
  * a `pageLink` atom (`{ id, title, href, icon }`), an `<a>` to the page,
45
- * and puts the caret after it, in one undo step.
52
+ * and puts the caret after it, in one undo step. With `fromPaste`, a
53
+ * pasted text your app recognizes becomes a page link too.
46
54
  */
47
55
  export declare const createPageLinkPlugin: (options: PageLinkPluginOptions) => Plugin;
48
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
49
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
50
- $$bindings?: Bindings;
51
- } & Exports;
52
- (internal: unknown, props: {
53
- $$events?: Events;
54
- $$slots?: Slots;
55
- }): Exports & {
56
- $set?: any;
57
- $on?: any;
58
- };
59
- z_$$bindings?: Bindings;
60
- }
61
- declare const PageLinkPlugin: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
62
- [evt: string]: CustomEvent<any>;
63
- }, {}, {}, string>;
64
- type PageLinkPlugin = InstanceType<typeof PageLinkPlugin>;
56
+ declare const PageLinkPlugin: import("svelte").Component<Record<string, never>, {}, "">;
57
+ type PageLinkPlugin = ReturnType<typeof PageLinkPlugin>;
65
58
  export default PageLinkPlugin;
@@ -0,0 +1,6 @@
1
+ /* Loaded by the plugin's module (a component's own <style> is dropped when only
2
+ its module is used: the plugin factory, never the component). */
3
+ /* One unit, on one line; its look is a theme's. */
4
+ .edytor-page-link {
5
+ white-space: nowrap;
6
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * What the comments and find plugins share: showing an offset of a block's
3
+ * text.
4
+ */
5
+ import type { Edytor } from '../edytor.svelte.js';
6
+ /**
7
+ * Show `offset` of block `id`'s text: the closed toggles it sits in open
8
+ * (Notion), and it scrolls into view. The selection stays where it was.
9
+ */
10
+ export declare const showText: (edytor: Edytor, id: string, offset: number) => void;
@@ -0,0 +1,12 @@
1
+ import { reveal } from '../selection/replaceSelection.js';
2
+ /**
3
+ * Show `offset` of block `id`'s text: the closed toggles it sits in open
4
+ * (Notion), and it scrolls into view. The selection stays where it was.
5
+ */
6
+ export const showText = (edytor, id, offset) => {
7
+ const block = edytor.idToBlock.get(id);
8
+ if (!block)
9
+ return;
10
+ reveal(block);
11
+ block.textAtOffset(offset)?.text.node?.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });
12
+ };
@@ -2,37 +2,24 @@
2
2
  import { getContext } from 'svelte';
3
3
  import type { Edytor } from '../../edytor.svelte.js';
4
4
  import type { BlockView } from '../../plugins.js';
5
- import { richTextLabels } from './labels.js';
6
- import { DEFAULT_CALLOUT_ICON, calloutIconViews, iconOf } from './calloutIcons.svelte.js';
5
+ import { calloutIcon } from './controls.svelte.js';
7
6
 
8
7
  /**
9
- * A callout's icon (`callout.icon`): its `data.icon`, the view's default
10
- * without one, none when it is `''`. In an editable view it is a button
11
- * (a kind's own control) opening the view's picker, named Change icon, or
12
- * Add icon over an empty slot; a readonly view, or a suggestion's preview,
13
- * shows the icon alone.
8
+ * A callout's icon (`callout.icon`, the default; an app's `calloutIcon`
9
+ * snippet replaces it, `RichTextControl`): in an editable view a button
10
+ * (a kind's own control) opening the view's picker, named Change icon,
11
+ * or Add icon over an empty slot; a readonly view, or a suggestion's
12
+ * preview, shows the icon alone.
14
13
  */
15
14
  let { block }: { block: BlockView<{ icon?: string }> } = $props();
16
- const edytor = getContext<Edytor>('edytor');
17
- const labels = richTextLabels.of(edytor).calloutIcon;
18
- const picker = calloutIconViews.get(edytor);
19
- const icon = $derived(iconOf(block.data, picker?.icon ?? DEFAULT_CALLOUT_ICON));
20
- const open = $derived(picker?.target === block.id);
15
+ const icon = calloutIcon(getContext<Edytor>('edytor'), () => block);
21
16
  </script>
22
17
 
23
- {#if block.handle && picker && !edytor.readonly}
24
- <button
25
- type="button"
26
- contenteditable="false"
27
- data-edytor-callout-icon
28
- data-empty={icon ? undefined : ''}
29
- aria-label={icon ? labels.change : labels.add}
30
- aria-haspopup="menu"
31
- aria-expanded={open}
32
- aria-controls={open ? picker.id : undefined}
33
- onmousedown={(event) => event.preventDefault()}
34
- onclick={() => block.handle && picker.toggle(block.handle)}>{icon}</button
18
+ {#if icon.editable}
19
+ <button type="button" {@attach icon.control}>{icon.icon}</button>
20
+ {:else if icon.icon}
21
+ <!-- A server render (a readonly view's) shows this one: its marker is written here too. -->
22
+ <span data-edytor-callout-icon contenteditable="false" aria-hidden="true" {@attach icon.control}
23
+ >{icon.icon}</span
35
24
  >
36
- {:else if icon}
37
- <span contenteditable="false" data-edytor-callout-icon aria-hidden="true">{icon}</span>
38
25
  {/if}
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type { CalloutIconPicker } from './calloutIcons.svelte.js';
4
+
5
+ /**
6
+ * A callout's icon picker (`callout.icon`), in the overlay under the icon:
7
+ * the app's `picker` snippet, hidden until its first placement (never
8
+ * `display: none`: it takes the focus as it mounts). Its keys and popup
9
+ * are the controller's attachments (`keys`, `popup`) and rows (`option`).
10
+ */
11
+ let { picker, menu }: { picker: CalloutIconPicker; menu: Snippet<[CalloutIconPicker]> } =
12
+ $props();
13
+ const place = $derived(picker.isOpen && picker.panel.place(4));
14
+ </script>
15
+
16
+ {#if picker.isOpen}
17
+ <div
18
+ data-edytor-callout-icons
19
+ style:position="absolute"
20
+ style:left="{place ? place.left : 0}px"
21
+ style:top="{place ? place.top : 0}px"
22
+ style:opacity={place ? undefined : 0}
23
+ >
24
+ {@render menu(picker)}
25
+ </div>
26
+ {/if}
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { CalloutIconPicker } from './calloutIcons.svelte.js';
3
+ type $$ComponentProps = {
4
+ picker: CalloutIconPicker;
5
+ menu: Snippet<[CalloutIconPicker]>;
6
+ };
7
+ declare const CalloutIconPicker: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type CalloutIconPicker = ReturnType<typeof CalloutIconPicker>;
9
+ export default CalloutIconPicker;
@@ -2,31 +2,24 @@
2
2
  import { getContext } from 'svelte';
3
3
  import type { Edytor } from '../../edytor.svelte.js';
4
4
  import type { BlockView } from '../../plugins.js';
5
- import { richTextLabels } from './labels.js';
6
- import { openBody } from './body.js';
5
+ import { emptyBody } from './controls.svelte.js';
7
6
 
8
7
  /**
9
- * The hint an empty body shows (`body.hint`): an open toggle's (a closed
10
- * `details` hides it with the body), a callout's. Chrome, never content:
11
- * no text element, not editable, hidden from assistive technology (Enter
12
- * at the end of the header is the keyboard's way in). A press puts the
13
- * caret in the header (the core's chrome press); its click starts the body
14
- * (`openBody`). A readonly view, or a suggestion's preview (no handle),
15
- * shows none.
8
+ * The hint an empty body shows (`body.hint`, the default; an app's
9
+ * `emptyBody` snippet replaces it, `RichTextControl`): an open toggle's (a
10
+ * closed `details` hides it with the body), a callout's. Chrome, never
11
+ * content: no text element, not editable, hidden from assistive
12
+ * technology (Enter at the end of the header is the keyboard's way in). A
13
+ * press puts the caret in the header (the core's chrome press); its click
14
+ * starts the body (`openBody`). A readonly view, or a suggestion's
15
+ * preview (no handle), shows none.
16
16
  */
17
17
  let { block, kind }: { block: BlockView; kind: 'toggle' | 'callout' } = $props();
18
- const edytor = getContext<Edytor>('edytor');
19
- const labels = richTextLabels.of(edytor);
18
+ const view = getContext<Edytor>('edytor');
20
19
  </script>
21
20
 
22
- {#if block.handle && !edytor.readonly}
21
+ {#if block.handle && !view.readonly}
22
+ {@const hint = emptyBody(view, block, kind)!}
23
23
  <!-- A pointer's way into the body: the keyboard's is Enter at the end of the header. -->
24
- <div
25
- contenteditable="false"
26
- data-edytor-empty-body={kind}
27
- aria-hidden="true"
28
- onclick={() => block.handle && openBody(block.handle)}
29
- >
30
- {labels.emptyBody[kind]}
31
- </div>
24
+ <div {@attach hint.control}>{hint.label}</div>
32
25
  {/if}
@@ -0,0 +1,39 @@
1
+ <script lang="ts">
2
+ import { getContext } from 'svelte';
3
+ import type { Edytor } from '../../edytor.svelte.js';
4
+ import type { BlockView } from '../../plugins.js';
5
+ import TodoCheckbox from './TodoCheckbox.svelte';
6
+ import CalloutIcon from './CalloutIcon.svelte';
7
+ import EmptyBody from './EmptyBody.svelte';
8
+ import { calloutIcon, emptyBody, richTextControls, todoCheckbox } from './controls.svelte.js';
9
+
10
+ /**
11
+ * A rich text control of a kind whose markup the app replaces (the
12
+ * kind's record draws this only then, so the default markup costs no
13
+ * branch): the app's snippet of the view rendering it, else the default.
14
+ * `control` is the checkbox, the callout's icon, or a toggle's or a
15
+ * callout's empty body.
16
+ */
17
+ let {
18
+ block,
19
+ control
20
+ }: { block: BlockView<any>; control: 'checkbox' | 'calloutIcon' | 'toggle' | 'callout' } =
21
+ $props();
22
+ const view = getContext<Edytor>('edytor');
23
+ const own = richTextControls.get(view) ?? {};
24
+ </script>
25
+
26
+ {#if control === 'checkbox'}
27
+ {@const box = todoCheckbox(view, () => block)}
28
+ {#if own.checkbox}{@render own.checkbox(box)}{:else}<TodoCheckbox {block} />{/if}
29
+ {:else if control === 'calloutIcon'}
30
+ {@const icon = calloutIcon(view, () => block)}
31
+ {#if !own.calloutIcon}<CalloutIcon
32
+ {block}
33
+ />{:else if icon.editable || icon.icon}{@render own.calloutIcon(icon)}{/if}
34
+ {:else}
35
+ {@const hint = emptyBody(view, block, control)}
36
+ {#if !own.emptyBody}<EmptyBody {block} kind={control} />{:else if hint}{@render own.emptyBody(
37
+ hint
38
+ )}{/if}
39
+ {/if}
@@ -0,0 +1,8 @@
1
+ import type { BlockView } from '../../plugins.js';
2
+ type $$ComponentProps = {
3
+ block: BlockView<any>;
4
+ control: 'checkbox' | 'calloutIcon' | 'toggle' | 'callout';
5
+ };
6
+ declare const RichTextControl: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type RichTextControl = ReturnType<typeof RichTextControl>;
8
+ export default RichTextControl;