edytor 1.0.0-rc.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/README.md +65 -25
  2. package/dist/block/block.svelte.d.ts +10 -85
  3. package/dist/block/block.svelte.js +27 -137
  4. package/dist/block/colors.d.ts +0 -9
  5. package/dist/block/colors.js +1 -18
  6. package/dist/block/contentRange.d.ts +5 -1
  7. package/dist/block/contentRange.js +15 -16
  8. package/dist/block/inlineBlock.svelte.d.ts +8 -10
  9. package/dist/block/inlineBlock.svelte.js +14 -22
  10. package/dist/clipboard/createClipboardFragment.js +22 -64
  11. package/dist/clipboard/fragmentData.js +17 -42
  12. package/dist/clipboard/htmlFlow.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 +19 -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/comments/client.d.ts +2 -2
  49. package/dist/collaboration/comments/client.js +1 -1
  50. package/dist/collaboration/history/index.d.ts +5 -5
  51. package/dist/collaboration/history/index.js +5 -5
  52. package/dist/collaboration/history/panel.svelte.d.ts +91 -0
  53. package/dist/collaboration/history/panel.svelte.js +223 -0
  54. package/dist/collaboration/providers.d.ts +12 -3
  55. package/dist/collaboration/providers.js +5 -4
  56. package/dist/components/Block.svelte +39 -55
  57. package/dist/components/Block.svelte.d.ts +7 -5
  58. package/dist/components/Content.svelte +1 -5
  59. package/dist/components/Edytor.svelte +53 -96
  60. package/dist/components/Edytor.svelte.d.ts +8 -12
  61. package/dist/components/Ranges.svelte +96 -0
  62. package/dist/components/Ranges.svelte.d.ts +19 -0
  63. package/dist/components/Suggestion.svelte +3 -2
  64. package/dist/components/Text.svelte +2 -5
  65. package/dist/components/Text.svelte.d.ts +1 -1
  66. package/dist/crdt/admission.d.ts +2 -9
  67. package/dist/crdt/admission.js +3 -9
  68. package/dist/crdt/attribution/attribution.d.ts +11 -72
  69. package/dist/crdt/attribution/attribution.js +5 -52
  70. package/dist/crdt/attribution/block.d.ts +0 -78
  71. package/dist/crdt/attribution/block.js +1 -144
  72. package/dist/crdt/data.d.ts +8 -13
  73. package/dist/crdt/data.js +30 -70
  74. package/dist/crdt/doc/anchors.js +4 -4
  75. package/dist/crdt/doc/content.d.ts +5 -1
  76. package/dist/crdt/doc/content.js +3 -1
  77. package/dist/crdt/doc/delete.d.ts +1 -0
  78. package/dist/crdt/doc/funnel.d.ts +0 -23
  79. package/dist/crdt/doc/funnel.js +34 -85
  80. package/dist/crdt/doc/gate.d.ts +8 -9
  81. package/dist/crdt/doc/gate.js +7 -17
  82. package/dist/crdt/doc/history.d.ts +87 -14
  83. package/dist/crdt/doc/history.js +334 -149
  84. package/dist/crdt/doc/layout.d.ts +0 -1
  85. package/dist/crdt/doc/layout.js +2 -3
  86. package/dist/crdt/doc/meta.d.ts +4 -4
  87. package/dist/crdt/doc/meta.js +10 -21
  88. package/dist/crdt/doc/moves.d.ts +4 -4
  89. package/dist/crdt/doc/moves.js +5 -5
  90. package/dist/crdt/doc/plan.d.ts +2 -0
  91. package/dist/crdt/doc/plan.js +2 -0
  92. package/dist/crdt/doc/reads.d.ts +1 -5
  93. package/dist/crdt/doc/reads.js +38 -49
  94. package/dist/crdt/doc/seed.d.ts +15 -6
  95. package/dist/crdt/doc/seed.js +27 -26
  96. package/dist/crdt/doc/split-merge.d.ts +1 -3
  97. package/dist/crdt/doc/split-merge.js +4 -5
  98. package/dist/crdt/doc/steps.d.ts +3 -7
  99. package/dist/crdt/doc/steps.js +20 -9
  100. package/dist/crdt/doc/types.d.ts +0 -10
  101. package/dist/crdt/document.d.ts +24 -115
  102. package/dist/crdt/document.js +207 -305
  103. package/dist/crdt/edytor-doc.d.ts +671 -90
  104. package/dist/crdt/edytor-doc.js +73 -149
  105. package/dist/crdt/engine-api.d.ts +15 -47
  106. package/dist/crdt/engine.d.ts +7 -17
  107. package/dist/crdt/engine.js +9 -19
  108. package/dist/crdt/flow.d.ts +9 -37
  109. package/dist/crdt/flow.js +260 -238
  110. package/dist/crdt/index.d.ts +26 -85
  111. package/dist/crdt/index.js +21 -47
  112. package/dist/crdt/operations.d.ts +24 -33
  113. package/dist/crdt/operations.js +7 -17
  114. package/dist/crdt/placement/display.d.ts +0 -2
  115. package/dist/crdt/placement/display.js +0 -15
  116. package/dist/crdt/placement/model.d.ts +160 -12
  117. package/dist/crdt/placement/model.js +413 -414
  118. package/dist/crdt/placement/rank.d.ts +1 -5
  119. package/dist/crdt/placement/rank.js +28 -38
  120. package/dist/crdt/protocol.d.ts +4 -5
  121. package/dist/crdt/protocol.js +3 -4
  122. package/dist/crdt/protocols/awareness.d.ts +3 -7
  123. package/dist/crdt/protocols/awareness.js +17 -33
  124. package/dist/crdt/protocols/envelope.d.ts +9 -29
  125. package/dist/crdt/protocols/envelope.js +8 -25
  126. package/dist/crdt/protocols/sync.d.ts +15 -30
  127. package/dist/crdt/protocols/sync.js +27 -89
  128. package/dist/crdt/providers/bound.d.ts +3 -1
  129. package/dist/crdt/providers/bound.js +3 -1
  130. package/dist/crdt/providers/container.d.ts +11 -17
  131. package/dist/crdt/providers/container.js +39 -27
  132. package/dist/crdt/providers/index.d.ts +34 -6
  133. package/dist/crdt/providers/index.js +106 -111
  134. package/dist/crdt/providers/indexeddb.d.ts +2 -12
  135. package/dist/crdt/providers/indexeddb.js +29 -90
  136. package/dist/crdt/providers/room.d.ts +58 -2
  137. package/dist/crdt/providers/room.js +38 -21
  138. package/dist/crdt/providers/websocket.d.ts +1 -1
  139. package/dist/crdt/providers/websocket.js +3 -4
  140. package/dist/crdt/purge.d.ts +2 -2
  141. package/dist/crdt/purge.js +69 -6
  142. package/dist/crdt/rangeDelete.d.ts +4 -42
  143. package/dist/crdt/rangeDelete.js +7 -6
  144. package/dist/crdt/restore.d.ts +21 -1
  145. package/dist/crdt/restore.js +54 -59
  146. package/dist/crdt/schema.d.ts +2 -2
  147. package/dist/crdt/schema.js +4 -5
  148. package/dist/crdt/semantics.d.ts +10 -15
  149. package/dist/crdt/semantics.js +22 -21
  150. package/dist/crdt/storage.d.ts +7 -13
  151. package/dist/crdt/storage.js +10 -24
  152. package/dist/crdt/structs.d.ts +42 -47
  153. package/dist/crdt/structs.js +76 -67
  154. package/dist/crdt/tables.d.ts +9 -0
  155. package/dist/crdt/tables.js +20 -0
  156. package/dist/crdt/text/delete-index.d.ts +0 -13
  157. package/dist/crdt/text/delete-index.js +7 -14
  158. package/dist/crdt/text/deletes.d.ts +9 -22
  159. package/dist/crdt/text/deletes.js +11 -74
  160. package/dist/crdt/text/index/cache.js +3 -3
  161. package/dist/crdt/text/index/fold.d.ts +1 -2
  162. package/dist/crdt/text/index/fold.js +15 -10
  163. package/dist/crdt/text/index/layout.d.ts +0 -10
  164. package/dist/crdt/text/index/layout.js +6 -20
  165. package/dist/crdt/text/index/records.js +2 -1
  166. package/dist/crdt/text/index/report.js +5 -6
  167. package/dist/crdt/text/index/shared.d.ts +11 -4
  168. package/dist/crdt/text/index/shared.js +8 -7
  169. package/dist/crdt/text/index/state.d.ts +3 -33
  170. package/dist/crdt/text/index/state.js +2 -4
  171. package/dist/crdt/text/model.d.ts +82 -2
  172. package/dist/crdt/text/model.js +344 -354
  173. package/dist/crdt/text/rows.d.ts +0 -2
  174. package/dist/crdt/text/rows.js +0 -11
  175. package/dist/crdt/text/runs.d.ts +6 -3
  176. package/dist/crdt/text/runs.js +132 -137
  177. package/dist/crdt/text/streams.d.ts +1 -1
  178. package/dist/crdt/text/streams.js +1 -1
  179. package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
  180. package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
  181. package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
  182. package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
  183. package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
  184. package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
  185. package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
  186. package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
  187. package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
  188. package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
  189. package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
  190. package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
  191. package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
  192. package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
  193. package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
  194. package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
  195. package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
  196. package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
  197. package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
  198. package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
  199. package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
  200. package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
  201. package/dist/crdt/vendor/yjs/global.d.ts +5 -26
  202. package/dist/crdt/vendor/yjs/src/index.js +11 -25
  203. package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
  204. package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
  205. package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
  206. package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
  207. package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
  208. package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
  209. package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
  210. package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
  211. package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
  212. package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
  213. package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
  214. package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
  215. package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
  216. package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
  217. package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
  218. package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
  219. package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
  220. package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
  221. package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
  222. package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
  223. package/dist/dnd/autoScroll.js +1 -2
  224. package/dist/dnd/pragmatic.d.ts +4 -22
  225. package/dist/dnd/pragmatic.js +7 -26
  226. package/dist/dnd/track.d.ts +14 -0
  227. package/dist/dnd/track.js +55 -0
  228. package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
  229. package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
  230. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
  231. package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
  232. package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
  233. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
  234. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
  235. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
  236. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
  237. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
  238. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
  239. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
  240. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
  241. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
  242. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
  243. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
  244. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
  245. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
  246. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
  247. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
  248. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
  249. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
  250. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
  251. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
  252. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
  253. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
  254. 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
  255. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
  256. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
  257. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
  258. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
  259. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
  260. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
  261. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
  262. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
  263. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
  264. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
  265. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
  266. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
  267. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
  268. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
  269. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
  270. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
  271. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
  272. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
  273. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
  274. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
  275. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
  276. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
  277. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
  278. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
  279. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
  280. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
  281. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
  282. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
  283. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
  284. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
  285. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
  286. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
  287. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
  288. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
  289. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
  290. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
  291. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
  292. package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
  293. package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
  294. package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
  295. package/dist/edytor.svelte.d.ts +34 -64
  296. package/dist/edytor.svelte.js +116 -180
  297. package/dist/events/beforeInputCommands.d.ts +6 -11
  298. package/dist/events/beforeInputCommands.js +185 -181
  299. package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
  300. package/dist/events/beforeInputDeleteCommands.js +153 -204
  301. package/dist/events/domTextOffset.d.ts +9 -9
  302. package/dist/events/domTextOffset.js +20 -48
  303. package/dist/events/events.utils.d.ts +0 -2
  304. package/dist/events/events.utils.js +0 -4
  305. package/dist/events/nativeInteractiveControl.d.ts +13 -13
  306. package/dist/events/nativeInteractiveControl.js +28 -56
  307. package/dist/events/onBeforeInput.d.ts +6 -1
  308. package/dist/events/onBeforeInput.js +207 -331
  309. package/dist/events/onCopy.js +1 -5
  310. package/dist/events/onDrop.d.ts +1 -1
  311. package/dist/events/onDrop.js +27 -69
  312. package/dist/events/onFocus.d.ts +9 -4
  313. package/dist/events/onFocus.js +45 -67
  314. package/dist/events/onInput.d.ts +8 -4
  315. package/dist/events/onInput.js +34 -147
  316. package/dist/events/onKeyDown.js +55 -122
  317. package/dist/events/onPaste.d.ts +13 -1
  318. package/dist/events/onPaste.js +46 -76
  319. package/dist/index.d.ts +10 -14
  320. package/dist/index.js +3 -3
  321. package/dist/kinds.d.ts +4 -6
  322. package/dist/kinds.js +28 -27
  323. package/dist/labels.d.ts +81 -320
  324. package/dist/labels.js +180 -408
  325. package/dist/plugins/Chrome.svelte +29 -0
  326. package/dist/plugins/Chrome.svelte.d.ts +32 -0
  327. package/dist/plugins/Control.svelte +23 -0
  328. package/dist/plugins/Control.svelte.d.ts +30 -0
  329. package/dist/plugins/anchored.svelte.d.ts +47 -0
  330. package/dist/plugins/anchored.svelte.js +73 -0
  331. package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
  332. package/dist/plugins/arrowMove/arrowMove.js +9 -5
  333. package/dist/plugins/bands.svelte.d.ts +57 -0
  334. package/dist/plugins/bands.svelte.js +95 -0
  335. package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
  336. package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
  337. package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +39 -94
  338. package/dist/plugins/blockHandles/BlockHandleController.svelte.js +190 -247
  339. package/dist/plugins/blockHandles/BlockHandles.svelte +27 -17
  340. package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
  341. package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
  342. package/dist/plugins/blockHandles/blockHandlesPlugin.js +129 -185
  343. package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
  344. package/dist/plugins/blockHandles/dragPreview.js +18 -16
  345. package/dist/plugins/blockHandles/dropIndicator.js +52 -60
  346. package/dist/plugins/blockHandles/geometry.d.ts +2 -1
  347. package/dist/plugins/blockHandles/geometry.js +6 -6
  348. package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
  349. package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
  350. package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
  351. package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
  352. package/dist/plugins/brand.d.ts +8 -0
  353. package/dist/plugins/brand.js +8 -0
  354. package/dist/plugins/chrome.d.ts +45 -38
  355. package/dist/plugins/chrome.js +59 -36
  356. package/dist/plugins/code/CodeHeader.svelte +3 -35
  357. package/dist/plugins/code/CodePlugin.svelte +50 -53
  358. package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
  359. package/dist/plugins/code/LanguageMenu.svelte +16 -125
  360. package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
  361. package/dist/plugins/code/code.css +5 -117
  362. package/dist/plugins/code/header.svelte.d.ts +2 -11
  363. package/dist/plugins/code/header.svelte.js +11 -38
  364. package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
  365. package/dist/plugins/code/languageMenu.svelte.js +30 -160
  366. package/dist/plugins/code/languages.d.ts +9 -19
  367. package/dist/plugins/code/languages.js +39 -126
  368. package/dist/plugins/columns/ColumnResize.svelte +13 -25
  369. package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
  370. package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
  371. package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
  372. package/dist/plugins/columns/columns.css +7 -26
  373. package/dist/plugins/columns/resize.svelte.d.ts +14 -51
  374. package/dist/plugins/columns/resize.svelte.js +70 -164
  375. package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
  376. package/dist/plugins/comments/CommentsController.svelte.js +14 -25
  377. package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
  378. package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
  379. package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
  380. package/dist/plugins/comments/commentsPlugin.js +12 -10
  381. package/dist/plugins/equation/EquationEditor.svelte +16 -130
  382. package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
  383. package/dist/plugins/equation/EquationPlugin.svelte +109 -165
  384. package/dist/plugins/equation/EquationPlugin.svelte.d.ts +2 -2
  385. package/dist/plugins/equation/EquationView.svelte +20 -11
  386. package/dist/plugins/equation/equation.svelte.d.ts +37 -24
  387. package/dist/plugins/equation/equation.svelte.js +20 -94
  388. package/dist/plugins/equation/katex.js +6 -9
  389. package/dist/plugins/find/FindController.svelte.d.ts +8 -13
  390. package/dist/plugins/find/FindController.svelte.js +34 -55
  391. package/dist/plugins/find/findPlugin.d.ts +4 -8
  392. package/dist/plugins/find/findPlugin.js +29 -9
  393. package/dist/plugins/image/ImageChrome.svelte +6 -167
  394. package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
  395. package/dist/plugins/image/ImagePlugin.svelte +45 -134
  396. package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -42
  397. package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
  398. package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
  399. package/dist/plugins/image/controls.svelte.d.ts +6 -36
  400. package/dist/plugins/image/controls.svelte.js +43 -212
  401. package/dist/plugins/image/image.d.ts +0 -5
  402. package/dist/plugins/image/image.js +0 -3
  403. package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
  404. package/dist/plugins/image/toolbar.svelte.js +145 -0
  405. package/dist/plugins/index.d.ts +31 -26
  406. package/dist/plugins/index.js +29 -22
  407. package/dist/plugins/list.svelte.d.ts +128 -0
  408. package/dist/plugins/list.svelte.js +217 -0
  409. package/dist/plugins/markdownShortcuts.d.ts +1 -1
  410. package/dist/plugins/markdownShortcuts.js +6 -5
  411. package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
  412. package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
  413. package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
  414. package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
  415. package/dist/plugins/marquee/marquee.js +4 -21
  416. package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
  417. package/dist/plugins/marquee/marqueePlugin.js +16 -15
  418. package/dist/plugins/media/AudioPlugin.svelte +3 -90
  419. package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
  420. package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
  421. package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
  422. package/dist/plugins/media/EmbedPlugin.svelte +82 -86
  423. package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
  424. package/dist/plugins/media/EmptySlot.svelte +44 -0
  425. package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
  426. package/dist/plugins/media/FilePlugin.svelte +35 -113
  427. package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
  428. package/dist/plugins/media/MediaEmpty.svelte +51 -90
  429. package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
  430. package/dist/plugins/media/SourceBlock.svelte +164 -0
  431. package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
  432. package/dist/plugins/media/VideoPlugin.svelte +4 -99
  433. package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
  434. package/dist/plugins/media/empty.svelte.d.ts +36 -44
  435. package/dist/plugins/media/empty.svelte.js +41 -45
  436. package/dist/plugins/media/media.d.ts +90 -44
  437. package/dist/plugins/media/media.js +77 -99
  438. package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
  439. package/dist/plugins/media/urlPaste.svelte.js +32 -102
  440. package/dist/plugins/mention/MentionPlugin.svelte +42 -123
  441. package/dist/plugins/mention/MentionPlugin.svelte.d.ts +6 -25
  442. package/dist/plugins/page/PageLink.svelte +54 -38
  443. package/dist/plugins/page/PagePlugin.svelte +20 -18
  444. package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
  445. package/dist/plugins/page/page.d.ts +35 -9
  446. package/dist/plugins/page/page.js +3 -4
  447. package/dist/plugins/pageLink/PageLinkPlugin.svelte +47 -107
  448. package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +6 -25
  449. package/dist/plugins/planned.d.ts +10 -0
  450. package/dist/plugins/planned.js +12 -0
  451. package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
  452. package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
  453. package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
  454. package/dist/plugins/richtext/EmptyBody.svelte +13 -20
  455. package/dist/plugins/richtext/RichTextControl.svelte +39 -0
  456. package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
  457. package/dist/plugins/richtext/RichTextPlugin.svelte +161 -177
  458. package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +33 -34
  459. package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
  460. package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
  461. package/dist/plugins/richtext/body.js +2 -2
  462. package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
  463. package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
  464. package/dist/plugins/richtext/callouts.d.ts +15 -0
  465. package/dist/plugins/richtext/callouts.js +23 -0
  466. package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
  467. package/dist/plugins/richtext/controls.svelte.js +126 -0
  468. package/dist/plugins/richtext/richTextOperations.js +37 -28
  469. package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
  470. package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
  471. package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
  472. package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
  473. package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
  474. package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
  475. package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
  476. package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
  477. package/dist/plugins/table/TableChrome.svelte +40 -124
  478. package/dist/plugins/table/TablePlugin.svelte +106 -168
  479. package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
  480. package/dist/plugins/table/chrome.svelte.d.ts +38 -141
  481. package/dist/plugins/table/chrome.svelte.js +339 -589
  482. package/dist/plugins/table/ops.d.ts +47 -0
  483. package/dist/plugins/table/ops.js +233 -0
  484. package/dist/plugins/table/table.css +16 -152
  485. package/dist/plugins/table/table.d.ts +15 -14
  486. package/dist/plugins/table/table.js +22 -16
  487. package/dist/plugins/toc/TableOfContents.svelte +32 -38
  488. package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
  489. package/dist/plugins/toc/TocPlugin.svelte +22 -22
  490. package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
  491. package/dist/plugins/toc/toc.d.ts +41 -10
  492. package/dist/plugins/toc/toc.js +2 -3
  493. package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
  494. package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
  495. package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
  496. package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
  497. package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
  498. package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
  499. package/dist/plugins/triggers/place.d.ts +0 -9
  500. package/dist/plugins/triggers/place.js +1 -17
  501. package/dist/plugins/triggers/triggers.d.ts +31 -9
  502. package/dist/plugins/triggers/triggers.js +82 -62
  503. package/dist/plugins/uploads.svelte.d.ts +38 -20
  504. package/dist/plugins/uploads.svelte.js +39 -32
  505. package/dist/plugins.d.ts +154 -59
  506. package/dist/selection/domSelection.d.ts +13 -4
  507. package/dist/selection/domSelection.js +110 -183
  508. package/dist/selection/pointer.svelte.d.ts +8 -10
  509. package/dist/selection/pointer.svelte.js +32 -73
  510. package/dist/selection/replaceSelection.d.ts +21 -22
  511. package/dist/selection/replaceSelection.js +60 -69
  512. package/dist/selection/selection.svelte.d.ts +5 -73
  513. package/dist/selection/selection.svelte.js +224 -542
  514. package/dist/selection/selection.utils.d.ts +34 -11
  515. package/dist/selection/selection.utils.js +128 -247
  516. package/dist/selection/visibility.d.ts +3 -8
  517. package/dist/selection/visibility.js +7 -5
  518. package/dist/session/announcer.svelte.d.ts +2 -1
  519. package/dist/session/announcer.svelte.js +7 -3
  520. package/dist/session/attempt.d.ts +33 -39
  521. package/dist/session/attempt.js +61 -55
  522. package/dist/session/bindings.js +108 -139
  523. package/dist/session/commands.d.ts +47 -22
  524. package/dist/session/commands.js +206 -208
  525. package/dist/session/composition.svelte.d.ts +2 -4
  526. package/dist/session/composition.svelte.js +55 -65
  527. package/dist/session/editing/text.d.ts +6 -0
  528. package/dist/session/editing/text.js +17 -3
  529. package/dist/session/handles.d.ts +10 -1
  530. package/dist/session/handles.js +28 -0
  531. package/dist/session/history.d.ts +0 -4
  532. package/dist/session/history.js +15 -21
  533. package/dist/session/inputRules.js +75 -84
  534. package/dist/session/keymap.d.ts +1 -6
  535. package/dist/session/keymap.js +17 -20
  536. package/dist/session/moves.d.ts +10 -10
  537. package/dist/session/moves.js +31 -59
  538. package/dist/session/navigation.d.ts +3 -2
  539. package/dist/session/navigation.js +127 -168
  540. package/dist/session/ports.d.ts +2 -7
  541. package/dist/session/selection.d.ts +4 -3
  542. package/dist/session/selection.js +5 -0
  543. package/dist/session/suggestions.svelte.d.ts +1 -1
  544. package/dist/session/suggestions.svelte.js +42 -47
  545. package/dist/session/virtual.d.ts +3 -3
  546. package/dist/session/virtual.js +18 -40
  547. package/dist/surface/attributes.d.ts +1 -0
  548. package/dist/surface/attributes.js +3 -26
  549. package/dist/surface/cells.d.ts +5 -0
  550. package/dist/surface/cells.js +5 -0
  551. package/dist/surface/lines.d.ts +2 -2
  552. package/dist/surface/lines.js +1 -1
  553. package/dist/surface/observer.svelte.d.ts +3 -20
  554. package/dist/surface/observer.svelte.js +52 -72
  555. package/dist/surface/overlay.d.ts +41 -3
  556. package/dist/surface/overlay.js +92 -37
  557. package/dist/surface/pin.svelte.d.ts +5 -0
  558. package/dist/surface/pin.svelte.js +5 -0
  559. package/dist/surface/projector.svelte.d.ts +4 -6
  560. package/dist/surface/projector.svelte.js +42 -69
  561. package/dist/text/text.svelte.d.ts +14 -40
  562. package/dist/text/text.svelte.js +35 -51
  563. package/dist/text/wordBoundary.d.ts +19 -0
  564. package/dist/text/wordBoundary.js +29 -44
  565. package/dist/themes/notion.css +263 -106
  566. package/dist/utils/json.d.ts +3 -1
  567. package/dist/utils/json.js +52 -51
  568. package/dist/utils/listen.d.ts +8 -0
  569. package/dist/utils/listen.js +19 -0
  570. package/package.json +4 -5
  571. package/dist/block/block.utils.d.ts +0 -340
  572. package/dist/block/block.utils.js +0 -356
  573. package/dist/collaboration/history/HistoryPanel.svelte +0 -554
  574. package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
  575. package/dist/collaboration/history/panel.d.ts +0 -61
  576. package/dist/collaboration/history/panel.js +0 -3
  577. package/dist/components/SuggestionRanges.svelte +0 -58
  578. package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
  579. package/dist/crdt/doc/table.d.ts +0 -21
  580. package/dist/crdt/doc/table.js +0 -288
  581. package/dist/crdt/migration/generation.d.ts +0 -58
  582. package/dist/crdt/migration/generation.js +0 -70
  583. package/dist/crdt/migration/legacy-schema.d.ts +0 -61
  584. package/dist/crdt/migration/legacy-schema.js +0 -151
  585. package/dist/crdt/migration/migrate.d.ts +0 -56
  586. package/dist/crdt/migration/migrate.js +0 -227
  587. package/dist/crdt/nodes.d.ts +0 -121
  588. package/dist/crdt/nodes.js +0 -56
  589. package/dist/crdt/text/index/checks.d.ts +0 -15
  590. package/dist/crdt/text/index/checks.js +0 -156
  591. package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
  592. package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
  593. package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
  594. package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
  595. package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
  596. package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
  597. package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
  598. package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
  599. package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
  600. package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
  601. package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
  602. package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
  603. package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
  604. package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
  605. package/dist/edytor.utils.d.ts +0 -50
  606. package/dist/edytor.utils.js +0 -67
  607. package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
  608. package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
  609. package/dist/plugins/find/FindBar.svelte +0 -170
  610. package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
  611. package/dist/plugins/find/FindHighlights.svelte +0 -75
  612. package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
  613. package/dist/plugins/icons.d.ts +0 -2
  614. package/dist/plugins/icons.js +0 -63
  615. package/dist/plugins/image/ImageEmpty.svelte +0 -93
  616. package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
  617. package/dist/plugins/image/empty.svelte.d.ts +0 -56
  618. package/dist/plugins/image/empty.svelte.js +0 -83
  619. package/dist/plugins/keepInView.d.ts +0 -4
  620. package/dist/plugins/keepInView.js +0 -6
  621. package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
  622. package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
  623. package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
  624. package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
  625. package/dist/plugins/richtext/labels.d.ts +0 -9
  626. package/dist/plugins/richtext/labels.js +0 -7
  627. package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
  628. package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
  629. package/dist/plugins/table/dragPreview.d.ts +0 -29
  630. package/dist/plugins/table/dragPreview.js +0 -103
  631. package/dist/plugins/toolbar/LinkCard.svelte +0 -122
  632. package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
  633. package/dist/plugins/toolbar/Toolbar.svelte +0 -349
  634. package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
  635. package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
  636. package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
  637. package/dist/session/props.d.ts +0 -28
  638. package/dist/session/props.js +0 -162
  639. package/dist/text/deltas.d.ts +0 -22
  640. package/dist/text/deltas.js +0 -46
  641. package/dist/text/text.utils.d.ts +0 -45
  642. package/dist/text/text.utils.js +0 -199
@@ -4,9 +4,12 @@
4
4
  import type { Block } from '../../block/block.svelte.js';
5
5
  import type { Edytor } from '../../edytor.svelte.js';
6
6
  import { tableKinds } from '../../crdt/semantics.js';
7
- import { tableBlock, unlistedOrder } from '../../crdt/tables.js';
7
+ import { listedColumns, tableBlock, unlistedOrder } from '../../crdt/tables.js';
8
8
  import { onPress } from '../../events/onFocus.js';
9
- import { keywordsOf, labelsWith, viewLabels } from '../../labels.js';
9
+ import { all } from '../../utils/listen.js';
10
+ import type { HotKey } from '../../session/keymap.js';
11
+ import { tableEnglish, keywordsOf, labelsOf, type TableLabels } from '../../labels.js';
12
+ import { hoverChrome } from '../bands.svelte.js';
10
13
  import TableChromeLayer from './TableChrome.svelte';
11
14
  import { TableChrome } from './chrome.svelte.js';
12
15
  import {
@@ -17,6 +20,7 @@
17
20
  gridOf,
18
21
  insertColumn,
19
22
  insertRow,
23
+ kebab,
20
24
  positionOf,
21
25
  tableOf,
22
26
  tabFrom,
@@ -28,21 +32,8 @@
28
32
 
29
33
  export type { TablePluginOptions };
30
34
 
31
- const tablePlugins = new WeakSet<Plugin>();
32
35
  /** Each view's chrome (the first table plugin listed in it claims the view). */
33
36
  const chromes = new WeakMap<Edytor, TableChrome>();
34
- const labelsOf = viewLabels('table');
35
-
36
- /** Recognize any table plugin instance. */
37
- export const isTablePlugin = (plugin: Plugin) => tablePlugins.has(plugin);
38
-
39
- /** The ids of a row's cell, its row and its table, from the handle (stable while it shows). */
40
- const parentsOf = (edytor: Edytor, id: string | undefined) => {
41
- const cell = id ? edytor.idToBlock.get(id) : undefined;
42
- const row = cell?.parent;
43
- const table = row?.parent;
44
- return { cell, row, table };
45
- };
46
37
 
47
38
  /**
48
39
  * The column ids `table`'s rows show, read from the cells (reactive), as
@@ -52,14 +43,9 @@
52
43
  */
53
44
  const columnsOfTable = (edytor: Edytor, table: string): string[] => {
54
45
  const cell = edytor.cells?.get(table);
55
- const listed = cell?.data?.columns;
56
- if (Array.isArray(listed)) {
57
- const ids = new Set(
58
- listed.flatMap((c) => {
59
- const id = (c as { id?: unknown } | null)?.id;
60
- return typeof id === 'string' ? [id] : [];
61
- })
62
- );
46
+ const listed = listedColumns(cell?.data);
47
+ if (listed !== null) {
48
+ const ids = new Set(listed);
63
49
  const unlisted = (cell?.childIds ?? []).flatMap((row) =>
64
50
  (edytor.cells?.get(row)?.childIds ?? []).flatMap((id) => {
65
51
  const column = edytor.cells?.get(id)?.data?.column;
@@ -84,15 +70,10 @@
84
70
  * listed ones.
85
71
  */
86
72
  const columnIndex = (edytor: Edytor, table: string, row: string, id: string): number => {
87
- const listed = edytor.cells?.get(table)?.data?.columns;
88
- if (!Array.isArray(listed)) return edytor.cells?.get(row)?.childIds.indexOf(id) ?? -1;
73
+ const ids = listedColumns(edytor.cells?.get(table)?.data);
74
+ if (ids === null) return edytor.cells?.get(row)?.childIds.indexOf(id) ?? -1;
89
75
  const column = edytor.cells?.get(id)?.data?.column;
90
76
  if (typeof column !== 'string') return -1;
91
- const ids: string[] = [];
92
- for (const c of listed) {
93
- const at = (c as { id?: unknown } | null)?.id;
94
- if (typeof at === 'string' && !ids.includes(at)) ids.push(at);
95
- }
96
77
  const index = ids.indexOf(column);
97
78
  return index !== -1 ? index : columnsOfTable(edytor, table).indexOf(column);
98
79
  };
@@ -118,23 +99,20 @@
118
99
  const minColumnWidth = options.minColumnWidth ?? 48;
119
100
  const fresh = tableBlock({ rows: options.rows ?? 3, columns: options.columns ?? 3 });
120
101
  const plugin: Plugin = (edytor) => {
121
- const labels = labelsWith('table', options.labels);
122
- labelsOf.claim(edytor, labels);
123
- const chrome =
124
- chromes.get(edytor) ?? new TableChrome(edytor, labels, columnWidth, minColumnWidth);
102
+ const labels = labelsOf(edytor, 'table', tableEnglish);
103
+ const chrome = chromes.get(edytor) ?? new TableChrome(edytor, columnWidth, minColumnWidth);
125
104
  chromes.set(edytor, chrome);
126
105
  /** A cell's element: its role, its column, and whether a header row or column holds it. */
127
- const cellElement = (data: Record<string, unknown>, id?: string) => {
128
- const { row, table } = parentsOf(edytor, id);
129
- const tableId = table?.id;
130
- if (!id || !row?.id || !tableId)
106
+ const cellElement = (_: unknown, id?: string) => {
107
+ // The ids of its row and its table, from the handle (stable while it shows).
108
+ const row = id ? edytor.idToBlock.get(id)?.parent : undefined;
109
+ const table = row?.parent?.id;
110
+ if (!id || !row?.id || !table)
131
111
  return { tag: 'div', attributes: { 'data-edytor-table-cell': '' } };
132
- const tableData = edytor.cells?.get(tableId)?.data;
133
- const rowIndex = edytor.cells?.get(tableId)?.childIds.indexOf(row.id) ?? -1;
134
- const column = columnIndex(edytor, tableId, row.id, id);
135
- const headerRow = tableData?.headerRow === true && rowIndex === 0;
136
- const headerColumn = tableData?.headerColumn === true && column === 0;
137
- void data;
112
+ const cell = edytor.cells?.get(table);
113
+ const column = columnIndex(edytor, table, row.id, id);
114
+ const headerRow = cell?.data?.headerRow === true && cell.childIds.indexOf(row.id) === 0;
115
+ const headerColumn = cell?.data?.headerColumn === true && column === 0;
138
116
  return {
139
117
  tag: 'div',
140
118
  attributes: {
@@ -148,55 +126,55 @@
148
126
  /**
149
127
  * The block menu's row and column actions on `table`: at the row and
150
128
  * column of the cell the caret was last in (`chrome.cell`), else the
151
- * last row and column. An insert puts the caret in the new cells.
129
+ * last row and column (an insert puts the caret in the new cells);
130
+ * then its Header row and Header column switches.
152
131
  */
153
- const rowsOf = (table: Block): KindMenuAction[] => {
132
+ const menuOf = (table: Block): KindMenuAction[] => {
133
+ const action = (key: keyof TableLabels, icon: string, run: () => unknown) => ({
134
+ id: `table.${kebab(key)}`,
135
+ label: labels[key] as string,
136
+ icon,
137
+ run
138
+ });
139
+ const switches = (['headerRow', 'headerColumn'] as const).map((flag) => ({
140
+ ...action(flag, `table.${kebab(flag)}`, () => toggleHeader(table, flag)),
141
+ checked: table.data[flag] === true
142
+ }));
154
143
  const grid = gridOf(table);
155
- if (!grid || grid.rows.length === 0) return [];
144
+ if (!grid || grid.rows.length === 0) return switches;
156
145
  const cell = chrome.cell ? edytor.idToBlock.get(chrome.cell) : undefined;
157
146
  const at = cell && tableOf(cell)?.id === table.id ? positionOf(cell) : null;
158
147
  const row = at?.row ?? grid.rows.length - 1;
159
148
  const column = at?.column ?? grid.columns.length - 1;
160
149
  const rowBlock = edytor.idToBlock.get(grid.rows[row]!.id);
161
150
  return [
162
- {
163
- id: 'table.insert-row-above',
164
- label: labels.insertRowAbove,
165
- icon: 'action.up',
166
- run: () => insertRow(table, row, true)
167
- },
168
- {
169
- id: 'table.insert-row-below',
170
- label: labels.insertRowBelow,
171
- icon: 'action.down',
172
- run: () => insertRow(table, row + 1, true)
173
- },
174
- {
175
- id: 'table.insert-column-left',
176
- label: labels.insertColumnLeft,
177
- icon: 'table.left',
178
- run: () => insertColumn(table, column, undefined, row)
179
- },
180
- {
181
- id: 'table.insert-column-right',
182
- label: labels.insertColumnRight,
183
- icon: 'table.right',
184
- run: () => insertColumn(table, column + 1, undefined, row)
185
- },
186
- {
187
- id: 'table.delete-row',
188
- label: labels.deleteRow,
189
- icon: 'action.delete',
190
- run: () => rowBlock && deleteRows(table, [rowBlock])
191
- },
192
- {
193
- id: 'table.delete-column',
194
- label: labels.deleteColumn,
195
- icon: 'action.delete',
196
- run: () => deleteColumn(table, column)
197
- }
151
+ action('insertRowAbove', 'action.up', () => insertRow(table, row, true)),
152
+ action('insertRowBelow', 'action.down', () => insertRow(table, row + 1, true)),
153
+ action('insertColumnLeft', 'table.left', () =>
154
+ insertColumn(table, column, undefined, row)
155
+ ),
156
+ action('insertColumnRight', 'table.right', () =>
157
+ insertColumn(table, column + 1, undefined, row)
158
+ ),
159
+ action('deleteRow', 'action.delete', () => rowBlock && deleteRows(table, [rowBlock])),
160
+ action('deleteColumn', 'action.delete', () => deleteColumn(table, column)),
161
+ ...switches
198
162
  ];
199
163
  };
164
+ /** Tab and Shift+Tab (`step`) walk the cells, unless blocks are selected. */
165
+ const tab =
166
+ (step: 1 | -1): HotKey =>
167
+ ({ prevent }) => {
168
+ const cell = caretCell(edytor);
169
+ if (cell && !edytor.selection.selectedBlocks.size) prevent(() => tabFrom(cell, step));
170
+ };
171
+ /** ArrowUp and ArrowDown (`step`) go to the cell above and below. */
172
+ const vertical =
173
+ (step: 1 | -1): HotKey =>
174
+ ({ prevent }) => {
175
+ const cell = caretCell(edytor);
176
+ if (cell && verticalFrom(cell, step)) prevent();
177
+ };
200
178
  return {
201
179
  onSelectionChange: () => {
202
180
  if (chromes.get(edytor) === chrome) chrome.track();
@@ -220,31 +198,17 @@
220
198
  {
221
199
  label: labels.table,
222
200
  data: fresh.data,
223
- keywords: keywordsOf(
224
- 'block.table',
225
- ['table', 'grid', 'simple table', 'rows', 'columns'],
226
- options.keywords
227
- ),
201
+ keywords: keywordsOf(edytor, 'block.table', [
202
+ 'table',
203
+ 'grid',
204
+ 'simple table',
205
+ 'rows',
206
+ 'columns'
207
+ ]),
228
208
  group: 'Advanced blocks'
229
209
  }
230
210
  ],
231
- menu: (block) => [
232
- ...rowsOf(block),
233
- {
234
- id: 'table.header-row',
235
- label: labels.headerRow,
236
- icon: 'table.header-row',
237
- checked: block.data.headerRow === true,
238
- run: () => toggleHeader(block, 'headerRow')
239
- },
240
- {
241
- id: 'table.header-column',
242
- label: labels.headerColumn,
243
- icon: 'table.header-column',
244
- checked: block.data.headerColumn === true,
245
- run: () => toggleHeader(block, 'headerColumn')
246
- }
247
- ],
211
+ menu: menuOf,
248
212
  html: (block, _, children) => tableHtml(block.data ?? {}, children),
249
213
  plain: (_, __, children) => children,
250
214
  parse: (element) => (element.localName === 'table' ? parseTable(element) : undefined)
@@ -267,79 +231,53 @@
267
231
  }
268
232
  },
269
233
  hotkeys: {
270
- tab: ({ prevent }) => {
271
- const cell = caretCell(edytor);
272
- if (cell && !edytor.selection.selectedBlocks.size) prevent(() => tabFrom(cell, 1));
273
- },
274
- 'shift+tab': ({ prevent }) => {
275
- const cell = caretCell(edytor);
276
- if (cell && !edytor.selection.selectedBlocks.size) prevent(() => tabFrom(cell, -1));
277
- },
278
- arrowup: ({ prevent }) => {
279
- const cell = caretCell(edytor);
280
- if (cell && verticalFrom(cell, -1)) prevent();
281
- },
282
- arrowdown: ({ prevent }) => {
283
- const cell = caretCell(edytor);
284
- if (cell && verticalFrom(cell, 1)) prevent();
285
- }
234
+ tab: tab(1),
235
+ 'shift+tab': tab(-1),
236
+ arrowup: vertical(-1),
237
+ arrowdown: vertical(1)
286
238
  },
287
239
  onEdytorAttached: ({ node }) => {
288
240
  if (chromes.get(edytor) !== chrome) return;
289
- const over = (event: PointerEvent) => chrome.hover(event.target);
290
- const leave = (event: PointerEvent) => chrome.leave(event.relatedTarget);
291
241
  const layer = edytor.overlay.layer;
292
- const document = node.ownerDocument;
293
- // Another drag (a block's) hides the chrome; a grip's own drag keeps it (`table.drag`).
294
- const drag = (event: Event) =>
295
- (chrome.dragging =
296
- event.type === 'dragstart' &&
297
- !(event.target instanceof Node && layer?.contains(event.target)));
298
- node.addEventListener('pointerover', over);
299
- node.addEventListener('pointerleave', leave);
300
- layer?.addEventListener('pointerleave', leave);
301
- document.addEventListener('dragstart', drag, true);
302
- document.addEventListener('dragend', drag, true);
303
- document.addEventListener('drop', drag, true);
304
- // A press outside an open grip menu closes it.
305
- const outside = onPress(
306
- edytor,
307
- document,
308
- (event) => {
309
- const target = event.target as Node | null;
310
- if (!chrome.menu || (target && layer?.contains(target))) return;
311
- chrome.menu = null;
312
- edytor.overlay.invalidate();
313
- },
314
- true
315
- );
316
- const unmount = edytor.overlay.mount(
317
- TableChromeLayer,
318
- { chrome, grip: options.grip, menu: options.menu, add: options.add },
319
- 'edytor-table-chrome',
320
- 6,
321
- chrome.measure
242
+ const off = all(
243
+ hoverChrome(
244
+ edytor,
245
+ node,
246
+ chrome.hover,
247
+ chrome.leave,
248
+ // Another drag (a block's) hides the chrome; a grip's own drag keeps it (`table.drag`).
249
+ (event) =>
250
+ (chrome.dragging =
251
+ event.type === 'dragstart' &&
252
+ !(event.target instanceof Node && layer?.contains(event.target)))
253
+ ),
254
+ // A press outside an open grip menu closes it.
255
+ onPress(
256
+ edytor,
257
+ node.ownerDocument,
258
+ (event) => {
259
+ const target = event.target as Node | null;
260
+ if (!chrome.menu || (target && layer?.contains(target))) return;
261
+ chrome.menu = null;
262
+ edytor.overlay.invalidate();
263
+ },
264
+ true
265
+ ),
266
+ edytor.overlay.mount(
267
+ TableChromeLayer,
268
+ { chrome, grip: options.grip, menu: options.menu, add: options.add },
269
+ 'edytor-table-chrome',
270
+ 6,
271
+ chrome.measure
272
+ )
322
273
  );
323
- return () => {
324
- node.removeEventListener('pointerover', over);
325
- node.removeEventListener('pointerleave', leave);
326
- layer?.removeEventListener('pointerleave', leave);
327
- document.removeEventListener('dragstart', drag, true);
328
- document.removeEventListener('dragend', drag, true);
329
- document.removeEventListener('drop', drag, true);
330
- outside();
331
- unmount();
332
- };
274
+ return off;
333
275
  }
334
276
  };
335
277
  };
336
- tablePlugins.add(plugin);
337
278
  return plugin;
338
279
  };
339
280
 
340
- /** The table with the default options. */
341
- export const tablePlugin = createTablePlugin();
342
-
343
281
  /** `table`'s grid template: each column's width (the resize preview while a band drags it). */
344
282
  const templateOf = (view: BlockView) => {
345
283
  const edytor = view.handle?.edytor;
@@ -440,7 +378,7 @@
440
378
 
441
379
  <!-- A row: its cells, then a placeholder in each column it shows none of (`table.pad`). -->
442
380
  {#snippet row({ block, children }: BlockSnippetPayload)}
443
- {@const labels = labelsOf.of(block.handle?.edytor)}
381
+ {@const labels = labelsOf(block.handle?.edytor, 'table', tableEnglish)}
444
382
  <div data-edytor-children data-edytor-table-cells>
445
383
  {@render children?.()}<!--
446
384
  -->{#each padsOf(block) as column (column)}
@@ -2,8 +2,6 @@ import './table.css';
2
2
  import type { Plugin } from '../../plugins.js';
3
3
  import { type TablePluginOptions } from './table.js';
4
4
  export type { TablePluginOptions };
5
- /** Recognize any table plugin instance. */
6
- export declare const isTablePlugin: (plugin: Plugin) => boolean;
7
5
  /**
8
6
  * Notion's simple table (`table.*` in the delete contract): a `table` of
9
7
  * `tableRow`s of `tableCell`s, each cell a text island whose lines are line
@@ -21,8 +19,6 @@ export declare const isTablePlugin: (plugin: Plugin) => boolean;
21
19
  * Not a default plugin; its roles are in `defaultSemantics`.
22
20
  */
23
21
  export declare const createTablePlugin: (options?: TablePluginOptions) => Plugin;
24
- /** The table with the default options. */
25
- export declare const tablePlugin: Plugin;
26
22
  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> {
27
23
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
28
24
  $$bindings?: Bindings;
@@ -1,46 +1,32 @@
1
1
  import type { Attachment } from 'svelte/attachments';
2
2
  import type { Edytor } from '../../edytor.svelte.js';
3
- import type { TableLabels } from '../../labels.js';
4
- import { type MenuItemPayload, type OptionAttributes } from '../chrome.js';
5
- /** What a grip's menu acts on: a row of a table (its block id), or a column (its position). */
3
+ import { type MenuItemPayload } from '../chrome.js';
4
+ import { ChromeList } from '../list.svelte.js';
5
+ type Kind = 'row' | 'column';
6
+ /** What a grip's menu acts on: a row (its block id) or a column (its id) of a table. */
6
7
  export type TableMenu = {
7
- kind: 'row';
8
+ kind: Kind;
8
9
  table: string;
9
- row: string;
10
- } | {
11
- kind: 'column';
12
- table: string;
13
- column: number;
10
+ id: string;
14
11
  };
15
- /** A row of a grip's menu (insert, move, delete). */
12
+ /**
13
+ * A row of a grip's menu: `insert-above`, `insert-below`, `move-up`,
14
+ * `move-down`, `delete-row`; `insert-left`, `insert-right`, `move-left`,
15
+ * `move-right`, `delete-column`.
16
+ */
16
17
  export type TableMenuRow = {
17
- /**
18
- * `insert-above`, `insert-below`, `move-up`, `move-down`, `delete-row`;
19
- * `insert-left`, `insert-right`, `move-left`, `move-right`, `delete-column`.
20
- */
21
18
  id: string;
22
- /** Its words, in the plugin's labels. */
23
- label: string;
24
- /** Its built-in icon's name. */
25
- icon: string;
26
- /** It deletes. */
27
- danger?: boolean;
28
- /** Whether it can run now (Move up on the first row cannot). */
29
- isEnabled: () => boolean;
30
- run: () => unknown;
31
19
  };
32
20
  /**
33
- * One row of a grip's menu, for a custom `menu`: the row shape every menu
21
+ * One row of a grip's menu, for your `menu`: the row shape every menu
34
22
  * shares (`item` is the row, `run` runs it and closes the menu), with
35
- * whether it can run now, whether it deletes, and its built-in icon.
23
+ * whether it can run now and whether it deletes.
36
24
  */
37
25
  export type TableMenuItem = MenuItemPayload<TableMenuRow> & {
38
26
  /** It cannot run now (`aria-disabled`): the keys skip it, a click does nothing. */
39
27
  disabled: boolean;
40
28
  /** It deletes. */
41
29
  danger: boolean;
42
- /** The built-in line icon as a CSS `mask-image` value, when the row has one. */
43
- icon: string | undefined;
44
30
  };
45
31
  /**
46
32
  * What a `grip` snippet receives: the grip of the hovered row (left of the
@@ -48,11 +34,10 @@ export type TableMenuItem = MenuItemPayload<TableMenuRow> & {
48
34
  * `button`): it drags the row or the column, a click opens its menu,
49
35
  * ArrowDown opens it too and Escape closes it, and it carries the ARIA
50
36
  * (`aria-haspopup`, `aria-expanded`, `aria-controls` while its menu is
51
- * open, its name unless you set one). The plugin centers it where the
52
- * grip stands.
37
+ * open; name it). The plugin centers it where the grip stands.
53
38
  */
54
39
  export type TableGripPayload = {
55
- kind: 'row' | 'column';
40
+ kind: Kind;
56
41
  /** The row's block id, or the column's id. */
57
42
  id: string;
58
43
  /** Its position among the table's rows (columns). */
@@ -61,14 +46,10 @@ export type TableGripPayload = {
61
46
  expanded: boolean;
62
47
  /** It is being dragged. */
63
48
  dragging: boolean;
64
- /** Its accessible name (`labels.rowMenu`, `labels.columnMenu`). */
65
- label: string;
66
49
  /** Open its menu, or close it when it is open (what a click does). */
67
50
  toggle: () => void;
68
51
  /** The grip's behavior and ARIA: `{@attach grip}`. */
69
52
  grip: Attachment<HTMLElement>;
70
- /** The plugin's words. */
71
- labels: TableLabels;
72
53
  /** The table's chrome (its menu, its actions). */
73
54
  chrome: TableChrome;
74
55
  };
@@ -79,13 +60,9 @@ export type TableGripPayload = {
79
60
  * the editor's selection.
80
61
  */
81
62
  export type TableAddPayload = {
82
- kind: 'row' | 'column';
83
- /** Its accessible name (`labels.addRow`, `labels.addColumn`). */
84
- label: string;
63
+ kind: Kind;
85
64
  /** Add the row or the column. */
86
65
  add: () => void;
87
- /** The plugin's words. */
88
- labels: TableLabels;
89
66
  };
90
67
  /**
91
68
  * The table's chrome (`table.*`), in the overlay: while the pointer is over
@@ -99,25 +76,17 @@ export type TableAddPayload = {
99
76
  * drops the preview. Every action is a table command (`table.ts`): refused
100
77
  * when the view is readonly.
101
78
  *
102
- * What a custom `menu` snippet receives: the open menu (`menu`), its rows
79
+ * What a `menu` snippet receives: the open menu (`menu`), its rows
103
80
  * (`items`, each a `MenuItemPayload`), the keyboard's row (`index`), the
104
- * attachments that keep the built-in keys and ARIA (`popup` and `keys` on
105
- * the menu's element, `option(index)` spread on each row), `close()` and
106
- * the plugin's `labels`. A grip's own attachment is its payload's `grip`.
81
+ * attachments that give it the keys and the ARIA (`popup` and `keys` on
82
+ * the menu's element, `option(index)` on each row) and `close()`.
83
+ * A grip's own attachment is its payload's `grip`.
107
84
  */
108
- export declare class TableChrome {
85
+ export declare class TableChrome extends ChromeList {
109
86
  #private;
110
- /** The words the chrome shows and says (the plugin's `labels`). */
111
- readonly labels: TableLabels;
112
87
  /** What the open grip menu acts on (`null`: none is open). */
113
88
  menu: TableMenu | null;
114
- /** The keyboard's row of the open menu, in `rows` (never a disabled one). */
115
- index: number;
116
- constructor(
117
- /** @internal */
118
- edytor: Edytor,
119
- /** The words the chrome shows and says (the plugin's `labels`). */
120
- labels: TableLabels,
89
+ constructor(edytor: Edytor,
121
90
  /**
122
91
  * A column's width when it sets none, and the narrowest a resize leaves.
123
92
  * @internal
@@ -125,67 +94,34 @@ export declare class TableChrome {
125
94
  columnWidth: number,
126
95
  /** @internal */
127
96
  minColumnWidth: number);
97
+ protected get count(): number;
128
98
  /** The view is readonly (reactive): the chrome shows nothing. */
129
99
  get readonly(): boolean;
130
- /** The resize's width: the pointer's, between the minimum and the room's (`table.width.fit`). */
131
- private dragWidth;
132
100
  /**
133
- * The right neighbour's width while column `drag.column` is `dragWidth`
134
- * (`table.width.neighbour`): the column grows into the free room first,
135
- * then what it gains past it comes off its neighbour, down to the
136
- * minimum; a narrowing gives nothing back.
101
+ * Open the `kind` grip's menu on the row or column it stands for, its
102
+ * first row that can run the keyboard's, or close it when it is open
103
+ * there (a grip's click).
137
104
  */
138
- private nextWidth;
139
- /**
140
- * The widths `table`'s grid shows, by position (its columns' stored
141
- * widths, else the default one): what its template reads, the model's.
142
- */
143
- private widthsOf;
144
- /**
145
- * A resize of column `column` of `table`, pressed at `from` (`table.width.fit`,
146
- * `table.width.neighbour`): the column may grow by the room the table
147
- * leaves free and by what its right neighbour can give (down to the
148
- * minimum), so the table never gets wider; it may always narrow.
149
- */
150
- private resize;
151
- private read;
152
- /**
153
- * Open the menu of a row's or a column's grip (a second press on it
154
- * closes it), its first row that can run the keyboard's.
155
- */
156
- open: (menu: TableMenu) => void;
157
- /** Open the `kind` grip's menu on the row or column it stands for, or close it (a grip's click). */
158
- toggle: (kind: TableMenu["kind"]) => void;
105
+ toggle: (kind: Kind) => void;
159
106
  /** Whether a menu is open (reactive). */
160
107
  get isOpen(): boolean;
161
108
  /** Close the menu; the editor takes the keys back. */
162
109
  close: () => void;
163
- /** The menu element's id (page-unique), for `aria-controls`. */
164
- get menuId(): string;
165
- /** A row's element id (page-unique), for `aria-activedescendant`. */
166
- rowId: (row: TableMenuRow) => string;
167
110
  /**
168
- * The open menu's rows for a custom `menu`: each the row shape every menu
111
+ * The open menu's rows for your `menu`: each the row shape every menu
169
112
  * shares (`run` runs it and closes the menu, `select` makes it the
170
113
  * keyboard's, `option` its attributes), whether it can run now
171
- * (`disabled`), whether it deletes (`danger`), and its icon.
114
+ * (`disabled`) and whether it deletes (`danger`).
172
115
  */
173
116
  get items(): TableMenuItem[];
174
117
  /**
175
- * The attributes of the open menu's row at `index`: spread them on its
176
- * element (`{...chrome.option(index)}`). Its id, `menuitem` role,
177
- * `aria-disabled` when it cannot run now, `data-selected` for the
178
- * keyboard's row, which scrolls into view.
118
+ * The attachment of the open menu's row at `index`
119
+ * (`{@attach chrome.option(index)}`). Its id, `menuitem` role,
120
+ * `aria-disabled` when it cannot run now; the keyboard's row scrolls into
121
+ * view. The menu's element takes
122
+ * `data-edytor-table-menu` (the kind it is open on) from `popup`.
179
123
  */
180
- option: (index: number) => OptionAttributes;
181
- /**
182
- * The menu's element (`{@attach chrome.popup}`): its id, `menu` role and
183
- * name (Row options, Column options) unless it has its own, presses that
184
- * keep the focus, and its publication to the view's root
185
- * (`edytor.popups`: `aria-controls`, `aria-haspopup`) while it is in
186
- * the page; `data-edytor-table-menu` names the kind it is open on.
187
- */
188
- popup: Attachment<HTMLElement>;
124
+ option(index: number): Attachment<HTMLElement>;
189
125
  /**
190
126
  * The element that holds the menu's keyboard (`{@attach chrome.keys}`,
191
127
  * the menu's own): it takes the focus when it mounts and names the
@@ -200,50 +136,11 @@ export declare class TableChrome {
200
136
  * `grip` snippet's payload carries it): in an editable view, dragging it
201
137
  * moves its row or column within its table (`table.drag`); a click with
202
138
  * no drag opens or closes its menu; ArrowDown opens the menu, Escape
203
- * closes it and gives the keys back to the editor. It names the element (its own name wins) and carries
139
+ * closes it and gives the keys back to the editor. It carries
204
140
  * `aria-haspopup`, `aria-expanded`, `aria-controls` while its menu is
205
141
  * open, and `data-dragging` during its drag. A press on it is never
206
142
  * prevented: that would stop the native drag.
207
143
  */
208
- gripOf: (kind: TableMenu["kind"]) => Attachment<HTMLElement>;
209
- /** The rows of the open menu. */
210
- get rows(): TableMenuRow[];
211
- /** Run a menu row, then close the menu. */
212
- runRow: (row: TableMenuRow) => void;
213
- /** The `+` under the table: a row at its end, the caret in its first cell. */
214
- addRow: () => void;
215
- /** The `+` beside the table: a column at its end. */
216
- addColumn: () => void;
217
- /**
218
- * The release: column `drag.column`'s width, and its right neighbour's
219
- * when the column took from it (`table.width.neighbour`), one command;
220
- * nothing when neither changed, or when the table does not list the
221
- * column. A width is written on its column's entry by its item id (the
222
- * first entry naming it), never by position: the stored array may hold
223
- * an entry the grid does not show.
224
- */
225
- private release;
226
- /** What the row grip or the column grip stands for now: its table, the row's or column's id, its position. */
227
- private source;
228
- /** The drag starts: what it moves, its ghost, the page as its drop target, auto-scroll. */
229
- private begin;
230
- /** The ghost: the row's cells side by side, or the column's cells one under the other. */
231
- private preview;
232
- /**
233
- * Where the moving row or column would land at `input` (`table.drag`):
234
- * its gap, by the rows' (columns') middles, and its position once moved;
235
- * `null` outside the table (past its box and the gutter) and at its own
236
- * place (the gap before or after it).
237
- */
238
- private landing;
239
- /** The pointer moved during the drag: the drop line follows it. */
240
- private aim;
241
- /**
242
- * The drop: the row or column moves to the gap at the pointer (`moveRows`,
243
- * `moveColumn`: one command, one undo step), the keys go to the editor;
244
- * nothing where no line shows.
245
- */
246
- private drop;
247
- /** The drag ended, dropped or cancelled: no line, no target; the chrome follows the pointer again. */
248
- private finish;
144
+ gripOf: (kind: Kind) => Attachment<HTMLElement>;
249
145
  }
146
+ export {};