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,6 +1,6 @@
1
1
  <script module lang="ts">
2
2
  import type { Plugin, BlockSnippetPayload, KindPreset, PlaceholderView } from '../../plugins.js';
3
- import type { Block } from '../../block/block.svelte.js';
3
+ import { branded } from '../brand.js';
4
4
  import type { Edytor } from '../../edytor.svelte.js';
5
5
  import { presetId } from '../../kinds.js';
6
6
  import type { Text } from '../../text/text.svelte.js';
@@ -19,9 +19,29 @@
19
19
  import { firstUriListEntry } from '../../events/dataTransferPayload.js';
20
20
  import { flipToggles, shownSelectionBlocks } from '../../selection/replaceSelection.js';
21
21
  import { mediaKinds, richTextKinds, richTextMarks } from '../../crdt/semantics.js';
22
- import { keywordsOf, labelsWith, type PartialLabels, type RichTextLabels } from '../../labels.js';
23
- import { checkboxLabels } from './labels.js';
22
+ import { richTextEnglish, keywordsOf, labelsOf, type RichTextLabels } from '../../labels.js';
24
23
  import TodoCheckbox from './TodoCheckbox.svelte';
24
+ import EmptyBody from './EmptyBody.svelte';
25
+ import CalloutIcon from './CalloutIcon.svelte';
26
+ import RichTextControl from './RichTextControl.svelte';
27
+ import {
28
+ DEFAULT_CALLOUT_ICON,
29
+ calloutHtml,
30
+ calloutIcons,
31
+ calloutPickers,
32
+ iconOf
33
+ } from './callouts.js';
34
+ import { listen } from '../../utils/listen.js';
35
+ import type { Snippet } from 'svelte';
36
+ import {
37
+ richTextControls,
38
+ toggleTodo,
39
+ type CalloutIconPayload,
40
+ type EmptyBodyPayload,
41
+ type TodoCheckboxPayload
42
+ } from './controls.svelte.js';
43
+
44
+ export type { CalloutIconPayload, EmptyBodyPayload, TodoCheckboxPayload };
25
45
 
26
46
  export { richTextOperations };
27
47
 
@@ -42,6 +62,8 @@
42
62
  const rule = { html: () => '<hr>', plain: () => '---' };
43
63
  /** A native disclosure: the browser owns `open` (declared view state). */
44
64
  const disclosure = { element: 'details', viewState: ['open'] };
65
+ /** The kinds drawn as a disclosure: a toggle this view creates opens (`body.open`). */
66
+ const DISCLOSURES = new Set(['toggle', 'toggle-heading']);
45
67
  /**
46
68
  * A list's elements without list semantics (`role="none"`): a list's items
47
69
  * are sibling blocks, never the only children of one `ul` or `ol`, so an
@@ -90,96 +112,121 @@
90
112
  undefined;
91
113
 
92
114
  /**
93
- * Notion's placeholders in `labels` (English by default): headings,
94
- * lists, to-dos, toggles and quotes name their kind while empty; a
95
- * paragraph invites a command only while focused.
115
+ * The kinds whose empty text names them, by placeholder (a callout's
116
+ * title, as a toggle's, names itself).
96
117
  */
97
- export const createRichTextPlaceholder = (labels?: PartialLabels<'richText'>) => {
98
- const { placeholders } = labelsWith('richText', labels);
99
- return ({ type, data, focused }: PlaceholderView): string | null => {
100
- if (type === 'heading')
101
- return placeholders.heading(Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3);
102
- if (type === 'toggle-heading')
103
- return placeholders.toggleHeading(Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3);
104
- if (type === 'bulleted-list-item' || type === 'numbered-list-item') return placeholders.list;
105
- if (type === 'todo-item') return placeholders.todo;
106
- if (type === 'toggle') return placeholders.toggle;
107
- if (type === 'quote') return placeholders.quote;
108
- if (type === 'callout') return focused ? placeholders.callout : null;
109
- if (type === 'image' || Object.hasOwn(mediaKinds, type))
110
- return focused ? placeholders.caption : null;
111
- // Code shows nothing in an empty line (Notion).
112
- if (type === 'codeLine') return null;
113
- return focused ? placeholders.empty : null;
114
- };
118
+ const NAMED: Record<string, 'list' | 'todo' | 'toggle' | 'quote' | 'callout'> = {
119
+ 'bulleted-list-item': 'list',
120
+ 'numbered-list-item': 'list',
121
+ 'todo-item': 'todo',
122
+ toggle: 'toggle',
123
+ quote: 'quote',
124
+ callout: 'callout'
115
125
  };
116
126
 
117
- /** Notion's placeholders, in English. */
118
- export const richTextPlaceholder = createRichTextPlaceholder();
127
+ /**
128
+ * Notion's placeholders, in the view's `richText` labels (English by
129
+ * default): headings, lists, to-dos, toggles and quotes name their kind
130
+ * while empty; a paragraph invites a command only while focused.
131
+ */
132
+ export const richTextPlaceholder = (
133
+ { type, data, focused }: PlaceholderView,
134
+ edytor?: Edytor
135
+ ): string | null => {
136
+ const { placeholders } = labelsOf(edytor, 'richText', richTextEnglish);
137
+ if (type === 'heading' || type === 'toggle-heading')
138
+ return placeholders[type === 'heading' ? 'heading' : 'toggleHeading'](
139
+ Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3
140
+ );
141
+ if (Object.hasOwn(NAMED, type)) return placeholders[NAMED[type]!];
142
+ // Code shows nothing in an empty line (Notion).
143
+ if (type === 'codeLine' || !focused) return null;
144
+ return type === 'image' || Object.hasOwn(mediaKinds, type)
145
+ ? placeholders.caption
146
+ : placeholders.empty;
147
+ };
119
148
 
120
149
  export type RichTextPluginOptions = {
121
- /** The kinds', marks' and checkbox's words (English by default). */
122
- labels?: PartialLabels<'richText'>;
150
+ /** Callouts' icons (their picker is `createCalloutIconsPlugin`'s). */
151
+ callout?: {
152
+ /**
153
+ * A new callout's icon, and the one a callout whose `data.icon` is
154
+ * unset shows (`💡` by default).
155
+ */
156
+ icon?: string;
157
+ };
158
+ /**
159
+ * A to-do's checkbox (default: a native `input type="checkbox"`). Spread
160
+ * `checkbox.attributes` on the control, an `input` (with
161
+ * `checked={checkbox.checked}`) or a `button`: its click checks the to-do
162
+ * through the document.
163
+ */
164
+ checkbox?: Snippet<[TodoCheckboxPayload]>;
123
165
  /**
124
- * The slash menu's keywords of a kind, by command id (`block.heading1`):
125
- * they replace that preset's own (list the English ones to keep them).
166
+ * A callout's icon (default: a `button` showing it, or the icon alone
167
+ * where it cannot be picked). Spread `icon.attributes` on its element:
168
+ * a click opens the view's picker (`createCalloutIconsPlugin`), which
169
+ * opens under it.
126
170
  */
127
- keywords?: Partial<Record<string, string[]>>;
171
+ calloutIcon?: Snippet<[CalloutIconPayload]>;
172
+ /**
173
+ * The hint an open toggle's or a callout's empty body shows (default: a
174
+ * `div` with the view's `richText.emptyBody` words). Spread
175
+ * `hint.attributes` on it: a click starts the body, a dragged block
176
+ * drops inside.
177
+ */
178
+ emptyBody?: Snippet<[EmptyBodyPayload]>;
128
179
  };
129
180
 
130
- const richTextPlugins = new WeakSet<Plugin>();
131
-
132
- /** Recognize any rich text plugin instance (the component's default yields to yours). */
133
- export const isRichTextPlugin = (plugin: Plugin) => richTextPlugins.has(plugin);
134
-
135
- // One key patched: a peer's concurrent edit of another key is kept.
136
- const toggleTodo = (block: Block) => (block.data.checked = !block.data.checked);
137
-
138
- /** Notion's "turn into" chords: Mod+Alt+0 text … 8 code (`block.<type>` command ids). */
139
- const TURN_INTO: Record<string, string> = {
140
- 'mod+alt+0': 'block.paragraph',
141
- 'mod+alt+1': 'block.heading1',
142
- 'mod+alt+2': 'block.heading2',
143
- 'mod+alt+3': 'block.heading3',
144
- 'mod+alt+4': 'block.todo-item',
145
- 'mod+alt+5': 'block.bulleted-list-item',
146
- 'mod+alt+6': 'block.numbered-list-item',
147
- 'mod+alt+7': 'block.toggle',
148
- 'mod+alt+8': 'block.code'
149
- };
181
+ /** Notion's "turn into" chords: Mod+Alt+0 text … 8 code (`block.<type>` command ids, by digit). */
182
+ const TURN_INTO = [
183
+ 'paragraph',
184
+ 'heading1',
185
+ 'heading2',
186
+ 'heading3',
187
+ 'todo-item',
188
+ 'bulleted-list-item',
189
+ 'numbered-list-item',
190
+ 'toggle',
191
+ 'code'
192
+ ];
150
193
 
151
194
  /**
152
- * The rich text kinds and marks, with their words in `labels` and their
153
- * slash keywords in `keywords` (English by default).
195
+ * The rich text kinds and marks, their words and slash keywords the
196
+ * view's (`labels`, English by default).
154
197
  */
155
198
  export const createRichTextPlugin = (options: RichTextPluginOptions = {}): Plugin => {
156
- const labels = labelsWith('richText', options.labels);
157
199
  const plugin: Plugin = (edytor) => {
158
- checkboxLabels.claim(edytor, labels);
159
- return richText(edytor, labels, options.keywords);
200
+ const labels = labelsOf(edytor, 'richText', richTextEnglish);
201
+ // The view's default callout icon and its controls' markup: the first rich text plugin listed sets them.
202
+ if (edytor && !calloutIcons.has(edytor)) {
203
+ calloutIcons.set(edytor, options.callout?.icon ?? DEFAULT_CALLOUT_ICON);
204
+ const { checkbox, calloutIcon, emptyBody } = options;
205
+ richTextControls.set(edytor, { checkbox, calloutIcon, emptyBody });
206
+ }
207
+ return richText(edytor, labels, options);
160
208
  };
161
- richTextPlugins.add(plugin);
162
- return plugin;
163
- };
164
-
165
- /** A preset whose slash keywords `keywords` may replace, by its command id. */
166
- const preset = (
167
- id: string,
168
- row: KindPreset,
169
- keywords: RichTextPluginOptions['keywords']
170
- ): KindPreset => {
171
- const own = keywordsOf(id, row.keywords, keywords);
172
- return own ? { ...row, keywords: own } : row;
209
+ return branded('richText', plugin);
173
210
  };
174
211
 
175
- /** The rich text records of `edytor`, in `labels`, its presets' keywords replaced by `keywords`. */
212
+ /** The rich text records of `edytor`, in `labels`, its presets' keywords the view's. */
176
213
  const richText = (
177
214
  edytor: Edytor,
178
- { kinds, marks: words }: RichTextLabels,
179
- keywords: RichTextPluginOptions['keywords']
215
+ labels: RichTextLabels,
216
+ { callout: calloutOptions, checkbox, calloutIcon, emptyBody }: RichTextPluginOptions
180
217
  ): ReturnType<Plugin> => {
218
+ const { kinds, marks: words } = labels;
219
+ /** A new callout's icon. */
220
+ const icon = calloutOptions?.icon ?? DEFAULT_CALLOUT_ICON;
221
+ /** The block this view is retyping into a disclosure (`body.open`), until it applied. */
222
+ let retyping: string | null = null;
223
+ /** The disclosures this view created, opened once drawn (`onBlockAttached`). */
224
+ const opening = new Set<string>();
181
225
  const presets = (type: string, rows: KindPreset[]) =>
182
- rows.map((row, index) => preset(presetId(type, index, rows.length), row, keywords));
226
+ rows.map((row, index) => {
227
+ const own = keywordsOf(edytor, presetId(type, index, rows.length), row.keywords);
228
+ return own ? { ...row, keywords: own } : row;
229
+ });
183
230
  const operations = richTextOperations(edytor);
184
231
  /** The space an autolink types itself: its own insertion is not looked at again. */
185
232
  let autolinking = false;
@@ -228,9 +275,10 @@
228
275
  });
229
276
  },
230
277
  ...Object.fromEntries(
231
- Object.entries(TURN_INTO).map(([chord, id]): [string, HotKey] => [
232
- chord,
278
+ TURN_INTO.map((type, digit): [string, HotKey] => [
279
+ `mod+alt+${digit}`,
233
280
  ({ prevent }) => {
281
+ const id = `block.${type}`;
234
282
  if (edytor.commands.has(id)) prevent(() => void edytor.runCommand(id));
235
283
  }
236
284
  ])
@@ -244,7 +292,8 @@
244
292
  if (!linkable()) return;
245
293
  const href = pastedLink(e.clipboardData?.getData('text/plain'));
246
294
  if (!href) return;
247
- const { isCollapsed, startText: text, yStart } = edytor.selection.state;
295
+ const { startText: text, yStart } = edytor.selection.textRange();
296
+ const { isCollapsed } = edytor.selection.projection;
248
297
  if (!isCollapsed)
249
298
  return prevent(() =>
250
299
  edytor.dispatcher.run('insertFromPaste', () => operations.setLinkAtRange({ href }))
@@ -253,7 +302,7 @@
253
302
  prevent(() => {
254
303
  const end = yStart + href.length;
255
304
  edytor.dispatcher.run('insertFromPaste', () => {
256
- text.insertText({ value: href, start: yStart, end: yStart });
305
+ edytor.insertText(text.parent.id, text.segStart + yStart, href);
257
306
  edytor.dispatcher.caret(text, end);
258
307
  });
259
308
  if (text.stringContent.slice(yStart, end) === href)
@@ -264,11 +313,25 @@
264
313
  // a step of its own after the typing: undo gives the plain text back
265
314
  // (`link.autolink.typed`, Notion).
266
315
  onBeforeOperation: (change) => {
316
+ // A block without children retyped into a disclosure from another kind (the
317
+ // slash menu, a markdown shortcut, Turn into: their planned `setBlockType`):
318
+ // the toggle it becomes opens on its empty body (`body.open`). One with
319
+ // children keeps them out of sight.
320
+ if (change.operation === 'setBlockType') {
321
+ const [, type] = change.payload;
322
+ const opens =
323
+ DISCLOSURES.has(type) &&
324
+ !DISCLOSURES.has(change.block.type) &&
325
+ !change.block.hasChildren;
326
+ retyping = opens ? change.block.id : null;
327
+ }
267
328
  if (autolinking || change.operation !== 'insertText') return;
268
329
  const { payload, text, prevent } = change;
269
- if (payload.value !== ' ' || !linkable()) return;
270
- const { startText, yStart, isCollapsed } = edytor.selection.state;
271
- if (!isCollapsed || text !== startText || (payload.start ?? yStart) !== yStart) return;
330
+ if (payload[2] !== ' ' || !linkable()) return;
331
+ const { startText, yStart } = edytor.selection.textRange();
332
+ const { isCollapsed } = edytor.selection.projection;
333
+ if (!isCollapsed || !text || text !== startText) return;
334
+ if (payload[1] !== text.segStart + yStart) return;
272
335
  const found = typedLink(text.stringContent.slice(0, yStart));
273
336
  const end = found && found.start + found.href.length;
274
337
  if (!found || !end) return;
@@ -279,7 +342,7 @@
279
342
  prevent(() => {
280
343
  autolinking = true;
281
344
  try {
282
- text.insertText(payload);
345
+ edytor.insertText(...payload);
283
346
  } finally {
284
347
  autolinking = false;
285
348
  }
@@ -287,6 +350,17 @@
287
350
  operations.linkText(text, found.start, end, found.href);
288
351
  });
289
352
  },
353
+ onAfterOperation: (change) => {
354
+ if (retyping !== change.block.id) return;
355
+ retyping = null;
356
+ if (DISCLOSURES.has(change.block.type)) opening.add(change.block.id);
357
+ },
358
+ // A disclosure this view created opens as it is drawn (the browser owns `open`
359
+ // from then on: the user's to close).
360
+ onBlockAttached: ({ node, block }) => {
361
+ if (!opening.delete(block.id)) return;
362
+ if (node instanceof HTMLDetailsElement) node.open = true;
363
+ },
290
364
  // Mod+click on a link opens it in a new tab (`link.mod-click`): a plain
291
365
  // click places the caret, as in Notion. Mod is read as the keymap reads
292
366
  // it: Meta, or Ctrl off a Mac.
@@ -300,8 +374,7 @@
300
374
  event.preventDefault();
301
375
  openLink(href, node.ownerDocument.defaultView);
302
376
  };
303
- node.addEventListener('click', click);
304
- return () => node.removeEventListener('click', click);
377
+ return listen(node, 'click', click);
305
378
  },
306
379
  onBeforeInput: ({ e, prevent }) => {
307
380
  const { inputType, data } = e;
@@ -453,7 +526,8 @@
453
526
  },
454
527
  'todo-item': {
455
528
  continues: true,
456
- snippet: todoItem,
529
+ // The app's control markup, if any, through its own snippet: the default costs no branch.
530
+ snippet: checkbox ? todoItemOwn : todoItem,
457
531
  presets: presets('todo-item', [
458
532
  {
459
533
  label: kinds.todoList,
@@ -473,7 +547,7 @@
473
547
  toggle: {
474
548
  continues: true,
475
549
  container: true,
476
- snippet: details,
550
+ snippet: emptyBody ? detailsOwn : details,
477
551
  ...disclosure,
478
552
  presets: presets('toggle', [
479
553
  {
@@ -490,7 +564,7 @@
490
564
  // line is a toggle heading 1.
491
565
  'toggle-heading': {
492
566
  container: true,
493
- snippet: details,
567
+ snippet: emptyBody ? detailsOwn : details,
494
568
  ...disclosure,
495
569
  contentElement: (data) => headingLevel(data.level),
496
570
  presets: presets(
@@ -521,12 +595,37 @@
521
595
  return `<details><summary><${tag}>${content}</${tag}></summary>${children}</details>`;
522
596
  }
523
597
  },
598
+ // Notion's callout: an icon (`data.icon`, the picker's), a title (its own
599
+ // text) and a content (its children, any blocks), which shows even empty
600
+ // (`body`): Enter at the end of the title goes into it.
524
601
  callout: {
525
602
  container: true,
526
- snippet: callout,
603
+ body: true,
604
+ snippet: calloutIcon || emptyBody ? calloutOwn : callout,
527
605
  presets: presets('callout', [
528
- { label: kinds.callout, icon: '✦', keywords: ['note', 'tip'], data: { icon: '💡' } }
529
- ])
606
+ { label: kinds.callout, icon: '✦', keywords: ['note', 'tip'], data: { icon } }
607
+ ]),
608
+ // The block menu's Change icon, while the view lists a picker: the keyboard's way to it.
609
+ menu: (block) => {
610
+ const picker = calloutPickers.get(edytor);
611
+ return picker
612
+ ? [
613
+ {
614
+ id: 'callout.icon',
615
+ label: labels.calloutIcon.change,
616
+ icon: 'block.callout',
617
+ run: () => picker.open(block)
618
+ }
619
+ ]
620
+ : [];
621
+ },
622
+ // HTML import: its own export, the icon in its attribute.
623
+ parse: (el) => {
624
+ const own = el.getAttribute('data-edytor-callout');
625
+ return own === null ? undefined : { icon: own };
626
+ },
627
+ html: (block, content, children) =>
628
+ calloutHtml(iconOf(block.data, edytor), content, children)
530
629
  },
531
630
  quote: {
532
631
  container: true,
@@ -545,7 +644,6 @@
545
644
  empty: { content: [], children: [] },
546
645
  ...rule
547
646
  },
548
- details: { snippet: details, ...disclosure },
549
647
  'ordered-list': {
550
648
  ...richTextKinds['ordered-list'],
551
649
  itemKind: 'numbered-list-item',
@@ -560,86 +658,112 @@
560
658
  element: unlisted('ul'),
561
659
  html: 'ul'
562
660
  },
563
- 'list-item': { snippet: listItem, element: unlisted('li'), html: 'li' },
564
- horizontalRule: {
565
- ...richTextKinds.horizontalRule,
566
- element: 'hr',
567
- ...rule
568
- }
661
+ 'list-item': { snippet: listItem, element: unlisted('li'), html: 'li' }
569
662
  }
570
663
  };
571
664
  };
572
-
573
- /** The rich text kinds and marks, in English. */
574
- export const richTextPlugin: Plugin = createRichTextPlugin();
575
665
  </script>
576
666
 
577
667
  <!--
578
668
  Every kind that has children renders them in one container marked
579
669
  `data-edytor-children`: the core indents it by one nesting step
580
- (`--edytor-nest-indent`), so nesting looks the same under any kind.
670
+ (`--edytor-nest-indent`), so nesting looks the same under any kind. Each
671
+ snippet writes the container itself, with no whitespace between its tags
672
+ (the comments hold the lines; prettier would add whitespace back): a
673
+ nested snippet or a text node between tags is one more node per block for
674
+ the browser to walk (`render.markers`).
581
675
  -->
582
- {#snippet nested(children: BlockSnippetPayload['children'])}
583
- {#if children}
584
- <div data-edytor-children>
585
- {@render children()}
586
- </div>
587
- {/if}
588
- {/snippet}
676
+ <!-- prettier-ignore -->
677
+ {#snippet paragraph({ content, children }: BlockSnippetPayload)}<!--
678
+ --><p>{@render content()}</p><!--
679
+ -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
680
+ -->{/snippet}
589
681
 
590
- {#snippet paragraph({ content, children }: BlockSnippetPayload)}
591
- <p>
592
- {@render content()}
593
- </p>
594
- {@render nested(children)}
595
- {/snippet}
596
-
597
- {#snippet details({ content, children }: BlockSnippetPayload)}
598
- <summary>
599
- {@render content()}
600
- </summary>
601
- {@render nested(children)}
602
- {/snippet}
682
+ <!--
683
+ A toggle: its text the `summary`, its children the body; an empty body
684
+ shows its hint, which the browser hides with the body while closed.
685
+ -->
686
+ <!-- prettier-ignore -->
687
+ {#snippet details({ block, content, children }: BlockSnippetPayload)}<!--
688
+ --><summary>{@render content()}</summary><!--
689
+ -->{#if children}<div data-edytor-children>{@render children()}</div><!--
690
+ -->{:else}<EmptyBody {block} kind="toggle" />{/if}<!--
691
+ -->{/snippet}
603
692
 
604
693
  <!--
605
694
  A heading's or quote's text (the core wraps it in the kind's `contentElement`,
606
695
  its `h1`–`h3` or `blockquote`); its children below, outside that tag, so
607
696
  heading styles and the heading's accessible name stop at its own text.
608
697
  -->
609
- {#snippet textThenChildren({ content, children }: BlockSnippetPayload)}
610
- {@render content()}
611
- {@render nested(children)}
612
- {/snippet}
698
+ <!-- prettier-ignore -->
699
+ {#snippet textThenChildren({ content, children }: BlockSnippetPayload)}<!--
700
+ -->{@render content()}<!--
701
+ -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
702
+ -->{/snippet}
613
703
 
614
- {#snippet callout({ block, content, children }: BlockSnippetPayload<{ icon?: string }>)}
615
- <span contenteditable="false" data-edytor-callout-icon>{block.data.icon || '💡'}</span>
616
- <div>
617
- {@render content()}
618
- </div>
619
- {@render nested(children)}
620
- {/snippet}
704
+ <!--
705
+ A callout: its icon, its title (its own text), then its content (its
706
+ children), or the hint of an empty one.
707
+ -->
708
+ <!-- prettier-ignore -->
709
+ {#snippet callout({ block, content, children }: BlockSnippetPayload<{ icon?: string }>)}<!--
710
+ --><CalloutIcon {block} /><!--
711
+ --><div data-edytor-callout-title>{@render content()}</div><!--
712
+ -->{#if children}<div data-edytor-children>{@render children()}</div><!--
713
+ -->{:else}<EmptyBody {block} kind="callout" />{/if}<!--
714
+ -->{/snippet}
621
715
 
622
- {#snippet todoItem({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}
623
- <TodoCheckbox {block} toggle={toggleTodo} />
624
- <div>
625
- {@render content()}
626
- </div>
627
- {@render nested(children)}
628
- {/snippet}
716
+ <!-- prettier-ignore -->
717
+ {#snippet todoItem({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}<!--
718
+ --><TodoCheckbox {block} /><!--
719
+ --><div>{@render content()}</div><!--
720
+ -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
721
+ -->{/snippet}
629
722
 
630
- {#snippet listItem({ content, children }: BlockSnippetPayload)}
631
- <div>{@render content()}</div>
632
- {@render nested(children)}
633
- {/snippet}
723
+ <!--
724
+ The same kinds, their controls drawn by the app's snippets (`checkbox`,
725
+ `calloutIcon`, `emptyBody`) where it passes them.
726
+ -->
727
+ <!-- prettier-ignore -->
728
+ {#snippet todoItemOwn({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}<!--
729
+ --><RichTextControl {block} control="checkbox" /><!--
730
+ --><div>{@render content()}</div><!--
731
+ -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
732
+ -->{/snippet}
733
+
734
+ <!-- prettier-ignore -->
735
+ {#snippet detailsOwn({ block, content, children }: BlockSnippetPayload)}<!--
736
+ --><summary>{@render content()}</summary><!--
737
+ -->{#if children}<div data-edytor-children>{@render children()}</div><!--
738
+ -->{:else}<RichTextControl {block} control="toggle" />{/if}<!--
739
+ -->{/snippet}
740
+
741
+ <!-- prettier-ignore -->
742
+ {#snippet calloutOwn({ block, content, children }: BlockSnippetPayload<{ icon?: string }>)}<!--
743
+ --><RichTextControl {block} control="calloutIcon" /><!--
744
+ --><div data-edytor-callout-title>{@render content()}</div><!--
745
+ -->{#if children}<div data-edytor-children>{@render children()}</div><!--
746
+ -->{:else}<RichTextControl {block} control="callout" />{/if}<!--
747
+ -->{/snippet}
748
+
749
+ <!-- prettier-ignore -->
750
+ {#snippet listItem({ content, children }: BlockSnippetPayload)}<!--
751
+ --><div>{@render content()}</div><!--
752
+ -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
753
+ -->{/snippet}
634
754
 
635
755
  <!--
636
756
  A list container (HTML import's `ol`/`ul`) groups its items: they are its
637
757
  rows, not blocks nested under its text, so its wrapper is not indented.
638
758
  -->
639
- {#snippet list({ children }: BlockSnippetPayload)}
640
- {#if children}
641
- <div>
642
- {@render children()}
643
- </div>
644
- {/if}
645
- {/snippet}
759
+ <!-- prettier-ignore -->
760
+ {#snippet list({ children }: BlockSnippetPayload)}<!--
761
+ -->{#if children}<div>{@render children()}</div>{/if}<!--
762
+ -->{/snippet}
763
+
764
+ <style>
765
+ /* An empty body's hint: chrome, not text (`body.hint`); its look is a theme's. */
766
+ :global([data-edytor-empty-body]) {
767
+ user-select: none;
768
+ }
769
+ </style>
@@ -1,33 +1,52 @@
1
1
  import type { Plugin, PlaceholderView } from '../../plugins.js';
2
+ import type { Edytor } from '../../edytor.svelte.js';
2
3
  import { richTextOperations } from './richTextOperations.js';
3
- import { type PartialLabels } from '../../labels.js';
4
+ import type { Snippet } from 'svelte';
5
+ import { type CalloutIconPayload, type EmptyBodyPayload, type TodoCheckboxPayload } from './controls.svelte.js';
6
+ export type { CalloutIconPayload, EmptyBodyPayload, TodoCheckboxPayload };
4
7
  export { richTextOperations };
5
8
  /**
6
- * Notion's placeholders in `labels` (English by default): headings,
7
- * lists, to-dos, toggles and quotes name their kind while empty; a
8
- * paragraph invites a command only while focused.
9
+ * Notion's placeholders, in the view's `richText` labels (English by
10
+ * default): headings, lists, to-dos, toggles and quotes name their kind
11
+ * while empty; a paragraph invites a command only while focused.
9
12
  */
10
- export declare const createRichTextPlaceholder: (labels?: PartialLabels<"richText">) => ({ type, data, focused }: PlaceholderView) => string | null;
11
- /** Notion's placeholders, in English. */
12
- export declare const richTextPlaceholder: ({ type, data, focused }: PlaceholderView) => string | null;
13
+ export declare const richTextPlaceholder: ({ type, data, focused }: PlaceholderView, edytor?: Edytor) => string | null;
13
14
  export type RichTextPluginOptions = {
14
- /** The kinds', marks' and checkbox's words (English by default). */
15
- labels?: PartialLabels<'richText'>;
15
+ /** Callouts' icons (their picker is `createCalloutIconsPlugin`'s). */
16
+ callout?: {
17
+ /**
18
+ * A new callout's icon, and the one a callout whose `data.icon` is
19
+ * unset shows (`💡` by default).
20
+ */
21
+ icon?: string;
22
+ };
23
+ /**
24
+ * A to-do's checkbox (default: a native `input type="checkbox"`). Spread
25
+ * `checkbox.attributes` on the control, an `input` (with
26
+ * `checked={checkbox.checked}`) or a `button`: its click checks the to-do
27
+ * through the document.
28
+ */
29
+ checkbox?: Snippet<[TodoCheckboxPayload]>;
30
+ /**
31
+ * A callout's icon (default: a `button` showing it, or the icon alone
32
+ * where it cannot be picked). Spread `icon.attributes` on its element:
33
+ * a click opens the view's picker (`createCalloutIconsPlugin`), which
34
+ * opens under it.
35
+ */
36
+ calloutIcon?: Snippet<[CalloutIconPayload]>;
16
37
  /**
17
- * The slash menu's keywords of a kind, by command id (`block.heading1`):
18
- * they replace that preset's own (list the English ones to keep them).
38
+ * The hint an open toggle's or a callout's empty body shows (default: a
39
+ * `div` with the view's `richText.emptyBody` words). Spread
40
+ * `hint.attributes` on it: a click starts the body, a dragged block
41
+ * drops inside.
19
42
  */
20
- keywords?: Partial<Record<string, string[]>>;
43
+ emptyBody?: Snippet<[EmptyBodyPayload]>;
21
44
  };
22
- /** Recognize any rich text plugin instance (the component's default yields to yours). */
23
- export declare const isRichTextPlugin: (plugin: Plugin) => boolean;
24
45
  /**
25
- * The rich text kinds and marks, with their words in `labels` and their
26
- * slash keywords in `keywords` (English by default).
46
+ * The rich text kinds and marks, their words and slash keywords the
47
+ * view's (`labels`, English by default).
27
48
  */
28
49
  export declare const createRichTextPlugin: (options?: RichTextPluginOptions) => Plugin;
29
- /** The rich text kinds and marks, in English. */
30
- export declare const richTextPlugin: Plugin;
31
50
  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> {
32
51
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
33
52
  $$bindings?: Bindings;