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,35 +1,24 @@
1
1
  <script lang="ts">
2
2
  import { getContext } from 'svelte';
3
- import type { Block } from '../../block/block.svelte.js';
4
3
  import type { Edytor } from '../../edytor.svelte.js';
5
4
  import type { BlockView } from '../../plugins.js';
6
- import { checkboxLabels } from './labels.js';
5
+ import { todoCheckbox } from './controls.svelte.js';
7
6
 
8
7
  /**
9
8
  * A to-do's checkbox, named in the labels of the view rendering it (a
10
- * suggestion's preview included).
9
+ * suggestion's preview included): a native checkbox (the default; an
10
+ * app's `checkbox` snippet replaces it, `RichTextControl`).
11
11
  */
12
- let {
13
- block,
14
- toggle
15
- }: { block: BlockView<{ checked?: boolean }>; toggle: (block: Block) => void } = $props();
16
- const labels = checkboxLabels.of(getContext<Edytor>('edytor'));
12
+ let { block }: { block: BlockView<{ checked?: boolean }> } = $props();
13
+ const box = todoCheckbox(getContext<Edytor>('edytor'), () => block);
17
14
  </script>
18
15
 
16
+ <!-- What a server render shows (a readonly view's) is written here; the attachment acts in the browser. -->
19
17
  <input
20
18
  type="checkbox"
21
- checked={Boolean(block.data.checked)}
22
- contenteditable="false"
23
- aria-label={labels.checkbox}
24
19
  data-edytor-todo-checkbox
25
- onmousedown={(event) => event.preventDefault()}
26
- onclick={(event) => {
27
- // Never cancel the click: the browser reverts a canceled checkbox click after
28
- // its handlers, over the re-render this write makes, so the box would show the
29
- // old state here while peers show the new one. Toggle the document, then show
30
- // what it holds (a refused write, readonly or vetoed, shows unchanged).
31
- // A suggestion's preview (no handle) writes nothing.
32
- if (block.handle) toggle(block.handle);
33
- event.currentTarget.checked = Boolean(block.data.checked);
34
- }}
20
+ contenteditable="false"
21
+ aria-label={box.label}
22
+ checked={box.checked}
23
+ {@attach box.control}
35
24
  />
@@ -1,10 +1,8 @@
1
- import type { Block } from '../../block/block.svelte.js';
2
1
  import type { BlockView } from '../../plugins.js';
3
2
  type $$ComponentProps = {
4
3
  block: BlockView<{
5
4
  checked?: boolean;
6
5
  }>;
7
- toggle: (block: Block) => void;
8
6
  };
9
7
  declare const TodoCheckbox: import("svelte").Component<$$ComponentProps, {}, "">;
10
8
  type TodoCheckbox = ReturnType<typeof TodoCheckbox>;
@@ -0,0 +1,9 @@
1
+ import type { Block } from '../../block/block.svelte.js';
2
+ /**
3
+ * Start the body of `block`, a container whose body shows and is empty
4
+ * (`body.hint`): a block of its default child kind as its first child, the
5
+ * caret in it. One command, one undo step (refused in a view that may not
6
+ * write). A body that has a child by now (a peer's) takes the caret in its
7
+ * first child instead. Answers the first child.
8
+ */
9
+ export declare const openBody: (block: Block) => Block | undefined;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Start the body of `block`, a container whose body shows and is empty
3
+ * (`body.hint`): a block of its default child kind as its first child, the
4
+ * caret in it. One command, one undo step (refused in a view that may not
5
+ * write). A body that has a child by now (a peer's) takes the caret in its
6
+ * first child instead. Answers the first child.
7
+ */
8
+ export const openBody = (block) => {
9
+ const { edytor } = block;
10
+ return edytor.dispatcher.run('openBody', () => {
11
+ const added = () => edytor.insertBlocks({ parent: block.id, index: 0 }, [{ type: edytor.defaultChild(block) }]);
12
+ const child = block.children[0] ?? edytor.idToBlock.get(added().ids[0] ?? '');
13
+ edytor.dispatcher.caret(child?.firstText, 0);
14
+ return child ?? undefined;
15
+ });
16
+ };
@@ -0,0 +1,97 @@
1
+ /**
2
+ * The callout icon picker (`callout.icon` in the delete contract), its own
3
+ * plugin: a menu in the overlay, under the icon of the callout it is open
4
+ * on: a choice writes `data.icon` (one `patchData` command, one undo step)
5
+ * and gives the keys back to the editor, with the selection it held;
6
+ * Escape, a press outside or focus leaving closes it with nothing written.
7
+ * Its markup is the app's `picker` snippet, which takes the keys and
8
+ * publishes the popup through the controller's attachments (`keys`,
9
+ * `popup`) and rows (`option`). A view without the plugin shows each
10
+ * callout's icon, which opens nothing.
11
+ */
12
+ import { type Snippet } from 'svelte';
13
+ import type { Attachment } from 'svelte/attachments';
14
+ import type { Block } from '../../block/block.svelte.js';
15
+ import type { Edytor } from '../../edytor.svelte.js';
16
+ import { ChromeList } from '../list.svelte.js';
17
+ import type { Plugin } from '../../plugins.js';
18
+ /** The picker's choices unless `createCalloutIconsPlugin({ icons })` names others. */
19
+ export declare const CALLOUT_ICONS: readonly string[];
20
+ /** The choices on a row of the picker: the arrows up and down move by a row (`picker.columns`). */
21
+ export declare const ICON_COLUMNS = 8;
22
+ /**
23
+ * A view's callout icon picker: what a `callout.picker` snippet receives.
24
+ * The callout it is open on (`block`), the choices (`icons`) and the icon
25
+ * that callout shows (`current`); `set(icon)` and `remove()` write it and
26
+ * close, `close()` closes with nothing written. Put `{@attach picker.keys}`
27
+ * and `{@attach picker.popup}` on the picker's element (it takes the focus
28
+ * and the keys, names the keyboard's row and is published to the view's
29
+ * root), attach `picker.option(i)` to each row (`i` in `icons`,
30
+ * `icons.length` for Remove icon) and run `picker.pick(i)` on its click.
31
+ */
32
+ export declare class CalloutIconPicker extends ChromeList {
33
+ #private;
34
+ /** The picker's choices. */
35
+ readonly icons: readonly string[];
36
+ /** The callout the picker is open on (its id), `null` when closed. */
37
+ target: string | null;
38
+ /** The choices on a row: ArrowUp and ArrowDown move by a row, so lay the icons out in as many columns. */
39
+ readonly columns = 8;
40
+ constructor(edytor: Edytor,
41
+ /** The picker's choices. */
42
+ icons?: readonly string[]);
43
+ /** Whether the picker is open (reactive). */
44
+ get isOpen(): boolean;
45
+ /** The callout it is open on (reactive). */
46
+ get block(): Block | undefined;
47
+ /** The icon that callout shows (`''`: none; reactive). */
48
+ get current(): string | undefined;
49
+ /** The keyboard's rows: the icons, then Remove icon. */
50
+ protected get count(): number;
51
+ /** The view is readonly (reactive): the picker closes. */
52
+ get readonly(): boolean;
53
+ /** Open the picker on `block`, or close it when it is open there. */
54
+ toggle: (block: Block) => void;
55
+ /** Open the picker on the callout `block`, its icon the keyboard's row (refused in a view that may not write). */
56
+ open: (block: Block) => void;
57
+ /** Close the picker; with `keys` (by default), the editor takes the keys back, with its selection. */
58
+ close: (keys?: boolean) => void;
59
+ /** Write `icon` on the callout (one undo step), then close. */
60
+ set: (icon: string) => void;
61
+ /** Leave the callout without an icon (`data.icon` is `''`), then close. */
62
+ remove: () => void;
63
+ /** Pick row `index`: its icon, or Remove icon (`icons.length`). */
64
+ pick: (index: number) => void;
65
+ /**
66
+ * Row `index`'s attachment (`icons.length`: Remove icon), as every menu's
67
+ * rows: its id, `menuitemradio` role and `aria-checked` (`menuitem` for
68
+ * Remove icon); its highlight is the markup's (`index`).
69
+ */
70
+ option(index: number): Attachment<HTMLElement>;
71
+ /**
72
+ * The picker's element (`{@attach picker.keys}`): it takes the focus as
73
+ * it opens and names the keyboard's row (`aria-activedescendant`). The
74
+ * arrows walk the rows (up and down by `ICON_COLUMNS`), Home and End
75
+ * reach the ends, Enter or Space picks, Escape and Tab close; no key
76
+ * reaches the page behind it. Focus leaving it closes it.
77
+ */
78
+ keys: Attachment<HTMLElement>;
79
+ }
80
+ export type CalloutIconsOptions = {
81
+ /**
82
+ * The icon picker's markup and its words: it renders while the picker is
83
+ * open, placed under the icon (without it, the icon opens nothing). Put
84
+ * `{@attach picker.keys}` and `{@attach picker.popup}` on its element and
85
+ * attach `picker.option(i)` to each row (`picker.icons.length`: Remove icon).
86
+ */
87
+ picker?: Snippet<[CalloutIconPicker]>;
88
+ /** The picker's choices (`CALLOUT_ICONS` by default). */
89
+ icons?: readonly string[];
90
+ };
91
+ /**
92
+ * Callout icons (Notion's): a callout's icon opens the view's picker, and
93
+ * its block menu has a Change icon row (rich text's, while a picker is
94
+ * listed), the keyboard's way to it. The first plugin listed claims the
95
+ * view's picker.
96
+ */
97
+ export declare const createCalloutIconsPlugin: ({ picker: menu, icons }?: CalloutIconsOptions) => Plugin;
@@ -0,0 +1,214 @@
1
+ /**
2
+ * The callout icon picker (`callout.icon` in the delete contract), its own
3
+ * plugin: a menu in the overlay, under the icon of the callout it is open
4
+ * on: a choice writes `data.icon` (one `patchData` command, one undo step)
5
+ * and gives the keys back to the editor, with the selection it held;
6
+ * Escape, a press outside or focus leaving closes it with nothing written.
7
+ * Its markup is the app's `picker` snippet, which takes the keys and
8
+ * publishes the popup through the controller's attachments (`keys`,
9
+ * `popup`) and rows (`option`). A view without the plugin shows each
10
+ * callout's icon, which opens nothing.
11
+ */
12
+ import { untrack } from 'svelte';
13
+ import { takeKeys } from '../../events/onFocus.js';
14
+ import { ChromeList, holdKeys, menuKey, optionAttachment } from '../list.svelte.js';
15
+ import { Anchored } from '../anchored.svelte.js';
16
+ import { calloutPickers, iconOf } from './callouts.js';
17
+ import CalloutIconHost from './CalloutIconPicker.svelte';
18
+ import { all, listen } from '../../utils/listen.js';
19
+ /** The picker's choices unless `createCalloutIconsPlugin({ icons })` names others. */
20
+ export const CALLOUT_ICONS = [
21
+ '💡',
22
+ '⚠️',
23
+ '❗',
24
+ '❓',
25
+ 'ℹ️',
26
+ '✅',
27
+ '❌',
28
+ '📌',
29
+ '📝',
30
+ '📣',
31
+ '🔔',
32
+ '💬',
33
+ '🔥',
34
+ '⭐',
35
+ '✨',
36
+ '🚀',
37
+ '🎯',
38
+ '🎉',
39
+ '❤️',
40
+ '👍',
41
+ '👀',
42
+ '⏰',
43
+ '📅',
44
+ '📚',
45
+ '🧪',
46
+ '🐛',
47
+ '🛠️',
48
+ '🔒',
49
+ '🌱',
50
+ '🤔'
51
+ ];
52
+ /** The choices on a row of the picker: the arrows up and down move by a row (`picker.columns`). */
53
+ export const ICON_COLUMNS = 8;
54
+ /**
55
+ * A view's callout icon picker: what a `callout.picker` snippet receives.
56
+ * The callout it is open on (`block`), the choices (`icons`) and the icon
57
+ * that callout shows (`current`); `set(icon)` and `remove()` write it and
58
+ * close, `close()` closes with nothing written. Put `{@attach picker.keys}`
59
+ * and `{@attach picker.popup}` on the picker's element (it takes the focus
60
+ * and the keys, names the keyboard's row and is published to the view's
61
+ * root), attach `picker.option(i)` to each row (`i` in `icons`,
62
+ * `icons.length` for Remove icon) and run `picker.pick(i)` on its click.
63
+ */
64
+ export class CalloutIconPicker extends ChromeList {
65
+ icons;
66
+ /** The callout the picker is open on (its id), `null` when closed. */
67
+ target = $state(null);
68
+ /** The choices on a row: ArrowUp and ArrowDown move by a row, so lay the icons out in as many columns. */
69
+ columns = ICON_COLUMNS;
70
+ /**
71
+ * The picker's panel under the target's icon (its block without one): its
72
+ * place, and what closes it (a press or focus outside, the icon gone,
73
+ * readonly).
74
+ * @internal
75
+ */
76
+ panel;
77
+ /** The selection the picker gives back when it closes. */
78
+ #before = null;
79
+ constructor(edytor,
80
+ /** The picker's choices. */
81
+ icons = CALLOUT_ICONS) {
82
+ super(edytor, 'callout-icons', 'menu');
83
+ this.icons = icons;
84
+ this.panel = new Anchored(edytor, 'edytor-callout-icons-host', () => {
85
+ if (this.target === null)
86
+ return undefined;
87
+ const node = this.block?.node;
88
+ const icon = [...(node?.querySelectorAll('[data-edytor-callout-icon]') ?? [])].find((element) => element.closest('[data-edytor-block="true"]') === node);
89
+ return icon ?? node ?? null;
90
+ }, () => this.close(false));
91
+ }
92
+ /** Whether the picker is open (reactive). */
93
+ get isOpen() {
94
+ return this.target !== null;
95
+ }
96
+ /** The callout it is open on (reactive). */
97
+ get block() {
98
+ const block = this.target ? this.edytor.idToBlock.get(this.target) : undefined;
99
+ return block?.isInTree ? block : undefined;
100
+ }
101
+ /** The icon that callout shows (`''`: none; reactive). */
102
+ get current() {
103
+ const block = this.block;
104
+ return block ? iconOf(block.data, this.edytor) : undefined;
105
+ }
106
+ /** The keyboard's rows: the icons, then Remove icon. */
107
+ get count() {
108
+ return this.icons.length + 1;
109
+ }
110
+ /** The view is readonly (reactive): the picker closes. */
111
+ get readonly() {
112
+ return this.edytor.readonly;
113
+ }
114
+ /** Open the picker on `block`, or close it when it is open there. */
115
+ toggle = (block) => (this.target === block.id ? this.close() : this.open(block));
116
+ /** Open the picker on the callout `block`, its icon the keyboard's row (refused in a view that may not write). */
117
+ open = (block) => {
118
+ if (!this.edytor.dispatcher.permits() || !block.isInTree)
119
+ return;
120
+ const at = this.icons.indexOf(iconOf(block.data, this.edytor));
121
+ this.index = at === -1 ? 0 : at;
122
+ this.#before = null;
123
+ this.target = block.id;
124
+ this.edytor.overlay.invalidate();
125
+ };
126
+ /** Close the picker; with `keys` (by default), the editor takes the keys back, with its selection. */
127
+ close = (keys = true) => {
128
+ if (this.target === null)
129
+ return;
130
+ const before = this.#before;
131
+ this.target = null;
132
+ this.panel.box = null;
133
+ this.#before = null;
134
+ this.edytor.overlay.invalidate();
135
+ if (!keys)
136
+ return;
137
+ if (before && before.kind !== 'none')
138
+ this.edytor.selection.select(before);
139
+ takeKeys(this.edytor);
140
+ };
141
+ /** Write `icon` on the callout (one undo step), then close. */
142
+ set = (icon) => {
143
+ const block = this.block;
144
+ if (block && block.data.icon !== icon)
145
+ block.edytor.patchData(block.id, [{ path: ['icon'], value: icon }]);
146
+ this.close();
147
+ };
148
+ /** Leave the callout without an icon (`data.icon` is `''`), then close. */
149
+ remove = () => this.set('');
150
+ /** Pick row `index`: its icon, or Remove icon (`icons.length`). */
151
+ pick = (index) => {
152
+ const icon = this.icons[index];
153
+ if (icon === undefined)
154
+ this.remove();
155
+ else
156
+ this.set(icon);
157
+ };
158
+ /**
159
+ * Row `index`'s attachment (`icons.length`: Remove icon), as every menu's
160
+ * rows: its id, `menuitemradio` role and `aria-checked` (`menuitem` for
161
+ * Remove icon); its highlight is the markup's (`index`).
162
+ */
163
+ option(index) {
164
+ const icon = this.icons[index];
165
+ return optionAttachment(this.rowId(index), icon === undefined ? 'menuitem' : 'menuitemradio', index === this.index, icon === undefined ? {} : { 'aria-checked': icon === this.current }, false);
166
+ }
167
+ /**
168
+ * The picker's element (`{@attach picker.keys}`): it takes the focus as
169
+ * it opens and names the keyboard's row (`aria-activedescendant`). The
170
+ * arrows walk the rows (up and down by `ICON_COLUMNS`), Home and End
171
+ * reach the ends, Enter or Space picks, Escape and Tab close; no key
172
+ * reaches the page behind it. Focus leaving it closes it.
173
+ */
174
+ keys = (node) => untrack(() => this.#keys(node));
175
+ #keys = (node) => {
176
+ const keydown = (event) => {
177
+ event.stopPropagation();
178
+ const at = this.index;
179
+ menuKey(event, {
180
+ at,
181
+ count: this.count,
182
+ to: (index) => (this.index = index),
183
+ pick: () => this.pick(at),
184
+ close: this.close
185
+ },
186
+ // Left and right wrap; up and down stop at the first and last rows.
187
+ { columns: ICON_COLUMNS });
188
+ };
189
+ // Focus leaving for somewhere else closes it (the window going to the background does not).
190
+ node.tabIndex = -1;
191
+ const off2 = listen(node, 'focusout', this.panel.blurred);
192
+ // It gives back the editor's selection as it is now: a block menu that
193
+ // opened it gave its caret back first.
194
+ this.#before ??= this.edytor.selection.value;
195
+ const off = holdKeys(node, keydown, () => this.rowId(this.index));
196
+ return all(off, off2);
197
+ };
198
+ }
199
+ /**
200
+ * Callout icons (Notion's): a callout's icon opens the view's picker, and
201
+ * its block menu has a Change icon row (rich text's, while a picker is
202
+ * listed), the keyboard's way to it. The first plugin listed claims the
203
+ * view's picker.
204
+ */
205
+ export const createCalloutIconsPlugin = ({ picker: menu, icons } = {}) => (edytor) => {
206
+ const picker = edytor && !calloutPickers.has(edytor) && new CalloutIconPicker(edytor, icons);
207
+ if (!picker)
208
+ return {};
209
+ calloutPickers.set(edytor, picker);
210
+ return {
211
+ // With the menus: above the handles and the image chrome.
212
+ onEdytorAttached: ({ node }) => menu && picker.panel.mount(node, CalloutIconHost, { picker, menu }, 70)
213
+ };
214
+ };
@@ -0,0 +1,15 @@
1
+ import type { CalloutIconPicker } from './calloutIcons.svelte.js';
2
+ /** A new callout's icon unless `createRichTextPlugin({ callout: { icon } })` names another. */
3
+ export declare const DEFAULT_CALLOUT_ICON = "\uD83D\uDCA1";
4
+ /** Each view's default callout icon (the first rich text plugin listed sets it). */
5
+ export declare const calloutIcons: WeakMap<object, string>;
6
+ /** Each view's callout icon picker (the first callout icons plugin listed claims it). */
7
+ export declare const calloutPickers: WeakMap<object, CalloutIconPicker>;
8
+ /** The icon a callout of `view` with `data` shows: its own (`''`: none), else the view's default. */
9
+ export declare const iconOf: (data: Record<string, unknown> | undefined, view?: object) => string;
10
+ /**
11
+ * A callout's HTML: a `div` naming its icon (`data-edytor-callout`), its
12
+ * title, then its content. A generic tag: only its attribute claims it back
13
+ * (`parse`), never a tag another kind may export.
14
+ */
15
+ export declare const calloutHtml: (icon: string, content: string, children: string) => string;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A callout's icon (`callout.icon` in the delete contract): its `data.icon`,
3
+ * the view's default when it has none of its own, no icon when it is `''`.
4
+ * The view's default is the first rich text plugin's; the icon picker is the
5
+ * callout icons plugin's (`calloutIcons.svelte.ts`), when one is listed.
6
+ */
7
+ import { escapeHtml } from '../../clipboard/serializeClipboardFragment.js';
8
+ /** A new callout's icon unless `createRichTextPlugin({ callout: { icon } })` names another. */
9
+ export const DEFAULT_CALLOUT_ICON = '💡';
10
+ /** Each view's default callout icon (the first rich text plugin listed sets it). */
11
+ export const calloutIcons = new WeakMap();
12
+ /** Each view's callout icon picker (the first callout icons plugin listed claims it). */
13
+ export const calloutPickers = new WeakMap();
14
+ /** The icon a callout of `view` with `data` shows: its own (`''`: none), else the view's default. */
15
+ export const iconOf = (data, view) => typeof data?.icon === 'string'
16
+ ? data.icon
17
+ : ((view && calloutIcons.get(view)) ?? DEFAULT_CALLOUT_ICON);
18
+ /**
19
+ * A callout's HTML: a `div` naming its icon (`data-edytor-callout`), its
20
+ * title, then its content. A generic tag: only its attribute claims it back
21
+ * (`parse`), never a tag another kind may export.
22
+ */
23
+ export const calloutHtml = (icon, content, children) => `<div data-edytor-callout="${escapeHtml(icon)}"><p>${content}</p>${children}</div>`;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The controls inside the rich text kinds (a to-do's checkbox, a callout's
3
+ * icon, an empty body's hint): the package's markup by default, the app's
4
+ * snippet when `createRichTextPlugin` names one. Each snippet receives a
5
+ * payload: the state, the action (written through the document) and the
6
+ * words the markup reads, and the control's attachment (its marker, its
7
+ * ARIA, its press and click), so custom markup keeps the keys, the
8
+ * accessibility and what the editor reads of it.
9
+ */
10
+ import type { Snippet } from 'svelte';
11
+ import type { Attachment } from 'svelte/attachments';
12
+ import type { Block } from '../../block/block.svelte.js';
13
+ import type { Edytor } from '../../edytor.svelte.js';
14
+ import type { BlockView } from '../../plugins.js';
15
+ /** What a to-do's `checkbox` snippet receives. */
16
+ export type TodoCheckboxPayload = {
17
+ /** The to-do; `undefined` in a suggestion's preview (its box writes nothing). */
18
+ readonly block: Block | undefined;
19
+ /** It is checked: its `data.checked` (reactive). */
20
+ readonly checked: boolean;
21
+ /** The checkbox's accessible name (the view's `richText.checkbox`). */
22
+ readonly label: string;
23
+ /** Check or uncheck it: one data write, refused in a readonly view. */
24
+ toggle: () => void;
25
+ /**
26
+ * The control's attachment (`{@attach box.control}`), on an `input
27
+ * type="checkbox"` (give it `checked={box.checked}`) or a `button` (it
28
+ * gets `role="checkbox"` and `aria-checked`): its marker
29
+ * (`data-edytor-todo-checkbox`), `contenteditable="false"`, its
30
+ * `aria-label`, a press that keeps the editor's selection and a click
31
+ * that toggles the to-do.
32
+ */
33
+ readonly control: Attachment<HTMLElement>;
34
+ };
35
+ /** What a callout's `calloutIcon` snippet receives. */
36
+ export type CalloutIconPayload = {
37
+ /** The callout; `undefined` in a suggestion's preview. */
38
+ readonly block: Block | undefined;
39
+ /** Its icon: its `data.icon`, the view's default without one, `''` for none (reactive). */
40
+ readonly icon: string;
41
+ /**
42
+ * The icon opens the view's picker: an editable view listing a picker,
43
+ * not a suggestion's preview. Draw a `button` then, else the icon alone.
44
+ */
45
+ readonly editable: boolean;
46
+ /** The picker is open on this callout (reactive). */
47
+ readonly expanded: boolean;
48
+ /** The button's accessible name: Change icon, or Add icon over an empty slot. */
49
+ readonly label: string;
50
+ /** Open the view's picker on this callout, or close it. */
51
+ toggle: () => void;
52
+ /**
53
+ * The icon's attachment (`{@attach icon.control}`): its marker
54
+ * (`data-edytor-callout-icon`, which the picker opens under), `data-empty`
55
+ * without an icon, `contenteditable="false"`; editable, its
56
+ * `aria-label`, `aria-haspopup`, `aria-expanded`, `aria-controls`, a
57
+ * press that keeps the editor's selection and a click that toggles the
58
+ * picker; else `aria-hidden`.
59
+ */
60
+ readonly control: Attachment<HTMLElement>;
61
+ };
62
+ /** What the `emptyBody` snippet of an open toggle's or a callout's empty body receives. */
63
+ export type EmptyBodyPayload = {
64
+ /** The toggle or callout. */
65
+ readonly block: Block;
66
+ /** Which kind's body. */
67
+ readonly kind: 'toggle' | 'callout';
68
+ /** The hint (the view's `richText.emptyBody`). */
69
+ readonly label: string;
70
+ /** Start the body: a first child, the caret in it (one command, one undo step). */
71
+ open: () => void;
72
+ /**
73
+ * The hint's attachment (`{@attach hint.control}`): its marker
74
+ * (`data-edytor-empty-body`, where a dragged block drops inside),
75
+ * `contenteditable="false"`, `aria-hidden` (Enter at the end of the
76
+ * header is the keyboard's way in) and a click that starts the body.
77
+ */
78
+ readonly control: Attachment<HTMLElement>;
79
+ };
80
+ /** `createRichTextPlugin`'s control snippets. */
81
+ export type RichTextControls = {
82
+ checkbox?: Snippet<[TodoCheckboxPayload]>;
83
+ calloutIcon?: Snippet<[CalloutIconPayload]>;
84
+ emptyBody?: Snippet<[EmptyBodyPayload]>;
85
+ };
86
+ /** Each view's control snippets (the first rich text plugin listed sets them). */
87
+ export declare const richTextControls: WeakMap<object, RichTextControls>;
88
+ /** Check or uncheck a to-do: one key patched, so a peer's concurrent edit of another key is kept. */
89
+ export declare const toggleTodo: (block: Block) => import("../../index.js").OpResult;
90
+ /**
91
+ * A to-do's checkbox in `view` (a suggestion's preview included: no
92
+ * handle, no write), named in its labels.
93
+ */
94
+ export declare const todoCheckbox: (view: Edytor, block: () => BlockView<{
95
+ checked?: boolean;
96
+ }>) => TodoCheckboxPayload;
97
+ /**
98
+ * A callout's icon in `view` (`callout.icon`): its `data.icon`, the view's
99
+ * default without one, none when it is `''`; a button opening the view's
100
+ * picker where it may be picked (an editable view listing a picker, not a
101
+ * suggestion's preview), else the icon alone.
102
+ */
103
+ export declare const calloutIcon: (view: Edytor, block: () => BlockView<{
104
+ icon?: string;
105
+ }>) => CalloutIconPayload;
106
+ /**
107
+ * The hint of `block`'s empty body in `view` (`body.hint`), or `null` where
108
+ * none shows: a readonly view, a suggestion's preview (no handle).
109
+ */
110
+ export declare const emptyBody: (view: Edytor, block: BlockView, kind: "toggle" | "callout") => EmptyBodyPayload | null;