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/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
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { Edytor } from '../edytor.svelte.js';
|
|
2
|
+
/**
|
|
3
|
+
* The private MIME an editor's own chrome drag (a block handle's, a table
|
|
4
|
+
* row's or column's grip) tags its payload with, the dragged block's id
|
|
5
|
+
* (the table's for a column): no view takes it as a foreign drop.
|
|
6
|
+
*/
|
|
7
|
+
export declare const EDYTOR_BLOCK_DRAG_MIME = "application/x-edytor-block-id";
|
|
2
8
|
export declare const observeInternalDragSources: (rootNode: Node | null | undefined) => void;
|
|
3
9
|
/**
|
|
4
10
|
* A `dragstart` in the host over a selected text range (a press inside it,
|
|
@@ -24,4 +30,4 @@ export declare const onTextDragEnd: (edytor: Edytor) => undefined;
|
|
|
24
30
|
* exception is a foreign drop other than a file on a kind's own control,
|
|
25
31
|
* which is the control's (`isControlDrop`).
|
|
26
32
|
*/
|
|
27
|
-
export declare const preventUnsupportedDrop: (event: DragEvent, edytor
|
|
33
|
+
export declare const preventUnsupportedDrop: (event: DragEvent, edytor: Edytor) => void | Promise<void>;
|
package/dist/events/onDrop.js
CHANGED
|
@@ -2,7 +2,7 @@ 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
6
|
/**
|
|
7
7
|
* Payloads the editor can consume on drop. Preventing `dragover` is what
|
|
8
8
|
* enables a drop, so it is prevented only for these types — internal and
|
|
@@ -14,9 +14,12 @@ import { getDomSelection } from '../selection/domSelection.js';
|
|
|
14
14
|
* claims image files; unclaimed files insert nothing).
|
|
15
15
|
*/
|
|
16
16
|
const ACCEPTED_FOREIGN_DROP_TYPES = ['Files', 'text/html', 'text/plain', 'text/uri-list'];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
/**
|
|
18
|
+
* The private MIME an editor's own chrome drag (a block handle's, a table
|
|
19
|
+
* row's or column's grip) tags its payload with, the dragged block's id
|
|
20
|
+
* (the table's for a column): no view takes it as a foreign drop.
|
|
21
|
+
*/
|
|
22
|
+
export const EDYTOR_BLOCK_DRAG_MIME = 'application/x-edytor-block-id';
|
|
20
23
|
// `dataTransfer.types` cannot distinguish a foreign text drop from an
|
|
21
24
|
// editor-owned text drag (Chrome exposes text/plain + text/html for both).
|
|
22
25
|
// Track the drag source instead: a `dragstart` inside the editor's root node
|
|
@@ -41,31 +44,23 @@ export const observeInternalDragSources = (rootNode) => {
|
|
|
41
44
|
internalDragSource = null;
|
|
42
45
|
}, true);
|
|
43
46
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const isInternalDrag = (root, dataTransfer) => {
|
|
48
|
-
if (dataTransfer && Array.from(dataTransfer.types).includes(EDYTOR_BLOCK_DRAG_MIME)) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
return internalDragSource !== null && root.contains(internalDragSource);
|
|
52
|
-
};
|
|
47
|
+
/** The drag started inside the host. */
|
|
48
|
+
const fromHost = (root) => internalDragSource !== null && root.contains(internalDragSource);
|
|
49
|
+
const typesOf = (dataTransfer) => Array.from(dataTransfer?.types ?? []);
|
|
53
50
|
/**
|
|
54
51
|
* A foreign drop on a kind's own control (a field bound to `block.data`, a
|
|
55
52
|
* nested editable island) is the control's (`ownsEvent`): the editor writes
|
|
56
53
|
* nothing and the browser does what the control does with it. Not a file,
|
|
57
54
|
* which the browser would open in place of the page: that one is swallowed.
|
|
58
55
|
*/
|
|
59
|
-
const isControlDrop = (root, event) => !
|
|
56
|
+
const isControlDrop = (root, event) => !typesOf(event.dataTransfer).includes('Files') && ownsEvent(root, event);
|
|
60
57
|
/**
|
|
61
58
|
* The view's own text drag: a selected text range dragged from
|
|
62
59
|
* inside the host, the block handles' drags excluded (their payload's MIME).
|
|
63
60
|
*/
|
|
64
|
-
const isTextDrag = (edytor, root, dataTransfer) => edytor !== undefined &&
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
internalDragSource !== null &&
|
|
68
|
-
root.contains(internalDragSource);
|
|
61
|
+
const isTextDrag = (edytor, root, dataTransfer) => textDragOf(edytor) !== undefined &&
|
|
62
|
+
!typesOf(dataTransfer).includes(EDYTOR_BLOCK_DRAG_MIME) &&
|
|
63
|
+
fromHost(root);
|
|
69
64
|
/** Where the view's text drag may land: an editable view, in its text, not a kind's control. */
|
|
70
65
|
const takesTextDrop = (edytor, root, event) => !edytor.readonly &&
|
|
71
66
|
edytor.dispatcher.permits() &&
|
|
@@ -98,7 +93,7 @@ export const onTextDragStart = (edytor, event) => {
|
|
|
98
93
|
const value = edytor.selection.value;
|
|
99
94
|
if (!root || ownsEvent(root, event) || value.kind !== 'text')
|
|
100
95
|
return;
|
|
101
|
-
if (edytor.selection.
|
|
96
|
+
if (edytor.selection.projection.isCollapsed || edytor.isComposing)
|
|
102
97
|
return;
|
|
103
98
|
// Only a drag of the selection itself: another draggable in the host drags its own thing.
|
|
104
99
|
if (!startsInSelection(root, event.target))
|
|
@@ -116,59 +111,30 @@ export const onTextDragStart = (edytor, event) => {
|
|
|
116
111
|
};
|
|
117
112
|
/** The drag ended, dropped or not: no text drag. */
|
|
118
113
|
export const onTextDragEnd = (edytor) => endTextDrag(edytor);
|
|
114
|
+
/** A drop from outside (no chrome drag, no drag from the host) of a payload the editor takes. */
|
|
119
115
|
const isAcceptedForeignDrop = (root, dataTransfer) => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
// `caretPositionFromPoint` is the spec API (Firefox, Chromium ≥128);
|
|
126
|
-
// `caretRangeFromPoint` is the legacy WebKit/Chromium API. Support both.
|
|
127
|
-
const caretRangeFromPoint = (doc, x, y) => {
|
|
128
|
-
const position = doc.caretPositionFromPoint?.(x, y);
|
|
129
|
-
if (position?.offsetNode) {
|
|
130
|
-
return { container: position.offsetNode, offset: position.offset };
|
|
131
|
-
}
|
|
132
|
-
const range = doc.caretRangeFromPoint?.(x, y);
|
|
133
|
-
if (range) {
|
|
134
|
-
return { container: range.startContainer, offset: range.startOffset };
|
|
135
|
-
}
|
|
136
|
-
return null;
|
|
137
|
-
};
|
|
138
|
-
const createCollapsedStaticRange = (container, offset) => {
|
|
139
|
-
if (typeof StaticRange === 'function') {
|
|
140
|
-
try {
|
|
141
|
-
return new StaticRange({
|
|
142
|
-
startContainer: container,
|
|
143
|
-
startOffset: offset,
|
|
144
|
-
endContainer: container,
|
|
145
|
-
endOffset: offset
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
// Fall through to the structural StaticRange below.
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return {
|
|
153
|
-
startContainer: container,
|
|
154
|
-
startOffset: offset,
|
|
155
|
-
endContainer: container,
|
|
156
|
-
endOffset: offset,
|
|
157
|
-
collapsed: true
|
|
158
|
-
};
|
|
116
|
+
const types = typesOf(dataTransfer);
|
|
117
|
+
return (!types.includes(EDYTOR_BLOCK_DRAG_MIME) &&
|
|
118
|
+
!fromHost(root) &&
|
|
119
|
+
types.some((type) => ACCEPTED_FOREIGN_DROP_TYPES.includes(type)));
|
|
159
120
|
};
|
|
160
121
|
// Preventing the drop suppresses the browser's own `insertFromDrop`
|
|
161
122
|
// beforeinput, so the accepted payload is the occurrence itself — the same
|
|
162
|
-
// routing as `insertFromPaste`, with the
|
|
163
|
-
//
|
|
123
|
+
// routing as `insertFromPaste`, with the drop point as its declared target
|
|
124
|
+
// range (`caretAtPoint`).
|
|
164
125
|
const insertFromDrop = (edytor, root, event) => {
|
|
165
|
-
const
|
|
126
|
+
const at = caretAtPoint(root.ownerDocument, event.clientX, event.clientY);
|
|
127
|
+
const point = at &&
|
|
128
|
+
new StaticRange({
|
|
129
|
+
startContainer: at.node,
|
|
130
|
+
startOffset: at.offset,
|
|
131
|
+
endContainer: at.node,
|
|
132
|
+
endOffset: at.offset
|
|
133
|
+
});
|
|
166
134
|
return runOccurrence(edytor, {
|
|
167
135
|
inputType: 'insertFromDrop',
|
|
168
136
|
dataTransfer: event.dataTransfer,
|
|
169
|
-
declared:
|
|
170
|
-
? createCollapsedStaticRange(caret.container, caret.offset)
|
|
171
|
-
: null,
|
|
137
|
+
declared: point && root.contains(point.startContainer) ? point : null,
|
|
172
138
|
cancelable: true
|
|
173
139
|
});
|
|
174
140
|
};
|
|
@@ -186,13 +152,8 @@ const insertFromDrop = (edytor, root, event) => {
|
|
|
186
152
|
* which is the control's (`isControlDrop`).
|
|
187
153
|
*/
|
|
188
154
|
export const preventUnsupportedDrop = (event, edytor) => {
|
|
155
|
+
// Listened on the host.
|
|
189
156
|
const root = event.currentTarget;
|
|
190
|
-
if (!(root instanceof Element)) {
|
|
191
|
-
event.preventDefault();
|
|
192
|
-
event.stopPropagation();
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
observeInternalDragSources(root.getRootNode());
|
|
196
157
|
// The view's own text drag: a move (a copy with Alt) where it may land.
|
|
197
158
|
if (isTextDrag(edytor, root, event.dataTransfer)) {
|
|
198
159
|
const takes = takesTextDrop(edytor, root, event);
|
|
@@ -239,6 +200,6 @@ export const preventUnsupportedDrop = (event, edytor) => {
|
|
|
239
200
|
return;
|
|
240
201
|
}
|
|
241
202
|
// Mid-composition drops are swallowed: the preview owns the write path.
|
|
242
|
-
if (
|
|
203
|
+
if (!edytor.isComposing)
|
|
243
204
|
return insertFromDrop(edytor, root, event);
|
|
244
205
|
};
|
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
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
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
|
+
import { observeInternalDragSources } from './onDrop.js';
|
|
12
13
|
/** The DOM selection has an endpoint inside `node`. */
|
|
13
14
|
export const selectionIsInside = (node) => {
|
|
14
15
|
const selection = getDomSelection(node);
|
|
@@ -17,25 +18,30 @@ export const selectionIsInside = (node) => {
|
|
|
17
18
|
(selection.focusNode && node.contains(selection.focusNode))));
|
|
18
19
|
};
|
|
19
20
|
/**
|
|
20
|
-
* The editor takes the keys after a pointer gesture on its chrome (a
|
|
21
|
-
* 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
|
|
22
25
|
* focus, without scrolling, as the editor's own focus (`focusin` restores
|
|
23
26
|
* no cached caret and counts no gesture), so Mod+Z, Mod+Shift+Z and the
|
|
24
27
|
* block-selection keys act at once, whatever the selection (a block
|
|
25
28
|
* selection, or none: an undo giving back "no selection" keeps them). The
|
|
26
|
-
*
|
|
27
|
-
*
|
|
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.
|
|
28
34
|
*/
|
|
29
35
|
export const takeKeys = (edytor) => {
|
|
30
36
|
const node = edytor.node;
|
|
31
37
|
if (!node?.isConnected || edytor.destroyed)
|
|
32
38
|
return;
|
|
33
|
-
|
|
34
|
-
if (active instanceof Node && node.contains(active))
|
|
39
|
+
if (getActiveElement(node) === node)
|
|
35
40
|
return;
|
|
36
41
|
edytor.expectInternalFocus();
|
|
37
42
|
node.focus({ preventScroll: true });
|
|
38
43
|
edytor.projector.parked();
|
|
44
|
+
edytor.selection.display();
|
|
39
45
|
};
|
|
40
46
|
/*
|
|
41
47
|
* The press: one per primary button press, its `pointerdown`, or a
|
|
@@ -76,6 +82,8 @@ export const onPress = (edytor, target, listener, options) => {
|
|
|
76
82
|
};
|
|
77
83
|
};
|
|
78
84
|
export const attachFocus = (edytor, node) => {
|
|
85
|
+
// Where the host lives (the document, or a shadow root): its drags' sources.
|
|
86
|
+
observeInternalDragSources(node.getRootNode());
|
|
79
87
|
let lastPointerDownInsideEditorAt = Number.NEGATIVE_INFINITY;
|
|
80
88
|
/*
|
|
81
89
|
* A primary `pointerdown` arms `compat` until the `mousedown` it is
|
|
@@ -90,16 +98,51 @@ export const attachFocus = (edytor, node) => {
|
|
|
90
98
|
edytor.markUserGesture();
|
|
91
99
|
edytor.lastUserGestureOutsideEditor = Boolean(event.target instanceof Node && !edytor.node?.contains(event.target));
|
|
92
100
|
};
|
|
101
|
+
/**
|
|
102
|
+
* A press outside the view and its chrome (the overlay's menus, handles,
|
|
103
|
+
* toolbar) ends its block selection (`sel.blocks.outside`, Notion): the
|
|
104
|
+
* selection is none. Shift or Mod keeps it (a marquee from the page's
|
|
105
|
+
* margin adds to it), and so does an app element marked
|
|
106
|
+
* `data-edytor-keep-selection` (its own toolbar acting on the blocks).
|
|
107
|
+
*/
|
|
108
|
+
const pressOutside = (event) => {
|
|
109
|
+
const { target } = event;
|
|
110
|
+
if (edytor.selection.value.kind !== 'blocks' || !(target instanceof Node))
|
|
111
|
+
return;
|
|
112
|
+
if (edytor.node?.contains(target) || edytor.overlay.layer?.contains(target))
|
|
113
|
+
return;
|
|
114
|
+
if (event.shiftKey || event.metaKey || event.ctrlKey)
|
|
115
|
+
return;
|
|
116
|
+
const element = target instanceof Element ? target : target.parentElement;
|
|
117
|
+
if (element?.closest('[data-edytor-keep-selection]'))
|
|
118
|
+
return;
|
|
119
|
+
edytor.selection.commit(noSelection);
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* A press the model answers: on the host's own area, the margin gesture's
|
|
123
|
+
* (the marquee, `sel.marquee`, which gives a click back); below the last
|
|
124
|
+
* block, the trailing paragraph; on a block's chrome, its caret.
|
|
125
|
+
*/
|
|
126
|
+
const placingPress = (event) => {
|
|
127
|
+
const { pointer } = edytor.selection;
|
|
128
|
+
if (pointer.marginPress(event))
|
|
129
|
+
return;
|
|
130
|
+
if (!pointer.belowPress(event))
|
|
131
|
+
pointer.chromePress(event);
|
|
132
|
+
};
|
|
93
133
|
/** A press inside the host (its bubbling phase: an element inside that took it keeps it). */
|
|
94
134
|
const pressInside = (event) => {
|
|
95
135
|
// A pointer gesture abandons a live composition.
|
|
96
136
|
edytor.composition.abandon();
|
|
97
|
-
lastPointerDownInsideEditorAt =
|
|
137
|
+
lastPointerDownInsideEditorAt = event.timeStamp;
|
|
138
|
+
const { pointer } = edytor.selection;
|
|
139
|
+
// The margin gesture's press places no caret and starts no text drag.
|
|
140
|
+
if (pointer.claimed)
|
|
141
|
+
return;
|
|
98
142
|
edytor.projector.pressed();
|
|
99
|
-
|
|
100
|
-
edytor.selection.pointer.capture(event);
|
|
143
|
+
pointer.capture(event);
|
|
101
144
|
edytor.selection.clearInlineBlockSelection();
|
|
102
|
-
|
|
145
|
+
pointer.collapseBlocksAt(event);
|
|
103
146
|
};
|
|
104
147
|
const clearNativeSelectionAfterExternalFocus = () => {
|
|
105
148
|
const activeElement = getActiveElement(node);
|
|
@@ -110,68 +153,40 @@ export const attachFocus = (edytor, node) => {
|
|
|
110
153
|
clearDomSelection(node);
|
|
111
154
|
}
|
|
112
155
|
};
|
|
113
|
-
|
|
114
|
-
|
|
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)
|
|
115
164
|
return;
|
|
116
|
-
|
|
117
|
-
if (event.relatedTarget instanceof Node && node.contains(event.relatedTarget)) {
|
|
165
|
+
if (event.relatedTarget instanceof Node && node.contains(event.relatedTarget))
|
|
118
166
|
return;
|
|
119
|
-
|
|
120
|
-
if (getEventTimeStamp(event) - lastPointerDownInsideEditorAt < 250) {
|
|
167
|
+
if (event.timeStamp - lastPointerDownInsideEditorAt < 250)
|
|
121
168
|
return;
|
|
122
|
-
|
|
123
|
-
const text = edytor.selection.state.startText;
|
|
124
|
-
if (!text) {
|
|
169
|
+
if (!edytor.selection.projection.start)
|
|
125
170
|
return;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const applyMeaningfulDomSelection = () => {
|
|
129
|
-
const selection = getDomSelectionSnapshot(node);
|
|
130
|
-
if (!selection?.anchorNode || !selection.focusNode) {
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
if (!node.contains(selection.anchorNode) || !node.contains(selection.focusNode)) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
const anchorText = edytor.selection.getTextOfNode(selection.anchorNode);
|
|
137
|
-
const focusText = edytor.selection.getTextOfNode(selection.focusNode);
|
|
138
|
-
if (!anchorText || !focusText) {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
const isBrowserFocusReset = selection.isCollapsed &&
|
|
142
|
-
anchorText === edytor.root?.firstEditableText &&
|
|
143
|
-
getYIndex(anchorText, selection.anchorNode, selection.anchorOffset) === 0;
|
|
144
|
-
if (isBrowserFocusReset) {
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
edytor.selection.applySelectionSnapshot(selection);
|
|
148
|
-
return true;
|
|
149
|
-
};
|
|
150
|
-
const restore = () => {
|
|
151
|
-
if (getActiveElement(node) !== node) {
|
|
171
|
+
queueMicrotask(() => {
|
|
172
|
+
if (getActiveElement(node) !== node)
|
|
152
173
|
return;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (!targetText?.node?.isConnected) {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
edytor.selection.setAtTextOffset(targetText, Math.min(targetOffset, targetText.length));
|
|
173
|
-
};
|
|
174
|
-
queueMicrotask(restore);
|
|
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
|
+
});
|
|
175
190
|
};
|
|
176
191
|
return [
|
|
177
192
|
// Any press anywhere disarms pending restores — Firefox can move
|
|
@@ -185,6 +200,7 @@ export const attachFocus = (edytor, node) => {
|
|
|
185
200
|
compat = true;
|
|
186
201
|
lonePresses.delete(edytor);
|
|
187
202
|
gesture(event);
|
|
203
|
+
pressOutside(event);
|
|
188
204
|
}, { capture: true }),
|
|
189
205
|
on(node.ownerDocument, 'mousedown', (event) => {
|
|
190
206
|
const press = !compat && event.isTrusted && event.button === 0;
|
|
@@ -193,14 +209,18 @@ export const attachFocus = (edytor, node) => {
|
|
|
193
209
|
return void lonePresses.delete(edytor);
|
|
194
210
|
lonePresses.set(edytor, event);
|
|
195
211
|
gesture(event);
|
|
212
|
+
pressOutside(event);
|
|
196
213
|
}, { capture: true }),
|
|
197
|
-
// A press
|
|
198
|
-
|
|
214
|
+
// A press below the last block goes to the trailing paragraph; one on a
|
|
215
|
+
// block's non-editable chrome places the caret in its text.
|
|
216
|
+
on(node, 'pointerdown', placingPress, {
|
|
199
217
|
capture: true
|
|
200
218
|
}),
|
|
201
219
|
on(node, 'mousedown', (event) => {
|
|
202
220
|
if (lone(event))
|
|
203
|
-
|
|
221
|
+
placingPress(event);
|
|
222
|
+
else
|
|
223
|
+
edytor.selection.pointer.marginMouse(event);
|
|
204
224
|
}, { capture: true }),
|
|
205
225
|
// The document's capture listener already marked the gesture.
|
|
206
226
|
on(node, 'pointerdown', pressInside),
|
|
@@ -246,7 +266,7 @@ export const attachFocus = (edytor, node) => {
|
|
|
246
266
|
// A focus from outside (Tab, an app's `focus()`) places the user's caret.
|
|
247
267
|
edytor.projector.pressed();
|
|
248
268
|
}
|
|
249
|
-
|
|
269
|
+
restoreAfterKeyboardFocus(event);
|
|
250
270
|
}),
|
|
251
271
|
on(node, 'focusout', (event) => {
|
|
252
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>;
|