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/events/onCopy.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { createEdytorClipboardFragment, writeEdytorClipboardData } from '../clipboard/clipboard.js';
|
|
2
2
|
import { vetoable } from '../utils.js';
|
|
3
|
-
import { observeInternalDragSources } from './onDrop.js';
|
|
4
|
-
import { observeShiftPasteModifier } from './onPaste.js';
|
|
5
3
|
import { ownsEvent } from './nativeInteractiveControl.js';
|
|
6
4
|
/**
|
|
7
5
|
* Copy (and the first half of cut): the guards, the extensions' `hook`, then
|
|
@@ -11,10 +9,8 @@ export const copySelection = (edytor, e, hook) => {
|
|
|
11
9
|
// A copy or cut in a kind's own control (a bound field, a nested
|
|
12
10
|
// editable island) is the control's: overriding it would put the model
|
|
13
11
|
// selection's fragment on the clipboard, and a cut would delete it (`ownsEvent`).
|
|
14
|
-
if (edytor.selection.
|
|
12
|
+
if (edytor.selection.voidField || ownsEvent(edytor.node, e))
|
|
15
13
|
return false;
|
|
16
|
-
observeInternalDragSources(edytor.node?.getRootNode());
|
|
17
|
-
observeShiftPasteModifier(edytor.node?.getRootNode());
|
|
18
14
|
const claimed = (plugin) => vetoable((prevent) => plugin[hook]?.({ prevent, e }));
|
|
19
15
|
if (edytor.dispatcher.intercept(claimed, () => e.preventDefault()))
|
|
20
16
|
return false;
|
package/dist/events/onDrop.d.ts
CHANGED
|
@@ -30,4 +30,10 @@ export declare const onTextDragEnd: (edytor: Edytor) => undefined;
|
|
|
30
30
|
* exception is a foreign drop other than a file on a kind's own control,
|
|
31
31
|
* which is the control's (`isControlDrop`).
|
|
32
32
|
*/
|
|
33
|
-
export declare const preventUnsupportedDrop: (event: DragEvent, edytor
|
|
33
|
+
export declare const preventUnsupportedDrop: (event: DragEvent, edytor: Edytor) => void | Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* A drag leaving the host (to the page around it, or out of the window):
|
|
36
|
+
* a file drag's indicator goes. Moving between the host's own elements is
|
|
37
|
+
* no leave.
|
|
38
|
+
*/
|
|
39
|
+
export declare const onDragLeave: (edytor: Edytor, event: DragEvent) => void;
|
package/dist/events/onDrop.js
CHANGED
|
@@ -2,16 +2,20 @@ import { isNativeInteractiveControl, ownsEvent } from './nativeInteractiveContro
|
|
|
2
2
|
import { runOccurrence } from './onBeforeInput.js';
|
|
3
3
|
import { createEdytorClipboardFragment, writeEdytorClipboardData } from '../clipboard/clipboard.js';
|
|
4
4
|
import { endTextDrag, startTextDrag, textDragOf } from '../clipboard/moveText.js';
|
|
5
|
-
import { getDomSelection } from '../selection/domSelection.js';
|
|
5
|
+
import { caretAtPoint, getDomSelection } from '../selection/domSelection.js';
|
|
6
|
+
import { viewUploads } from '../session/uploads.js';
|
|
6
7
|
/**
|
|
7
8
|
* Payloads the editor can consume on drop. Preventing `dragover` is what
|
|
8
9
|
* enables a drop, so it is prevented only for these types — internal and
|
|
9
10
|
* unsupported drags keep the browser's not-allowed affordance and can never
|
|
10
11
|
* produce a native DOM mutation.
|
|
11
12
|
*
|
|
12
|
-
* `Files` is intentionally accepted
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* `Files` is intentionally accepted (so the browser never opens a dropped
|
|
14
|
+
* file in place of the page): with the view's uploads (a media plugin given
|
|
15
|
+
* an `upload`), file drops route through the plugin `onPaste` hook with the
|
|
16
|
+
* drop indicator's placement (`ViewUploads.drop`: a block per file the kinds
|
|
17
|
+
* take there; unclaimed files insert nothing); without them a drop carrying
|
|
18
|
+
* files is ignored, its effect `none`.
|
|
15
19
|
*/
|
|
16
20
|
const ACCEPTED_FOREIGN_DROP_TYPES = ['Files', 'text/html', 'text/plain', 'text/uri-list'];
|
|
17
21
|
/**
|
|
@@ -44,31 +48,23 @@ export const observeInternalDragSources = (rootNode) => {
|
|
|
44
48
|
internalDragSource = null;
|
|
45
49
|
}, true);
|
|
46
50
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const isInternalDrag = (root, dataTransfer) => {
|
|
51
|
-
if (dataTransfer && Array.from(dataTransfer.types).includes(EDYTOR_BLOCK_DRAG_MIME)) {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
return internalDragSource !== null && root.contains(internalDragSource);
|
|
55
|
-
};
|
|
51
|
+
/** The drag started inside the host. */
|
|
52
|
+
const fromHost = (root) => internalDragSource !== null && root.contains(internalDragSource);
|
|
53
|
+
const typesOf = (dataTransfer) => Array.from(dataTransfer?.types ?? []);
|
|
56
54
|
/**
|
|
57
55
|
* A foreign drop on a kind's own control (a field bound to `block.data`, a
|
|
58
56
|
* nested editable island) is the control's (`ownsEvent`): the editor writes
|
|
59
57
|
* nothing and the browser does what the control does with it. Not a file,
|
|
60
58
|
* which the browser would open in place of the page: that one is swallowed.
|
|
61
59
|
*/
|
|
62
|
-
const isControlDrop = (root, event) => !
|
|
60
|
+
const isControlDrop = (root, event) => !typesOf(event.dataTransfer).includes('Files') && ownsEvent(root, event);
|
|
63
61
|
/**
|
|
64
62
|
* The view's own text drag: a selected text range dragged from
|
|
65
63
|
* inside the host, the block handles' drags excluded (their payload's MIME).
|
|
66
64
|
*/
|
|
67
|
-
const isTextDrag = (edytor, root, dataTransfer) => edytor !== undefined &&
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
internalDragSource !== null &&
|
|
71
|
-
root.contains(internalDragSource);
|
|
65
|
+
const isTextDrag = (edytor, root, dataTransfer) => textDragOf(edytor) !== undefined &&
|
|
66
|
+
!typesOf(dataTransfer).includes(EDYTOR_BLOCK_DRAG_MIME) &&
|
|
67
|
+
fromHost(root);
|
|
72
68
|
/** Where the view's text drag may land: an editable view, in its text, not a kind's control. */
|
|
73
69
|
const takesTextDrop = (edytor, root, event) => !edytor.readonly &&
|
|
74
70
|
edytor.dispatcher.permits() &&
|
|
@@ -101,7 +97,7 @@ export const onTextDragStart = (edytor, event) => {
|
|
|
101
97
|
const value = edytor.selection.value;
|
|
102
98
|
if (!root || ownsEvent(root, event) || value.kind !== 'text')
|
|
103
99
|
return;
|
|
104
|
-
if (edytor.selection.
|
|
100
|
+
if (edytor.selection.projection.isCollapsed || edytor.isComposing)
|
|
105
101
|
return;
|
|
106
102
|
// Only a drag of the selection itself: another draggable in the host drags its own thing.
|
|
107
103
|
if (!startsInSelection(root, event.target))
|
|
@@ -119,59 +115,31 @@ export const onTextDragStart = (edytor, event) => {
|
|
|
119
115
|
};
|
|
120
116
|
/** The drag ended, dropped or not: no text drag. */
|
|
121
117
|
export const onTextDragEnd = (edytor) => endTextDrag(edytor);
|
|
118
|
+
/** A drop from outside (no chrome drag, no drag from the host) of a payload the editor takes. */
|
|
122
119
|
const isAcceptedForeignDrop = (root, dataTransfer) => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
};
|
|
128
|
-
// `caretPositionFromPoint` is the spec API (Firefox, Chromium ≥128);
|
|
129
|
-
// `caretRangeFromPoint` is the legacy WebKit/Chromium API. Support both.
|
|
130
|
-
const caretRangeFromPoint = (doc, x, y) => {
|
|
131
|
-
const position = doc.caretPositionFromPoint?.(x, y);
|
|
132
|
-
if (position?.offsetNode) {
|
|
133
|
-
return { container: position.offsetNode, offset: position.offset };
|
|
134
|
-
}
|
|
135
|
-
const range = doc.caretRangeFromPoint?.(x, y);
|
|
136
|
-
if (range) {
|
|
137
|
-
return { container: range.startContainer, offset: range.startOffset };
|
|
138
|
-
}
|
|
139
|
-
return null;
|
|
140
|
-
};
|
|
141
|
-
const createCollapsedStaticRange = (container, offset) => {
|
|
142
|
-
if (typeof StaticRange === 'function') {
|
|
143
|
-
try {
|
|
144
|
-
return new StaticRange({
|
|
145
|
-
startContainer: container,
|
|
146
|
-
startOffset: offset,
|
|
147
|
-
endContainer: container,
|
|
148
|
-
endOffset: offset
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
catch {
|
|
152
|
-
// Fall through to the structural StaticRange below.
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return {
|
|
156
|
-
startContainer: container,
|
|
157
|
-
startOffset: offset,
|
|
158
|
-
endContainer: container,
|
|
159
|
-
endOffset: offset,
|
|
160
|
-
collapsed: true
|
|
161
|
-
};
|
|
120
|
+
const types = typesOf(dataTransfer);
|
|
121
|
+
return (!types.includes(EDYTOR_BLOCK_DRAG_MIME) &&
|
|
122
|
+
!fromHost(root) &&
|
|
123
|
+
types.some((type) => ACCEPTED_FOREIGN_DROP_TYPES.includes(type)));
|
|
162
124
|
};
|
|
163
125
|
// Preventing the drop suppresses the browser's own `insertFromDrop`
|
|
164
126
|
// beforeinput, so the accepted payload is the occurrence itself — the same
|
|
165
|
-
// routing as `insertFromPaste`, with the
|
|
166
|
-
//
|
|
167
|
-
const insertFromDrop = (edytor, root, event) => {
|
|
168
|
-
const
|
|
127
|
+
// routing as `insertFromPaste`, with the drop point as its declared target
|
|
128
|
+
// range (`caretAtPoint`); files carry the indicator's placement (`at`).
|
|
129
|
+
const insertFromDrop = (edytor, root, event, placement = null) => {
|
|
130
|
+
const at = caretAtPoint(root.ownerDocument, event.clientX, event.clientY);
|
|
131
|
+
const point = at &&
|
|
132
|
+
new StaticRange({
|
|
133
|
+
startContainer: at.node,
|
|
134
|
+
startOffset: at.offset,
|
|
135
|
+
endContainer: at.node,
|
|
136
|
+
endOffset: at.offset
|
|
137
|
+
});
|
|
169
138
|
return runOccurrence(edytor, {
|
|
170
139
|
inputType: 'insertFromDrop',
|
|
171
140
|
dataTransfer: event.dataTransfer,
|
|
172
|
-
declared:
|
|
173
|
-
|
|
174
|
-
: null,
|
|
141
|
+
declared: point && root.contains(point.startContainer) ? point : null,
|
|
142
|
+
placement,
|
|
175
143
|
cancelable: true
|
|
176
144
|
});
|
|
177
145
|
};
|
|
@@ -189,13 +157,8 @@ const insertFromDrop = (edytor, root, event) => {
|
|
|
189
157
|
* which is the control's (`isControlDrop`).
|
|
190
158
|
*/
|
|
191
159
|
export const preventUnsupportedDrop = (event, edytor) => {
|
|
160
|
+
// Listened on the host.
|
|
192
161
|
const root = event.currentTarget;
|
|
193
|
-
if (!(root instanceof Element)) {
|
|
194
|
-
event.preventDefault();
|
|
195
|
-
event.stopPropagation();
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
observeInternalDragSources(root.getRootNode());
|
|
199
162
|
// The view's own text drag: a move (a copy with Alt) where it may land.
|
|
200
163
|
if (isTextDrag(edytor, root, event.dataTransfer)) {
|
|
201
164
|
const takes = takesTextDrop(edytor, root, event);
|
|
@@ -218,22 +181,33 @@ export const preventUnsupportedDrop = (event, edytor) => {
|
|
|
218
181
|
drag.dropping = true;
|
|
219
182
|
return insertFromDrop(edytor, root, event);
|
|
220
183
|
}
|
|
184
|
+
const files = typesOf(event.dataTransfer).includes('Files');
|
|
185
|
+
// The view's uploads take dropped files (a media plugin given an `upload`); none: ignored.
|
|
186
|
+
const drop = files ? viewUploads(edytor)?.drop : undefined;
|
|
221
187
|
if (event.type === 'dragover') {
|
|
222
188
|
if (isAcceptedForeignDrop(root, event.dataTransfer)) {
|
|
223
189
|
event.preventDefault();
|
|
224
190
|
event.stopPropagation();
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
191
|
+
// Files show where they land (the block drag's indicator); none in a
|
|
192
|
+
// read-only view or one without uploads, which takes no file drop (the
|
|
193
|
+
// browser must not open the file).
|
|
194
|
+
const shown = drop && !ownsEvent(root, event) && drop.over(event);
|
|
195
|
+
if (event.dataTransfer)
|
|
196
|
+
event.dataTransfer.dropEffect = files && (edytor.readonly || !drop) ? 'none' : 'copy';
|
|
197
|
+
if (drop && !shown)
|
|
198
|
+
drop.end();
|
|
228
199
|
}
|
|
229
200
|
return;
|
|
230
201
|
}
|
|
231
202
|
const accepted = isAcceptedForeignDrop(root, event.dataTransfer);
|
|
203
|
+
// Where the files land: the indicator's placement, re-resolved at the drop point.
|
|
204
|
+
const at = drop && accepted && !ownsEvent(root, event) ? drop.at(event) : null;
|
|
205
|
+
drop?.end();
|
|
232
206
|
if (accepted && isControlDrop(root, event))
|
|
233
207
|
return;
|
|
234
208
|
event.preventDefault();
|
|
235
209
|
event.stopPropagation();
|
|
236
|
-
if (!accepted) {
|
|
210
|
+
if (!accepted || (files && (edytor.readonly || !drop))) {
|
|
237
211
|
return;
|
|
238
212
|
}
|
|
239
213
|
if (ownsEvent(root, event) || isNativeInteractiveControl(event.target)) {
|
|
@@ -242,6 +216,18 @@ export const preventUnsupportedDrop = (event, edytor) => {
|
|
|
242
216
|
return;
|
|
243
217
|
}
|
|
244
218
|
// Mid-composition drops are swallowed: the preview owns the write path.
|
|
245
|
-
if (
|
|
246
|
-
return insertFromDrop(edytor, root, event);
|
|
219
|
+
if (!edytor.isComposing)
|
|
220
|
+
return insertFromDrop(edytor, root, event, at);
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* A drag leaving the host (to the page around it, or out of the window):
|
|
224
|
+
* a file drag's indicator goes. Moving between the host's own elements is
|
|
225
|
+
* no leave.
|
|
226
|
+
*/
|
|
227
|
+
export const onDragLeave = (edytor, event) => {
|
|
228
|
+
const root = event.currentTarget;
|
|
229
|
+
const to = event.relatedTarget;
|
|
230
|
+
if (to instanceof Node && root.contains(to))
|
|
231
|
+
return;
|
|
232
|
+
viewUploads(edytor)?.drop.end();
|
|
247
233
|
};
|
package/dist/events/onFocus.d.ts
CHANGED
|
@@ -2,14 +2,19 @@ import type { Edytor } from '../edytor.svelte.js';
|
|
|
2
2
|
/** The DOM selection has an endpoint inside `node`. */
|
|
3
3
|
export declare const selectionIsInside: (node: HTMLElement) => boolean;
|
|
4
4
|
/**
|
|
5
|
-
* The editor takes the keys after a pointer gesture on its chrome (a
|
|
6
|
-
* drop, a column resize, a grip click no menu answers)
|
|
5
|
+
* The editor takes the keys back: after a pointer gesture on its chrome (a
|
|
6
|
+
* block drop, a column resize, a grip click no menu answers), a menu, panel,
|
|
7
|
+
* toolbar or field of the chrome giving them back, or `edytor.focus()`. The
|
|
8
|
+
* one way to focus the host from code: its host gets the
|
|
7
9
|
* focus, without scrolling, as the editor's own focus (`focusin` restores
|
|
8
10
|
* no cached caret and counts no gesture), so Mod+Z, Mod+Shift+Z and the
|
|
9
11
|
* block-selection keys act at once, whatever the selection (a block
|
|
10
12
|
* selection, or none: an undo giving back "no selection" keeps them). The
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
+
* caret the browser parks for that focus (at the host's start) is drift,
|
|
14
|
+
* never adopted, and the value is displayed over it: a key typed right
|
|
15
|
+
* after lands at the selection, not at the host's start. The projector
|
|
16
|
+
* stays the only DOM-selection writer. Nothing when the host already has
|
|
17
|
+
* the focus (a kind's own control inside it does not), or the view is gone.
|
|
13
18
|
*/
|
|
14
19
|
export declare const takeKeys: (edytor: Edytor) => void;
|
|
15
20
|
/**
|
package/dist/events/onFocus.js
CHANGED
|
@@ -9,7 +9,7 @@ import { on } from 'svelte/events';
|
|
|
9
9
|
import { clearDomSelection, getActiveElement, getDomSelection, getDomSelectionSnapshot } from '../selection/domSelection.js';
|
|
10
10
|
import { getYIndex } from '../selection/selection.utils.js';
|
|
11
11
|
import { noSelection } from '../session/selection.js';
|
|
12
|
-
|
|
12
|
+
import { observeInternalDragSources } from './onDrop.js';
|
|
13
13
|
/** The DOM selection has an endpoint inside `node`. */
|
|
14
14
|
export const selectionIsInside = (node) => {
|
|
15
15
|
const selection = getDomSelection(node);
|
|
@@ -18,25 +18,30 @@ export const selectionIsInside = (node) => {
|
|
|
18
18
|
(selection.focusNode && node.contains(selection.focusNode))));
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
* The editor takes the keys after a pointer gesture on its chrome (a
|
|
22
|
-
* drop, a column resize, a grip click no menu answers)
|
|
21
|
+
* The editor takes the keys back: after a pointer gesture on its chrome (a
|
|
22
|
+
* block drop, a column resize, a grip click no menu answers), a menu, panel,
|
|
23
|
+
* toolbar or field of the chrome giving them back, or `edytor.focus()`. The
|
|
24
|
+
* one way to focus the host from code: its host gets the
|
|
23
25
|
* focus, without scrolling, as the editor's own focus (`focusin` restores
|
|
24
26
|
* no cached caret and counts no gesture), so Mod+Z, Mod+Shift+Z and the
|
|
25
27
|
* block-selection keys act at once, whatever the selection (a block
|
|
26
28
|
* selection, or none: an undo giving back "no selection" keeps them). The
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
+
* caret the browser parks for that focus (at the host's start) is drift,
|
|
30
|
+
* never adopted, and the value is displayed over it: a key typed right
|
|
31
|
+
* after lands at the selection, not at the host's start. The projector
|
|
32
|
+
* stays the only DOM-selection writer. Nothing when the host already has
|
|
33
|
+
* the focus (a kind's own control inside it does not), or the view is gone.
|
|
29
34
|
*/
|
|
30
35
|
export const takeKeys = (edytor) => {
|
|
31
36
|
const node = edytor.node;
|
|
32
37
|
if (!node?.isConnected || edytor.destroyed)
|
|
33
38
|
return;
|
|
34
|
-
|
|
35
|
-
if (active instanceof Node && node.contains(active))
|
|
39
|
+
if (getActiveElement(node) === node)
|
|
36
40
|
return;
|
|
37
41
|
edytor.expectInternalFocus();
|
|
38
42
|
node.focus({ preventScroll: true });
|
|
39
43
|
edytor.projector.parked();
|
|
44
|
+
edytor.selection.display();
|
|
40
45
|
};
|
|
41
46
|
/*
|
|
42
47
|
* The press: one per primary button press, its `pointerdown`, or a
|
|
@@ -77,6 +82,8 @@ export const onPress = (edytor, target, listener, options) => {
|
|
|
77
82
|
};
|
|
78
83
|
};
|
|
79
84
|
export const attachFocus = (edytor, node) => {
|
|
85
|
+
// Where the host lives (the document, or a shadow root): its drags' sources.
|
|
86
|
+
observeInternalDragSources(node.getRootNode());
|
|
80
87
|
let lastPointerDownInsideEditorAt = Number.NEGATIVE_INFINITY;
|
|
81
88
|
/*
|
|
82
89
|
* A primary `pointerdown` arms `compat` until the `mousedown` it is
|
|
@@ -127,8 +134,7 @@ export const attachFocus = (edytor, node) => {
|
|
|
127
134
|
const pressInside = (event) => {
|
|
128
135
|
// A pointer gesture abandons a live composition.
|
|
129
136
|
edytor.composition.abandon();
|
|
130
|
-
lastPointerDownInsideEditorAt =
|
|
131
|
-
edytor.selection.clearModelSelectionPreservation();
|
|
137
|
+
lastPointerDownInsideEditorAt = event.timeStamp;
|
|
132
138
|
const { pointer } = edytor.selection;
|
|
133
139
|
// The margin gesture's press places no caret and starts no text drag.
|
|
134
140
|
if (pointer.claimed)
|
|
@@ -147,68 +153,40 @@ export const attachFocus = (edytor, node) => {
|
|
|
147
153
|
clearDomSelection(node);
|
|
148
154
|
}
|
|
149
155
|
};
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
/**
|
|
157
|
+
* A keyboard or programmatic focus returns to the model's selection: the
|
|
158
|
+
* caret the browser puts at the start for the focus (its focus reset) is
|
|
159
|
+
* not the user's, so the value is shown again; any other DOM selection of
|
|
160
|
+
* the host's is the focus's own and adopted.
|
|
161
|
+
*/
|
|
162
|
+
const restoreAfterKeyboardFocus = (event) => {
|
|
163
|
+
if (edytor.readonly || event.target !== node)
|
|
152
164
|
return;
|
|
153
|
-
|
|
154
|
-
if (event.relatedTarget instanceof Node && node.contains(event.relatedTarget)) {
|
|
165
|
+
if (event.relatedTarget instanceof Node && node.contains(event.relatedTarget))
|
|
155
166
|
return;
|
|
156
|
-
|
|
157
|
-
if (getEventTimeStamp(event) - lastPointerDownInsideEditorAt < 250) {
|
|
167
|
+
if (event.timeStamp - lastPointerDownInsideEditorAt < 250)
|
|
158
168
|
return;
|
|
159
|
-
|
|
160
|
-
const text = edytor.selection.state.startText;
|
|
161
|
-
if (!text) {
|
|
169
|
+
if (!edytor.selection.projection.start)
|
|
162
170
|
return;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const applyMeaningfulDomSelection = () => {
|
|
166
|
-
const selection = getDomSelectionSnapshot(node);
|
|
167
|
-
if (!selection?.anchorNode || !selection.focusNode) {
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
if (!node.contains(selection.anchorNode) || !node.contains(selection.focusNode)) {
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
const anchorText = edytor.selection.getTextOfNode(selection.anchorNode);
|
|
174
|
-
const focusText = edytor.selection.getTextOfNode(selection.focusNode);
|
|
175
|
-
if (!anchorText || !focusText) {
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
const isBrowserFocusReset = selection.isCollapsed &&
|
|
179
|
-
anchorText === edytor.root?.firstEditableText &&
|
|
180
|
-
getYIndex(anchorText, selection.anchorNode, selection.anchorOffset) === 0;
|
|
181
|
-
if (isBrowserFocusReset) {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
edytor.selection.applySelectionSnapshot(selection);
|
|
185
|
-
return true;
|
|
186
|
-
};
|
|
187
|
-
const restore = () => {
|
|
188
|
-
if (getActiveElement(node) !== node) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
if (applyMeaningfulDomSelection()) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
const s = edytor.selection.state;
|
|
195
|
-
// A remote delivery or command may have legitimately moved the
|
|
196
|
-
// selection since the focus-time capture — the CURRENT state
|
|
197
|
-
// owns the caret then; writing the cached point would yank it
|
|
198
|
-
// back to a pre-update position. The cache only wins while the
|
|
199
|
-
// state still equals it, or when the browser collapsed the
|
|
200
|
-
// caret to its focus-reset spot (first editable text at 0).
|
|
201
|
-
if (!s.isCollapsed || !s.startText) {
|
|
171
|
+
queueMicrotask(() => {
|
|
172
|
+
if (getActiveElement(node) !== node)
|
|
202
173
|
return;
|
|
203
|
-
|
|
204
|
-
const
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
174
|
+
const dom = getDomSelectionSnapshot(node);
|
|
175
|
+
const { anchorNode, focusNode } = dom ?? {};
|
|
176
|
+
const text = anchorNode && edytor.selection.getTextOfNode(anchorNode);
|
|
177
|
+
const own = text &&
|
|
178
|
+
focusNode &&
|
|
179
|
+
node.contains(anchorNode) &&
|
|
180
|
+
node.contains(focusNode) &&
|
|
181
|
+
edytor.selection.getTextOfNode(focusNode) &&
|
|
182
|
+
!(dom.isCollapsed &&
|
|
183
|
+
text === edytor.root?.firstEditableText &&
|
|
184
|
+
getYIndex(text, anchorNode, dom.anchorOffset) === 0);
|
|
185
|
+
if (own)
|
|
186
|
+
edytor.selection.applySelectionSnapshot(dom);
|
|
187
|
+
else
|
|
188
|
+
edytor.selection.select(edytor.selection.value);
|
|
189
|
+
});
|
|
212
190
|
};
|
|
213
191
|
return [
|
|
214
192
|
// Any press anywhere disarms pending restores — Firefox can move
|
|
@@ -288,7 +266,7 @@ export const attachFocus = (edytor, node) => {
|
|
|
288
266
|
// A focus from outside (Tab, an app's `focus()`) places the user's caret.
|
|
289
267
|
edytor.projector.pressed();
|
|
290
268
|
}
|
|
291
|
-
|
|
269
|
+
restoreAfterKeyboardFocus(event);
|
|
292
270
|
}),
|
|
293
271
|
on(node, 'focusout', (event) => {
|
|
294
272
|
// Focus moving to a concrete element outside the editor is the
|
package/dist/events/onInput.d.ts
CHANGED
|
@@ -12,9 +12,13 @@ export declare const getCollapsedDomTextSelection: (edytor: Edytor) => {
|
|
|
12
12
|
} | null;
|
|
13
13
|
export declare const handleNativeLineBreakTextValue: (edytor: Edytor, text: Text, value: string) => Promise<boolean>;
|
|
14
14
|
/**
|
|
15
|
-
* An `input` event.
|
|
16
|
-
*
|
|
17
|
-
* the `input` flushes it — a browser-owned attempt's change
|
|
18
|
-
* once, through the dispatcher — then closes the attempt it
|
|
15
|
+
* An `input` event. Browser-made text is never adopted here: the mutation
|
|
16
|
+
* queue is the only adopter (a native line break there runs as its
|
|
17
|
+
* occurrence), so the `input` flushes it — a browser-owned attempt's change
|
|
18
|
+
* is adopted there, once, through the dispatcher — then closes the attempt it
|
|
19
|
+
* belongs to. Drift around a model-owned attempt is the observer's to invert;
|
|
20
|
+
* a restoring attempt (a delete the browser could not be kept from) also
|
|
21
|
+
* re-renders the text the input landed in and shows its caret again, which
|
|
22
|
+
* the browser moved.
|
|
19
23
|
*/
|
|
20
24
|
export declare function onInput(this: Edytor, event: Event): Promise<void>;
|