edytor 1.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +21 -39
  2. package/dist/block/block.svelte.d.ts +11 -84
  3. package/dist/block/block.svelte.js +30 -134
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +11 -9
  9. package/dist/block/inlineBlock.svelte.js +18 -21
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.js +7 -7
  13. package/dist/clipboard/insertClipboardFragment.js +5 -4
  14. package/dist/clipboard/moveText.js +16 -8
  15. package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
  16. package/dist/clipboard/serializeClipboardFragment.js +32 -28
  17. package/dist/cloudflare/DocumentRoom.d.ts +4 -17
  18. package/dist/cloudflare/DocumentRoom.js +3 -5
  19. package/dist/cloudflare/move.d.ts +1 -18
  20. package/dist/cloudflare/move.js +2 -48
  21. package/dist/cloudflare/room/admission.d.ts +1 -60
  22. package/dist/cloudflare/room/admission.js +25 -29
  23. package/dist/cloudflare/room/comments.d.ts +1 -3
  24. package/dist/cloudflare/room/comments.js +6 -6
  25. package/dist/cloudflare/room/context.d.ts +25 -82
  26. package/dist/cloudflare/room/context.js +8 -8
  27. package/dist/cloudflare/room/forged.d.ts +1 -1
  28. package/dist/cloudflare/room/forged.js +2 -12
  29. package/dist/cloudflare/room/frames.d.ts +1 -1
  30. package/dist/cloudflare/room/frames.js +1 -1
  31. package/dist/cloudflare/room/history.d.ts +1 -25
  32. package/dist/cloudflare/room/history.js +39 -54
  33. package/dist/cloudflare/room/moves.d.ts +1 -13
  34. package/dist/cloudflare/room/moves.js +33 -57
  35. package/dist/cloudflare/room/presence.d.ts +1 -11
  36. package/dist/cloudflare/room/presence.js +4 -4
  37. package/dist/cloudflare/room/purge.d.ts +1 -2
  38. package/dist/cloudflare/room/purge.js +2 -2
  39. package/dist/cloudflare/room/replicas.d.ts +1 -7
  40. package/dist/cloudflare/room/replicas.js +2 -2
  41. package/dist/cloudflare/room/storage.d.ts +3 -32
  42. package/dist/cloudflare/room/storage.js +33 -108
  43. package/dist/cloudflare/room/updates.d.ts +4 -4
  44. package/dist/cloudflare/room/updates.js +17 -24
  45. package/dist/cloudflare/room/validation.d.ts +1 -5
  46. package/dist/cloudflare/room/validation.js +16 -37
  47. package/dist/collaboration/RemoteSelections.svelte +13 -17
  48. package/dist/collaboration/awarenessSelection.d.ts +22 -1
  49. package/dist/collaboration/awarenessSelection.js +42 -0
  50. package/dist/collaboration/comments/client.d.ts +2 -2
  51. package/dist/collaboration/comments/client.js +1 -1
  52. package/dist/collaboration/history/index.d.ts +5 -5
  53. package/dist/collaboration/history/index.js +5 -5
  54. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  55. package/dist/collaboration/history/panel.svelte.js +223 -0
  56. package/dist/collaboration/providers.d.ts +12 -3
  57. package/dist/collaboration/providers.js +5 -4
  58. package/dist/components/Block.svelte +42 -56
  59. package/dist/components/Block.svelte.d.ts +7 -5
  60. package/dist/components/Content.svelte +1 -5
  61. package/dist/components/Edytor.svelte +82 -99
  62. package/dist/components/Edytor.svelte.d.ts +16 -13
  63. package/dist/components/InlineBlock.svelte +1 -1
  64. package/dist/components/Ranges.svelte +96 -0
  65. package/dist/components/Ranges.svelte.d.ts +19 -0
  66. package/dist/components/Suggestion.svelte +3 -2
  67. package/dist/components/Text.svelte +2 -5
  68. package/dist/components/Text.svelte.d.ts +1 -1
  69. package/dist/crdt/admission.d.ts +2 -9
  70. package/dist/crdt/admission.js +3 -9
  71. package/dist/crdt/attribution/attribution.d.ts +11 -72
  72. package/dist/crdt/attribution/attribution.js +5 -52
  73. package/dist/crdt/attribution/block.d.ts +0 -78
  74. package/dist/crdt/attribution/block.js +1 -144
  75. package/dist/crdt/data.d.ts +18 -13
  76. package/dist/crdt/data.js +49 -71
  77. package/dist/crdt/doc/anchors.js +4 -4
  78. package/dist/crdt/doc/content.d.ts +5 -1
  79. package/dist/crdt/doc/content.js +3 -1
  80. package/dist/crdt/doc/delete.d.ts +1 -0
  81. package/dist/crdt/doc/funnel.d.ts +0 -23
  82. package/dist/crdt/doc/funnel.js +34 -85
  83. package/dist/crdt/doc/gate.d.ts +8 -9
  84. package/dist/crdt/doc/gate.js +7 -17
  85. package/dist/crdt/doc/history.d.ts +87 -14
  86. package/dist/crdt/doc/history.js +334 -149
  87. package/dist/crdt/doc/layout.d.ts +0 -1
  88. package/dist/crdt/doc/layout.js +2 -3
  89. package/dist/crdt/doc/meta.d.ts +4 -4
  90. package/dist/crdt/doc/meta.js +10 -21
  91. package/dist/crdt/doc/moves.d.ts +4 -4
  92. package/dist/crdt/doc/moves.js +5 -5
  93. package/dist/crdt/doc/plan.d.ts +2 -0
  94. package/dist/crdt/doc/plan.js +2 -0
  95. package/dist/crdt/doc/reads.d.ts +8 -5
  96. package/dist/crdt/doc/reads.js +49 -50
  97. package/dist/crdt/doc/seed.d.ts +15 -6
  98. package/dist/crdt/doc/seed.js +27 -26
  99. package/dist/crdt/doc/split-merge.d.ts +1 -3
  100. package/dist/crdt/doc/split-merge.js +4 -5
  101. package/dist/crdt/doc/steps.d.ts +3 -7
  102. package/dist/crdt/doc/steps.js +20 -9
  103. package/dist/crdt/doc/types.d.ts +0 -10
  104. package/dist/crdt/document.d.ts +32 -115
  105. package/dist/crdt/document.js +216 -302
  106. package/dist/crdt/edytor-doc.d.ts +689 -90
  107. package/dist/crdt/edytor-doc.js +74 -149
  108. package/dist/crdt/engine-api.d.ts +15 -47
  109. package/dist/crdt/engine.d.ts +7 -17
  110. package/dist/crdt/engine.js +9 -19
  111. package/dist/crdt/flow.d.ts +9 -37
  112. package/dist/crdt/flow.js +260 -238
  113. package/dist/crdt/index.d.ts +32 -85
  114. package/dist/crdt/index.js +21 -47
  115. package/dist/crdt/operations.d.ts +24 -33
  116. package/dist/crdt/operations.js +8 -17
  117. package/dist/crdt/placement/display.d.ts +0 -2
  118. package/dist/crdt/placement/display.js +0 -15
  119. package/dist/crdt/placement/model.d.ts +160 -12
  120. package/dist/crdt/placement/model.js +413 -414
  121. package/dist/crdt/placement/rank.d.ts +1 -5
  122. package/dist/crdt/placement/rank.js +28 -38
  123. package/dist/crdt/props.d.ts +32 -0
  124. package/dist/crdt/props.js +172 -0
  125. package/dist/crdt/protocol.d.ts +4 -5
  126. package/dist/crdt/protocol.js +3 -4
  127. package/dist/crdt/protocols/awareness.d.ts +3 -7
  128. package/dist/crdt/protocols/awareness.js +17 -33
  129. package/dist/crdt/protocols/envelope.d.ts +9 -29
  130. package/dist/crdt/protocols/envelope.js +8 -25
  131. package/dist/crdt/protocols/sync.d.ts +15 -30
  132. package/dist/crdt/protocols/sync.js +27 -89
  133. package/dist/crdt/providers/bound.d.ts +3 -1
  134. package/dist/crdt/providers/bound.js +3 -1
  135. package/dist/crdt/providers/container.d.ts +11 -17
  136. package/dist/crdt/providers/container.js +39 -27
  137. package/dist/crdt/providers/index.d.ts +34 -6
  138. package/dist/crdt/providers/index.js +106 -111
  139. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  140. package/dist/crdt/providers/indexeddb.js +29 -90
  141. package/dist/crdt/providers/room.d.ts +58 -2
  142. package/dist/crdt/providers/room.js +38 -21
  143. package/dist/crdt/providers/websocket.d.ts +1 -1
  144. package/dist/crdt/providers/websocket.js +3 -4
  145. package/dist/crdt/purge.d.ts +2 -2
  146. package/dist/crdt/purge.js +69 -6
  147. package/dist/crdt/rangeDelete.d.ts +4 -42
  148. package/dist/crdt/rangeDelete.js +7 -6
  149. package/dist/crdt/restore.d.ts +21 -1
  150. package/dist/crdt/restore.js +54 -59
  151. package/dist/crdt/schema.d.ts +2 -2
  152. package/dist/crdt/schema.js +4 -5
  153. package/dist/crdt/semantics.d.ts +10 -15
  154. package/dist/crdt/semantics.js +22 -21
  155. package/dist/crdt/storage.d.ts +7 -13
  156. package/dist/crdt/storage.js +10 -24
  157. package/dist/crdt/structs.d.ts +42 -47
  158. package/dist/crdt/structs.js +76 -67
  159. package/dist/crdt/tables.d.ts +9 -0
  160. package/dist/crdt/tables.js +20 -0
  161. package/dist/crdt/text/delete-index.d.ts +0 -13
  162. package/dist/crdt/text/delete-index.js +7 -14
  163. package/dist/crdt/text/deletes.d.ts +9 -22
  164. package/dist/crdt/text/deletes.js +11 -74
  165. package/dist/crdt/text/index/cache.js +3 -3
  166. package/dist/crdt/text/index/fold.d.ts +1 -2
  167. package/dist/crdt/text/index/fold.js +15 -10
  168. package/dist/crdt/text/index/layout.d.ts +0 -10
  169. package/dist/crdt/text/index/layout.js +6 -20
  170. package/dist/crdt/text/index/records.js +2 -1
  171. package/dist/crdt/text/index/report.js +5 -6
  172. package/dist/crdt/text/index/shared.d.ts +11 -4
  173. package/dist/crdt/text/index/shared.js +8 -7
  174. package/dist/crdt/text/index/state.d.ts +3 -33
  175. package/dist/crdt/text/index/state.js +2 -4
  176. package/dist/crdt/text/model.d.ts +82 -2
  177. package/dist/crdt/text/model.js +344 -354
  178. package/dist/crdt/text/rows.d.ts +0 -2
  179. package/dist/crdt/text/rows.js +0 -11
  180. package/dist/crdt/text/runs.d.ts +6 -3
  181. package/dist/crdt/text/runs.js +132 -137
  182. package/dist/crdt/text/streams.d.ts +1 -1
  183. package/dist/crdt/text/streams.js +1 -1
  184. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  185. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  186. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  187. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  188. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  189. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  190. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  191. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  192. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  193. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  194. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  195. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  196. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  197. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  198. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  199. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  200. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  201. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  202. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  203. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  204. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  205. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  206. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  207. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  208. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  209. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  211. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  212. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  213. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  214. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  215. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  216. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  217. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  218. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  219. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  220. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  221. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  222. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  223. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  224. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  225. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  226. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  227. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  228. package/dist/dnd/autoScroll.js +1 -2
  229. package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
  230. package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
  231. package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
  232. package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
  233. package/dist/dnd/placement.d.ts +200 -0
  234. package/dist/dnd/placement.js +426 -0
  235. package/dist/dnd/pragmatic.d.ts +4 -22
  236. package/dist/dnd/pragmatic.js +7 -26
  237. package/dist/dnd/track.d.ts +14 -0
  238. package/dist/dnd/track.js +55 -0
  239. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  240. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  241. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  242. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  243. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  254. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  293. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  294. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  295. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  296. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  297. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  298. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  299. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  300. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  301. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  302. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  303. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  304. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  305. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  306. package/dist/edytor.svelte.d.ts +46 -63
  307. package/dist/edytor.svelte.js +126 -181
  308. package/dist/events/beforeInputCommands.d.ts +6 -11
  309. package/dist/events/beforeInputCommands.js +189 -181
  310. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  311. package/dist/events/beforeInputDeleteCommands.js +153 -204
  312. package/dist/events/domTextOffset.d.ts +9 -9
  313. package/dist/events/domTextOffset.js +20 -48
  314. package/dist/events/events.utils.d.ts +0 -2
  315. package/dist/events/events.utils.js +0 -4
  316. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  317. package/dist/events/nativeInteractiveControl.js +28 -56
  318. package/dist/events/onBeforeInput.d.ts +6 -1
  319. package/dist/events/onBeforeInput.js +207 -331
  320. package/dist/events/onCopy.js +1 -5
  321. package/dist/events/onDrop.d.ts +7 -1
  322. package/dist/events/onDrop.js +64 -78
  323. package/dist/events/onFocus.d.ts +9 -4
  324. package/dist/events/onFocus.js +45 -67
  325. package/dist/events/onInput.d.ts +8 -4
  326. package/dist/events/onInput.js +34 -147
  327. package/dist/events/onKeyDown.js +55 -122
  328. package/dist/events/onPaste.d.ts +14 -1
  329. package/dist/events/onPaste.js +51 -76
  330. package/dist/index.d.ts +11 -15
  331. package/dist/index.js +3 -3
  332. package/dist/kinds.d.ts +4 -6
  333. package/dist/kinds.js +28 -27
  334. package/dist/labels.d.ts +83 -320
  335. package/dist/labels.js +181 -408
  336. package/dist/plugins/Chrome.svelte +29 -0
  337. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  338. package/dist/plugins/Control.svelte +23 -0
  339. package/dist/plugins/Control.svelte.d.ts +30 -0
  340. package/dist/plugins/anchored.svelte.d.ts +47 -0
  341. package/dist/plugins/anchored.svelte.js +73 -0
  342. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  343. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  344. package/dist/plugins/bands.svelte.d.ts +57 -0
  345. package/dist/plugins/bands.svelte.js +95 -0
  346. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  347. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  348. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
  349. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
  350. package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
  351. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  352. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  353. package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
  354. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  355. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  356. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  357. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  358. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  359. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  360. package/dist/plugins/brand.d.ts +8 -0
  361. package/dist/plugins/brand.js +8 -0
  362. package/dist/plugins/chrome.d.ts +45 -38
  363. package/dist/plugins/chrome.js +59 -36
  364. package/dist/plugins/code/CodeHeader.svelte +8 -38
  365. package/dist/plugins/code/CodePlugin.svelte +53 -56
  366. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  367. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  368. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  369. package/dist/plugins/code/code.css +5 -117
  370. package/dist/plugins/code/header.svelte.d.ts +2 -11
  371. package/dist/plugins/code/header.svelte.js +11 -38
  372. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  373. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  374. package/dist/plugins/code/languages.d.ts +9 -22
  375. package/dist/plugins/code/languages.js +39 -128
  376. package/dist/plugins/columns/ColumnResize.svelte +16 -27
  377. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  378. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  379. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  380. package/dist/plugins/columns/columns.css +7 -26
  381. package/dist/plugins/columns/gaps.d.ts +7 -5
  382. package/dist/plugins/columns/gaps.js +11 -6
  383. package/dist/plugins/columns/resize.svelte.d.ts +17 -54
  384. package/dist/plugins/columns/resize.svelte.js +80 -173
  385. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  386. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  387. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  388. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  389. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  390. package/dist/plugins/comments/commentsPlugin.js +12 -10
  391. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  392. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  393. package/dist/plugins/equation/EquationPlugin.svelte +109 -172
  394. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
  395. package/dist/plugins/equation/EquationView.svelte +20 -11
  396. package/dist/plugins/equation/equation.css +7 -0
  397. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  398. package/dist/plugins/equation/equation.svelte.js +20 -94
  399. package/dist/plugins/equation/katex.js +6 -9
  400. package/dist/plugins/fileDrop.d.ts +28 -0
  401. package/dist/plugins/fileDrop.js +116 -0
  402. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  403. package/dist/plugins/find/FindController.svelte.js +34 -55
  404. package/dist/plugins/find/findPlugin.d.ts +4 -8
  405. package/dist/plugins/find/findPlugin.js +29 -9
  406. package/dist/plugins/image/ImageChrome.svelte +6 -167
  407. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  408. package/dist/plugins/image/ImagePlugin.svelte +71 -151
  409. package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
  410. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  411. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  412. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  413. package/dist/plugins/image/controls.svelte.js +43 -212
  414. package/dist/plugins/image/image.css +17 -0
  415. package/dist/plugins/image/image.d.ts +0 -5
  416. package/dist/plugins/image/image.js +0 -3
  417. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  418. package/dist/plugins/image/toolbar.svelte.js +145 -0
  419. package/dist/plugins/index.d.ts +30 -26
  420. package/dist/plugins/index.js +28 -22
  421. package/dist/plugins/list.svelte.d.ts +128 -0
  422. package/dist/plugins/list.svelte.js +217 -0
  423. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  424. package/dist/plugins/markdownShortcuts.js +10 -9
  425. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  426. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  427. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  428. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  429. package/dist/plugins/marquee/marquee.js +4 -21
  430. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  431. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  432. package/dist/plugins/media/AudioPlugin.svelte +13 -88
  433. package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
  434. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  435. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  436. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  437. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  438. package/dist/plugins/media/EmptySlot.svelte +44 -0
  439. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  440. package/dist/plugins/media/FilePlugin.svelte +45 -113
  441. package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
  442. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  443. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  444. package/dist/plugins/media/SourceBlock.svelte +200 -0
  445. package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
  446. package/dist/plugins/media/UploadPreview.svelte +32 -0
  447. package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
  448. package/dist/plugins/media/VideoPlugin.svelte +14 -97
  449. package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
  450. package/dist/plugins/media/empty.svelte.d.ts +47 -46
  451. package/dist/plugins/media/empty.svelte.js +67 -60
  452. package/dist/plugins/media/media.d.ts +97 -44
  453. package/dist/plugins/media/media.js +77 -99
  454. package/dist/plugins/media/upload.css +23 -0
  455. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  456. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  457. package/dist/plugins/mention/MentionPlugin.svelte +84 -126
  458. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
  459. package/dist/plugins/mention/mention.css +6 -0
  460. package/dist/plugins/page/PageLink.svelte +54 -38
  461. package/dist/plugins/page/PagePlugin.svelte +20 -18
  462. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  463. package/dist/plugins/page/page.d.ts +35 -9
  464. package/dist/plugins/page/page.js +3 -4
  465. package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
  466. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
  467. package/dist/plugins/pageLink/pageLink.css +6 -0
  468. package/dist/plugins/planned.d.ts +10 -0
  469. package/dist/plugins/planned.js +12 -0
  470. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  471. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  472. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  473. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  474. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  475. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  476. package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
  477. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
  478. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  479. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  480. package/dist/plugins/richtext/body.js +2 -2
  481. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  482. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  483. package/dist/plugins/richtext/callouts.d.ts +15 -0
  484. package/dist/plugins/richtext/callouts.js +23 -0
  485. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  486. package/dist/plugins/richtext/controls.svelte.js +126 -0
  487. package/dist/plugins/richtext/richTextOperations.js +37 -28
  488. package/dist/plugins/richtext/richtext.css +6 -0
  489. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  490. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  491. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  492. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  493. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  494. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  495. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  496. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  497. package/dist/plugins/table/TableChrome.svelte +40 -124
  498. package/dist/plugins/table/TablePlugin.svelte +106 -168
  499. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  500. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  501. package/dist/plugins/table/chrome.svelte.js +340 -589
  502. package/dist/plugins/table/ops.d.ts +47 -0
  503. package/dist/plugins/table/ops.js +233 -0
  504. package/dist/plugins/table/table.css +16 -152
  505. package/dist/plugins/table/table.d.ts +15 -14
  506. package/dist/plugins/table/table.js +22 -16
  507. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  508. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  509. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  510. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  511. package/dist/plugins/toc/toc.d.ts +41 -10
  512. package/dist/plugins/toc/toc.js +2 -3
  513. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  514. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  515. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  516. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  517. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  518. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  519. package/dist/plugins/triggers/place.d.ts +0 -9
  520. package/dist/plugins/triggers/place.js +1 -17
  521. package/dist/plugins/triggers/triggers.d.ts +31 -9
  522. package/dist/plugins/triggers/triggers.js +82 -62
  523. package/dist/plugins/uploads.svelte.d.ts +55 -24
  524. package/dist/plugins/uploads.svelte.js +123 -50
  525. package/dist/plugins.d.ts +187 -66
  526. package/dist/selection/domSelection.d.ts +13 -4
  527. package/dist/selection/domSelection.js +110 -183
  528. package/dist/selection/pointer.svelte.d.ts +8 -10
  529. package/dist/selection/pointer.svelte.js +32 -73
  530. package/dist/selection/replaceSelection.d.ts +21 -22
  531. package/dist/selection/replaceSelection.js +60 -69
  532. package/dist/selection/selection.svelte.d.ts +5 -73
  533. package/dist/selection/selection.svelte.js +224 -542
  534. package/dist/selection/selection.utils.d.ts +34 -11
  535. package/dist/selection/selection.utils.js +128 -247
  536. package/dist/selection/visibility.d.ts +3 -8
  537. package/dist/selection/visibility.js +7 -5
  538. package/dist/session/announcer.svelte.d.ts +2 -1
  539. package/dist/session/announcer.svelte.js +7 -3
  540. package/dist/session/attempt.d.ts +43 -39
  541. package/dist/session/attempt.js +62 -55
  542. package/dist/session/bindings.js +117 -145
  543. package/dist/session/commands.d.ts +47 -22
  544. package/dist/session/commands.js +208 -208
  545. package/dist/session/composition.svelte.d.ts +2 -4
  546. package/dist/session/composition.svelte.js +55 -65
  547. package/dist/session/editing/text.d.ts +6 -0
  548. package/dist/session/editing/text.js +17 -3
  549. package/dist/session/handles.d.ts +10 -1
  550. package/dist/session/handles.js +28 -0
  551. package/dist/session/history.d.ts +0 -4
  552. package/dist/session/history.js +16 -21
  553. package/dist/session/inputRules.d.ts +6 -3
  554. package/dist/session/inputRules.js +78 -83
  555. package/dist/session/keymap.d.ts +1 -6
  556. package/dist/session/keymap.js +17 -20
  557. package/dist/session/moves.d.ts +43 -10
  558. package/dist/session/moves.js +101 -59
  559. package/dist/session/navigation.d.ts +10 -2
  560. package/dist/session/navigation.js +140 -172
  561. package/dist/session/ports.d.ts +2 -7
  562. package/dist/session/props.d.ts +25 -25
  563. package/dist/session/props.js +62 -159
  564. package/dist/session/selection.d.ts +4 -3
  565. package/dist/session/selection.js +5 -0
  566. package/dist/session/suggestions.svelte.d.ts +1 -1
  567. package/dist/session/suggestions.svelte.js +42 -47
  568. package/dist/session/uploads.d.ts +29 -0
  569. package/dist/session/uploads.js +10 -0
  570. package/dist/session/virtual.d.ts +3 -3
  571. package/dist/session/virtual.js +18 -40
  572. package/dist/surface/attributes.d.ts +1 -0
  573. package/dist/surface/attributes.js +3 -26
  574. package/dist/surface/cells.d.ts +5 -0
  575. package/dist/surface/cells.js +5 -0
  576. package/dist/surface/lines.d.ts +2 -2
  577. package/dist/surface/lines.js +1 -1
  578. package/dist/surface/observer.svelte.d.ts +3 -20
  579. package/dist/surface/observer.svelte.js +52 -72
  580. package/dist/surface/overlay.d.ts +41 -3
  581. package/dist/surface/overlay.js +92 -37
  582. package/dist/surface/pin.svelte.d.ts +5 -0
  583. package/dist/surface/pin.svelte.js +5 -0
  584. package/dist/surface/projector.svelte.d.ts +4 -6
  585. package/dist/surface/projector.svelte.js +42 -69
  586. package/dist/text/text.svelte.d.ts +14 -40
  587. package/dist/text/text.svelte.js +35 -51
  588. package/dist/text/wordBoundary.d.ts +19 -0
  589. package/dist/text/wordBoundary.js +29 -44
  590. package/dist/themes/notion.css +272 -106
  591. package/dist/utils/json.d.ts +3 -1
  592. package/dist/utils/json.js +52 -51
  593. package/dist/utils/listen.d.ts +8 -0
  594. package/dist/utils/listen.js +19 -0
  595. package/package.json +4 -5
  596. package/dist/block/block.utils.d.ts +0 -340
  597. package/dist/block/block.utils.js +0 -356
  598. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  599. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  600. package/dist/collaboration/history/panel.d.ts +0 -61
  601. package/dist/collaboration/history/panel.js +0 -3
  602. package/dist/components/SuggestionRanges.svelte +0 -58
  603. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  604. package/dist/crdt/doc/table.d.ts +0 -21
  605. package/dist/crdt/doc/table.js +0 -288
  606. package/dist/crdt/migration/generation.d.ts +0 -58
  607. package/dist/crdt/migration/generation.js +0 -70
  608. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  609. package/dist/crdt/migration/legacy-schema.js +0 -151
  610. package/dist/crdt/migration/migrate.d.ts +0 -56
  611. package/dist/crdt/migration/migrate.js +0 -227
  612. package/dist/crdt/nodes.d.ts +0 -121
  613. package/dist/crdt/nodes.js +0 -56
  614. package/dist/crdt/text/index/checks.d.ts +0 -15
  615. package/dist/crdt/text/index/checks.js +0 -156
  616. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  617. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  618. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  619. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  620. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  621. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  622. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  623. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  624. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  625. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  626. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  627. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  628. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  629. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  630. package/dist/edytor.utils.d.ts +0 -50
  631. package/dist/edytor.utils.js +0 -67
  632. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  633. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  634. package/dist/plugins/find/FindBar.svelte +0 -170
  635. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  636. package/dist/plugins/find/FindHighlights.svelte +0 -75
  637. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  638. package/dist/plugins/icons.d.ts +0 -2
  639. package/dist/plugins/icons.js +0 -63
  640. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  641. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  642. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  643. package/dist/plugins/image/empty.svelte.js +0 -83
  644. package/dist/plugins/keepInView.d.ts +0 -4
  645. package/dist/plugins/keepInView.js +0 -6
  646. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  647. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  648. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  649. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  650. package/dist/plugins/richtext/labels.d.ts +0 -9
  651. package/dist/plugins/richtext/labels.js +0 -7
  652. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  653. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  654. package/dist/plugins/table/dragPreview.d.ts +0 -29
  655. package/dist/plugins/table/dragPreview.js +0 -103
  656. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  657. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  658. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  659. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  660. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  661. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  662. package/dist/text/deltas.d.ts +0 -22
  663. package/dist/text/deltas.js +0 -46
  664. package/dist/text/text.utils.d.ts +0 -45
  665. package/dist/text/text.utils.js +0 -199
  666. /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
  667. /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
@@ -1,12 +1,12 @@
1
1
  <script module lang="ts">
2
+ import './richtext.css';
2
3
  import type { Plugin, BlockSnippetPayload, KindPreset, PlaceholderView } from '../../plugins.js';
3
- import type { Block } from '../../block/block.svelte.js';
4
+ import { branded } from '../brand.js';
4
5
  import type { Edytor } from '../../edytor.svelte.js';
5
6
  import { presetId } from '../../kinds.js';
6
7
  import type { Text } from '../../text/text.svelte.js';
7
8
  import type { SerializableContent } from '../../utils/json.js';
8
9
  import type { HotKey } from '../../session/keymap.js';
9
- import type { Snippet } from 'svelte';
10
10
  import {
11
11
  openLink,
12
12
  pastedLink,
@@ -20,24 +20,34 @@
20
20
  import { firstUriListEntry } from '../../events/dataTransferPayload.js';
21
21
  import { flipToggles, shownSelectionBlocks } from '../../selection/replaceSelection.js';
22
22
  import { mediaKinds, richTextKinds, richTextMarks } from '../../crdt/semantics.js';
23
- import { keywordsOf, labelsWith, type PartialLabels, type RichTextLabels } from '../../labels.js';
24
- import { richTextLabels } from './labels.js';
25
- import { onPress } from '../../events/onFocus.js';
23
+ import { richTextEnglish, keywordsOf, labelsOf, type RichTextLabels } from '../../labels.js';
26
24
  import TodoCheckbox from './TodoCheckbox.svelte';
27
25
  import EmptyBody from './EmptyBody.svelte';
28
26
  import CalloutIcon from './CalloutIcon.svelte';
29
- import CalloutIconMenu from './CalloutIconMenu.svelte';
27
+ import RichTextControl from './RichTextControl.svelte';
30
28
  import {
31
- CALLOUT_ICONS,
32
- CalloutIconPicker,
33
29
  DEFAULT_CALLOUT_ICON,
34
30
  calloutHtml,
35
- calloutIconViews,
31
+ calloutIcons,
32
+ calloutPickers,
36
33
  iconOf
37
- } from './calloutIcons.svelte.js';
34
+ } from './callouts.js';
35
+ import { listen } from '../../utils/listen.js';
36
+ import { onLastLine } from '../../session/navigation.js';
37
+ import { bodyShows } from '../../selection/visibility.js';
38
+ import { openBody } from './body.js';
39
+ import type { Snippet } from 'svelte';
40
+ import {
41
+ richTextControls,
42
+ toggleTodo,
43
+ type CalloutIconPayload,
44
+ type EmptyBodyPayload,
45
+ type TodoCheckboxPayload
46
+ } from './controls.svelte.js';
47
+
48
+ export type { CalloutIconPayload, EmptyBodyPayload, TodoCheckboxPayload };
38
49
 
39
- export { richTextOperations, CALLOUT_ICONS, CalloutIconPicker };
40
- export type { CalloutIconOption } from './calloutIcons.svelte.js';
50
+ export { richTextOperations };
41
51
 
42
52
  const nativeFormatMarks = {
43
53
  formatBold: 'bold',
@@ -57,7 +67,7 @@
57
67
  /** A native disclosure: the browser owns `open` (declared view state). */
58
68
  const disclosure = { element: 'details', viewState: ['open'] };
59
69
  /** The kinds drawn as a disclosure: a toggle this view creates opens (`body.open`). */
60
- const DISCLOSURES = new Set(['toggle', 'toggle-heading', 'details']);
70
+ const DISCLOSURES = new Set(['toggle', 'toggle-heading']);
61
71
  /**
62
72
  * A list's elements without list semantics (`role="none"`): a list's items
63
73
  * are sibling blocks, never the only children of one `ul` or `ol`, so an
@@ -106,123 +116,108 @@
106
116
  undefined;
107
117
 
108
118
  /**
109
- * Notion's placeholders in `labels` (English by default): headings,
110
- * lists, to-dos, toggles and quotes name their kind while empty; a
111
- * paragraph invites a command only while focused.
119
+ * The kinds whose empty text names them, by placeholder (a callout's
120
+ * title, as a toggle's, names itself).
112
121
  */
113
- export const createRichTextPlaceholder = (labels?: PartialLabels<'richText'>) => {
114
- const { placeholders } = labelsWith('richText', labels);
115
- return ({ type, data, focused }: PlaceholderView): string | null => {
116
- if (type === 'heading')
117
- return placeholders.heading(Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3);
118
- if (type === 'toggle-heading')
119
- return placeholders.toggleHeading(Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3);
120
- if (type === 'bulleted-list-item' || type === 'numbered-list-item') return placeholders.list;
121
- if (type === 'todo-item') return placeholders.todo;
122
- if (type === 'toggle') return placeholders.toggle;
123
- if (type === 'quote') return placeholders.quote;
124
- // A callout's title, as a toggle's, names itself while empty.
125
- if (type === 'callout') return placeholders.callout;
126
- if (type === 'image' || Object.hasOwn(mediaKinds, type))
127
- return focused ? placeholders.caption : null;
128
- // Code shows nothing in an empty line (Notion).
129
- if (type === 'codeLine') return null;
130
- return focused ? placeholders.empty : null;
131
- };
122
+ const NAMED: Record<string, 'list' | 'todo' | 'toggle' | 'quote' | 'callout'> = {
123
+ 'bulleted-list-item': 'list',
124
+ 'numbered-list-item': 'list',
125
+ 'todo-item': 'todo',
126
+ toggle: 'toggle',
127
+ quote: 'quote',
128
+ callout: 'callout'
132
129
  };
133
130
 
134
- /** Notion's placeholders, in English. */
135
- export const richTextPlaceholder = createRichTextPlaceholder();
131
+ /**
132
+ * Notion's placeholders, in the view's `richText` labels (English by
133
+ * default): headings, lists, to-dos, toggles and quotes name their kind
134
+ * while empty; a paragraph invites a command only while focused.
135
+ */
136
+ export const richTextPlaceholder = (
137
+ { type, data, focused }: PlaceholderView,
138
+ edytor?: Edytor
139
+ ): string | null => {
140
+ const { placeholders } = labelsOf(edytor, 'richText', richTextEnglish);
141
+ if (type === 'heading' || type === 'toggle-heading')
142
+ return placeholders[type === 'heading' ? 'heading' : 'toggleHeading'](
143
+ Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3
144
+ );
145
+ if (Object.hasOwn(NAMED, type)) return placeholders[NAMED[type]!];
146
+ // Code shows nothing in an empty line (Notion).
147
+ if (type === 'codeLine' || !focused) return null;
148
+ return type === 'image' || Object.hasOwn(mediaKinds, type)
149
+ ? placeholders.caption
150
+ : placeholders.empty;
151
+ };
136
152
 
137
153
  export type RichTextPluginOptions = {
138
- /** The kinds', marks' and checkbox's words (English by default). */
139
- labels?: PartialLabels<'richText'>;
140
- /**
141
- * The slash menu's keywords of a kind, by command id (`block.heading1`):
142
- * they replace that preset's own (list the English ones to keep them).
143
- */
144
- keywords?: Partial<Record<string, string[]>>;
145
- /** Callouts' icons. */
154
+ /** Callouts' icons (their picker is `createCalloutIconsPlugin`'s). */
146
155
  callout?: {
147
156
  /**
148
157
  * A new callout's icon, and the one a callout whose `data.icon` is
149
158
  * unset shows (`💡` by default).
150
159
  */
151
160
  icon?: string;
152
- /** The icon picker's choices (`CALLOUT_ICONS` by default). */
153
- icons?: readonly string[];
154
- /**
155
- * Replace the icon picker's markup: it renders while the picker is
156
- * open, placed under the icon. Put `{@attach picker.keys}` and
157
- * `{@attach picker.popup}` on its element and spread
158
- * `picker.option(i)` on each row (`picker.icons.length`: Remove icon).
159
- */
160
- picker?: Snippet<[CalloutIconPicker]>;
161
161
  };
162
+ /**
163
+ * A to-do's checkbox (default: a native `input type="checkbox"`). Spread
164
+ * `checkbox.attributes` on the control, an `input` (with
165
+ * `checked={checkbox.checked}`) or a `button`: its click checks the to-do
166
+ * through the document.
167
+ */
168
+ checkbox?: Snippet<[TodoCheckboxPayload]>;
169
+ /**
170
+ * A callout's icon (default: a `button` showing it, or the icon alone
171
+ * where it cannot be picked). Spread `icon.attributes` on its element:
172
+ * a click opens the view's picker (`createCalloutIconsPlugin`), which
173
+ * opens under it.
174
+ */
175
+ calloutIcon?: Snippet<[CalloutIconPayload]>;
176
+ /**
177
+ * The hint an open toggle's or a callout's empty body shows (default: a
178
+ * `div` with the view's `richText.emptyBody` words). Spread
179
+ * `hint.attributes` on it: a click starts the body, a dragged block
180
+ * drops inside.
181
+ */
182
+ emptyBody?: Snippet<[EmptyBodyPayload]>;
162
183
  };
163
184
 
164
- const richTextPlugins = new WeakSet<Plugin>();
165
-
166
- /** Recognize any rich text plugin instance (the component's default yields to yours). */
167
- export const isRichTextPlugin = (plugin: Plugin) => richTextPlugins.has(plugin);
168
-
169
- // One key patched: a peer's concurrent edit of another key is kept.
170
- const toggleTodo = (block: Block) => (block.data.checked = !block.data.checked);
171
-
172
- /** Notion's "turn into" chords: Mod+Alt+0 text … 8 code (`block.<type>` command ids). */
173
- const TURN_INTO: Record<string, string> = {
174
- 'mod+alt+0': 'block.paragraph',
175
- 'mod+alt+1': 'block.heading1',
176
- 'mod+alt+2': 'block.heading2',
177
- 'mod+alt+3': 'block.heading3',
178
- 'mod+alt+4': 'block.todo-item',
179
- 'mod+alt+5': 'block.bulleted-list-item',
180
- 'mod+alt+6': 'block.numbered-list-item',
181
- 'mod+alt+7': 'block.toggle',
182
- 'mod+alt+8': 'block.code'
183
- };
185
+ /** Notion's "turn into" chords: Mod+Alt+0 text … 8 code (`block.<type>` command ids, by digit). */
186
+ const TURN_INTO = [
187
+ 'paragraph',
188
+ 'heading1',
189
+ 'heading2',
190
+ 'heading3',
191
+ 'todo-item',
192
+ 'bulleted-list-item',
193
+ 'numbered-list-item',
194
+ 'toggle',
195
+ 'code'
196
+ ];
184
197
 
185
198
  /**
186
- * The rich text kinds and marks, with their words in `labels` and their
187
- * slash keywords in `keywords` (English by default).
199
+ * The rich text kinds and marks, their words and slash keywords the
200
+ * view's (`labels`, English by default).
188
201
  */
189
202
  export const createRichTextPlugin = (options: RichTextPluginOptions = {}): Plugin => {
190
- const labels = labelsWith('richText', options.labels);
191
203
  const plugin: Plugin = (edytor) => {
192
- richTextLabels.claim(edytor, labels);
193
- // The view's callout icons: the first rich text plugin listed claims them.
194
- const picker = calloutIconViews.has(edytor)
195
- ? undefined
196
- : new CalloutIconPicker(
197
- edytor,
198
- options.callout?.icon ?? DEFAULT_CALLOUT_ICON,
199
- options.callout?.icons ?? CALLOUT_ICONS,
200
- labels
201
- );
202
- if (picker) calloutIconViews.set(edytor, picker);
203
- return richText(edytor, labels, options, picker);
204
+ const labels = labelsOf(edytor, 'richText', richTextEnglish);
205
+ // The view's default callout icon and its controls' markup: the first rich text plugin listed sets them.
206
+ if (edytor && !calloutIcons.has(edytor)) {
207
+ calloutIcons.set(edytor, options.callout?.icon ?? DEFAULT_CALLOUT_ICON);
208
+ const { checkbox, calloutIcon, emptyBody } = options;
209
+ richTextControls.set(edytor, { checkbox, calloutIcon, emptyBody });
210
+ }
211
+ return richText(edytor, labels, options);
204
212
  };
205
- richTextPlugins.add(plugin);
206
- return plugin;
207
- };
208
-
209
- /** A preset whose slash keywords `keywords` may replace, by its command id. */
210
- const preset = (
211
- id: string,
212
- row: KindPreset,
213
- keywords: RichTextPluginOptions['keywords']
214
- ): KindPreset => {
215
- const own = keywordsOf(id, row.keywords, keywords);
216
- return own ? { ...row, keywords: own } : row;
213
+ return branded('richText', plugin);
217
214
  };
218
215
 
219
- /** The rich text records of `edytor`, in `labels`, its presets' keywords replaced by `keywords`. */
216
+ /** The rich text records of `edytor`, in `labels`, its presets' keywords the view's. */
220
217
  const richText = (
221
218
  edytor: Edytor,
222
219
  labels: RichTextLabels,
223
- { keywords, callout: calloutOptions }: RichTextPluginOptions,
224
- /** The view's callout icon picker, when this plugin claimed it (the first listed). */
225
- picker: CalloutIconPicker | undefined
220
+ { callout: calloutOptions, checkbox, calloutIcon, emptyBody }: RichTextPluginOptions
226
221
  ): ReturnType<Plugin> => {
227
222
  const { kinds, marks: words } = labels;
228
223
  /** A new callout's icon. */
@@ -232,7 +227,10 @@
232
227
  /** The disclosures this view created, opened once drawn (`onBlockAttached`). */
233
228
  const opening = new Set<string>();
234
229
  const presets = (type: string, rows: KindPreset[]) =>
235
- rows.map((row, index) => preset(presetId(type, index, rows.length), row, keywords));
230
+ rows.map((row, index) => {
231
+ const own = keywordsOf(edytor, presetId(type, index, rows.length), row.keywords);
232
+ return own ? { ...row, keywords: own } : row;
233
+ });
236
234
  const operations = richTextOperations(edytor);
237
235
  /** The space an autolink types itself: its own insertion is not looked at again. */
238
236
  let autolinking = false;
@@ -268,6 +266,16 @@
268
266
  'mod+shift+s': setMarkAndSelect('strike'),
269
267
  'mod+shift+x': setMarkAndSelect('strike'),
270
268
  'mod+shift+h': setMarkAndSelect('color', 'red'),
269
+ // ArrowDown on the last line of a header whose body shows and is empty
270
+ // (an open toggle, a callout) goes into that body, as its hint's click
271
+ // does (`body.down`): one command, one undo step. Elsewhere the key
272
+ // moves as usual.
273
+ arrowdown: ({ prevent }) => {
274
+ const header = onLastLine(edytor);
275
+ if (!header || header.hasChildren || !bodyShows(header)) return;
276
+ if (!edytor.dispatcher.permits()) return;
277
+ prevent(() => void openBody(header));
278
+ },
271
279
  // Mod+Enter checks or unchecks each shown to-do it is in (Notion): the
272
280
  // selected blocks', else the caret's; the toggles among them open or
273
281
  // close as with the built-in binding, in the same key.
@@ -281,9 +289,10 @@
281
289
  });
282
290
  },
283
291
  ...Object.fromEntries(
284
- Object.entries(TURN_INTO).map(([chord, id]): [string, HotKey] => [
285
- chord,
292
+ TURN_INTO.map((type, digit): [string, HotKey] => [
293
+ `mod+alt+${digit}`,
286
294
  ({ prevent }) => {
295
+ const id = `block.${type}`;
287
296
  if (edytor.commands.has(id)) prevent(() => void edytor.runCommand(id));
288
297
  }
289
298
  ])
@@ -297,7 +306,8 @@
297
306
  if (!linkable()) return;
298
307
  const href = pastedLink(e.clipboardData?.getData('text/plain'));
299
308
  if (!href) return;
300
- const { isCollapsed, startText: text, yStart } = edytor.selection.state;
309
+ const { startText: text, yStart } = edytor.selection.textRange();
310
+ const { isCollapsed } = edytor.selection.projection;
301
311
  if (!isCollapsed)
302
312
  return prevent(() =>
303
313
  edytor.dispatcher.run('insertFromPaste', () => operations.setLinkAtRange({ href }))
@@ -306,7 +316,7 @@
306
316
  prevent(() => {
307
317
  const end = yStart + href.length;
308
318
  edytor.dispatcher.run('insertFromPaste', () => {
309
- text.insertText({ value: href, start: yStart, end: yStart });
319
+ edytor.insertText(text.parent.id, text.segStart + yStart, href);
310
320
  edytor.dispatcher.caret(text, end);
311
321
  });
312
322
  if (text.stringContent.slice(yStart, end) === href)
@@ -318,10 +328,11 @@
318
328
  // (`link.autolink.typed`, Notion).
319
329
  onBeforeOperation: (change) => {
320
330
  // A block without children retyped into a disclosure from another kind (the
321
- // slash menu, a markdown shortcut, Turn into): the toggle it becomes opens on
322
- // its empty body (`body.open`). One with children keeps them out of sight.
323
- if (change.operation === 'setBlock') {
324
- const type = change.payload.value.type ?? change.block.type;
331
+ // slash menu, a markdown shortcut, Turn into: their planned `setBlockType`):
332
+ // the toggle it becomes opens on its empty body (`body.open`). One with
333
+ // children keeps them out of sight.
334
+ if (change.operation === 'setBlockType') {
335
+ const [, type] = change.payload;
325
336
  const opens =
326
337
  DISCLOSURES.has(type) &&
327
338
  !DISCLOSURES.has(change.block.type) &&
@@ -330,9 +341,11 @@
330
341
  }
331
342
  if (autolinking || change.operation !== 'insertText') return;
332
343
  const { payload, text, prevent } = change;
333
- if (payload.value !== ' ' || !linkable()) return;
334
- const { startText, yStart, isCollapsed } = edytor.selection.state;
335
- if (!isCollapsed || text !== startText || (payload.start ?? yStart) !== yStart) return;
344
+ if (payload[2] !== ' ' || !linkable()) return;
345
+ const { startText, yStart } = edytor.selection.textRange();
346
+ const { isCollapsed } = edytor.selection.projection;
347
+ if (!isCollapsed || !text || text !== startText) return;
348
+ if (payload[1] !== text.segStart + yStart) return;
336
349
  const found = typedLink(text.stringContent.slice(0, yStart));
337
350
  const end = found && found.start + found.href.length;
338
351
  if (!found || !end) return;
@@ -343,7 +356,7 @@
343
356
  prevent(() => {
344
357
  autolinking = true;
345
358
  try {
346
- text.insertText(payload);
359
+ edytor.insertText(...payload);
347
360
  } finally {
348
361
  autolinking = false;
349
362
  }
@@ -352,7 +365,7 @@
352
365
  });
353
366
  },
354
367
  onAfterOperation: (change) => {
355
- if (change.operation !== 'setBlock' || retyping !== change.block.id) return;
368
+ if (retyping !== change.block.id) return;
356
369
  retyping = null;
357
370
  if (DISCLOSURES.has(change.block.type)) opening.add(change.block.id);
358
371
  },
@@ -364,7 +377,7 @@
364
377
  },
365
378
  // Mod+click on a link opens it in a new tab (`link.mod-click`): a plain
366
379
  // click places the caret, as in Notion. Mod is read as the keymap reads
367
- // it: Meta, or Ctrl off a Mac. The callout icon picker is in the overlay.
380
+ // it: Meta, or Ctrl off a Mac.
368
381
  onEdytorAttached: ({ node }) => {
369
382
  const click = (event: MouseEvent) => {
370
383
  if (!event.metaKey && !(event.ctrlKey && !edytor.keymap.isMac)) return;
@@ -375,25 +388,7 @@
375
388
  event.preventDefault();
376
389
  openLink(href, node.ownerDocument.defaultView);
377
390
  };
378
- node.addEventListener('click', click);
379
- // A press outside the picker closes it (WebKit's lone `mousedown` too).
380
- const offPress = picker && onPress(edytor, node.ownerDocument, picker.pressed, true);
381
- const unmount =
382
- picker &&
383
- edytor.overlay.mount(
384
- CalloutIconMenu,
385
- { picker, menu: calloutOptions?.picker },
386
- 'edytor-callout-icons-host',
387
- // With the menus: above the handles and the image chrome.
388
- 70,
389
- picker.measure
390
- );
391
- return () => {
392
- node.removeEventListener('click', click);
393
- offPress?.();
394
- unmount?.();
395
- picker?.close(false);
396
- };
391
+ return listen(node, 'click', click);
397
392
  },
398
393
  onBeforeInput: ({ e, prevent }) => {
399
394
  const { inputType, data } = e;
@@ -545,7 +540,8 @@
545
540
  },
546
541
  'todo-item': {
547
542
  continues: true,
548
- snippet: todoItem,
543
+ // The app's control markup, if any, through its own snippet: the default costs no branch.
544
+ snippet: checkbox ? todoItemOwn : todoItem,
549
545
  presets: presets('todo-item', [
550
546
  {
551
547
  label: kinds.todoList,
@@ -565,7 +561,7 @@
565
561
  toggle: {
566
562
  continues: true,
567
563
  container: true,
568
- snippet: details,
564
+ snippet: emptyBody ? detailsOwn : details,
569
565
  ...disclosure,
570
566
  presets: presets('toggle', [
571
567
  {
@@ -582,7 +578,7 @@
582
578
  // line is a toggle heading 1.
583
579
  'toggle-heading': {
584
580
  container: true,
585
- snippet: details,
581
+ snippet: emptyBody ? detailsOwn : details,
586
582
  ...disclosure,
587
583
  contentElement: (data) => headingLevel(data.level),
588
584
  presets: presets(
@@ -619,13 +615,14 @@
619
615
  callout: {
620
616
  container: true,
621
617
  body: true,
622
- snippet: callout,
618
+ snippet: calloutIcon || emptyBody ? calloutOwn : callout,
623
619
  presets: presets('callout', [
624
620
  { label: kinds.callout, icon: '✦', keywords: ['note', 'tip'], data: { icon } }
625
621
  ]),
626
- // The block menu's Change icon: the keyboard's way to the picker.
627
- menu: (block) =>
628
- picker
622
+ // The block menu's Change icon, while the view lists a picker: the keyboard's way to it.
623
+ menu: (block) => {
624
+ const picker = calloutPickers.get(edytor);
625
+ return picker
629
626
  ? [
630
627
  {
631
628
  id: 'callout.icon',
@@ -634,14 +631,15 @@
634
631
  run: () => picker.open(block)
635
632
  }
636
633
  ]
637
- : [],
634
+ : [];
635
+ },
638
636
  // HTML import: its own export, the icon in its attribute.
639
637
  parse: (el) => {
640
638
  const own = el.getAttribute('data-edytor-callout');
641
639
  return own === null ? undefined : { icon: own };
642
640
  },
643
641
  html: (block, content, children) =>
644
- calloutHtml(iconOf(block.data, icon), content, children)
642
+ calloutHtml(iconOf(block.data, edytor), content, children)
645
643
  },
646
644
  quote: {
647
645
  container: true,
@@ -660,7 +658,6 @@
660
658
  empty: { content: [], children: [] },
661
659
  ...rule
662
660
  },
663
- details: { snippet: details, ...disclosure },
664
661
  'ordered-list': {
665
662
  ...richTextKinds['ordered-list'],
666
663
  itemKind: 'numbered-list-item',
@@ -675,18 +672,10 @@
675
672
  element: unlisted('ul'),
676
673
  html: 'ul'
677
674
  },
678
- 'list-item': { snippet: listItem, element: unlisted('li'), html: 'li' },
679
- horizontalRule: {
680
- ...richTextKinds.horizontalRule,
681
- element: 'hr',
682
- ...rule
683
- }
675
+ 'list-item': { snippet: listItem, element: unlisted('li'), html: 'li' }
684
676
  }
685
677
  };
686
678
  };
687
-
688
- /** The rich text kinds and marks, in English. */
689
- export const richTextPlugin: Plugin = createRichTextPlugin();
690
679
  </script>
691
680
 
692
681
  <!--
@@ -740,11 +729,37 @@
740
729
 
741
730
  <!-- prettier-ignore -->
742
731
  {#snippet todoItem({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}<!--
743
- --><TodoCheckbox {block} toggle={toggleTodo} /><!--
732
+ --><TodoCheckbox {block} /><!--
733
+ --><div>{@render content()}</div><!--
734
+ -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
735
+ -->{/snippet}
736
+
737
+ <!--
738
+ The same kinds, their controls drawn by the app's snippets (`checkbox`,
739
+ `calloutIcon`, `emptyBody`) where it passes them.
740
+ -->
741
+ <!-- prettier-ignore -->
742
+ {#snippet todoItemOwn({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}<!--
743
+ --><RichTextControl {block} control="checkbox" /><!--
744
744
  --><div>{@render content()}</div><!--
745
745
  -->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
746
746
  -->{/snippet}
747
747
 
748
+ <!-- prettier-ignore -->
749
+ {#snippet detailsOwn({ block, content, children }: BlockSnippetPayload)}<!--
750
+ --><summary>{@render content()}</summary><!--
751
+ -->{#if children}<div data-edytor-children>{@render children()}</div><!--
752
+ -->{:else}<RichTextControl {block} control="toggle" />{/if}<!--
753
+ -->{/snippet}
754
+
755
+ <!-- prettier-ignore -->
756
+ {#snippet calloutOwn({ block, content, children }: BlockSnippetPayload<{ icon?: string }>)}<!--
757
+ --><RichTextControl {block} control="calloutIcon" /><!--
758
+ --><div data-edytor-callout-title>{@render content()}</div><!--
759
+ -->{#if children}<div data-edytor-children>{@render children()}</div><!--
760
+ -->{:else}<RichTextControl {block} control="callout" />{/if}<!--
761
+ -->{/snippet}
762
+
748
763
  <!-- prettier-ignore -->
749
764
  {#snippet listItem({ content, children }: BlockSnippetPayload)}<!--
750
765
  --><div>{@render content()}</div><!--
@@ -759,27 +774,3 @@
759
774
  {#snippet list({ children }: BlockSnippetPayload)}<!--
760
775
  -->{#if children}<div>{@render children()}</div>{/if}<!--
761
776
  -->{/snippet}
762
-
763
- <style>
764
- /* A callout's title reads as its heading (Notion); its content below it. */
765
- :global([data-edytor-callout-title]) {
766
- font-weight: 600;
767
- }
768
- /* An empty body's hint: chrome, not text (`body.hint`). */
769
- :global([data-edytor-empty-body]) {
770
- padding: 3px 2px;
771
- color: #73726e;
772
- cursor: pointer;
773
- user-select: none;
774
- }
775
- /* The icon button reads as the icon. */
776
- :global(button[data-edytor-callout-icon]) {
777
- padding: 0;
778
- border: 0;
779
- border-radius: 4px;
780
- background: transparent;
781
- color: inherit;
782
- font: inherit;
783
- cursor: pointer;
784
- }
785
- </style>
@@ -1,53 +1,53 @@
1
+ import './richtext.css';
1
2
  import type { Plugin, PlaceholderView } from '../../plugins.js';
2
- import type { Snippet } from 'svelte';
3
+ import type { Edytor } from '../../edytor.svelte.js';
3
4
  import { richTextOperations } from './richTextOperations.js';
4
- import { type PartialLabels } from '../../labels.js';
5
- import { CALLOUT_ICONS, CalloutIconPicker } from './calloutIcons.svelte.js';
6
- export { richTextOperations, CALLOUT_ICONS, CalloutIconPicker };
7
- export type { CalloutIconOption } from './calloutIcons.svelte.js';
5
+ import type { Snippet } from 'svelte';
6
+ import { type CalloutIconPayload, type EmptyBodyPayload, type TodoCheckboxPayload } from './controls.svelte.js';
7
+ export type { CalloutIconPayload, EmptyBodyPayload, TodoCheckboxPayload };
8
+ export { richTextOperations };
8
9
  /**
9
- * Notion's placeholders in `labels` (English by default): headings,
10
- * lists, to-dos, toggles and quotes name their kind while empty; a
11
- * paragraph invites a command only while focused.
10
+ * Notion's placeholders, in the view's `richText` labels (English by
11
+ * default): headings, lists, to-dos, toggles and quotes name their kind
12
+ * while empty; a paragraph invites a command only while focused.
12
13
  */
13
- export declare const createRichTextPlaceholder: (labels?: PartialLabels<"richText">) => ({ type, data, focused }: PlaceholderView) => string | null;
14
- /** Notion's placeholders, in English. */
15
- export declare const richTextPlaceholder: ({ type, data, focused }: PlaceholderView) => string | null;
14
+ export declare const richTextPlaceholder: ({ type, data, focused }: PlaceholderView, edytor?: Edytor) => string | null;
16
15
  export type RichTextPluginOptions = {
17
- /** The kinds', marks' and checkbox's words (English by default). */
18
- labels?: PartialLabels<'richText'>;
19
- /**
20
- * The slash menu's keywords of a kind, by command id (`block.heading1`):
21
- * they replace that preset's own (list the English ones to keep them).
22
- */
23
- keywords?: Partial<Record<string, string[]>>;
24
- /** Callouts' icons. */
16
+ /** Callouts' icons (their picker is `createCalloutIconsPlugin`'s). */
25
17
  callout?: {
26
18
  /**
27
19
  * A new callout's icon, and the one a callout whose `data.icon` is
28
20
  * unset shows (`💡` by default).
29
21
  */
30
22
  icon?: string;
31
- /** The icon picker's choices (`CALLOUT_ICONS` by default). */
32
- icons?: readonly string[];
33
- /**
34
- * Replace the icon picker's markup: it renders while the picker is
35
- * open, placed under the icon. Put `{@attach picker.keys}` and
36
- * `{@attach picker.popup}` on its element and spread
37
- * `picker.option(i)` on each row (`picker.icons.length`: Remove icon).
38
- */
39
- picker?: Snippet<[CalloutIconPicker]>;
40
23
  };
24
+ /**
25
+ * A to-do's checkbox (default: a native `input type="checkbox"`). Spread
26
+ * `checkbox.attributes` on the control, an `input` (with
27
+ * `checked={checkbox.checked}`) or a `button`: its click checks the to-do
28
+ * through the document.
29
+ */
30
+ checkbox?: Snippet<[TodoCheckboxPayload]>;
31
+ /**
32
+ * A callout's icon (default: a `button` showing it, or the icon alone
33
+ * where it cannot be picked). Spread `icon.attributes` on its element:
34
+ * a click opens the view's picker (`createCalloutIconsPlugin`), which
35
+ * opens under it.
36
+ */
37
+ calloutIcon?: Snippet<[CalloutIconPayload]>;
38
+ /**
39
+ * The hint an open toggle's or a callout's empty body shows (default: a
40
+ * `div` with the view's `richText.emptyBody` words). Spread
41
+ * `hint.attributes` on it: a click starts the body, a dragged block
42
+ * drops inside.
43
+ */
44
+ emptyBody?: Snippet<[EmptyBodyPayload]>;
41
45
  };
42
- /** Recognize any rich text plugin instance (the component's default yields to yours). */
43
- export declare const isRichTextPlugin: (plugin: Plugin) => boolean;
44
46
  /**
45
- * The rich text kinds and marks, with their words in `labels` and their
46
- * slash keywords in `keywords` (English by default).
47
+ * The rich text kinds and marks, their words and slash keywords the
48
+ * view's (`labels`, English by default).
47
49
  */
48
50
  export declare const createRichTextPlugin: (options?: RichTextPluginOptions) => Plugin;
49
- /** The rich text kinds and marks, in English. */
50
- export declare const richTextPlugin: Plugin;
51
51
  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> {
52
52
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
53
53
  $$bindings?: Bindings;