edytor 1.0.0-rc.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -25
- package/dist/block/block.svelte.d.ts +10 -85
- package/dist/block/block.svelte.js +47 -141
- 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 +8 -10
- package/dist/block/inlineBlock.svelte.js +14 -22
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.d.ts +6 -1
- package/dist/clipboard/htmlFlow.js +26 -13
- 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 +22 -17
- package/dist/cloudflare/DocumentRoom.js +10 -5
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- 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 +20 -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 +9 -30
- package/dist/cloudflare/room/storage.js +52 -104
- 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/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 +160 -119
- package/dist/components/Block.svelte.d.ts +8 -3
- package/dist/components/Content.svelte +91 -44
- package/dist/components/CustomMark.svelte +46 -0
- package/dist/components/CustomMark.svelte.d.ts +11 -0
- package/dist/components/Edytor.svelte +80 -95
- package/dist/components/Edytor.svelte.d.ts +8 -12
- package/dist/components/InlineBlock.svelte +4 -9
- package/dist/components/Mark.svelte +46 -35
- package/dist/components/Mark.svelte.d.ts +7 -0
- 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 +48 -14
- 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 +8 -13
- package/dist/crdt/data.js +30 -70
- 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 +1 -5
- package/dist/crdt/doc/reads.js +38 -49
- 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 +24 -115
- package/dist/crdt/document.js +207 -305
- package/dist/crdt/edytor-doc.d.ts +671 -90
- package/dist/crdt/edytor-doc.js +73 -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 +26 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +7 -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/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/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
- package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
- 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 +34 -64
- package/dist/edytor.svelte.js +118 -180
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -184
- 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 +33 -72
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +92 -72
- 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 +13 -1
- package/dist/events/onPaste.js +46 -76
- package/dist/index.d.ts +10 -13
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +91 -314
- package/dist/labels.js +180 -396
- 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 -151
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
- package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +20 -17
- package/dist/plugins/blockHandles/dropIndicator.js +52 -60
- package/dist/plugins/blockHandles/geometry.d.ts +46 -1
- package/dist/plugins/blockHandles/geometry.js +51 -4
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
- 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 +79 -0
- package/dist/plugins/chrome.js +87 -0
- package/dist/plugins/code/CodeHeader.svelte +12 -58
- package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
- package/dist/plugins/code/CodePlugin.svelte +75 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +25 -0
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
- package/dist/plugins/code/code.css +5 -100
- package/dist/plugins/code/header.svelte.d.ts +47 -0
- package/dist/plugins/code/header.svelte.js +141 -0
- package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
- package/dist/plugins/code/languageMenu.svelte.js +199 -0
- package/dist/plugins/code/languages.d.ts +21 -10
- package/dist/plugins/code/languages.js +39 -126
- package/dist/plugins/columns/ColumnResize.svelte +13 -25
- 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/resize.svelte.d.ts +14 -51
- package/dist/plugins/columns/resize.svelte.js +70 -164
- 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 -430
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
- package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +18 -129
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
- package/dist/plugins/equation/EquationPlugin.svelte +123 -168
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.svelte.d.ts +74 -36
- package/dist/plugins/equation/equation.svelte.js +74 -66
- package/dist/plugins/equation/importUrl.d.ts +6 -0
- package/dist/plugins/equation/importUrl.js +6 -0
- package/dist/plugins/equation/katex.d.ts +8 -0
- package/dist/plugins/equation/katex.js +77 -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 +5 -151
- package/dist/plugins/image/ImagePlugin.svelte +49 -117
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
- 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 -57
- package/dist/plugins/image/controls.svelte.js +51 -174
- 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 +39 -24
- package/dist/plugins/index.js +30 -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 +6 -5
- package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
- package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
- package/dist/plugins/marquee/marquee.d.ts +33 -0
- package/dist/plugins/marquee/marquee.js +89 -0
- package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
- package/dist/plugins/marquee/marqueePlugin.js +68 -0
- package/dist/plugins/media/AudioPlugin.svelte +3 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
- package/dist/plugins/media/EmbedPlugin.svelte +93 -77
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +35 -111
- package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
- package/dist/plugins/media/MediaEmpty.svelte +55 -112
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +164 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
- package/dist/plugins/media/VideoPlugin.svelte +4 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
- package/dist/plugins/media/empty.svelte.d.ts +69 -0
- package/dist/plugins/media/empty.svelte.js +111 -0
- package/dist/plugins/media/media.d.ts +93 -30
- package/dist/plugins/media/media.js +79 -86
- package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
- package/dist/plugins/media/urlPaste.svelte.js +46 -75
- package/dist/plugins/mention/MentionPlugin.svelte +47 -124
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
- 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 +52 -108
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
- package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +25 -0
- package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.d.ts +9 -0
- package/dist/plugins/richtext/body.js +16 -0
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
- package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
- 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/slashMenu/SlashMenuController.svelte.d.ts +18 -11
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +96 -127
- package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
- package/dist/plugins/table/TablePlugin.svelte +116 -171
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +110 -117
- package/dist/plugins/table/chrome.svelte.js +643 -289
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +55 -134
- package/dist/plugins/table/table.d.ts +26 -7
- package/dist/plugins/table/table.js +23 -49
- 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 +29 -66
- package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
- package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
- 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 +38 -20
- package/dist/plugins/uploads.svelte.js +39 -32
- package/dist/plugins.d.ts +167 -60
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +12 -10
- package/dist/selection/pointer.svelte.js +154 -71
- 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 +263 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +11 -8
- package/dist/selection/visibility.js +23 -8
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +33 -39
- package/dist/session/attempt.js +61 -53
- package/dist/session/bindings.js +108 -139
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +206 -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 +15 -21
- package/dist/session/inputRules.js +75 -84
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +10 -10
- package/dist/session/moves.js +31 -59
- package/dist/session/navigation.d.ts +18 -3
- package/dist/session/navigation.js +194 -153
- package/dist/session/ports.d.ts +7 -0
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +8 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +64 -47
- 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 +32 -0
- package/dist/surface/lines.js +43 -0
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +73 -77
- package/dist/surface/overlay.d.ts +48 -6
- package/dist/surface/overlay.js +133 -23
- 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 +315 -126
- 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 -525
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -43
- 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 -447
- 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 -116
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
- package/dist/plugins/richtext/labels.d.ts +0 -5
- package/dist/plugins/richtext/labels.js +0 -3
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/toolbar/LinkCard.svelte +0 -118
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
- package/dist/plugins/toolbar/Toolbar.svelte +0 -400
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/session/props.d.ts +0 -28
- package/dist/session/props.js +0 -162
- 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
|
@@ -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
4
|
import { stacks } from './stacking.js';
|
|
4
|
-
import {
|
|
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. */
|
|
@@ -24,7 +25,7 @@ export const weightOf = (data) => {
|
|
|
24
25
|
* release writes the two columns' `data.width` weights, keeping their sum,
|
|
25
26
|
* in one `edytor.transact` (two `setData` commands: one undo step), and
|
|
26
27
|
* drops the preview in the same flush; Escape, a cancel or the view turning
|
|
27
|
-
* readonly drops it alone, at once.
|
|
28
|
+
* readonly drops it alone, at once (`band`).
|
|
28
29
|
* Neither column goes under `minWidth` × the layout's width, in the view
|
|
29
30
|
* only (the document stores weights). Positions are read in the overlay's
|
|
30
31
|
* measure, once per frame.
|
|
@@ -38,7 +39,6 @@ export const weightOf = (data) => {
|
|
|
38
39
|
export class ColumnResize {
|
|
39
40
|
edytor;
|
|
40
41
|
minWidth;
|
|
41
|
-
labels;
|
|
42
42
|
/** The layout under the pointer. */
|
|
43
43
|
hovered = $state(null);
|
|
44
44
|
/** The layout whose band holds the focus. */
|
|
@@ -46,48 +46,45 @@ export class ColumnResize {
|
|
|
46
46
|
/** A block drag is in progress: no strip takes the pointer. */
|
|
47
47
|
dragging = $state(false);
|
|
48
48
|
/** The measured strips of the hovered layout. */
|
|
49
|
-
strips = $state([]);
|
|
50
|
-
/** The strip
|
|
51
|
-
|
|
49
|
+
strips = $state.raw([]);
|
|
50
|
+
/** The strip's drag in progress (`band.drag`). */
|
|
51
|
+
band;
|
|
52
52
|
/** The guide's layer-relative box while a strip drags. */
|
|
53
53
|
guide = $state(null);
|
|
54
|
-
/** Ends the drag in progress without a write (Escape, a cancel, the view turning readonly). */
|
|
55
|
-
#cancel = null;
|
|
56
54
|
/** The two dragged columns' weights at the pointer, by id, while a strip drags (view only). */
|
|
57
55
|
preview = $state.raw(null);
|
|
58
|
-
constructor(edytor, minWidth
|
|
59
|
-
/** The words the bands say (the plugin's `labels`). */
|
|
60
|
-
labels = englishLabels.columns) {
|
|
56
|
+
constructor(edytor, minWidth) {
|
|
61
57
|
this.edytor = edytor;
|
|
62
58
|
this.minWidth = minWidth;
|
|
63
|
-
this.
|
|
59
|
+
this.band = new BandDrag(edytor);
|
|
60
|
+
}
|
|
61
|
+
/** The words the bands say (the view's `columns` labels). */
|
|
62
|
+
get labels() {
|
|
63
|
+
return labelsOf(this.edytor, 'columns', columnsEnglish);
|
|
64
64
|
}
|
|
65
65
|
/** The view is readonly (reactive). */
|
|
66
66
|
get readonly() {
|
|
67
67
|
return this.edytor.readonly;
|
|
68
68
|
}
|
|
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
69
|
/**
|
|
74
70
|
* 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
|
|
71
|
+
* the pointer, the one a band holds the focus of, the innermost one
|
|
72
|
+
* holding the selection's start (the keyboard's).
|
|
76
73
|
*/
|
|
77
|
-
get layout() {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
for (let
|
|
84
|
-
if (
|
|
85
|
-
return
|
|
74
|
+
get #layout() {
|
|
75
|
+
const { facade, selection, idToBlock } = this.edytor;
|
|
76
|
+
const layout = this.band.drag?.left.parent?.id ?? this.hovered ?? this.focused;
|
|
77
|
+
if (layout)
|
|
78
|
+
return layout;
|
|
79
|
+
const start = selection.projection.start?.block;
|
|
80
|
+
for (let at = start && idToBlock.get(start); at && !at.isRoot; at = at.parent)
|
|
81
|
+
if (at.id && facade.isLayout(at.id))
|
|
82
|
+
return at.id;
|
|
86
83
|
return null;
|
|
87
84
|
}
|
|
88
|
-
/** Whether the strips show: for a layout of an editable view
|
|
85
|
+
/** Whether the strips show: for a layout of an editable view, or while one drags. */
|
|
89
86
|
get shown() {
|
|
90
|
-
return this.drag !== null || (!this.edytor.readonly && !this.dragging && !!this
|
|
87
|
+
return this.band.drag !== null || (!this.edytor.readonly && !this.dragging && !!this.#layout);
|
|
91
88
|
}
|
|
92
89
|
/** A column's weight as shown: the drag's preview while a strip drags it, else its stored one. */
|
|
93
90
|
weight = (id, data) => (id === undefined ? undefined : this.preview?.[id]) ?? weightOf(data);
|
|
@@ -95,12 +92,10 @@ export class ColumnResize {
|
|
|
95
92
|
hover = (target) => {
|
|
96
93
|
const { facade } = this.edytor;
|
|
97
94
|
let layout = null;
|
|
98
|
-
for (let node = target?.closest?.('[data-edytor-block="true"]'); node; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
|
|
95
|
+
for (let node = target?.closest?.('[data-edytor-block="true"]'); node && !layout; node = node.parentElement?.closest('[data-edytor-block="true"]')) {
|
|
99
96
|
const id = node.dataset.edytorId;
|
|
100
|
-
if (id && facade.isLayout(id))
|
|
97
|
+
if (id && facade.isLayout(id))
|
|
101
98
|
layout = id;
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
99
|
}
|
|
105
100
|
if (layout === this.hovered)
|
|
106
101
|
return;
|
|
@@ -109,23 +104,24 @@ export class ColumnResize {
|
|
|
109
104
|
};
|
|
110
105
|
/**
|
|
111
106
|
* 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).
|
|
107
|
+
* or its overlay (a band, a column block's handle in the gap), or a strip drags.
|
|
113
108
|
*/
|
|
114
109
|
leave = (to) => {
|
|
115
110
|
const node = to instanceof Node ? to : null;
|
|
116
111
|
const { edytor } = this;
|
|
117
|
-
if (
|
|
112
|
+
if (this.band.drag ||
|
|
113
|
+
(node && (edytor.overlay.layer?.contains(node) || edytor.node?.contains(node))))
|
|
118
114
|
return;
|
|
119
115
|
this.hovered = null;
|
|
120
116
|
};
|
|
121
117
|
/** The overlay measure: the hovered layout's gaps, and the guide of a drag. */
|
|
122
118
|
measure = (host, origin) => {
|
|
123
|
-
const strips = this.shown ? this
|
|
124
|
-
const drag = this.drag;
|
|
119
|
+
const strips = this.shown ? this.#gaps(origin) : [];
|
|
120
|
+
const drag = this.band.drag;
|
|
125
121
|
const guide = drag && {
|
|
126
122
|
// Where the hover guide showed: the band's middle, never the gap's (it would jump onto the `+`).
|
|
127
123
|
x: drag.start +
|
|
128
|
-
this
|
|
124
|
+
this.#widthAt(drag) +
|
|
129
125
|
bandOf({ left: 0, right: drag.gap }).width / 2 -
|
|
130
126
|
GUIDE / 2 -
|
|
131
127
|
origin.left,
|
|
@@ -134,21 +130,18 @@ export class ColumnResize {
|
|
|
134
130
|
};
|
|
135
131
|
return () => {
|
|
136
132
|
// Layer-relative, as the rest of the overlay's chrome.
|
|
137
|
-
|
|
138
|
-
if (
|
|
133
|
+
pin(host);
|
|
134
|
+
if (JSON.stringify(strips) !== JSON.stringify(this.strips))
|
|
139
135
|
this.strips = strips;
|
|
140
136
|
this.guide = guide;
|
|
141
137
|
};
|
|
142
138
|
};
|
|
143
139
|
/** 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
|
|
140
|
+
#gaps(origin) {
|
|
141
|
+
const id = this.#layout;
|
|
146
142
|
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))
|
|
143
|
+
const box = layout?.node?.isConnected ? layout.node.getBoundingClientRect() : undefined;
|
|
144
|
+
if (!layout || !box || stacks(box.width))
|
|
152
145
|
return [];
|
|
153
146
|
const shown = layout.children.filter((item) => (item.node?.getBoundingClientRect().width ?? 0) > 0);
|
|
154
147
|
return shown.slice(1).flatMap((item, index) => {
|
|
@@ -156,11 +149,12 @@ export class ColumnResize {
|
|
|
156
149
|
if (!gap)
|
|
157
150
|
return [];
|
|
158
151
|
const band = bandOf(gap);
|
|
159
|
-
const
|
|
152
|
+
const before = shown[index];
|
|
153
|
+
const [left, right] = [before, item].map((column) => this.weight(column.id, column.data));
|
|
160
154
|
return [
|
|
161
155
|
{
|
|
162
156
|
layout: layout.id,
|
|
163
|
-
left:
|
|
157
|
+
left: before.id,
|
|
164
158
|
right: item.id,
|
|
165
159
|
value: Math.round((100 * left) / (left + right)),
|
|
166
160
|
x: band.left - origin.left,
|
|
@@ -172,98 +166,35 @@ export class ColumnResize {
|
|
|
172
166
|
});
|
|
173
167
|
}
|
|
174
168
|
/** The left column's width at the drag's pointer, held to the minimum on both sides. */
|
|
175
|
-
widthAt({ width, sum, min, from, at }) {
|
|
169
|
+
#widthAt({ width, sum, min, from, at }) {
|
|
176
170
|
const lo = Math.min(min, width);
|
|
177
171
|
const hi = Math.max(sum - min, width);
|
|
178
172
|
return Math.min(hi, Math.max(lo, width + at - from));
|
|
179
173
|
}
|
|
180
174
|
/**
|
|
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.
|
|
175
|
+
* Press on `strip` (`band.press`): the drag starts (`trackDrag`), nothing
|
|
176
|
+
* is written until the release.
|
|
196
177
|
*/
|
|
197
178
|
start = (event, strip) => {
|
|
198
|
-
const
|
|
199
|
-
if (event.button !== 0 || edytor.readonly || this.drag)
|
|
200
|
-
return;
|
|
201
|
-
const pair = this.pair(strip, event.clientX);
|
|
179
|
+
const pair = this.band.drag ? null : this.#pair(strip, event.clientX);
|
|
202
180
|
if (!pair)
|
|
203
181
|
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;
|
|
182
|
+
this.band.start(event, pair, (drag) => {
|
|
230
183
|
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
|
-
}
|
|
184
|
+
if (drag)
|
|
185
|
+
this.#release(drag);
|
|
239
186
|
// After the release's write: the stored weights replace the preview in one flush.
|
|
240
187
|
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();
|
|
188
|
+
}, () => (this.preview = this.#weights(this.band.drag)));
|
|
256
189
|
};
|
|
257
190
|
/** `strip`'s two columns as they are now, measured, a drag from `from`; `null` when one is gone. */
|
|
258
|
-
pair(strip, from) {
|
|
191
|
+
#pair(strip, from) {
|
|
259
192
|
const left = this.edytor.idToBlock.get(strip.left);
|
|
260
193
|
const right = this.edytor.idToBlock.get(strip.right);
|
|
261
|
-
const
|
|
262
|
-
const [a, b, box] = [left, right, layout].map((block) => block?.node?.getBoundingClientRect());
|
|
194
|
+
const [a, b, box] = [left, right, left?.parent].map((block) => block?.node?.getBoundingClientRect());
|
|
263
195
|
if (!left || !right || !a || !b || !box)
|
|
264
196
|
return null;
|
|
265
197
|
return {
|
|
266
|
-
strip,
|
|
267
198
|
left,
|
|
268
199
|
right,
|
|
269
200
|
from,
|
|
@@ -282,47 +213,31 @@ export class ColumnResize {
|
|
|
282
213
|
* A key on a focused band: ArrowRight/ArrowLeft move the gap by 1% of the
|
|
283
214
|
* layout's width (Shift: 10%), Home/End to the narrowest either column
|
|
284
215
|
* may get (the drag's minimum); each press writes both weights, keeping
|
|
285
|
-
* their sum, as one undo step (
|
|
216
|
+
* their sum, as one undo step (`#release`). Every key there is the band's,
|
|
286
217
|
* never the editor's; Escape gives the keys back to the editor.
|
|
287
218
|
*/
|
|
288
219
|
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);
|
|
220
|
+
const step = bandKey(this.edytor, this.band, event, {
|
|
221
|
+
ArrowLeft: -1,
|
|
222
|
+
ArrowRight: 1,
|
|
223
|
+
Home: -Infinity,
|
|
224
|
+
End: Infinity
|
|
225
|
+
});
|
|
226
|
+
const pair = step && this.#pair(strip, 0);
|
|
303
227
|
if (!pair)
|
|
304
228
|
return;
|
|
305
|
-
pair.at =
|
|
306
|
-
this
|
|
307
|
-
edytor.overlay.invalidate();
|
|
229
|
+
pair.at = Number.isFinite(step) ? step * (event.shiftKey ? 0.1 : 0.01) * pair.span : step;
|
|
230
|
+
this.#release(pair);
|
|
231
|
+
this.edytor.overlay.invalidate();
|
|
308
232
|
};
|
|
309
233
|
/** A band took (`true`) or lost the focus: its layout's bands stay while it holds it. */
|
|
310
234
|
focus = (strip, focused) => {
|
|
311
235
|
this.focused = focused ? strip.layout : null;
|
|
312
236
|
this.edytor.overlay.invalidate();
|
|
313
237
|
};
|
|
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
238
|
/** The two columns' weights at the drag's pointer, keeping their stored sum; `null` before it moved. */
|
|
324
|
-
weights(drag) {
|
|
325
|
-
const width = this
|
|
239
|
+
#weights(drag) {
|
|
240
|
+
const width = this.#widthAt(drag);
|
|
326
241
|
const { left, right, sum } = drag;
|
|
327
242
|
if (Math.abs(width - drag.width) < 0.5 || sum <= 0)
|
|
328
243
|
return null;
|
|
@@ -331,23 +246,14 @@ export class ColumnResize {
|
|
|
331
246
|
return { [left.id]: weight, [right.id]: pair - weight };
|
|
332
247
|
}
|
|
333
248
|
/** The release: both weights, keeping their sum, one undo step; nothing when nothing moved. */
|
|
334
|
-
release(drag) {
|
|
335
|
-
const weights = this
|
|
249
|
+
#release(drag) {
|
|
250
|
+
const weights = this.#weights(drag);
|
|
336
251
|
const { left, right } = drag;
|
|
337
252
|
if (!weights || !left.isInTree || !right.isInTree)
|
|
338
253
|
return;
|
|
339
254
|
this.edytor.transact(() => {
|
|
340
|
-
|
|
341
|
-
|
|
255
|
+
for (const column of [left, right])
|
|
256
|
+
this.edytor.patchData(column.id, [{ path: ['width'], value: weights[column.id] }]);
|
|
342
257
|
});
|
|
343
258
|
}
|
|
344
259
|
}
|
|
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: {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { selectedTextSpans } from '../../selection/visibility.js';
|
|
2
2
|
import { Text } from '../../text/text.svelte.js';
|
|
3
|
-
import {
|
|
3
|
+
import { showText } from '../planned.js';
|
|
4
4
|
import { COMMENT_MARK, blockCommentRuns, commentId, joinAnchors } from '../../crdt/protocols/comments.js';
|
|
5
5
|
import { CommentThreads } from '../../collaboration/comments/threads.js';
|
|
6
|
-
import {
|
|
6
|
+
import { takeKeys } from '../../events/onFocus.js';
|
|
7
7
|
const avatarColors = ['#e16259', '#d9730d', '#cb912f', '#448361', '#337ea9', '#9065b0', '#c14c8a'];
|
|
8
8
|
/**
|
|
9
9
|
* The comments plugin's state and actions (`plugins/comments`): the
|
|
@@ -33,13 +33,11 @@ export class CommentsController {
|
|
|
33
33
|
#off = [];
|
|
34
34
|
client;
|
|
35
35
|
user;
|
|
36
|
-
labels;
|
|
37
36
|
constructor(edytor, options) {
|
|
38
37
|
this.edytor = edytor;
|
|
39
38
|
this.options = options;
|
|
40
39
|
this.client = options.client;
|
|
41
40
|
this.user = options.user;
|
|
42
|
-
this.labels = options.labels ?? englishLabels.comments;
|
|
43
41
|
}
|
|
44
42
|
/**
|
|
45
43
|
* The blocks holding an anchor, and their runs by thread: read once at
|
|
@@ -102,10 +100,10 @@ export class CommentsController {
|
|
|
102
100
|
thread(id) {
|
|
103
101
|
return this.threads.find((thread) => thread.id === id);
|
|
104
102
|
}
|
|
105
|
-
/** A user as the sidebar shows them: their name, avatar and color. */
|
|
103
|
+
/** A user as the sidebar shows them: their name (else their id), avatar and color. */
|
|
106
104
|
userOf = (id) => {
|
|
107
105
|
const known = id === this.user.id ? this.user : { id, ...this.options.users?.(id) };
|
|
108
|
-
const name = known.name ??
|
|
106
|
+
const name = known.name ?? id;
|
|
109
107
|
let hash = 0;
|
|
110
108
|
for (const char of id)
|
|
111
109
|
hash = (hash * 31 + char.charCodeAt(0)) | 0;
|
|
@@ -133,7 +131,7 @@ export class CommentsController {
|
|
|
133
131
|
const detach = client.attach?.({
|
|
134
132
|
order: () => edytor.facade.order(),
|
|
135
133
|
contentItems: (id) => edytor.facade.contentItems(id),
|
|
136
|
-
|
|
134
|
+
formatRange: (block, offset, length, marks) => edytor.facade.formatRange(block, offset, length, marks),
|
|
137
135
|
// A store's removal is no step of this view's history.
|
|
138
136
|
transact: (fn) => (edytor.doc._transaction ? fn() : edytor.dispatcher.outside(() => fn()))
|
|
139
137
|
});
|
|
@@ -203,7 +201,9 @@ export class CommentsController {
|
|
|
203
201
|
if (!this.canComment)
|
|
204
202
|
return false;
|
|
205
203
|
const { facade, selection } = edytor;
|
|
206
|
-
const {
|
|
204
|
+
const { startText } = selection.textRange();
|
|
205
|
+
const { isCollapsed } = selection.projection;
|
|
206
|
+
const startBlock = startText?.parent;
|
|
207
207
|
const spans = isCollapsed
|
|
208
208
|
? (startBlock?.content ?? []).flatMap((part) => part instanceof Text && part.length > 0
|
|
209
209
|
? [{ text: part, start: 0, end: part.length }]
|
|
@@ -273,17 +273,13 @@ export class CommentsController {
|
|
|
273
273
|
};
|
|
274
274
|
/** The one write of a thread's anchor: its mark over `runs`, one command. */
|
|
275
275
|
#anchor = (thread, runs) => {
|
|
276
|
-
const { facade
|
|
276
|
+
const { facade } = this.edytor;
|
|
277
277
|
if (runs.length === 0)
|
|
278
278
|
return 'noop';
|
|
279
279
|
const mark = `${COMMENT_MARK}:${thread}`;
|
|
280
280
|
const prepare = (payload) => facade.compose(...payload.runs.map(({ block, offset, length }) => facade.prepare.formatRange(block, offset, length, { [mark]: { id: payload.thread } })));
|
|
281
|
-
const block = idToBlock.get(runs[0].block)
|
|
282
|
-
dispatcher.
|
|
283
|
-
if ('writes' in plan)
|
|
284
|
-
facade.apply(plan);
|
|
285
|
-
}, prepare);
|
|
286
|
-
return dispatcher.last?.operation === 'addComment' ? dispatcher.last.status : 'refused';
|
|
281
|
+
const block = this.edytor.idToBlock.get(runs[0].block);
|
|
282
|
+
return this.edytor.dispatcher.plan('addComment', { thread, runs }, prepare, block).status;
|
|
287
283
|
};
|
|
288
284
|
// ── A thread's actions ───────────────────────────────────────────────
|
|
289
285
|
reply = async (thread, body) => body.trim() ? (await this.#send({ op: 'reply', thread, body })) !== null : false;
|
|
@@ -301,14 +297,8 @@ export class CommentsController {
|
|
|
301
297
|
focus = (thread) => {
|
|
302
298
|
this.active = thread;
|
|
303
299
|
const run = thread ? this.anchors.get(thread)?.[0] : undefined;
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
reveal(block);
|
|
307
|
-
block.textAtOffset(run.offset)?.text.node?.scrollIntoView?.({
|
|
308
|
-
block: 'nearest',
|
|
309
|
-
inline: 'nearest'
|
|
310
|
-
});
|
|
311
|
-
}
|
|
300
|
+
if (run)
|
|
301
|
+
showText(this.edytor, run.block, run.offset);
|
|
312
302
|
this.edytor.overlay.invalidate();
|
|
313
303
|
};
|
|
314
304
|
/**
|
|
@@ -344,8 +334,7 @@ export class CommentsController {
|
|
|
344
334
|
].join('');
|
|
345
335
|
});
|
|
346
336
|
#refocus = () => {
|
|
347
|
-
this.edytor
|
|
348
|
-
this.edytor.node?.focus({ preventScroll: true });
|
|
337
|
+
takeKeys(this.edytor);
|
|
349
338
|
this.edytor.overlay.invalidate();
|
|
350
339
|
};
|
|
351
340
|
}
|