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
package/dist/session/bindings.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { blockSelection } from './selection.js';
|
|
2
2
|
import { extendVertically, navigationBindings, stayWithoutTarget, vertical } from './navigation.js';
|
|
3
|
-
import {
|
|
3
|
+
import { caretAt, intentSnapshot } from './attempt.js';
|
|
4
4
|
import { flipToggles, getSelectionBlocks, deleteSelectedBlocks, outermost, selectedBlocksExit, shownSelectionBlocks } from '../selection/replaceSelection.js';
|
|
5
5
|
import { shown } from '../selection/visibility.js';
|
|
6
|
-
const STRUCTURAL_HOTKEY_DOM_REPAIR_WINDOW_MS = 500;
|
|
7
|
-
const HISTORY_HOTKEY_DOM_REPAIR_WINDOW_MS = 150;
|
|
8
6
|
/**
|
|
9
7
|
* Remove the selected inline atom as one command: the caret lands where
|
|
10
8
|
* the atom was; a printable key types `value` there. Answers whether an atom
|
|
11
9
|
* was selected.
|
|
12
10
|
*/
|
|
13
11
|
export const replaceSelectedAtom = (edytor, value = '') => {
|
|
14
|
-
const selected = edytor.selection.
|
|
15
|
-
edytor.selection.inlineBlockDeletionTarget;
|
|
12
|
+
const selected = edytor.selection.inlineBlockDeletionTarget;
|
|
16
13
|
if (!selected)
|
|
17
14
|
return false;
|
|
18
15
|
edytor.selection.clearInlineBlockSelection();
|
|
@@ -20,40 +17,19 @@ export const replaceSelectedAtom = (edytor, value = '') => {
|
|
|
20
17
|
const index = parent.content.indexOf(selected);
|
|
21
18
|
if (index === -1)
|
|
22
19
|
return true;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
20
|
+
// The text before the atom (a block's content starts with a text): the
|
|
21
|
+
// removal joins the text after the atom to it.
|
|
22
|
+
const text = parent.content[index - 1];
|
|
23
|
+
const offset = text.length;
|
|
24
|
+
edytor.removeInline(parent.id, selected.id);
|
|
27
25
|
if (value)
|
|
28
|
-
|
|
29
|
-
edytor.dispatcher.caret(
|
|
26
|
+
edytor.insertText(parent.id, text.segStart + offset, value);
|
|
27
|
+
edytor.dispatcher.caret(text, offset + value.length);
|
|
30
28
|
return true;
|
|
31
29
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
const nextBlock = shown(startText.parent, 'blockAfter');
|
|
38
|
-
if (!nextBlock?.definition.void) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
edytor.selection.selectBlocks(nextBlock);
|
|
42
|
-
return true;
|
|
43
|
-
};
|
|
44
|
-
/** The key's attempt: the model owns the DOM drift around its command for `window` ms. */
|
|
45
|
-
const suppressHotkeyDomDrift = (edytor, window) => {
|
|
46
|
-
const attempt = attemptOf(edytor, { inputType: 'hotkey', cancelable: true });
|
|
47
|
-
edytor.attempts.drift(edytor.attempts.admit(attempt, 'model'), 'discard', window);
|
|
48
|
-
};
|
|
49
|
-
const ownsDeleteSelection = (edytor) => edytor.selection.selectedBlocks.size > 0 || edytor.selection.selectedInlineBlock.size > 0;
|
|
50
|
-
const history = (direction) => ({ edytor, prevent }) => prevent(() => {
|
|
51
|
-
suppressHotkeyDomDrift(edytor, HISTORY_HOTKEY_DOM_REPAIR_WINDOW_MS);
|
|
52
|
-
if (direction === 'undo')
|
|
53
|
-
edytor.historyUndo();
|
|
54
|
-
else
|
|
55
|
-
edytor.historyRedo();
|
|
56
|
-
});
|
|
30
|
+
/** The selection is the editor's own: an inline atom or blocks (no DOM range shows it). */
|
|
31
|
+
const owned = ({ selection }) => selection.selectedBlocks.size > 0 || selection.inlineBlockDeletionTarget !== null;
|
|
32
|
+
const history = (direction) => ({ edytor, prevent }) => prevent(() => (direction === 'undo' ? edytor.historyUndo() : edytor.historyRedo()));
|
|
57
33
|
/**
|
|
58
34
|
* Block-selection keys walk the document order with the island seal,
|
|
59
35
|
* past a collapsed toggle's hidden body.
|
|
@@ -65,54 +41,72 @@ const SEALED = { sealed: true };
|
|
|
65
41
|
* no line and no highlight of their own (Notion): a selection holding every
|
|
66
42
|
* block of a layout stands for it (`liftLayouts`).
|
|
67
43
|
*/
|
|
68
|
-
const stepOnto = (block,
|
|
44
|
+
const stepOnto = (block, dir) => {
|
|
69
45
|
const { facade } = block.edytor;
|
|
46
|
+
const step = dir > 0 ? 'blockAfter' : 'blockBefore';
|
|
70
47
|
let next = shown(block, step, SEALED);
|
|
71
48
|
while (next && (facade.isLayout(next.id) || facade.isLayoutItem(next.id)))
|
|
72
49
|
next = shown(next, step, SEALED);
|
|
73
50
|
return next;
|
|
74
51
|
};
|
|
75
52
|
/** Move a single block selection to its sealed neighbour in document order. */
|
|
76
|
-
const moveBlockSelection = (
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
53
|
+
const moveBlockSelection = (dir) => ({ edytor, prevent }) => {
|
|
54
|
+
const [block, ...rest] = edytor.selection.selectedBlocks;
|
|
55
|
+
if (!block || rest.length)
|
|
56
|
+
return;
|
|
57
|
+
prevent(() => {
|
|
58
|
+
const target = stepOnto(block, dir);
|
|
59
|
+
if (target)
|
|
60
|
+
edytor.selection.select(blockSelection([target.id]));
|
|
61
|
+
});
|
|
86
62
|
};
|
|
87
|
-
const arrowUp = vertical(-1, moveBlockSelection(
|
|
88
|
-
const arrowDown = vertical(1, moveBlockSelection(
|
|
63
|
+
const arrowUp = vertical(-1, moveBlockSelection(-1));
|
|
64
|
+
const arrowDown = vertical(1, moveBlockSelection(1));
|
|
89
65
|
/**
|
|
90
66
|
* Shift+ArrowUp/Down over a block selection. Its first member is the
|
|
91
67
|
* anchor and its last the focus (insertion order): a key moving the focus
|
|
92
68
|
* back toward the anchor shrinks the selection, otherwise it extends past
|
|
93
69
|
* the selection's edge in document order, one block at a time — a
|
|
94
70
|
* parent and its children are separate members (`sel.blocks.exact`).
|
|
71
|
+
* Without a block selection the editor owns vertical extension (Shift+ArrowDown
|
|
72
|
+
* at the end of a text right before a void selects the void).
|
|
95
73
|
*/
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
edytor
|
|
74
|
+
const extend = (dir) => ({ edytor, prevent }) => {
|
|
75
|
+
const { selection } = edytor;
|
|
76
|
+
const members = [...selection.selectedBlocks];
|
|
77
|
+
if (!members.length) {
|
|
78
|
+
stayWithoutTarget(edytor, prevent);
|
|
79
|
+
if ((dir > 0 && voidAfter(edytor)) || extendVertically(edytor, dir))
|
|
80
|
+
prevent();
|
|
102
81
|
return;
|
|
103
82
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
?
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
83
|
+
prevent(() => {
|
|
84
|
+
const { value } = selection;
|
|
85
|
+
const ids = value.kind === 'blocks' ? value.ids : [];
|
|
86
|
+
const focus = members.at(-1);
|
|
87
|
+
if (Math.sign(edytor.compareBlocks(focus, members[0])) === -dir)
|
|
88
|
+
return selection.select(blockSelection(ids.filter((id) => id !== focus.id)));
|
|
89
|
+
const sorted = members.toSorted(edytor.compareBlocks);
|
|
90
|
+
const next = stepOnto((dir > 0 ? sorted.at(-1) : sorted[0]), dir);
|
|
91
|
+
if (next && !ids.includes(next.id))
|
|
92
|
+
selection.select(blockSelection([...ids, next.id]));
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
/** A caret at the end of a text whose block a void follows selects that void. */
|
|
96
|
+
const voidAfter = (edytor) => {
|
|
97
|
+
const { start, isCollapsed, isAtEndOfText } = edytor.selection.projection;
|
|
98
|
+
const block = isCollapsed && isAtEndOfText && start && edytor.idToBlock.get(start.block);
|
|
99
|
+
const next = block ? shown(block, 'blockAfter') : null;
|
|
100
|
+
if (!next?.definition.void)
|
|
101
|
+
return false;
|
|
102
|
+
edytor.selection.select(blockSelection([next.id]));
|
|
103
|
+
return true;
|
|
110
104
|
};
|
|
111
105
|
/**
|
|
112
106
|
* Move `blocks` one level, one group of siblings at a time (Notion: over
|
|
113
107
|
* several nesting levels, each group that can move does, a vetoed one too:
|
|
114
108
|
* `dispatcher.each`), as one undo step. A block inside another of them
|
|
115
|
-
* moves with it; `edytor.
|
|
109
|
+
* moves with it; `edytor.move` moves siblings with an unselected block
|
|
116
110
|
* between them apart, so no key reorders the text. Answers
|
|
117
111
|
* the moved blocks.
|
|
118
112
|
*/
|
|
@@ -121,62 +115,66 @@ const moveRoots = (edytor, blocks, direction) => {
|
|
|
121
115
|
for (const block of outermost(blocks).toSorted(edytor.compareBlocks))
|
|
122
116
|
groups.set(block.parent, [...(groups.get(block.parent) ?? []), block]);
|
|
123
117
|
return edytor.dispatcher
|
|
124
|
-
.each('moveBlocks', [...groups.values()], (group) => edytor.
|
|
118
|
+
.each('moveBlocks', [...groups.values()], (group) => edytor.move({ blocks: group, direction }))
|
|
125
119
|
.flatMap((moved) => moved ?? []);
|
|
126
120
|
};
|
|
127
121
|
/**
|
|
128
|
-
* Tab / Shift+Tab
|
|
122
|
+
* Tab / Shift+Tab, with `allowNesting`: nest or unnest the selected block, or the caret's block.
|
|
129
123
|
* Selected blocks, or the blocks a text range spans, move one level per
|
|
130
124
|
* group of siblings, a selected block's selected descendants with it, as
|
|
131
|
-
* one command; the selection stays.
|
|
125
|
+
* one command; the selection stays (its anchors moved with the blocks).
|
|
132
126
|
*/
|
|
133
|
-
const nest = (operation) => ({ edytor, prevent }) =>
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
127
|
+
const nest = (operation) => ({ edytor, prevent }) =>
|
|
128
|
+
// Nesting off (`allowNesting`, the default): the key is not the editor's, the browser moves the focus on.
|
|
129
|
+
edytor.allowNesting &&
|
|
130
|
+
prevent(() => {
|
|
131
|
+
const { selection } = edytor;
|
|
132
|
+
const { value } = selection;
|
|
133
|
+
const direction = operation === 'nestBlock' ? 'in' : 'out';
|
|
134
|
+
const blocks = getSelectionBlocks(edytor);
|
|
135
|
+
if (blocks.length > 1) {
|
|
136
|
+
if (moveRoots(edytor, blocks, direction).length)
|
|
137
|
+
selection.select(value);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const [selected] = selection.selectedBlocks;
|
|
141
|
+
const at = selection.textAt(selection.projection.start);
|
|
142
|
+
const block = selected ?? at?.text.parent;
|
|
143
|
+
if (!block)
|
|
144
|
+
return;
|
|
145
|
+
// Into the block before it; the view's move reveals a closed toggle it lands in or that adopts.
|
|
146
|
+
const into = block.previousBlock;
|
|
147
|
+
if (operation === 'nestBlock' && !into)
|
|
148
|
+
return edytor.dispatcher.record({ operation, status: 'refused' });
|
|
149
|
+
const result = operation === 'unNestBlock'
|
|
150
|
+
? edytor.unNestBlock(block.id)
|
|
151
|
+
: edytor.nestBlock(block.id, into.id);
|
|
152
|
+
if (result.status !== 'applied')
|
|
142
153
|
return;
|
|
143
|
-
if (members.length)
|
|
144
|
-
edytor.selection.selectBlocks(...members);
|
|
145
|
-
else if (startText && endText)
|
|
146
|
-
edytor.selection.setAtRange(startText, yStart, endText, yEnd, { isReversed });
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
const selectedBlock = selectedBlocks.values().next().value;
|
|
150
|
-
const { yStart, startText, startBlock } = edytor.selection.state;
|
|
151
|
-
const index = startText?.index;
|
|
152
|
-
// The block's command reveals a closed toggle it lands in or that adopts.
|
|
153
|
-
const block = (selectedBlock || startBlock)?.[operation]();
|
|
154
|
-
if (block)
|
|
155
154
|
edytor.announcer.moved({ blocks: [block], direction }, [block]);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
});
|
|
155
|
+
if (selected)
|
|
156
|
+
selection.select(blockSelection([block.id]));
|
|
157
|
+
else if (at)
|
|
158
|
+
caretAt(edytor, block.content[at.text.index], at.offset);
|
|
159
|
+
});
|
|
161
160
|
/**
|
|
162
161
|
* Backspace/Delete over an editor-owned selection: the selected atom, or
|
|
163
162
|
* the selected blocks (the caret lands at the end of the block before them).
|
|
163
|
+
* The command runs the hooks and authors its caret; the projector displays it.
|
|
164
164
|
*/
|
|
165
165
|
const deleteSelection = ({ edytor, prevent }) => {
|
|
166
|
-
if (edytor.selection.
|
|
167
|
-
|
|
168
|
-
if (
|
|
169
|
-
|
|
170
|
-
// The command runs the hooks and authors its caret; the projector displays it.
|
|
171
|
-
prevent(() => deleteSelectedBlocks(edytor));
|
|
166
|
+
if (edytor.selection.inlineBlockDeletionTarget)
|
|
167
|
+
prevent(() => replaceSelectedAtom(edytor));
|
|
168
|
+
else if (edytor.selection.selectedBlocks.size)
|
|
169
|
+
prevent(() => deleteSelectedBlocks(edytor));
|
|
172
170
|
};
|
|
173
171
|
/** An Emacs kill (ctrl+h/d/k): a delete intent, or the owned selection's delete. */
|
|
174
172
|
const kill = (inputType) => (payload) => {
|
|
175
173
|
const { edytor, prevent } = payload;
|
|
176
|
-
if (
|
|
174
|
+
if (owned(edytor))
|
|
177
175
|
return deleteSelection(payload);
|
|
178
|
-
const {
|
|
179
|
-
if (
|
|
176
|
+
const { projection } = edytor.selection;
|
|
177
|
+
if (edytor.selection.textAt(projection.start))
|
|
180
178
|
prevent(() => edytor.ports.input.runIntent(inputType(projection)));
|
|
181
179
|
};
|
|
182
180
|
/**
|
|
@@ -186,10 +184,7 @@ const kill = (inputType) => (payload) => {
|
|
|
186
184
|
* without a DOM range, so the chord is claimed at its keydown. Shift+Delete
|
|
187
185
|
* is not one (the Windows cut).
|
|
188
186
|
*/
|
|
189
|
-
const wordAndLineDeletes = Object.fromEntries(['alt', 'mod', 'ctrl'].flatMap((modifier) => ['backspace', 'delete'].map((key) => [
|
|
190
|
-
`${modifier}+${key}`,
|
|
191
|
-
(payload) => (ownsDeleteSelection(payload.edytor) ? deleteSelection(payload) : undefined)
|
|
192
|
-
])));
|
|
187
|
+
const wordAndLineDeletes = Object.fromEntries(['alt', 'mod', 'ctrl'].flatMap((modifier) => ['backspace', 'delete'].map((key) => [`${modifier}+${key}`, deleteSelection])));
|
|
193
188
|
/**
|
|
194
189
|
* macOS Emacs/Cocoa text bindings. Bare `ctrl+` chords only resolve on
|
|
195
190
|
* Apple platforms (the keymap folds Ctrl into `mod` elsewhere), so the table
|
|
@@ -204,9 +199,9 @@ const emacs = {
|
|
|
204
199
|
'ctrl+k': kill((at) => at.isCollapsed && at.isAtEndOfBlock ? 'deleteContentForward' : 'deleteHardLineForward'),
|
|
205
200
|
// Open-line: a soft break with the caret kept before it.
|
|
206
201
|
'ctrl+o': ({ edytor, prevent }) => {
|
|
207
|
-
if (
|
|
202
|
+
if (owned(edytor) || !edytor.selection.textAt(edytor.selection.projection.start))
|
|
208
203
|
return;
|
|
209
|
-
prevent(() => edytor.dispatcher.run('
|
|
204
|
+
prevent(() => edytor.dispatcher.run('insertBlocks', () => edytor.ports.input.insertLineBreak(intentSnapshot(edytor, 'insertLineBreak'), 'before')));
|
|
210
205
|
},
|
|
211
206
|
'ctrl+p': arrowUp,
|
|
212
207
|
'ctrl+n': arrowDown
|
|
@@ -223,44 +218,21 @@ export const builtInBindings = {
|
|
|
223
218
|
'mod+enter': ({ edytor, prevent }) => prevent(() => flipToggles(shownSelectionBlocks(edytor))),
|
|
224
219
|
// The select-all ladder: the block's text, then the block, then every block
|
|
225
220
|
// (at once with no selection at all, as Notion).
|
|
226
|
-
'mod+a': ({ edytor, prevent }) => {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
every();
|
|
239
|
-
}
|
|
240
|
-
else if (isAtStartOfBlock && isAtEndOfBlock) {
|
|
241
|
-
edytor.selection.selectBlocks(edytor.idToBlock.get(islandRoot ?? '') ?? startText.parent);
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
edytor.selection.setAtBlockRange(startBlock);
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
},
|
|
221
|
+
'mod+a': ({ edytor, prevent }) => prevent(() => {
|
|
222
|
+
const { selection, idToBlock } = edytor;
|
|
223
|
+
const { start, islandRoot, isAtStartOfBlock, isAtEndOfBlock } = selection.projection;
|
|
224
|
+
const block = selection.textAt(start)?.text.parent;
|
|
225
|
+
// Every block, nested ones included: a block selection is exactly its members.
|
|
226
|
+
if (block ? selection.selectedBlocks.size : selection.value.kind === 'none')
|
|
227
|
+
selection.select(blockSelection(edytor.facade.order().filter((id) => idToBlock.has(id))));
|
|
228
|
+
else if (block && isAtStartOfBlock && isAtEndOfBlock)
|
|
229
|
+
selection.select(blockSelection([(idToBlock.get(islandRoot ?? '') ?? block).id]));
|
|
230
|
+
else
|
|
231
|
+
selection.selectLines(block);
|
|
232
|
+
}),
|
|
248
233
|
...navigationBindings,
|
|
249
|
-
|
|
250
|
-
'shift+
|
|
251
|
-
if (edytor.selection.selectedBlocks.size)
|
|
252
|
-
return prevent(() => extendBlockSelection(edytor, 'up'));
|
|
253
|
-
stayWithoutTarget(edytor, prevent);
|
|
254
|
-
if (extendVertically(edytor, -1))
|
|
255
|
-
prevent();
|
|
256
|
-
},
|
|
257
|
-
'shift+arrowdown': ({ edytor, prevent }) => {
|
|
258
|
-
if (edytor.selection.selectedBlocks.size)
|
|
259
|
-
return prevent(() => extendBlockSelection(edytor, 'down'));
|
|
260
|
-
stayWithoutTarget(edytor, prevent);
|
|
261
|
-
if (selectNextVoidBlockFromCaret(edytor) || extendVertically(edytor, 1))
|
|
262
|
-
prevent();
|
|
263
|
-
},
|
|
234
|
+
'shift+arrowup': extend(-1),
|
|
235
|
+
'shift+arrowdown': extend(1),
|
|
264
236
|
arrowup: arrowUp,
|
|
265
237
|
arrowdown: arrowDown,
|
|
266
238
|
tab: nest('nestBlock'),
|
|
@@ -273,7 +245,7 @@ export const builtInBindings = {
|
|
|
273
245
|
prevent(() => {
|
|
274
246
|
const at = selectedBlocksExit(edytor);
|
|
275
247
|
if (at)
|
|
276
|
-
edytor.selection.
|
|
248
|
+
edytor.selection.selectText(at.text, at.offset);
|
|
277
249
|
});
|
|
278
250
|
},
|
|
279
251
|
backspace: deleteSelection,
|
|
@@ -1,22 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The command dispatcher: one per view.
|
|
3
|
+
*
|
|
4
|
+
* Every write a view makes is one of the document's operations
|
|
5
|
+
* (`DocumentWrites`, dispatched under its own name and arguments:
|
|
6
|
+
* `edytor.insertBlocks(…)`), or a named command that is one prepared plan of
|
|
7
|
+
* them (`plan`: a table row, a find-and-replace). It is admitted (readonly,
|
|
8
|
+
* `document.writable`), prepared, shown to every extension hook before any
|
|
9
|
+
* write — the command itself, then each planned step as the operation it
|
|
10
|
+
* performs — applied in one transaction, normalized once per touched block at
|
|
11
|
+
* the end of that transaction (normalizers read handles over the index), and
|
|
12
|
+
* reported (`refused | noop | applied | failed`). A user command (`run`)
|
|
13
|
+
* wraps the operations one gesture issues and closes the undo policy table.
|
|
14
|
+
* `prevent()` is caught here, once (`prevented`).
|
|
15
|
+
*/
|
|
16
|
+
import type { Block } from '../block/block.svelte.js';
|
|
17
|
+
import type { DocumentWrites } from '../crdt/operations.js';
|
|
18
|
+
import type { OpResult, Prepared } from '../crdt/edytor-doc.js';
|
|
19
|
+
import type { DocPosition } from '../crdt/rangeDelete.js';
|
|
2
20
|
import type { SelectionValue } from './selection.js';
|
|
3
21
|
import type { Text } from '../text/text.svelte.js';
|
|
4
22
|
import type { Caret } from '../selection/selection.svelte.js';
|
|
5
23
|
/**
|
|
6
24
|
* The result of the last command a view ran (`edytor.dispatcher.last`): its
|
|
7
|
-
* operation
|
|
8
|
-
* `text.insertText`, …), the `value` the mutator returned — `undefined`
|
|
9
|
-
* when the command was refused or did not run.
|
|
25
|
+
* operation and its status.
|
|
10
26
|
*/
|
|
11
|
-
export type CommandResult
|
|
27
|
+
export type CommandResult = {
|
|
12
28
|
operation: string;
|
|
13
29
|
status: 'refused' | 'noop' | 'applied' | 'failed';
|
|
14
|
-
/** What the command answered: a handle mutator's return value. */
|
|
15
|
-
value?: T;
|
|
16
30
|
error?: unknown;
|
|
17
31
|
/** The result selection the command authored, selected once. */
|
|
18
32
|
selection?: SelectionValue;
|
|
19
33
|
};
|
|
34
|
+
/** A document write's name. */
|
|
35
|
+
export type Write = keyof DocumentWrites;
|
|
36
|
+
/** A kind's normalizer (`BlockDefinition.normalizeContent`/`normalizeChildren`). */
|
|
37
|
+
export type Normalizer = 'normalizeContent' | 'normalizeChildren';
|
|
20
38
|
export declare class Dispatcher {
|
|
21
39
|
#private;
|
|
22
40
|
private edytor;
|
|
@@ -37,9 +55,6 @@ export declare class Dispatcher {
|
|
|
37
55
|
/** Requested normalization passes: (block id, normalizer). */
|
|
38
56
|
private queue;
|
|
39
57
|
private current;
|
|
40
|
-
/** The drain is entering `current`'s normalizer (its own request runs it). */
|
|
41
|
-
private entering;
|
|
42
|
-
private draining;
|
|
43
58
|
/** A plan the next dispatched operation composes before its own (`lead`). */
|
|
44
59
|
private leading;
|
|
45
60
|
/** What the last `patchData` set to text: typing on the same paths continues its step (a bound field). */
|
|
@@ -55,9 +70,10 @@ export declare class Dispatcher {
|
|
|
55
70
|
* placed. That step's undo withdraws the block, URL included
|
|
56
71
|
* (`hist.undo.withdraw`), and its redo shows it again, so the paste stays
|
|
57
72
|
* one step whatever the upload's delay, and the typing around it groups
|
|
58
|
-
* as if it never came.
|
|
59
|
-
* already open: its writes would take that transaction's
|
|
60
|
-
* its step (call it from a later task, as an upload's
|
|
73
|
+
* as if it never came. In development, throws, writing nothing, when a
|
|
74
|
+
* transaction is already open: its writes would take that transaction's
|
|
75
|
+
* origin and join its step (call it from a later task, as an upload's
|
|
76
|
+
* answer is).
|
|
61
77
|
*/
|
|
62
78
|
outside: <T>(body: () => T) => T;
|
|
63
79
|
/**
|
|
@@ -90,6 +106,17 @@ export declare class Dispatcher {
|
|
|
90
106
|
block: unknown;
|
|
91
107
|
text?: Text;
|
|
92
108
|
}, body: (payload: P, plan?: Prepared) => R, prepare?: (payload: P) => Prepared) => R | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* Dispatch `operation` as the plan `prepare` makes of `payload` (a hook's
|
|
111
|
+
* replacement payload is prepared again), about `block` (the root by
|
|
112
|
+
* default): hooks see it and each planned step before any write; one
|
|
113
|
+
* transaction; the blocks it touched normalized and the blocks it moved
|
|
114
|
+
* shown (closed toggles open); the caret it decides (`plan.at`: a range
|
|
115
|
+
* deletion, a placed flow) selected. Answers its result: `refused` when
|
|
116
|
+
* the document refused it, `refused` with the reason `'view'` when the
|
|
117
|
+
* view did (readonly, a read-only document) or a hook prevented it.
|
|
118
|
+
*/
|
|
119
|
+
plan: <P>(operation: string, payload: P, prepare: (payload: P) => Prepared, block?: Block, text?: Text) => OpResult;
|
|
93
120
|
/**
|
|
94
121
|
* Run `body` with `lead` (a plan prepared now) composed into the first
|
|
95
122
|
* operation it dispatches: one plan, so a veto of any step, or a refusal,
|
|
@@ -110,8 +137,8 @@ export declare class Dispatcher {
|
|
|
110
137
|
* block offsets (an inline atom counting 1).
|
|
111
138
|
*/
|
|
112
139
|
caret: {
|
|
113
|
-
|
|
114
|
-
|
|
140
|
+
(text: Text | null | undefined, offset: number, ops?: () => OpResult): OpResult | undefined;
|
|
141
|
+
(caret: Caret | DocPosition | null | undefined, ops?: () => OpResult): OpResult | undefined;
|
|
115
142
|
};
|
|
116
143
|
/**
|
|
117
144
|
* The cut an operation applies as it writes. Inside a user command none
|
|
@@ -122,7 +149,6 @@ export declare class Dispatcher {
|
|
|
122
149
|
private policy;
|
|
123
150
|
/** A continuation continues this view's last step, or cuts before it writes. */
|
|
124
151
|
private decide;
|
|
125
|
-
private refuse;
|
|
126
152
|
private settle;
|
|
127
153
|
/**
|
|
128
154
|
* Run a prevention's replacement: a command of its own, so a veto of one
|
|
@@ -132,12 +158,11 @@ export declare class Dispatcher {
|
|
|
132
158
|
*/
|
|
133
159
|
private replace;
|
|
134
160
|
/**
|
|
135
|
-
* The planned steps as hooks see them
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* yet: no mapping. A document data patch shows on the root.)
|
|
161
|
+
* The planned steps as hooks see them: each as the operation it performs,
|
|
162
|
+
* with that operation's arguments (`ARGS`), about the block it writes
|
|
163
|
+
* (the root for the document's data). A step that is the command itself
|
|
164
|
+
* (same name, same block) is not repeated; a write into a block the plan
|
|
165
|
+
* creates is part of that creation.
|
|
141
166
|
*/
|
|
142
167
|
private steps;
|
|
143
168
|
}
|