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.
- package/README.md +21 -39
- package/dist/block/block.svelte.d.ts +11 -84
- package/dist/block/block.svelte.js +30 -134
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +11 -9
- package/dist/block/inlineBlock.svelte.js +18 -21
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.js +7 -7
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +4 -17
- package/dist/cloudflare/DocumentRoom.js +3 -5
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +25 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +3 -32
- package/dist/cloudflare/room/storage.js +33 -108
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/awarenessSelection.d.ts +22 -1
- package/dist/collaboration/awarenessSelection.js +42 -0
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +42 -56
- package/dist/components/Block.svelte.d.ts +7 -5
- package/dist/components/Content.svelte +1 -5
- package/dist/components/Edytor.svelte +82 -99
- package/dist/components/Edytor.svelte.d.ts +16 -13
- package/dist/components/InlineBlock.svelte +1 -1
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +2 -5
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +18 -13
- package/dist/crdt/data.js +49 -71
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +8 -5
- package/dist/crdt/doc/reads.js +49 -50
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +32 -115
- package/dist/crdt/document.js +216 -302
- package/dist/crdt/edytor-doc.d.ts +689 -90
- package/dist/crdt/edytor-doc.js +74 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +32 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +8 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/props.d.ts +32 -0
- package/dist/crdt/props.js +172 -0
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/dnd/autoScroll.js +1 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
- package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
- package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
- package/dist/dnd/placement.d.ts +200 -0
- package/dist/dnd/placement.js +426 -0
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- 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
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +46 -63
- package/dist/edytor.svelte.js +126 -181
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -181
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +7 -1
- package/dist/events/onDrop.js +64 -78
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +45 -67
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +14 -1
- package/dist/events/onPaste.js +51 -76
- package/dist/index.d.ts +11 -15
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +83 -320
- package/dist/labels.js +181 -408
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
- package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +18 -16
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +45 -38
- package/dist/plugins/chrome.js +59 -36
- package/dist/plugins/code/CodeHeader.svelte +8 -38
- package/dist/plugins/code/CodePlugin.svelte +53 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +16 -125
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
- package/dist/plugins/code/code.css +5 -117
- package/dist/plugins/code/header.svelte.d.ts +2 -11
- package/dist/plugins/code/header.svelte.js +11 -38
- package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
- package/dist/plugins/code/languageMenu.svelte.js +30 -160
- package/dist/plugins/code/languages.d.ts +9 -22
- package/dist/plugins/code/languages.js +39 -128
- package/dist/plugins/columns/ColumnResize.svelte +16 -27
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/gaps.d.ts +7 -5
- package/dist/plugins/columns/gaps.js +11 -6
- package/dist/plugins/columns/resize.svelte.d.ts +17 -54
- package/dist/plugins/columns/resize.svelte.js +80 -173
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
- package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +16 -130
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
- package/dist/plugins/equation/EquationPlugin.svelte +109 -172
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.css +7 -0
- package/dist/plugins/equation/equation.svelte.d.ts +37 -24
- package/dist/plugins/equation/equation.svelte.js +20 -94
- package/dist/plugins/equation/katex.js +6 -9
- package/dist/plugins/fileDrop.d.ts +28 -0
- package/dist/plugins/fileDrop.js +116 -0
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +6 -167
- package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
- package/dist/plugins/image/ImagePlugin.svelte +71 -151
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -36
- package/dist/plugins/image/controls.svelte.js +43 -212
- package/dist/plugins/image/image.css +17 -0
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +30 -26
- package/dist/plugins/index.js +28 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +10 -9
- package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
- package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
- package/dist/plugins/marquee/marquee.js +4 -21
- package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
- package/dist/plugins/marquee/marqueePlugin.js +16 -15
- package/dist/plugins/media/AudioPlugin.svelte +13 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
- package/dist/plugins/media/EmbedPlugin.svelte +82 -86
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +45 -113
- package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
- package/dist/plugins/media/MediaEmpty.svelte +51 -90
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +200 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
- package/dist/plugins/media/UploadPreview.svelte +32 -0
- package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
- package/dist/plugins/media/VideoPlugin.svelte +14 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
- package/dist/plugins/media/empty.svelte.d.ts +47 -46
- package/dist/plugins/media/empty.svelte.js +67 -60
- package/dist/plugins/media/media.d.ts +97 -44
- package/dist/plugins/media/media.js +77 -99
- package/dist/plugins/media/upload.css +23 -0
- package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
- package/dist/plugins/media/urlPaste.svelte.js +32 -102
- package/dist/plugins/mention/MentionPlugin.svelte +84 -126
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
- package/dist/plugins/mention/mention.css +6 -0
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
- package/dist/plugins/pageLink/pageLink.css +6 -0
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +13 -20
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.js +2 -2
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
- package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/richtext/richtext.css +6 -0
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +40 -124
- package/dist/plugins/table/TablePlugin.svelte +106 -168
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +38 -141
- package/dist/plugins/table/chrome.svelte.js +340 -589
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +16 -152
- package/dist/plugins/table/table.d.ts +15 -14
- package/dist/plugins/table/table.js +22 -16
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
- package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
- package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +55 -24
- package/dist/plugins/uploads.svelte.js +123 -50
- package/dist/plugins.d.ts +187 -66
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +8 -10
- package/dist/selection/pointer.svelte.js +32 -73
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +224 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +3 -8
- package/dist/selection/visibility.js +7 -5
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +43 -39
- package/dist/session/attempt.js +62 -55
- package/dist/session/bindings.js +117 -145
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +208 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +16 -21
- package/dist/session/inputRules.d.ts +6 -3
- package/dist/session/inputRules.js +78 -83
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +43 -10
- package/dist/session/moves.js +101 -59
- package/dist/session/navigation.d.ts +10 -2
- package/dist/session/navigation.js +140 -172
- package/dist/session/ports.d.ts +2 -7
- package/dist/session/props.d.ts +25 -25
- package/dist/session/props.js +62 -159
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +5 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +42 -47
- package/dist/session/uploads.d.ts +29 -0
- package/dist/session/uploads.js +10 -0
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +2 -2
- package/dist/surface/lines.js +1 -1
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +52 -72
- package/dist/surface/overlay.d.ts +41 -3
- package/dist/surface/overlay.js +92 -37
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +272 -106
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -554
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -61
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -93
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
- package/dist/plugins/image/empty.svelte.d.ts +0 -56
- package/dist/plugins/image/empty.svelte.js +0 -83
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
- package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/labels.d.ts +0 -9
- package/dist/plugins/richtext/labels.js +0 -7
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/table/dragPreview.d.ts +0 -29
- package/dist/plugins/table/dragPreview.js +0 -103
- package/dist/plugins/toolbar/LinkCard.svelte +0 -122
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
- package/dist/plugins/toolbar/Toolbar.svelte +0 -349
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
- /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
- /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
|
@@ -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 {
|
|
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
|
|
56
|
-
if (
|
|
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
|
|
88
|
-
if (
|
|
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 =
|
|
122
|
-
|
|
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 = (
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
|
|
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
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
const
|
|
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
|
|
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
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
'
|
|
225
|
-
|
|
226
|
-
|
|
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:
|
|
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: (
|
|
271
|
-
|
|
272
|
-
|
|
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
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
|
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
|
|
4
|
-
import {
|
|
5
|
-
|
|
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:
|
|
8
|
+
kind: Kind;
|
|
8
9
|
table: string;
|
|
9
|
-
|
|
10
|
-
} | {
|
|
11
|
-
kind: 'column';
|
|
12
|
-
table: string;
|
|
13
|
-
column: number;
|
|
10
|
+
id: string;
|
|
14
11
|
};
|
|
15
|
-
/**
|
|
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
|
|
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
|
|
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
|
|
52
|
-
* grip stands.
|
|
37
|
+
* open; name it). The plugin centers it where the grip stands.
|
|
53
38
|
*/
|
|
54
39
|
export type TableGripPayload = {
|
|
55
|
-
kind:
|
|
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:
|
|
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
|
|
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
|
|
105
|
-
* the menu's element, `option(index)`
|
|
106
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
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
|
-
|
|
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
|
|
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`)
|
|
114
|
+
* (`disabled`) and whether it deletes (`danger`).
|
|
172
115
|
*/
|
|
173
116
|
get items(): TableMenuItem[];
|
|
174
117
|
/**
|
|
175
|
-
* The
|
|
176
|
-
*
|
|
177
|
-
* `aria-disabled` when it cannot run now
|
|
178
|
-
*
|
|
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
|
|
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
|
|
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:
|
|
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 {};
|