edytor 1.0.0-rc.3 → 2.0.0

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