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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Block } from '../../block/block.svelte.js';
|
|
2
2
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
3
|
-
import {
|
|
3
|
+
import { BandDrag } from '../bands.svelte.js';
|
|
4
4
|
/** The guide line's width (the hover guide's and the drag's). */
|
|
5
5
|
export declare const GUIDE = 2;
|
|
6
6
|
/** A column's weight: `data.width`, a positive number, else 1. */
|
|
@@ -20,15 +20,14 @@ export type Strip = {
|
|
|
20
20
|
};
|
|
21
21
|
/** A strip being dragged: the two columns as the drag found them, in client px. */
|
|
22
22
|
type Drag = {
|
|
23
|
-
strip: Strip;
|
|
24
23
|
left: Block;
|
|
25
24
|
right: Block;
|
|
26
25
|
/** Where the pointer went down, and where it is. */
|
|
27
26
|
from: number;
|
|
28
27
|
at: number;
|
|
29
|
-
/** The left column's width
|
|
28
|
+
/** The left column's width. */
|
|
30
29
|
width: number;
|
|
31
|
-
/** The layout's width. */
|
|
30
|
+
/** The layout's width, the pair's, and the narrowest either may get. */
|
|
32
31
|
span: number;
|
|
33
32
|
sum: number;
|
|
34
33
|
min: number;
|
|
@@ -41,9 +40,9 @@ type Drag = {
|
|
|
41
40
|
/**
|
|
42
41
|
* The column resize (`docs/columns-plan.md`, "Resize"), chrome in the
|
|
43
42
|
* overlay: while the pointer is over a layout (not readonly, not stacked),
|
|
44
|
-
* a band in each gap between two shown columns (`bandOf`:
|
|
45
|
-
*
|
|
46
|
-
* grip sit together
|
|
43
|
+
* a band in each gap between two shown columns (`bandOf`: `BAND` px centered
|
|
44
|
+
* in the gap, the layout's height), above the block handles,
|
|
45
|
+
* whose `+` and grip sit together flush with the block (`gaps.ts`, one
|
|
47
46
|
* measurement):
|
|
48
47
|
* wherever its gray guide shows (`--edytor-columns-resize-color`, Notion's,
|
|
49
48
|
* at any height, block rows included), a press resizes. Dragging one
|
|
@@ -53,7 +52,7 @@ type Drag = {
|
|
|
53
52
|
* release writes the two columns' `data.width` weights, keeping their sum,
|
|
54
53
|
* in one `edytor.transact` (two `setData` commands: one undo step), and
|
|
55
54
|
* drops the preview in the same flush; Escape, a cancel or the view turning
|
|
56
|
-
* readonly drops it alone, at once.
|
|
55
|
+
* readonly drops it alone, at once (`band`).
|
|
57
56
|
* Neither column goes under `minWidth` × the layout's width, in the view
|
|
58
57
|
* only (the document stores weights). Positions are read in the overlay's
|
|
59
58
|
* measure, once per frame.
|
|
@@ -68,8 +67,6 @@ export declare class ColumnResize {
|
|
|
68
67
|
#private;
|
|
69
68
|
private edytor;
|
|
70
69
|
private minWidth;
|
|
71
|
-
/** The words the bands say (the plugin's `labels`). */
|
|
72
|
-
readonly labels: ColumnsLabels;
|
|
73
70
|
/** The layout under the pointer. */
|
|
74
71
|
hovered: string | null;
|
|
75
72
|
/** The layout whose band holds the focus. */
|
|
@@ -78,8 +75,8 @@ export declare class ColumnResize {
|
|
|
78
75
|
dragging: boolean;
|
|
79
76
|
/** The measured strips of the hovered layout. */
|
|
80
77
|
strips: Strip[];
|
|
81
|
-
/** The strip
|
|
82
|
-
|
|
78
|
+
/** The strip's drag in progress (`band.drag`). */
|
|
79
|
+
band: BandDrag<Drag>;
|
|
83
80
|
/** The guide's layer-relative box while a strip drags. */
|
|
84
81
|
guide: {
|
|
85
82
|
x: number;
|
|
@@ -88,21 +85,12 @@ export declare class ColumnResize {
|
|
|
88
85
|
} | null;
|
|
89
86
|
/** The two dragged columns' weights at the pointer, by id, while a strip drags (view only). */
|
|
90
87
|
preview: Readonly<Record<string, number>> | null;
|
|
91
|
-
constructor(edytor: Edytor, minWidth: number
|
|
92
|
-
/** The words the bands say (the
|
|
93
|
-
labels
|
|
88
|
+
constructor(edytor: Edytor, minWidth: number);
|
|
89
|
+
/** The words the bands say (the view's `columns` labels). */
|
|
90
|
+
get labels(): import("../../labels.js").ColumnsLabels;
|
|
94
91
|
/** The view is readonly (reactive). */
|
|
95
92
|
get readonly(): boolean;
|
|
96
|
-
/**
|
|
97
|
-
get selecting(): boolean;
|
|
98
|
-
/**
|
|
99
|
-
* The layout whose bands show: the one a strip drags, else the one under
|
|
100
|
-
* the pointer, the one a band holds the focus of, the one holding the caret.
|
|
101
|
-
*/
|
|
102
|
-
private get layout();
|
|
103
|
-
/** The innermost layout holding the selection's start (the keyboard's). */
|
|
104
|
-
private get caretLayout();
|
|
105
|
-
/** Whether the strips show: for a layout of an editable view (`layout`), or while one drags. */
|
|
93
|
+
/** Whether the strips show: for a layout of an editable view, or while one drags. */
|
|
106
94
|
get shown(): boolean;
|
|
107
95
|
/** A column's weight as shown: the drag's preview while a strip drags it, else its stored one. */
|
|
108
96
|
weight: (id: string | undefined, data: Record<string, unknown> | undefined) => number;
|
|
@@ -110,50 +98,25 @@ export declare class ColumnResize {
|
|
|
110
98
|
hover: (target: EventTarget | null) => void;
|
|
111
99
|
/**
|
|
112
100
|
* The pointer left for `to`: the bands stay while it is over the editor
|
|
113
|
-
* or its overlay (a band, a column block's handle in the gap).
|
|
101
|
+
* or its overlay (a band, a column block's handle in the gap), or a strip drags.
|
|
114
102
|
*/
|
|
115
103
|
leave: (to: EventTarget | null) => void;
|
|
116
104
|
/** The overlay measure: the hovered layout's gaps, and the guide of a drag. */
|
|
117
105
|
measure: (host: HTMLElement, origin: DOMRect) => () => void;
|
|
118
|
-
/** The bands of the hovered layout (`bandOf` each gap): none when it stacks or shows fewer than two columns. */
|
|
119
|
-
private gaps;
|
|
120
|
-
/** The left column's width at the drag's pointer, held to the minimum on both sides. */
|
|
121
|
-
private widthAt;
|
|
122
|
-
/**
|
|
123
|
-
* A `mousedown` on `strip`: no native selection starts there; the press
|
|
124
|
-
* itself when no `pointerdown` came before it (`isLonePress`: WebKit's
|
|
125
|
-
* first press after a block drag), which starts the drag as one would.
|
|
126
|
-
*/
|
|
127
|
-
mousedown: (event: MouseEvent, strip: Strip) => void;
|
|
128
106
|
/**
|
|
129
|
-
* Press on `strip
|
|
130
|
-
*
|
|
131
|
-
* `mousedown` (`mousedown`) tracks the mouse on the window, its
|
|
132
|
-
* `mousemove`s and its `mouseup`, with the same preview, minimum, Escape
|
|
133
|
-
* and release.
|
|
107
|
+
* Press on `strip` (`band.press`): the drag starts (`trackDrag`), nothing
|
|
108
|
+
* is written until the release.
|
|
134
109
|
*/
|
|
135
110
|
start: (event: PointerEvent | MouseEvent, strip: Strip) => void;
|
|
136
|
-
/** `strip`'s two columns as they are now, measured, a drag from `from`; `null` when one is gone. */
|
|
137
|
-
private pair;
|
|
138
111
|
/**
|
|
139
112
|
* A key on a focused band: ArrowRight/ArrowLeft move the gap by 1% of the
|
|
140
113
|
* layout's width (Shift: 10%), Home/End to the narrowest either column
|
|
141
114
|
* may get (the drag's minimum); each press writes both weights, keeping
|
|
142
|
-
* their sum, as one undo step (
|
|
115
|
+
* their sum, as one undo step (`#release`). Every key there is the band's,
|
|
143
116
|
* never the editor's; Escape gives the keys back to the editor.
|
|
144
117
|
*/
|
|
145
118
|
key: (event: KeyboardEvent, strip: Strip) => void;
|
|
146
119
|
/** A band took (`true`) or lost the focus: its layout's bands stay while it holds it. */
|
|
147
120
|
focus: (strip: Strip, focused: boolean) => void;
|
|
148
|
-
/**
|
|
149
|
-
* The view turned readonly (or the document read-only): a drag in progress
|
|
150
|
-
* ends at once, its preview dropped, nothing written (its release would be
|
|
151
|
-
* refused anyway). Called by the strips' component when `readonly` flips.
|
|
152
|
-
*/
|
|
153
|
-
lock: () => void;
|
|
154
|
-
/** The two columns' weights at the drag's pointer, keeping their stored sum; `null` before it moved. */
|
|
155
|
-
private weights;
|
|
156
|
-
/** The release: both weights, keeping their sum, one undo step; nothing when nothing moved. */
|
|
157
|
-
private release;
|
|
158
121
|
}
|
|
159
122
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pin } from '../../surface/overlay.js';
|
|
2
|
+
import { BandDrag, bandKey } from '../bands.svelte.js';
|
|
2
3
|
import { bandOf, gapBefore } from './gaps.js';
|
|
3
|
-
import { stacks } from '
|
|
4
|
-
import {
|
|
4
|
+
import { stacks } from '../../dnd/stacking.js';
|
|
5
|
+
import { columnsEnglish, labelsOf } from '../../labels.js';
|
|
5
6
|
/** The guide line's width (the hover guide's and the drag's). */
|
|
6
7
|
export const GUIDE = 2;
|
|
7
8
|
/** A column's weight: `data.width`, a positive number, else 1. */
|
|
@@ -9,12 +10,17 @@ export const weightOf = (data) => {
|
|
|
9
10
|
const width = data?.width;
|
|
10
11
|
return typeof width === 'number' && Number.isFinite(width) && width > 0 ? width : 1;
|
|
11
12
|
};
|
|
13
|
+
/** The band's middle in a gap `width` px wide, from the gap's left. */
|
|
14
|
+
const middleOf = (width) => {
|
|
15
|
+
const band = bandOf({ left: 0, right: width });
|
|
16
|
+
return band.left + band.width / 2;
|
|
17
|
+
};
|
|
12
18
|
/**
|
|
13
19
|
* The column resize (`docs/columns-plan.md`, "Resize"), chrome in the
|
|
14
20
|
* overlay: while the pointer is over a layout (not readonly, not stacked),
|
|
15
|
-
* a band in each gap between two shown columns (`bandOf`:
|
|
16
|
-
*
|
|
17
|
-
* grip sit together
|
|
21
|
+
* a band in each gap between two shown columns (`bandOf`: `BAND` px centered
|
|
22
|
+
* in the gap, the layout's height), above the block handles,
|
|
23
|
+
* whose `+` and grip sit together flush with the block (`gaps.ts`, one
|
|
18
24
|
* measurement):
|
|
19
25
|
* wherever its gray guide shows (`--edytor-columns-resize-color`, Notion's,
|
|
20
26
|
* at any height, block rows included), a press resizes. Dragging one
|
|
@@ -24,7 +30,7 @@ export const weightOf = (data) => {
|
|
|
24
30
|
* release writes the two columns' `data.width` weights, keeping their sum,
|
|
25
31
|
* in one `edytor.transact` (two `setData` commands: one undo step), and
|
|
26
32
|
* drops the preview in the same flush; Escape, a cancel or the view turning
|
|
27
|
-
* readonly drops it alone, at once.
|
|
33
|
+
* readonly drops it alone, at once (`band`).
|
|
28
34
|
* Neither column goes under `minWidth` × the layout's width, in the view
|
|
29
35
|
* only (the document stores weights). Positions are read in the overlay's
|
|
30
36
|
* measure, once per frame.
|
|
@@ -38,7 +44,6 @@ export const weightOf = (data) => {
|
|
|
38
44
|
export class ColumnResize {
|
|
39
45
|
edytor;
|
|
40
46
|
minWidth;
|
|
41
|
-
labels;
|
|
42
47
|
/** The layout under the pointer. */
|
|
43
48
|
hovered = $state(null);
|
|
44
49
|
/** The layout whose band holds the focus. */
|
|
@@ -46,48 +51,45 @@ export class ColumnResize {
|
|
|
46
51
|
/** A block drag is in progress: no strip takes the pointer. */
|
|
47
52
|
dragging = $state(false);
|
|
48
53
|
/** The measured strips of the hovered layout. */
|
|
49
|
-
strips = $state([]);
|
|
50
|
-
/** The strip
|
|
51
|
-
|
|
54
|
+
strips = $state.raw([]);
|
|
55
|
+
/** The strip's drag in progress (`band.drag`). */
|
|
56
|
+
band;
|
|
52
57
|
/** The guide's layer-relative box while a strip drags. */
|
|
53
58
|
guide = $state(null);
|
|
54
|
-
/** Ends the drag in progress without a write (Escape, a cancel, the view turning readonly). */
|
|
55
|
-
#cancel = null;
|
|
56
59
|
/** The two dragged columns' weights at the pointer, by id, while a strip drags (view only). */
|
|
57
60
|
preview = $state.raw(null);
|
|
58
|
-
constructor(edytor, minWidth
|
|
59
|
-
/** The words the bands say (the plugin's `labels`). */
|
|
60
|
-
labels = englishLabels.columns) {
|
|
61
|
+
constructor(edytor, minWidth) {
|
|
61
62
|
this.edytor = edytor;
|
|
62
63
|
this.minWidth = minWidth;
|
|
63
|
-
this.
|
|
64
|
+
this.band = new BandDrag(edytor);
|
|
65
|
+
}
|
|
66
|
+
/** The words the bands say (the view's `columns` labels). */
|
|
67
|
+
get labels() {
|
|
68
|
+
return labelsOf(this.edytor, 'columns', columnsEnglish);
|
|
64
69
|
}
|
|
65
70
|
/** The view is readonly (reactive). */
|
|
66
71
|
get readonly() {
|
|
67
72
|
return this.edytor.readonly;
|
|
68
73
|
}
|
|
69
|
-
/** A text selection is in progress (`selection.dragging`): the strips take no pointer. */
|
|
70
|
-
get selecting() {
|
|
71
|
-
return this.drag === null && this.edytor.selection.dragging;
|
|
72
|
-
}
|
|
73
74
|
/**
|
|
74
75
|
* The layout whose bands show: the one a strip drags, else the one under
|
|
75
|
-
* the pointer, the one a band holds the focus of, the one
|
|
76
|
+
* the pointer, the one a band holds the focus of, the innermost one
|
|
77
|
+
* holding the selection's start (the keyboard's).
|
|
76
78
|
*/
|
|
77
|
-
get layout() {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
for (let
|
|
84
|
-
if (
|
|
85
|
-
return
|
|
79
|
+
get #layout() {
|
|
80
|
+
const { facade, selection, idToBlock } = this.edytor;
|
|
81
|
+
const layout = this.band.drag?.left.parent?.id ?? this.hovered ?? this.focused;
|
|
82
|
+
if (layout)
|
|
83
|
+
return layout;
|
|
84
|
+
const start = selection.projection.start?.block;
|
|
85
|
+
for (let at = start && idToBlock.get(start); at && !at.isRoot; at = at.parent)
|
|
86
|
+
if (at.id && facade.isLayout(at.id))
|
|
87
|
+
return at.id;
|
|
86
88
|
return null;
|
|
87
89
|
}
|
|
88
|
-
/** Whether the strips show: for a layout of an editable view
|
|
90
|
+
/** Whether the strips show: for a layout of an editable view, or while one drags. */
|
|
89
91
|
get shown() {
|
|
90
|
-
return this.drag !== null || (!this.edytor.readonly && !this.dragging && !!this
|
|
92
|
+
return this.band.drag !== null || (!this.edytor.readonly && !this.dragging && !!this.#layout);
|
|
91
93
|
}
|
|
92
94
|
/** A column's weight as shown: the drag's preview while a strip drags it, else its stored one. */
|
|
93
95
|
weight = (id, data) => (id === undefined ? undefined : this.preview?.[id]) ?? weightOf(data);
|
|
@@ -95,12 +97,10 @@ export class ColumnResize {
|
|
|
95
97
|
hover = (target) => {
|
|
96
98
|
const { facade } = this.edytor;
|
|
97
99
|
let layout = null;
|
|
98
|
-
for (let node = target?.closest?.('[data-edytor-block="true"]'); node; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
|
|
100
|
+
for (let node = target?.closest?.('[data-edytor-block="true"]'); node && !layout; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
|
|
99
101
|
const id = node.dataset.edytorId;
|
|
100
|
-
if (id && facade.isLayout(id))
|
|
102
|
+
if (id && facade.isLayout(id))
|
|
101
103
|
layout = id;
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
104
|
}
|
|
105
105
|
if (layout === this.hovered)
|
|
106
106
|
return;
|
|
@@ -109,46 +109,40 @@ export class ColumnResize {
|
|
|
109
109
|
};
|
|
110
110
|
/**
|
|
111
111
|
* The pointer left for `to`: the bands stay while it is over the editor
|
|
112
|
-
* or its overlay (a band, a column block's handle in the gap).
|
|
112
|
+
* or its overlay (a band, a column block's handle in the gap), or a strip drags.
|
|
113
113
|
*/
|
|
114
114
|
leave = (to) => {
|
|
115
115
|
const node = to instanceof Node ? to : null;
|
|
116
116
|
const { edytor } = this;
|
|
117
|
-
if (
|
|
117
|
+
if (this.band.drag ||
|
|
118
|
+
(node && (edytor.overlay.layer?.contains(node) || edytor.node?.contains(node))))
|
|
118
119
|
return;
|
|
119
120
|
this.hovered = null;
|
|
120
121
|
};
|
|
121
122
|
/** The overlay measure: the hovered layout's gaps, and the guide of a drag. */
|
|
122
123
|
measure = (host, origin) => {
|
|
123
|
-
const strips = this.shown ? this
|
|
124
|
-
const drag = this.drag;
|
|
124
|
+
const strips = this.shown ? this.#gaps(origin) : [];
|
|
125
|
+
const drag = this.band.drag;
|
|
125
126
|
const guide = drag && {
|
|
126
|
-
// Where the hover guide showed: the band's middle,
|
|
127
|
-
x: drag.start +
|
|
128
|
-
this.widthAt(drag) +
|
|
129
|
-
bandOf({ left: 0, right: drag.gap }).width / 2 -
|
|
130
|
-
GUIDE / 2 -
|
|
131
|
-
origin.left,
|
|
127
|
+
// Where the hover guide showed: the band's middle, the gap's (`bandOf`).
|
|
128
|
+
x: drag.start + this.#widthAt(drag) + middleOf(drag.gap) - GUIDE / 2 - origin.left,
|
|
132
129
|
top: drag.top - origin.top,
|
|
133
130
|
height: drag.height
|
|
134
131
|
};
|
|
135
132
|
return () => {
|
|
136
133
|
// Layer-relative, as the rest of the overlay's chrome.
|
|
137
|
-
|
|
138
|
-
if (
|
|
134
|
+
pin(host);
|
|
135
|
+
if (JSON.stringify(strips) !== JSON.stringify(this.strips))
|
|
139
136
|
this.strips = strips;
|
|
140
137
|
this.guide = guide;
|
|
141
138
|
};
|
|
142
139
|
};
|
|
143
140
|
/** The bands of the hovered layout (`bandOf` each gap): none when it stacks or shows fewer than two columns. */
|
|
144
|
-
gaps(origin) {
|
|
145
|
-
const id = this
|
|
141
|
+
#gaps(origin) {
|
|
142
|
+
const id = this.#layout;
|
|
146
143
|
const layout = id ? this.edytor.idToBlock.get(id) : undefined;
|
|
147
|
-
const
|
|
148
|
-
if (!layout || !
|
|
149
|
-
return [];
|
|
150
|
-
const box = node.getBoundingClientRect();
|
|
151
|
-
if (stacks(box.width))
|
|
144
|
+
const box = layout?.node?.isConnected ? layout.node.getBoundingClientRect() : undefined;
|
|
145
|
+
if (!layout || !box || stacks(box.width))
|
|
152
146
|
return [];
|
|
153
147
|
const shown = layout.children.filter((item) => (item.node?.getBoundingClientRect().width ?? 0) > 0);
|
|
154
148
|
return shown.slice(1).flatMap((item, index) => {
|
|
@@ -156,11 +150,12 @@ export class ColumnResize {
|
|
|
156
150
|
if (!gap)
|
|
157
151
|
return [];
|
|
158
152
|
const band = bandOf(gap);
|
|
159
|
-
const
|
|
153
|
+
const before = shown[index];
|
|
154
|
+
const [left, right] = [before, item].map((column) => this.weight(column.id, column.data));
|
|
160
155
|
return [
|
|
161
156
|
{
|
|
162
157
|
layout: layout.id,
|
|
163
|
-
left:
|
|
158
|
+
left: before.id,
|
|
164
159
|
right: item.id,
|
|
165
160
|
value: Math.round((100 * left) / (left + right)),
|
|
166
161
|
x: band.left - origin.left,
|
|
@@ -172,98 +167,35 @@ export class ColumnResize {
|
|
|
172
167
|
});
|
|
173
168
|
}
|
|
174
169
|
/** The left column's width at the drag's pointer, held to the minimum on both sides. */
|
|
175
|
-
widthAt({ width, sum, min, from, at }) {
|
|
170
|
+
#widthAt({ width, sum, min, from, at }) {
|
|
176
171
|
const lo = Math.min(min, width);
|
|
177
172
|
const hi = Math.max(sum - min, width);
|
|
178
173
|
return Math.min(hi, Math.max(lo, width + at - from));
|
|
179
174
|
}
|
|
180
175
|
/**
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* first press after a block drag), which starts the drag as one would.
|
|
184
|
-
*/
|
|
185
|
-
mousedown = (event, strip) => {
|
|
186
|
-
event.preventDefault();
|
|
187
|
-
if (isLonePress(this.edytor, event))
|
|
188
|
-
this.start(event, strip);
|
|
189
|
-
};
|
|
190
|
-
/**
|
|
191
|
-
* Press on `strip`: the drag starts, nothing is written until the release.
|
|
192
|
-
* A `pointerdown` tracks its pointer (captured, on the document); a lone
|
|
193
|
-
* `mousedown` (`mousedown`) tracks the mouse on the window, its
|
|
194
|
-
* `mousemove`s and its `mouseup`, with the same preview, minimum, Escape
|
|
195
|
-
* and release.
|
|
176
|
+
* Press on `strip` (`band.press`): the drag starts (`trackDrag`), nothing
|
|
177
|
+
* is written until the release.
|
|
196
178
|
*/
|
|
197
179
|
start = (event, strip) => {
|
|
198
|
-
const
|
|
199
|
-
if (event.button !== 0 || edytor.readonly || this.drag)
|
|
200
|
-
return;
|
|
201
|
-
const pair = this.pair(strip, event.clientX);
|
|
180
|
+
const pair = this.band.drag ? null : this.#pair(strip, event.clientX);
|
|
202
181
|
if (!pair)
|
|
203
182
|
return;
|
|
204
|
-
|
|
205
|
-
event.stopPropagation();
|
|
206
|
-
const target = event.currentTarget;
|
|
207
|
-
const pointer = event.type === 'pointerdown';
|
|
208
|
-
if (pointer)
|
|
209
|
-
target?.setPointerCapture?.(event.pointerId);
|
|
210
|
-
this.drag = pair;
|
|
211
|
-
const document = target?.ownerDocument ?? edytor.node?.ownerDocument;
|
|
212
|
-
const tracked = pointer ? document : document?.defaultView;
|
|
213
|
-
const [moves, ups] = pointer ? ['pointermove', 'pointerup'] : ['mousemove', 'mouseup'];
|
|
214
|
-
const move = (moved) => {
|
|
215
|
-
if (!this.drag)
|
|
216
|
-
return;
|
|
217
|
-
if (!edytor.dispatcher.permits())
|
|
218
|
-
return end(moved);
|
|
219
|
-
this.drag.at = moved.clientX;
|
|
220
|
-
this.preview = this.weights(this.drag);
|
|
221
|
-
edytor.overlay.invalidate();
|
|
222
|
-
};
|
|
223
|
-
const end = (ended) => {
|
|
224
|
-
tracked?.removeEventListener(moves, move);
|
|
225
|
-
tracked?.removeEventListener(ups, end);
|
|
226
|
-
tracked?.removeEventListener('pointercancel', end);
|
|
227
|
-
document?.removeEventListener('keydown', escape, true);
|
|
228
|
-
const drag = this.drag;
|
|
229
|
-
this.drag = null;
|
|
183
|
+
this.band.start(event, pair, (drag) => {
|
|
230
184
|
this.guide = null;
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if (drag && ended.type === ups) {
|
|
234
|
-
drag.at = ended.clientX;
|
|
235
|
-
this.release(drag);
|
|
236
|
-
// The editor holds the keys after the release (Notion: Mod+Z right after).
|
|
237
|
-
takeKeys(edytor);
|
|
238
|
-
}
|
|
185
|
+
if (drag)
|
|
186
|
+
this.#release(drag);
|
|
239
187
|
// After the release's write: the stored weights replace the preview in one flush.
|
|
240
188
|
this.preview = null;
|
|
241
|
-
};
|
|
242
|
-
const escape = (key) => {
|
|
243
|
-
if (key.key !== 'Escape')
|
|
244
|
-
return;
|
|
245
|
-
key.preventDefault();
|
|
246
|
-
key.stopPropagation();
|
|
247
|
-
end(key);
|
|
248
|
-
};
|
|
249
|
-
this.#cancel = () => end(new Event('cancel'));
|
|
250
|
-
tracked?.addEventListener(moves, move);
|
|
251
|
-
tracked?.addEventListener(ups, end);
|
|
252
|
-
if (pointer)
|
|
253
|
-
tracked?.addEventListener('pointercancel', end);
|
|
254
|
-
document?.addEventListener('keydown', escape, true);
|
|
255
|
-
edytor.overlay.invalidate();
|
|
189
|
+
}, () => (this.preview = this.#weights(this.band.drag)));
|
|
256
190
|
};
|
|
257
191
|
/** `strip`'s two columns as they are now, measured, a drag from `from`; `null` when one is gone. */
|
|
258
|
-
pair(strip, from) {
|
|
192
|
+
#pair(strip, from) {
|
|
259
193
|
const left = this.edytor.idToBlock.get(strip.left);
|
|
260
194
|
const right = this.edytor.idToBlock.get(strip.right);
|
|
261
|
-
const
|
|
262
|
-
const [a, b, box] = [left, right, layout].map((block) => block?.node?.getBoundingClientRect());
|
|
195
|
+
const [a, b, box] = [left, right, left?.parent].map((block) => block?.node?.getBoundingClientRect());
|
|
263
196
|
if (!left || !right || !a || !b || !box)
|
|
264
197
|
return null;
|
|
265
198
|
return {
|
|
266
|
-
strip,
|
|
267
199
|
left,
|
|
268
200
|
right,
|
|
269
201
|
from,
|
|
@@ -282,47 +214,31 @@ export class ColumnResize {
|
|
|
282
214
|
* A key on a focused band: ArrowRight/ArrowLeft move the gap by 1% of the
|
|
283
215
|
* layout's width (Shift: 10%), Home/End to the narrowest either column
|
|
284
216
|
* may get (the drag's minimum); each press writes both weights, keeping
|
|
285
|
-
* their sum, as one undo step (
|
|
217
|
+
* their sum, as one undo step (`#release`). Every key there is the band's,
|
|
286
218
|
* never the editor's; Escape gives the keys back to the editor.
|
|
287
219
|
*/
|
|
288
220
|
key = (event, strip) => {
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
const
|
|
296
|
-
const edge = { Home: -Infinity, End: Infinity }[event.key];
|
|
297
|
-
if (step === undefined && edge === undefined)
|
|
298
|
-
return;
|
|
299
|
-
event.preventDefault();
|
|
300
|
-
if (this.drag || !edytor.dispatcher.permits())
|
|
301
|
-
return;
|
|
302
|
-
const pair = this.pair(strip, 0);
|
|
221
|
+
const step = bandKey(this.edytor, this.band, event, {
|
|
222
|
+
ArrowLeft: -1,
|
|
223
|
+
ArrowRight: 1,
|
|
224
|
+
Home: -Infinity,
|
|
225
|
+
End: Infinity
|
|
226
|
+
});
|
|
227
|
+
const pair = step && this.#pair(strip, 0);
|
|
303
228
|
if (!pair)
|
|
304
229
|
return;
|
|
305
|
-
pair.at =
|
|
306
|
-
this
|
|
307
|
-
edytor.overlay.invalidate();
|
|
230
|
+
pair.at = Number.isFinite(step) ? step * (event.shiftKey ? 0.1 : 0.01) * pair.span : step;
|
|
231
|
+
this.#release(pair);
|
|
232
|
+
this.edytor.overlay.invalidate();
|
|
308
233
|
};
|
|
309
234
|
/** A band took (`true`) or lost the focus: its layout's bands stay while it holds it. */
|
|
310
235
|
focus = (strip, focused) => {
|
|
311
236
|
this.focused = focused ? strip.layout : null;
|
|
312
237
|
this.edytor.overlay.invalidate();
|
|
313
238
|
};
|
|
314
|
-
/**
|
|
315
|
-
* The view turned readonly (or the document read-only): a drag in progress
|
|
316
|
-
* ends at once, its preview dropped, nothing written (its release would be
|
|
317
|
-
* refused anyway). Called by the strips' component when `readonly` flips.
|
|
318
|
-
*/
|
|
319
|
-
lock = () => {
|
|
320
|
-
if (this.drag && !this.edytor.dispatcher.permits())
|
|
321
|
-
this.#cancel?.();
|
|
322
|
-
};
|
|
323
239
|
/** The two columns' weights at the drag's pointer, keeping their stored sum; `null` before it moved. */
|
|
324
|
-
weights(drag) {
|
|
325
|
-
const width = this
|
|
240
|
+
#weights(drag) {
|
|
241
|
+
const width = this.#widthAt(drag);
|
|
326
242
|
const { left, right, sum } = drag;
|
|
327
243
|
if (Math.abs(width - drag.width) < 0.5 || sum <= 0)
|
|
328
244
|
return null;
|
|
@@ -331,23 +247,14 @@ export class ColumnResize {
|
|
|
331
247
|
return { [left.id]: weight, [right.id]: pair - weight };
|
|
332
248
|
}
|
|
333
249
|
/** The release: both weights, keeping their sum, one undo step; nothing when nothing moved. */
|
|
334
|
-
release(drag) {
|
|
335
|
-
const weights = this
|
|
250
|
+
#release(drag) {
|
|
251
|
+
const weights = this.#weights(drag);
|
|
336
252
|
const { left, right } = drag;
|
|
337
253
|
if (!weights || !left.isInTree || !right.isInTree)
|
|
338
254
|
return;
|
|
339
255
|
this.edytor.transact(() => {
|
|
340
|
-
|
|
341
|
-
|
|
256
|
+
for (const column of [left, right])
|
|
257
|
+
this.edytor.patchData(column.id, [{ path: ['width'], value: weights[column.id] }]);
|
|
342
258
|
});
|
|
343
259
|
}
|
|
344
260
|
}
|
|
345
|
-
const sameStrips = (a, b) => a.length === b.length &&
|
|
346
|
-
a.every((strip, index) => strip.layout === b[index].layout &&
|
|
347
|
-
strip.value === b[index].value &&
|
|
348
|
-
strip.left === b[index].left &&
|
|
349
|
-
strip.right === b[index].right &&
|
|
350
|
-
strip.x === b[index].x &&
|
|
351
|
-
strip.top === b[index].top &&
|
|
352
|
-
strip.width === b[index].width &&
|
|
353
|
-
strip.height === b[index].height);
|
|
@@ -2,7 +2,6 @@ import type { Edytor } from '../../edytor.svelte.js';
|
|
|
2
2
|
import type { DocAnchor } from '../../crdt/index.js';
|
|
3
3
|
import { type CommentChange, type CommentRun, type CommentThread } from '../../crdt/protocols/comments.js';
|
|
4
4
|
import type { CommentsClient } from '../../collaboration/comments/client.js';
|
|
5
|
-
import { type CommentsLabels } from '../../labels.js';
|
|
6
5
|
/** Who a comment's author is, as the sidebar shows them. */
|
|
7
6
|
export type CommentUser = {
|
|
8
7
|
id: string;
|
|
@@ -40,7 +39,6 @@ export type CommentsControllerOptions = {
|
|
|
40
39
|
user: CommentUser;
|
|
41
40
|
users?: (id: string) => Omit<CommentUser, 'id'> | undefined;
|
|
42
41
|
onComment?: (change: CommentChange, notice: CommentNotice) => void;
|
|
43
|
-
labels?: CommentsLabels;
|
|
44
42
|
};
|
|
45
43
|
/**
|
|
46
44
|
* The comments plugin's state and actions (`plugins/comments`): the
|
|
@@ -65,7 +63,6 @@ export declare class CommentsController {
|
|
|
65
63
|
error: string | null;
|
|
66
64
|
readonly client: CommentsClient;
|
|
67
65
|
readonly user: CommentUser;
|
|
68
|
-
readonly labels: CommentsLabels;
|
|
69
66
|
constructor(edytor: Edytor, options: CommentsControllerOptions);
|
|
70
67
|
/** Every thread's anchor runs, in document order (maintained per commit). */
|
|
71
68
|
readonly anchors: Map<string, CommentRun[]>;
|
|
@@ -81,7 +78,7 @@ export declare class CommentsController {
|
|
|
81
78
|
get canComment(): boolean;
|
|
82
79
|
/** One thread, by id. */
|
|
83
80
|
thread(id: string): PlacedThread | undefined;
|
|
84
|
-
/** A user as the sidebar shows them: their name, avatar and color. */
|
|
81
|
+
/** A user as the sidebar shows them: their name (else their id), avatar and color. */
|
|
85
82
|
userOf: (id: string) => CommentUser;
|
|
86
83
|
/** Whether the current user may delete `comment` of `thread` (its author). */
|
|
87
84
|
mayDelete: (thread: CommentThread, comment: {
|