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,25 +1,36 @@
1
1
  <script lang="ts">
2
- import { onMount, tick, type Snippet } from 'svelte';
3
- import type { Action } from 'svelte/action';
2
+ import { onMount, type Snippet } from 'svelte';
4
3
  import type { Edytor } from '../../edytor.svelte.js';
5
4
  import { rangeRects } from '../../collaboration/remoteSelection.js';
5
+ import Ranges, { runOf } from '../../components/Ranges.svelte';
6
6
  import { hidden } from '../../selection/visibility.js';
7
7
  import type { CommentRun } from '../../crdt/protocols/comments.js';
8
- import type { CommentsController } from './CommentsController.svelte.js';
8
+ import type { CommentsController, PlacedThread } from './CommentsController.svelte.js';
9
9
  import type { CommentCardPayload } from './commentsPlugin.js';
10
+ import { commentsEnglish, labelsOf } from '../../labels.js';
10
11
 
12
+ /**
13
+ * The comments' place in the overlay: the threads' highlight, the text of
14
+ * the comment being written, and the sidebar beside the text (Notion's
15
+ * margin; under its text on a narrow screen, the active one only) whose
16
+ * cards the plugin's `card` snippet draws (the comment being written:
17
+ * `thread` is `null`), under its `header` snippet.
18
+ */
11
19
  let {
12
20
  edytor,
13
21
  comments,
14
- card
22
+ card,
23
+ header
15
24
  }: {
16
25
  edytor: Edytor;
17
26
  comments: CommentsController;
18
- /** Replace a thread card's markup (the plugin's `card` option). */
19
- card?: Snippet<[CommentCardPayload]>;
27
+ /** A card's markup (the plugin's `card` option). */
28
+ card: Snippet<[CommentCardPayload]>;
29
+ /** The margin's top (the plugin's `header` option). */
30
+ header?: Snippet<[CommentsController]>;
20
31
  } = $props();
21
32
 
22
- const labels = $derived(comments.labels);
33
+ const labels = $derived(labelsOf(edytor, 'comments', commentsEnglish));
23
34
 
24
35
  /** The sidebar's width, and the gap between the text and the sidebar, and between cards. */
25
36
  const WIDTH = 288;
@@ -35,28 +46,27 @@
35
46
  left: number;
36
47
  /** Each placed card's position, by thread id (the draft's: `DRAFT`). */
37
48
  cards: Record<string, { top: number; left: number }>;
38
- /** The draft's text, highlighted until it is posted. */
39
- draft: Rect[];
40
- /** Where the resolved toggle sits. */
41
- toggle: number;
49
+ /** Where the header sits. */
50
+ header: number;
42
51
  };
43
52
 
44
- let layout: Layout = $state.raw({ mode: 'margin', left: 0, cards: {}, draft: [], toggle: 0 });
53
+ let layout: Layout = $state.raw({ mode: 'margin', left: 0, cards: {}, header: 0 });
45
54
  let container: HTMLElement | undefined = $state();
55
+ let top: HTMLElement | undefined = $state();
46
56
 
47
- /** The runs' first line box, relative to the overlay: the text's own, else its block's. */
48
- const anchorOf = (runs: CommentRun[], origin: DOMRect): Rect | null => {
57
+ /** A run's text boxes, relative to the overlay. */
58
+ const rectsOf = (run: CommentRun, origin: DOMRect): Rect[] =>
59
+ runOf(edytor, run.block, run.offset, run.length).flatMap(({ start, end }) =>
60
+ rangeRects(edytor, start, end, origin)
61
+ );
62
+
63
+ /** The runs' first line box, relative to the overlay: the text's own, else its block's, else the host's top. */
64
+ const anchorOf = (runs: CommentRun[], origin: DOMRect, top: number): Rect => {
49
65
  for (const run of runs) {
50
66
  const block = edytor.idToBlock.get(run.block);
51
67
  if (!block) continue;
52
- if (!hidden(block)) {
53
- const [start, end] = [
54
- block.textAtOffset(run.offset),
55
- block.textAtOffset(run.offset + run.length)
56
- ];
57
- const rect = start && end ? rangeRects(edytor, start, end, origin)[0] : undefined;
58
- if (rect) return rect;
59
- }
68
+ const rect = hidden(block) ? undefined : rectsOf(run, origin)[0];
69
+ if (rect) return rect;
60
70
  const node = block.node?.closest('details:not([open])') ?? block.node;
61
71
  if (!node) continue;
62
72
  const box = node.getBoundingClientRect();
@@ -67,7 +77,7 @@
67
77
  height: 20
68
78
  };
69
79
  }
70
- return null;
80
+ return { left: 0, top, width: 0, height: 20 };
71
81
  };
72
82
 
73
83
  /**
@@ -83,38 +93,22 @@
83
93
  const hostRect = host.getBoundingClientRect();
84
94
  const margin = hostRect.right + GAP + WIDTH <= view.innerWidth - 8;
85
95
  const draftRuns = comments.draft ? comments.draftRuns() : [];
86
- const draft = draftRuns.flatMap((run) => {
87
- const block = edytor.idToBlock.get(run.block);
88
- const [start, end] = [
89
- block?.textAtOffset(run.offset),
90
- block?.textAtOffset(run.offset + run.length)
91
- ];
92
- return start && end ? rangeRects(edytor, start, end, origin) : [];
93
- });
94
96
  const heights = new Map<string, number>();
95
97
  for (const node of container.querySelectorAll<HTMLElement>('[data-edytor-comment-card]'))
96
98
  heights.set(node.dataset.edytorCommentCard!, node.getBoundingClientRect().height);
97
99
  const heightOf = (id: string) => heights.get(id) || 96;
98
100
  const hostTop = hostRect.top - origin.top;
99
- const items: Array<{ id: string; anchor: Rect }> = [];
100
- if (comments.draft) {
101
- const anchor = anchorOf(draftRuns, origin);
102
- items.push({ id: DRAFT, anchor: anchor ?? { left: 0, top: hostTop, width: 0, height: 20 } });
103
- }
104
101
  const active = comments.draft ? DRAFT : comments.active;
105
- for (const thread of comments.shown) {
106
- if (!margin && thread.id !== active) continue;
107
- const anchor = anchorOf(thread.runs, origin);
108
- items.push({
109
- id: thread.id,
110
- anchor: anchor ?? { left: 0, top: hostTop, width: 0, height: 20 }
111
- });
112
- }
113
- items.sort((a, b) => a.anchor.top - b.anchor.top);
102
+ const items = [
103
+ ...(comments.draft ? [{ id: DRAFT, runs: draftRuns }] : []),
104
+ ...comments.shown.filter((thread) => margin || thread.id === active)
105
+ ]
106
+ .map(({ id, runs }) => ({ id, anchor: anchorOf(runs, origin, hostTop) }))
107
+ .sort((a, b) => a.anchor.top - b.anchor.top);
114
108
  const cards: Layout['cards'] = {};
115
- const left = margin ? hostRect.right - origin.left + GAP : 0;
116
109
  if (margin) {
117
- const floor = hostTop + (comments.resolved.length > 0 ? 36 : 0);
110
+ const head = top?.getBoundingClientRect().height ?? 0;
111
+ const floor = hostTop + (head ? head + SPACING : 0);
118
112
  const at = items.findIndex((item) => item.id === active);
119
113
  const place = (from: number, y: number) => {
120
114
  for (let i = from; i < items.length; i++) {
@@ -147,10 +141,9 @@
147
141
  }
148
142
  const next: Layout = {
149
143
  mode: margin ? 'margin' : 'popover',
150
- left,
144
+ left: margin ? hostRect.right - origin.left + GAP : 0,
151
145
  cards,
152
- draft,
153
- toggle: hostTop
146
+ header: hostTop
154
147
  };
155
148
  if (JSON.stringify(next) === JSON.stringify(layout)) return;
156
149
  return () => (layout = next);
@@ -168,54 +161,16 @@
168
161
  });
169
162
 
170
163
  /**
171
- * What the sidebar shows: on a narrow screen only the active thread. A
172
- * card the overlay has not placed yet renders hidden until its frame.
164
+ * The cards: the draft's first (`null`), then the threads; on a narrow
165
+ * screen only the active thread. A card the overlay has not placed yet
166
+ * renders hidden until its frame.
173
167
  */
174
- const placed = $derived(
175
- layout.mode === 'margin'
168
+ const cards: (PlacedThread | null)[] = $derived([
169
+ ...(comments.draft ? [null] : []),
170
+ ...(layout.mode === 'margin'
176
171
  ? comments.shown
177
- : comments.shown.filter((thread) => thread.id === comments.active)
178
- );
179
-
180
- /**
181
- * A composer field: Enter posts (Shift+Enter is a new line), Escape
182
- * gives up; it takes the focus when it mounts if `focus`.
183
- */
184
- const composer: Action<
185
- HTMLTextAreaElement,
186
- { submit: (body: string) => Promise<boolean> | boolean; cancel?: () => void; focus?: boolean }
187
- > = (node, initial) => {
188
- let params = initial;
189
- if (params.focus) void tick().then(() => node.focus({ preventScroll: true }));
190
- const keydown = async (event: KeyboardEvent) => {
191
- if (event.isComposing) return;
192
- if (event.key === 'Escape' && params.cancel) {
193
- event.preventDefault();
194
- params.cancel();
195
- } else if (event.key === 'Enter' && !event.shiftKey) {
196
- event.preventDefault();
197
- const body = node.value;
198
- if (await params.submit(body)) {
199
- node.value = '';
200
- node.dispatchEvent(new Event('input', { bubbles: true }));
201
- }
202
- }
203
- };
204
- node.addEventListener('keydown', keydown);
205
- return {
206
- update: (next) => (params = next),
207
- destroy: () => node.removeEventListener('keydown', keydown)
208
- };
209
- };
210
-
211
- let draftBody = $state('');
212
- const postDraft = async () => {
213
- if (await comments.submit(draftBody)) draftBody = '';
214
- };
215
- const replies: Record<string, string> = $state({});
216
- const postReply = async (thread: string) => {
217
- if (await comments.reply(thread, replies[thread] ?? '')) replies[thread] = '';
218
- };
172
+ : comments.shown.filter((thread) => thread.id === comments.active))
173
+ ]);
219
174
  </script>
220
175
 
221
176
  <!-- The highlight of the threads' text: one stylesheet, never an attribute of the editor's own elements. -->
@@ -223,17 +178,14 @@
223
178
  <svelte:element this={'style'} data-edytor-comments-style>{comments.css}</svelte:element>
224
179
  </svelte:head>
225
180
 
226
- <div data-edytor-comment-ranges aria-hidden="true">
227
- {#each layout.draft as rect, index (index)}
228
- <span
229
- data-edytor-comment-draft
230
- style:left={`${rect.left}px`}
231
- style:top={`${rect.top}px`}
232
- style:width={`${rect.width}px`}
233
- style:height={`${rect.height}px`}
234
- ></span>
235
- {/each}
236
- </div>
181
+ <!-- The text of the comment being written, highlighted until it is posted. -->
182
+ <Ranges
183
+ {edytor}
184
+ name="comment-draft"
185
+ z={17}
186
+ ranges={() =>
187
+ comments.draftRuns().flatMap((run) => runOf(edytor, run.block, run.offset, run.length))}
188
+ />
237
189
 
238
190
  <div
239
191
  bind:this={container}
@@ -244,220 +196,51 @@
244
196
  style:left={`${layout.left}px`}
245
197
  style:--edytor-comments-width={`${WIDTH}px`}
246
198
  >
247
- {#if layout.mode === 'margin' && comments.resolved.length > 0}
248
- <button
249
- type="button"
250
- data-edytor-comments-toggle
251
- style:top={`${layout.toggle}px`}
252
- aria-pressed={comments.showResolved}
253
- onclick={() => (comments.showResolved = !comments.showResolved)}
254
- >{comments.showResolved
255
- ? labels.hideResolved
256
- : labels.showResolved(comments.resolved.length)}</button
257
- >
258
- {/if}
259
-
260
- {#if comments.draft}
261
- <div
262
- data-edytor-comment-card={DRAFT}
263
- data-edytor-comment-new
264
- data-active
265
- data-unplaced={layout.cards[DRAFT] ? undefined : ''}
266
- style:top={`${layout.cards[DRAFT]?.top ?? 0}px`}
267
- style:left={`${layout.cards[DRAFT]?.left ?? 0}px`}
268
- >
269
- {#if comments.draft.quote}
270
- <blockquote data-edytor-comment-quote>{comments.draft.quote}</blockquote>
271
- {/if}
272
- <div data-edytor-comment-composer>
273
- <textarea
274
- data-edytor-comment-field
275
- rows="1"
276
- placeholder={labels.placeholder}
277
- aria-label={labels.placeholder}
278
- bind:value={draftBody}
279
- use:composer={{
280
- submit: (body) => comments.submit(body),
281
- cancel: comments.cancel,
282
- focus: true
283
- }}
284
- ></textarea>
285
- <div data-edytor-comment-actions>
286
- <button type="button" data-edytor-comment-cancel onclick={comments.cancel}
287
- >{labels.cancel}</button
288
- >
289
- <button
290
- type="button"
291
- data-edytor-comment-post
292
- disabled={!draftBody.trim()}
293
- onclick={postDraft}>{labels.post}</button
294
- >
295
- </div>
296
- </div>
297
- {#if comments.error}<p data-edytor-comment-error role="alert">{labels.failed}</p>{/if}
199
+ {#if header && layout.mode === 'margin'}
200
+ <div bind:this={top} data-edytor-comments-header style:top={`${layout.header}px`}>
201
+ {@render header(comments)}
298
202
  </div>
299
203
  {/if}
300
204
 
301
- {#each placed as thread (thread.id)}
302
- {@const active = thread.id === comments.active}
303
- <!-- A press on a card makes its thread the active one; its buttons and fields keep their keys. -->
304
- <!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_noninteractive_element_interactions -->
205
+ {#each cards as thread (thread?.id ?? DRAFT)}
206
+ {@const id = thread?.id ?? DRAFT}
207
+ {@const active = thread?.id === comments.active}
208
+ {@const at = layout.cards[id]}
209
+ <!-- A press on a thread's card makes it the active one; its buttons and fields keep their keys. -->
305
210
  <div
306
- data-edytor-comment-card={thread.id}
307
- data-active={active || undefined}
308
- data-resolved={thread.resolved ? '' : undefined}
309
- data-unplaced={layout.cards[thread.id] ? undefined : ''}
310
- role="article"
311
- aria-label={labels.comment}
312
- style:top={`${layout.cards[thread.id]?.top ?? 0}px`}
313
- style:left={`${layout.cards[thread.id]?.left ?? 0}px`}
211
+ data-edytor-comment-card={id}
212
+ data-edytor-comment-new={thread ? undefined : ''}
213
+ data-active={thread ? active || undefined : ''}
214
+ data-resolved={thread?.resolved ? '' : undefined}
215
+ data-unplaced={at ? undefined : ''}
216
+ role={thread ? 'article' : undefined}
217
+ aria-label={thread ? labels.comment : undefined}
218
+ style:top={`${at?.top ?? 0}px`}
219
+ style:left={`${at?.left ?? 0}px`}
314
220
  onclick={(event) => {
315
- if (!(event.target as Element).closest('button, textarea')) comments.focus(thread.id);
221
+ if (thread && !(event.target as Element).closest('button, textarea'))
222
+ comments.focus(thread.id);
316
223
  }}
317
224
  >
318
- {#if card}
319
- {@render card({ thread, comments, active })}
320
- {:else}
321
- <div data-edytor-comment-head>
322
- {#if thread.quote}
323
- <blockquote data-edytor-comment-quote>{thread.quote}</blockquote>
324
- {/if}
325
- {#if comments.canComment}
326
- {#if thread.resolved}
327
- <button
328
- type="button"
329
- data-edytor-comment-reopen
330
- title={labels.reopen}
331
- onclick={() => comments.reopen(thread.id)}>{labels.reopen}</button
332
- >
333
- {:else}
334
- <button
335
- type="button"
336
- data-edytor-comment-resolve
337
- title={labels.resolve}
338
- aria-label={labels.resolve}
339
- onclick={() => comments.resolve(thread.id)}>✓</button
340
- >
341
- {/if}
342
- {/if}
343
- </div>
344
- {#if thread.resolved}
345
- <p data-edytor-comment-resolved>
346
- {labels.resolvedBy(comments.userOf(thread.resolved.by).name!)}
347
- </p>
348
- {/if}
349
- <ol data-edytor-comment-list>
350
- {#each thread.comments as comment (comment.id)}
351
- {@const author = comments.userOf(comment.author)}
352
- <li data-edytor-comment={comment.id}>
353
- <div data-edytor-comment-meta>
354
- {#if author.avatar}
355
- <img data-edytor-comment-avatar src={author.avatar} alt="" />
356
- {:else}
357
- <span
358
- data-edytor-comment-avatar
359
- style:background={author.color}
360
- aria-hidden="true">{author.name!.slice(0, 1).toUpperCase()}</span
361
- >
362
- {/if}
363
- <span data-edytor-comment-author>{author.name}</span>
364
- <time data-edytor-comment-time datetime={new Date(comment.createdAt).toISOString()}
365
- >{labels.when(comment.createdAt)}</time
366
- >
367
- {#if comments.mayDelete(thread, comment)}
368
- <button
369
- type="button"
370
- data-edytor-comment-delete
371
- title={labels.delete}
372
- aria-label={labels.delete}
373
- onclick={() =>
374
- comments.remove(
375
- thread.id,
376
- comment.id === thread.comments[0]?.id ? undefined : comment.id
377
- )}>×</button
378
- >
379
- {/if}
380
- </div>
381
- <p data-edytor-comment-body>{comment.body}</p>
382
- </li>
383
- {/each}
384
- </ol>
385
- {#if active && comments.canComment && !thread.resolved}
386
- <div data-edytor-comment-composer>
387
- <textarea
388
- data-edytor-comment-reply
389
- rows="1"
390
- placeholder={labels.reply}
391
- aria-label={labels.reply}
392
- bind:value={replies[thread.id]}
393
- use:composer={{ submit: (body) => comments.reply(thread.id, body) }}
394
- ></textarea>
395
- {#if replies[thread.id]?.trim()}
396
- <div data-edytor-comment-actions>
397
- <button type="button" data-edytor-comment-post onclick={() => postReply(thread.id)}
398
- >{labels.post}</button
399
- >
400
- </div>
401
- {/if}
402
- </div>
403
- {/if}
404
- {/if}
225
+ {@render card({ thread, comments, active })}
405
226
  </div>
406
227
  {/each}
407
228
  </div>
408
229
 
409
230
  <style>
410
- [data-edytor-comment-ranges] {
411
- position: absolute;
412
- left: 0;
413
- top: 0;
414
- pointer-events: none;
415
- z-index: 17;
416
- }
417
- [data-edytor-comment-draft] {
418
- position: absolute;
419
- background: var(--edytor-comment-active, rgb(255 212 0 / 0.42));
420
- mix-blend-mode: multiply;
421
- }
422
231
  [data-edytor-comments] {
423
232
  position: absolute;
424
233
  top: 0;
425
234
  width: 0;
426
235
  z-index: 30;
427
- font:
428
- 14px/1.45 ui-sans-serif,
429
- -apple-system,
430
- BlinkMacSystemFont,
431
- 'Segoe UI',
432
- Helvetica,
433
- sans-serif;
434
- color: var(--edytor-comments-color, rgb(55 53 47));
435
- }
436
- [data-edytor-comments-toggle] {
437
- position: absolute;
438
- left: 0;
439
- border: 0;
440
- border-radius: 6px;
441
- padding: 2px 8px;
442
- background: transparent;
443
- color: rgb(120 119 116);
444
- font: inherit;
445
- font-size: 13px;
446
- cursor: pointer;
447
- }
448
- [data-edytor-comments-toggle]:hover {
449
- background: rgb(55 53 47 / 0.08);
450
236
  }
237
+ [data-edytor-comments-header],
451
238
  [data-edytor-comment-card] {
452
239
  position: absolute;
453
240
  box-sizing: border-box;
454
241
  width: var(--edytor-comments-width);
455
- padding: 10px 12px;
456
- border-radius: 8px;
457
- background: var(--edytor-comments-background, #fff);
458
- box-shadow:
459
- rgb(15 15 15 / 0.05) 0 0 0 1px,
460
- rgb(15 15 15 / 0.1) 0 3px 6px;
242
+ }
243
+ [data-edytor-comment-card] {
461
244
  transition:
462
245
  top 120ms ease,
463
246
  left 120ms ease;
@@ -467,136 +250,4 @@
467
250
  opacity: 0;
468
251
  pointer-events: none;
469
252
  }
470
- [data-edytor-comment-card][data-active] {
471
- box-shadow:
472
- rgb(15 15 15 / 0.08) 0 0 0 1px,
473
- rgb(15 15 15 / 0.16) 0 6px 14px;
474
- }
475
- [data-edytor-comment-card][data-resolved] {
476
- opacity: 0.75;
477
- }
478
- [data-edytor-comment-head] {
479
- display: flex;
480
- align-items: flex-start;
481
- gap: 6px;
482
- }
483
- [data-edytor-comment-quote] {
484
- flex: 1;
485
- margin: 0 0 6px;
486
- padding-left: 8px;
487
- border-left: 2px solid rgb(255 212 0 / 0.8);
488
- color: rgb(120 119 116);
489
- font-size: 13px;
490
- overflow: hidden;
491
- display: -webkit-box;
492
- -webkit-line-clamp: 2;
493
- line-clamp: 2;
494
- -webkit-box-orient: vertical;
495
- }
496
- [data-edytor-comment-head] button,
497
- [data-edytor-comment-delete] {
498
- border: 0;
499
- border-radius: 4px;
500
- background: transparent;
501
- color: rgb(120 119 116);
502
- font: inherit;
503
- font-size: 13px;
504
- cursor: pointer;
505
- padding: 0 6px;
506
- }
507
- [data-edytor-comment-head] button:hover,
508
- [data-edytor-comment-delete]:hover {
509
- background: rgb(55 53 47 / 0.08);
510
- }
511
- [data-edytor-comment-resolved] {
512
- margin: 0 0 6px;
513
- font-size: 12px;
514
- color: rgb(120 119 116);
515
- }
516
- [data-edytor-comment-list] {
517
- list-style: none;
518
- margin: 0;
519
- padding: 0;
520
- display: flex;
521
- flex-direction: column;
522
- gap: 10px;
523
- }
524
- [data-edytor-comment-meta] {
525
- display: flex;
526
- align-items: center;
527
- gap: 6px;
528
- }
529
- [data-edytor-comment-avatar] {
530
- width: 20px;
531
- height: 20px;
532
- border-radius: 50%;
533
- display: inline-flex;
534
- align-items: center;
535
- justify-content: center;
536
- color: #fff;
537
- font-size: 11px;
538
- font-weight: 600;
539
- object-fit: cover;
540
- }
541
- [data-edytor-comment-author] {
542
- font-weight: 600;
543
- font-size: 13px;
544
- }
545
- [data-edytor-comment-time] {
546
- color: rgb(120 119 116);
547
- font-size: 12px;
548
- }
549
- [data-edytor-comment-delete] {
550
- margin-left: auto;
551
- }
552
- [data-edytor-comment-body] {
553
- margin: 2px 0 0 26px;
554
- white-space: pre-wrap;
555
- overflow-wrap: anywhere;
556
- }
557
- [data-edytor-comment-composer] {
558
- margin-top: 8px;
559
- }
560
- [data-edytor-comment-composer] textarea {
561
- box-sizing: border-box;
562
- width: 100%;
563
- min-height: 32px;
564
- resize: vertical;
565
- border: 1px solid rgb(55 53 47 / 0.16);
566
- border-radius: 6px;
567
- padding: 6px 8px;
568
- font: inherit;
569
- color: inherit;
570
- background: transparent;
571
- field-sizing: content;
572
- }
573
- [data-edytor-comment-actions] {
574
- display: flex;
575
- justify-content: flex-end;
576
- gap: 6px;
577
- margin-top: 6px;
578
- }
579
- [data-edytor-comment-actions] button {
580
- border: 0;
581
- border-radius: 6px;
582
- padding: 4px 10px;
583
- font: inherit;
584
- font-size: 13px;
585
- cursor: pointer;
586
- background: rgb(55 53 47 / 0.06);
587
- color: inherit;
588
- }
589
- [data-edytor-comment-post] {
590
- background: rgb(35 131 226) !important;
591
- color: #fff !important;
592
- }
593
- [data-edytor-comment-post]:disabled {
594
- opacity: 0.4;
595
- cursor: default;
596
- }
597
- [data-edytor-comment-error] {
598
- margin: 6px 0 0;
599
- font-size: 12px;
600
- color: rgb(212 76 71);
601
- }
602
253
  </style>
@@ -5,8 +5,10 @@ import type { CommentCardPayload } from './commentsPlugin.js';
5
5
  type $$ComponentProps = {
6
6
  edytor: Edytor;
7
7
  comments: CommentsController;
8
- /** Replace a thread card's markup (the plugin's `card` option). */
9
- card?: Snippet<[CommentCardPayload]>;
8
+ /** A card's markup (the plugin's `card` option). */
9
+ card: Snippet<[CommentCardPayload]>;
10
+ /** The margin's top (the plugin's `header` option). */
11
+ header?: Snippet<[CommentsController]>;
10
12
  };
11
13
  declare const CommentsSidebar: import("svelte").Component<$$ComponentProps, {}, "">;
12
14
  type CommentsSidebar = ReturnType<typeof CommentsSidebar>;
@@ -3,13 +3,21 @@ import type { Edytor } from '../../edytor.svelte.js';
3
3
  import type { Plugin } from '../../plugins.js';
4
4
  import type { CommentChange } from '../../crdt/protocols/comments.js';
5
5
  import type { CommentsClient } from '../../collaboration/comments/client.js';
6
- import { type PartialLabels } from '../../labels.js';
7
6
  import { CommentsController, type CommentNotice, type CommentUser, type PlacedThread } from './CommentsController.svelte.js';
8
- /** What a `card` snippet receives: one thread, the view's comments controller, and whether it is the active one. */
7
+ /**
8
+ * What a `card` snippet receives: one thread (`null`: the comment being
9
+ * written, `comments.draft`), the view's comments controller, and whether
10
+ * it is the active one.
11
+ */
9
12
  export type CommentCardPayload = {
10
- /** The thread, placed beside its text (its comments, its anchor's text, `resolved`). */
11
- thread: PlacedThread;
12
- /** The view's comments: the actions (reply, resolve, delete, `activate`), the user, `labels`. */
13
+ /**
14
+ * The thread, placed beside its text (its comments, its anchor's text,
15
+ * `resolved`); `null` for the comment being written (its text
16
+ * `comments.draft.quote`: post it with `comments.submit(body)`, give it
17
+ * up with `comments.cancel()`).
18
+ */
19
+ thread: PlacedThread | null;
20
+ /** The view's comments: the actions (reply, resolve, delete, `activate`), the user. */
13
21
  comments: CommentsController;
14
22
  /** It is the active thread (its text is selected, or its card was pressed). */
15
23
  active: boolean;
@@ -34,10 +42,18 @@ export type CommentsPluginOptions = {
34
42
  * it (in this view or another).
35
43
  */
36
44
  onComment?: (change: CommentChange, notice: CommentNotice) => void;
37
- /** Replace a thread card's markup (the sidebar still places it). */
45
+ /**
46
+ * A card's markup: a thread's (its comments, a reply field, Resolve) or
47
+ * the comment being written (`thread: null`). The sidebar places each
48
+ * card beside its text; without it, no sidebar shows (the threads are
49
+ * still highlighted and kept).
50
+ */
38
51
  card?: Snippet<[CommentCardPayload]>;
39
- /** The words the sidebar and the toolbar button show, over the English ones. */
40
- labels?: PartialLabels<'comments'>;
52
+ /**
53
+ * The top of the sidebar's margin (Notion's "Show resolved"): the cards
54
+ * stack under it. Not shown on a narrow screen.
55
+ */
56
+ header?: Snippet<[CommentsController]>;
41
57
  };
42
58
  /** The comments plugin's controller of `edytor`; `undefined` when the plugin is not listed. */
43
59
  export declare const commentsController: (edytor: Edytor) => CommentsController | undefined;
@@ -48,6 +64,6 @@ export declare const commentsController: (edytor: Edytor) => CommentsController
48
64
  * merges and that copy and cut leave behind; its comments live in the
49
65
  * client's store (the room's `threads` and `comments` tables). Open threads
50
66
  * are highlighted, and a sidebar beside the text (under it, on a narrow
51
- * screen) shows each one with its replies, a composer, Resolve and Re-open.
67
+ * screen) places a `card` for each one.
52
68
  */
53
69
  export declare const createCommentsPlugin: (options: CommentsPluginOptions) => Plugin;