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
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,63 @@ 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
122
|
* Tab / Shift+Tab: 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
127
|
const nest = (operation) => ({ edytor, prevent }) => prevent(() => {
|
|
134
|
-
|
|
135
|
-
const
|
|
128
|
+
const { selection } = edytor;
|
|
129
|
+
const { value } = selection;
|
|
136
130
|
const direction = operation === 'nestBlock' ? 'in' : 'out';
|
|
137
131
|
const blocks = getSelectionBlocks(edytor);
|
|
138
132
|
if (blocks.length > 1) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (!moveRoots(edytor, blocks, direction).length)
|
|
142
|
-
return;
|
|
143
|
-
if (members.length)
|
|
144
|
-
edytor.selection.selectBlocks(...members);
|
|
145
|
-
else if (startText && endText)
|
|
146
|
-
edytor.selection.setAtRange(startText, yStart, endText, yEnd, { isReversed });
|
|
133
|
+
if (moveRoots(edytor, blocks, direction).length)
|
|
134
|
+
selection.select(value);
|
|
147
135
|
return;
|
|
148
136
|
}
|
|
149
|
-
const
|
|
150
|
-
const
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (
|
|
157
|
-
edytor.
|
|
158
|
-
|
|
159
|
-
|
|
137
|
+
const [selected] = selection.selectedBlocks;
|
|
138
|
+
const at = selection.textAt(selection.projection.start);
|
|
139
|
+
const block = selected ?? at?.text.parent;
|
|
140
|
+
if (!block)
|
|
141
|
+
return;
|
|
142
|
+
// Into the block before it; the view's move reveals a closed toggle it lands in or that adopts.
|
|
143
|
+
const into = block.previousBlock;
|
|
144
|
+
if (operation === 'nestBlock' && !into)
|
|
145
|
+
return edytor.dispatcher.record({ operation, status: 'refused' });
|
|
146
|
+
const result = operation === 'unNestBlock'
|
|
147
|
+
? edytor.unNestBlock(block.id)
|
|
148
|
+
: edytor.nestBlock(block.id, into.id);
|
|
149
|
+
if (result.status !== 'applied')
|
|
150
|
+
return;
|
|
151
|
+
edytor.announcer.moved({ blocks: [block], direction }, [block]);
|
|
152
|
+
if (selected)
|
|
153
|
+
selection.select(blockSelection([block.id]));
|
|
154
|
+
else if (at)
|
|
155
|
+
caretAt(edytor, block.content[at.text.index], at.offset);
|
|
160
156
|
});
|
|
161
157
|
/**
|
|
162
158
|
* Backspace/Delete over an editor-owned selection: the selected atom, or
|
|
163
159
|
* the selected blocks (the caret lands at the end of the block before them).
|
|
160
|
+
* The command runs the hooks and authors its caret; the projector displays it.
|
|
164
161
|
*/
|
|
165
162
|
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));
|
|
163
|
+
if (edytor.selection.inlineBlockDeletionTarget)
|
|
164
|
+
prevent(() => replaceSelectedAtom(edytor));
|
|
165
|
+
else if (edytor.selection.selectedBlocks.size)
|
|
166
|
+
prevent(() => deleteSelectedBlocks(edytor));
|
|
172
167
|
};
|
|
173
168
|
/** An Emacs kill (ctrl+h/d/k): a delete intent, or the owned selection's delete. */
|
|
174
169
|
const kill = (inputType) => (payload) => {
|
|
175
170
|
const { edytor, prevent } = payload;
|
|
176
|
-
if (
|
|
171
|
+
if (owned(edytor))
|
|
177
172
|
return deleteSelection(payload);
|
|
178
|
-
const {
|
|
179
|
-
if (
|
|
173
|
+
const { projection } = edytor.selection;
|
|
174
|
+
if (edytor.selection.textAt(projection.start))
|
|
180
175
|
prevent(() => edytor.ports.input.runIntent(inputType(projection)));
|
|
181
176
|
};
|
|
182
177
|
/**
|
|
@@ -186,10 +181,7 @@ const kill = (inputType) => (payload) => {
|
|
|
186
181
|
* without a DOM range, so the chord is claimed at its keydown. Shift+Delete
|
|
187
182
|
* is not one (the Windows cut).
|
|
188
183
|
*/
|
|
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
|
-
])));
|
|
184
|
+
const wordAndLineDeletes = Object.fromEntries(['alt', 'mod', 'ctrl'].flatMap((modifier) => ['backspace', 'delete'].map((key) => [`${modifier}+${key}`, deleteSelection])));
|
|
193
185
|
/**
|
|
194
186
|
* macOS Emacs/Cocoa text bindings. Bare `ctrl+` chords only resolve on
|
|
195
187
|
* Apple platforms (the keymap folds Ctrl into `mod` elsewhere), so the table
|
|
@@ -204,9 +196,9 @@ const emacs = {
|
|
|
204
196
|
'ctrl+k': kill((at) => at.isCollapsed && at.isAtEndOfBlock ? 'deleteContentForward' : 'deleteHardLineForward'),
|
|
205
197
|
// Open-line: a soft break with the caret kept before it.
|
|
206
198
|
'ctrl+o': ({ edytor, prevent }) => {
|
|
207
|
-
if (
|
|
199
|
+
if (owned(edytor) || !edytor.selection.textAt(edytor.selection.projection.start))
|
|
208
200
|
return;
|
|
209
|
-
prevent(() => edytor.dispatcher.run('
|
|
201
|
+
prevent(() => edytor.dispatcher.run('insertBlocks', () => edytor.ports.input.insertLineBreak(intentSnapshot(edytor, 'insertLineBreak'), 'before')));
|
|
210
202
|
},
|
|
211
203
|
'ctrl+p': arrowUp,
|
|
212
204
|
'ctrl+n': arrowDown
|
|
@@ -223,44 +215,21 @@ export const builtInBindings = {
|
|
|
223
215
|
'mod+enter': ({ edytor, prevent }) => prevent(() => flipToggles(shownSelectionBlocks(edytor))),
|
|
224
216
|
// The select-all ladder: the block's text, then the block, then every block
|
|
225
217
|
// (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
|
-
},
|
|
218
|
+
'mod+a': ({ edytor, prevent }) => prevent(() => {
|
|
219
|
+
const { selection, idToBlock } = edytor;
|
|
220
|
+
const { start, islandRoot, isAtStartOfBlock, isAtEndOfBlock } = selection.projection;
|
|
221
|
+
const block = selection.textAt(start)?.text.parent;
|
|
222
|
+
// Every block, nested ones included: a block selection is exactly its members.
|
|
223
|
+
if (block ? selection.selectedBlocks.size : selection.value.kind === 'none')
|
|
224
|
+
selection.select(blockSelection(edytor.facade.order().filter((id) => idToBlock.has(id))));
|
|
225
|
+
else if (block && isAtStartOfBlock && isAtEndOfBlock)
|
|
226
|
+
selection.select(blockSelection([(idToBlock.get(islandRoot ?? '') ?? block).id]));
|
|
227
|
+
else
|
|
228
|
+
selection.selectLines(block);
|
|
229
|
+
}),
|
|
248
230
|
...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
|
-
},
|
|
231
|
+
'shift+arrowup': extend(-1),
|
|
232
|
+
'shift+arrowdown': extend(1),
|
|
264
233
|
arrowup: arrowUp,
|
|
265
234
|
arrowdown: arrowDown,
|
|
266
235
|
tab: nest('nestBlock'),
|
|
@@ -273,7 +242,7 @@ export const builtInBindings = {
|
|
|
273
242
|
prevent(() => {
|
|
274
243
|
const at = selectedBlocksExit(edytor);
|
|
275
244
|
if (at)
|
|
276
|
-
edytor.selection.
|
|
245
|
+
edytor.selection.selectText(at.text, at.offset);
|
|
277
246
|
});
|
|
278
247
|
},
|
|
279
248
|
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
|
}
|