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
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { bindAll } from '../../../bind-event-listener/index.js';
|
|
2
|
+
import { isSafari } from '../is-safari.js';
|
|
3
|
+
|
|
4
|
+
/* For "dragenter" events, the browser should set `relatedTarget` to the previous element.
|
|
5
|
+
* For external drag operations, our first "dragenter" event should have a `event.relatedTarget` of `null`.
|
|
6
|
+
*
|
|
7
|
+
* Unfortunately in Safari `event.relatedTarget` is *always* set to `null`
|
|
8
|
+
* Safari bug: https://bugs.webkit.org/show_bug.cgi?id=242627
|
|
9
|
+
* To work around this we count "dragenter" and "dragleave" events */
|
|
10
|
+
// Using symbols for event properties so we don't clash with
|
|
11
|
+
// anything on the `event` object
|
|
12
|
+
export const symbols = {
|
|
13
|
+
isLeavingWindow: Symbol('leaving'),
|
|
14
|
+
isEnteringWindow: Symbol('entering')
|
|
15
|
+
};
|
|
16
|
+
(function fixSafari() {
|
|
17
|
+
// Don't do anything when server side rendering
|
|
18
|
+
if (typeof window === 'undefined') {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// rather than checking the userAgent for "jsdom" we can do this check
|
|
23
|
+
// so that the check will be removed completely in production code
|
|
24
|
+
if (process.env.NODE_ENV === 'test') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!isSafari()) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
function getInitialState() {
|
|
31
|
+
return {
|
|
32
|
+
enterCount: 0,
|
|
33
|
+
isOverWindow: false
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
let state = getInitialState();
|
|
37
|
+
function resetState() {
|
|
38
|
+
state = getInitialState();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// These event listeners are bound _forever_ and _never_ removed
|
|
42
|
+
// We don't bother cleaning up these event listeners (for now)
|
|
43
|
+
// as this workaround is only for Safari
|
|
44
|
+
|
|
45
|
+
// This is how the event count works:
|
|
46
|
+
//
|
|
47
|
+
// lift (+1 enterCount)
|
|
48
|
+
// - dragstart(draggable) [enterCount: 0]
|
|
49
|
+
// - dragenter(draggable) [enterCount: 1]
|
|
50
|
+
// leaving draggable (+0 enterCount)
|
|
51
|
+
// - dragenter(document.body) [enterCount: 2]
|
|
52
|
+
// - dragleave(draggable) [enterCount: 1]
|
|
53
|
+
// leaving window (-1 enterCount)
|
|
54
|
+
// - dragleave(document.body) [enterCount: 0] {leaving the window}
|
|
55
|
+
|
|
56
|
+
// Things to note:
|
|
57
|
+
// - dragenter and dragleave bubble
|
|
58
|
+
// - the first dragenter when entering a window might not be on `window`
|
|
59
|
+
// - it could be on an element that is pressed up against the window
|
|
60
|
+
// - (so we cannot rely on `event.target` values)
|
|
61
|
+
|
|
62
|
+
bindAll(window, [{
|
|
63
|
+
type: 'dragstart',
|
|
64
|
+
listener: () => {
|
|
65
|
+
state.enterCount = 0;
|
|
66
|
+
// drag start occurs in the source window
|
|
67
|
+
state.isOverWindow = true;
|
|
68
|
+
// When a drag first starts it will also trigger a "dragenter" on the draggable element
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
type: 'drop',
|
|
72
|
+
listener: resetState
|
|
73
|
+
}, {
|
|
74
|
+
type: 'dragend',
|
|
75
|
+
listener: resetState
|
|
76
|
+
}, {
|
|
77
|
+
type: 'dragenter',
|
|
78
|
+
listener: event => {
|
|
79
|
+
if (!state.isOverWindow && state.enterCount === 0) {
|
|
80
|
+
// Patching the `event` object
|
|
81
|
+
// The `event` object is shared with all event listeners for the event
|
|
82
|
+
event[symbols.isEnteringWindow] = true;
|
|
83
|
+
}
|
|
84
|
+
state.isOverWindow = true;
|
|
85
|
+
state.enterCount++;
|
|
86
|
+
}
|
|
87
|
+
}, {
|
|
88
|
+
type: 'dragleave',
|
|
89
|
+
listener: event => {
|
|
90
|
+
state.enterCount--;
|
|
91
|
+
if (state.isOverWindow && state.enterCount === 0) {
|
|
92
|
+
// Patching the `event` object as it is shared with all event listeners
|
|
93
|
+
// The `event` object is shared with all event listeners for the event
|
|
94
|
+
event[symbols.isLeavingWindow] = true;
|
|
95
|
+
state.isOverWindow = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}],
|
|
99
|
+
// using `capture: true` so that adding event listeners
|
|
100
|
+
// in bubble phase will have the correct symbols
|
|
101
|
+
{
|
|
102
|
+
capture: true
|
|
103
|
+
});
|
|
104
|
+
})();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Does the `EventTarget` look like a `Node` based on "duck typing".
|
|
3
|
+
*
|
|
4
|
+
* Helpful when the `Node` might be outside of the current document
|
|
5
|
+
* so we cannot to an `target instanceof Node` check.
|
|
6
|
+
*/
|
|
7
|
+
function isNodeLike(target) {
|
|
8
|
+
return 'nodeName' in target;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Is an `EventTarget` a `Node` from another `window`?
|
|
13
|
+
*/
|
|
14
|
+
export function isFromAnotherWindow(eventTarget) {
|
|
15
|
+
return isNodeLike(eventTarget) && eventTarget.ownerDocument !== document;
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isSafari } from '../is-safari.js';
|
|
2
|
+
import { symbols } from './count-events-for-safari.js';
|
|
3
|
+
|
|
4
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
5
|
+
export function isLeavingWindowInSafari({
|
|
6
|
+
dragLeave
|
|
7
|
+
}) {
|
|
8
|
+
if (!isSafari()) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return dragLeave.hasOwnProperty(symbols.isLeavingWindow);
|
|
12
|
+
}
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { isFirefox } from '../is-firefox.js';
|
|
2
|
+
import { isSafari } from '../is-safari.js';
|
|
3
|
+
import { isFromAnotherWindow } from './is-from-another-window.js';
|
|
4
|
+
import { isLeavingWindowInSafari } from './is-leaving-window-in-safari.js';
|
|
5
|
+
export function isLeavingWindow({
|
|
6
|
+
dragLeave
|
|
7
|
+
}) {
|
|
8
|
+
const {
|
|
9
|
+
type,
|
|
10
|
+
relatedTarget
|
|
11
|
+
} = dragLeave;
|
|
12
|
+
if (type !== 'dragleave') {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (isSafari()) {
|
|
16
|
+
return isLeavingWindowInSafari({
|
|
17
|
+
dragLeave
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Standard check: if going to `null` we are leaving the `window`
|
|
22
|
+
if (relatedTarget == null) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* 🦊 Exception: `iframe` in Firefox (`125.0`)
|
|
28
|
+
*
|
|
29
|
+
* Case 1: parent `window` → child `iframe`
|
|
30
|
+
* `dragLeave.relatedTarget` is element _inside_ the child `iframe`
|
|
31
|
+
* (foreign element)
|
|
32
|
+
*
|
|
33
|
+
* Case 2: child `iframe` → parent `window`
|
|
34
|
+
* `dragLeave.relatedTarget` is the `iframe` in the parent `window`
|
|
35
|
+
* (foreign element)
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
if (isFirefox()) {
|
|
39
|
+
return isFromAnotherWindow(relatedTarget);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 🌏 Exception: `iframe` in Chrome (`124.0`)
|
|
44
|
+
*
|
|
45
|
+
* Case 1: parent `window` → child `iframe`
|
|
46
|
+
* `dragLeave.relatedTarget` is the `iframe` in the parent `window`
|
|
47
|
+
*
|
|
48
|
+
* Case 2: child `iframe` → parent `window`
|
|
49
|
+
* `dragLeave.relatedTarget` is `null` *(standard check)*
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
// Case 2
|
|
53
|
+
// Using `instanceof` check as the element will be in the same `window`
|
|
54
|
+
return relatedTarget instanceof HTMLIFrameElement;
|
|
55
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export function getBindingsForBrokenDrags({
|
|
2
|
+
onDragEnd
|
|
3
|
+
}) {
|
|
4
|
+
return [
|
|
5
|
+
// ## Detecting drag ending for removed draggables
|
|
6
|
+
//
|
|
7
|
+
// If a draggable element is removed during a drag and the user drops:
|
|
8
|
+
// 1. if over a valid drop target: we get a "drop" event to know the drag is finished
|
|
9
|
+
// 2. if not over a valid drop target (or cancelled): we get nothing
|
|
10
|
+
// The "dragend" event will not fire on the source draggable if it has been
|
|
11
|
+
// removed from the DOM.
|
|
12
|
+
// So we need to figure out if a drag operation has finished by looking at other events
|
|
13
|
+
// We can do this by looking at other events
|
|
14
|
+
|
|
15
|
+
// ### First detection: "pointermove" events
|
|
16
|
+
|
|
17
|
+
// 1. "pointermove" events cannot fire during a drag and drop operation
|
|
18
|
+
// according to the spec. So if we get a "pointermove" it means that
|
|
19
|
+
// the drag and drop operations has finished. So if we get a "pointermove"
|
|
20
|
+
// we know that the drag is over
|
|
21
|
+
// 2. 🦊😤 Drag and drop operations are _supposed_ to suppress
|
|
22
|
+
// other pointer events. However, firefox will allow a few
|
|
23
|
+
// pointer event to get through after a drag starts.
|
|
24
|
+
// The most I've seen is 3
|
|
25
|
+
{
|
|
26
|
+
type: 'pointermove',
|
|
27
|
+
listener: (() => {
|
|
28
|
+
let callCount = 0;
|
|
29
|
+
return function listener() {
|
|
30
|
+
// Using 20 as it is far bigger than the most observed (3)
|
|
31
|
+
if (callCount < 20) {
|
|
32
|
+
callCount++;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
onDragEnd();
|
|
36
|
+
};
|
|
37
|
+
})()
|
|
38
|
+
},
|
|
39
|
+
// ### Second detection: "pointerdown" events
|
|
40
|
+
|
|
41
|
+
// If we receive this event then we know that a drag operation has finished
|
|
42
|
+
// and potentially another one is about to start.
|
|
43
|
+
// Note: `pointerdown` fires on all browsers / platforms before "dragstart"
|
|
44
|
+
{
|
|
45
|
+
type: 'pointerdown',
|
|
46
|
+
listener: onDragEnd
|
|
47
|
+
}];
|
|
48
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function getInput(event) {
|
|
2
|
+
return {
|
|
3
|
+
altKey: event.altKey,
|
|
4
|
+
button: event.button,
|
|
5
|
+
buttons: event.buttons,
|
|
6
|
+
ctrlKey: event.ctrlKey,
|
|
7
|
+
metaKey: event.metaKey,
|
|
8
|
+
shiftKey: event.shiftKey,
|
|
9
|
+
clientX: event.clientX,
|
|
10
|
+
clientY: event.clientY,
|
|
11
|
+
pageX: event.pageX,
|
|
12
|
+
pageY: event.pageY
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { once } from '../public-utils/once.js';
|
|
2
|
+
|
|
3
|
+
// using `cache` as our `isFirefox()` result will not change in a browser
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns `true` if a `Firefox` browser
|
|
7
|
+
* */
|
|
8
|
+
export const isFirefox = once(function isFirefox() {
|
|
9
|
+
if (process.env.NODE_ENV === 'test') {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return navigator.userAgent.includes('Firefox');
|
|
13
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { once } from '../public-utils/once.js';
|
|
2
|
+
|
|
3
|
+
// using `cache` as our `isSafari()` result will not change in a browser
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns `true` if a `Safari` browser.
|
|
7
|
+
* Returns `true` if the browser is running on iOS (they are all Safari).
|
|
8
|
+
*
|
|
9
|
+
* Use `isSafariOnIOS` if you want to check if something is Safari + iOS
|
|
10
|
+
* */
|
|
11
|
+
export const isSafari = once(function isSafari() {
|
|
12
|
+
if (process.env.NODE_ENV === 'test') {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const {
|
|
16
|
+
userAgent
|
|
17
|
+
} = navigator;
|
|
18
|
+
return userAgent.includes('AppleWebKit') && !userAgent.includes('Chrome');
|
|
19
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Why we put the media types in their own files:
|
|
2
|
+
//
|
|
3
|
+
// - we are not putting them all in one file as not all adapters need all types
|
|
4
|
+
// - we are not putting them in the external helpers as some things just need the
|
|
5
|
+
// types and not the external functions code
|
|
6
|
+
export const textMediaType = 'text/plain';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Why we put the media types in their own files:
|
|
2
|
+
//
|
|
3
|
+
// - we are not putting them all in one file as not all adapters need all types
|
|
4
|
+
// - we are not putting them in the external helpers as some things just need the
|
|
5
|
+
// types and not the external functions code
|
|
6
|
+
export const URLMediaType = 'text/uri-list';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resets user agent styles for `[popover]` elements.
|
|
3
|
+
*
|
|
4
|
+
* Browsers apply these defaults to popovers (per the WHATWG HTML spec rendering section):
|
|
5
|
+
* - `inset: 0` + `margin: auto` → centers the popover in the viewport
|
|
6
|
+
* - `border: solid` → visible border
|
|
7
|
+
* - `padding: 0.25em` → internal spacing
|
|
8
|
+
* - `overflow: auto` → scrollbars when content overflows
|
|
9
|
+
* - `color: CanvasText` + `background-color: Canvas` → system theme colors
|
|
10
|
+
*
|
|
11
|
+
* This object neutralizes those defaults so the popover behaves like a plain
|
|
12
|
+
* positioned `<div>`, matching the sizing of the legacy (non-popover)
|
|
13
|
+
* fallback container exactly.
|
|
14
|
+
*
|
|
15
|
+
* **Width and height (`auto`)**
|
|
16
|
+
*
|
|
17
|
+
* `width` and `height` override the spec user agent value of `fit-content`
|
|
18
|
+
* with `auto`.
|
|
19
|
+
*
|
|
20
|
+
* _Why?_
|
|
21
|
+
*
|
|
22
|
+
* - When a `[popover]` is sized with `fit-content` and contains a flex
|
|
23
|
+
* container, Safari collapses any flex item that uses `overflow: auto`
|
|
24
|
+
* to `0px`.
|
|
25
|
+
* - Setting the popover's `width` and `height` to `auto` skips the `fit-content`
|
|
26
|
+
* pass and avoids the bug in Safari
|
|
27
|
+
* - Chromium and Firefox tolerate `fit-content` here, but `auto` is safe
|
|
28
|
+
* everywhere and matches our non-popover path
|
|
29
|
+
*/
|
|
30
|
+
export const popoverResetUserAgentStyles = {
|
|
31
|
+
inset: 'unset',
|
|
32
|
+
border: 'none',
|
|
33
|
+
padding: 0,
|
|
34
|
+
margin: 0,
|
|
35
|
+
overflow: 'visible',
|
|
36
|
+
color: 'inherit',
|
|
37
|
+
background: 'transparent',
|
|
38
|
+
width: 'auto',
|
|
39
|
+
height: 'auto'
|
|
40
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { once } from '../public-utils/once.js';
|
|
2
|
+
|
|
3
|
+
// Using `once` as the value won't change in a browser
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns `true` if the browser supports the Popover API (top-layer).
|
|
7
|
+
*
|
|
8
|
+
* When supported, elements with `popover="manual"` can be promoted to the
|
|
9
|
+
* browser's top layer via `element.showPopover()`, which is more reliable
|
|
10
|
+
* than `z-index` for ensuring an element renders above everything else.
|
|
11
|
+
*
|
|
12
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Popover_API
|
|
13
|
+
*/
|
|
14
|
+
export const supportsPopover = once(function supportsPopover() {
|
|
15
|
+
return typeof HTMLElement !== 'undefined' && typeof HTMLElement.prototype.showPopover === 'function';
|
|
16
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Copyright 2023 Atlassian Pty Ltd
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
|
|
4
|
+
compliance with the License. You may obtain a copy of the License at
|
|
5
|
+
|
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
|
|
8
|
+
Unless required by applicable law or agreed to in writing, software distributed under the License is
|
|
9
|
+
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
10
|
+
implied. See the License for the specific language governing permissions and limitations under the
|
|
11
|
+
License.
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ElementDragType, CleanupFn } from '../../pragmatic-drag-and-drop/entry-point/types.js';
|
|
2
|
+
import type { ElementAutoScrollArgs, WindowAutoScrollArgs } from '../internal-types.js';
|
|
3
|
+
export declare const autoScrollForElements: (args: ElementAutoScrollArgs<ElementDragType>) => CleanupFn;
|
|
4
|
+
export declare const autoScrollWindowForElements: (args?: WindowAutoScrollArgs<ElementDragType>) => CleanupFn;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { monitorForElements } from '../../pragmatic-drag-and-drop/adapter/element-adapter.js';
|
|
2
|
+
import { makeApi } from '../over-element/make-api.js';
|
|
3
|
+
const api = makeApi({
|
|
4
|
+
monitor: monitorForElements
|
|
5
|
+
});
|
|
6
|
+
export const autoScrollForElements = api.autoScroll;
|
|
7
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
8
|
+
export const autoScrollWindowForElements = api.autoScrollWindow;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AllDragTypes, Input } from '../pragmatic-drag-and-drop/entry-point/types.js';
|
|
2
|
+
export type ElementGetFeedbackArgs<DragType extends AllDragTypes> = {
|
|
3
|
+
/**
|
|
4
|
+
* The users _current_ input
|
|
5
|
+
*/
|
|
6
|
+
input: Input;
|
|
7
|
+
/**
|
|
8
|
+
* The data associated with the entity being dragged
|
|
9
|
+
*/
|
|
10
|
+
source: DragType['payload'];
|
|
11
|
+
/**
|
|
12
|
+
* The element trying to be scrolled
|
|
13
|
+
*/
|
|
14
|
+
element: Element;
|
|
15
|
+
};
|
|
16
|
+
export type WindowGetFeedbackArgs<DragType extends AllDragTypes> = Omit<ElementGetFeedbackArgs<DragType>, 'element'>;
|
|
17
|
+
export type Spacing = {
|
|
18
|
+
top: number;
|
|
19
|
+
right: number;
|
|
20
|
+
bottom: number;
|
|
21
|
+
left: number;
|
|
22
|
+
};
|
|
23
|
+
export type Edge = keyof Spacing;
|
|
24
|
+
export type EngagementHistoryEntry = {
|
|
25
|
+
timeOfEngagementStart: number;
|
|
26
|
+
};
|
|
27
|
+
export type InternalConfig = {
|
|
28
|
+
startHitboxAtPercentageRemainingOfElement: Spacing;
|
|
29
|
+
maxScrollAtPercentageRemainingOfHitbox: Spacing;
|
|
30
|
+
maxPixelScrollPerSecond: number;
|
|
31
|
+
timeDampeningDurationMs: number;
|
|
32
|
+
maxMainAxisHitboxSize: number;
|
|
33
|
+
};
|
|
34
|
+
export type PublicConfig = Partial<{
|
|
35
|
+
maxScrollSpeed: 'standard' | 'fast';
|
|
36
|
+
}>;
|
|
37
|
+
export type ElementAutoScrollArgs<DragType extends AllDragTypes> = {
|
|
38
|
+
element: Element;
|
|
39
|
+
canScroll?: (args: ElementGetFeedbackArgs<DragType>) => boolean;
|
|
40
|
+
getAllowedAxis?: (args: ElementGetFeedbackArgs<DragType>) => AllowedAxis;
|
|
41
|
+
getConfiguration?: (args: ElementGetFeedbackArgs<DragType>) => PublicConfig;
|
|
42
|
+
};
|
|
43
|
+
export type WindowAutoScrollArgs<DragType extends AllDragTypes> = {
|
|
44
|
+
canScroll?: (args: WindowGetFeedbackArgs<DragType>) => boolean;
|
|
45
|
+
getAllowedAxis?: (args: WindowGetFeedbackArgs<DragType>) => AllowedAxis;
|
|
46
|
+
getConfiguration?: (args: WindowGetFeedbackArgs<DragType>) => PublicConfig;
|
|
47
|
+
};
|
|
48
|
+
export type Side = 'start' | 'end';
|
|
49
|
+
export type Axis = 'vertical' | 'horizontal';
|
|
50
|
+
export type AllowedAxis = Axis | 'all';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const dataAttribute = 'data-auto-scrollable';
|
|
2
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
3
|
+
export const selector = `[${dataAttribute}="true"]`;
|
|
4
|
+
|
|
5
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
6
|
+
export function addScrollableAttribute(element) {
|
|
7
|
+
element.setAttribute(dataAttribute, 'true');
|
|
8
|
+
return () => element.removeAttribute(dataAttribute);
|
|
9
|
+
}
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { canScrollOnEdge } from '../shared/can-scroll-on-edge.js';
|
|
2
|
+
import { edgeAxisLookup, edges } from '../shared/edges.js';
|
|
3
|
+
import { getOverElementHitbox } from '../shared/get-over-element-hitbox.js';
|
|
4
|
+
import { getScrollChange } from '../shared/get-scroll-change.js';
|
|
5
|
+
import { isAxisAllowed } from '../shared/is-axis-allowed.js';
|
|
6
|
+
import { isWithin } from '../shared/is-within.js';
|
|
7
|
+
function getRectDefault(element) {
|
|
8
|
+
return element.getBoundingClientRect();
|
|
9
|
+
}
|
|
10
|
+
export function getScrollBy({
|
|
11
|
+
element,
|
|
12
|
+
input,
|
|
13
|
+
timeSinceLastFrame,
|
|
14
|
+
engagement,
|
|
15
|
+
config,
|
|
16
|
+
allowedAxis,
|
|
17
|
+
getRect = getRectDefault
|
|
18
|
+
}) {
|
|
19
|
+
const client = {
|
|
20
|
+
x: input.clientX,
|
|
21
|
+
y: input.clientY
|
|
22
|
+
};
|
|
23
|
+
const clientRect = getRect(element);
|
|
24
|
+
const scrollableEdges = edges.reduce((map, edge) => {
|
|
25
|
+
const hitbox = getOverElementHitbox[edge]({
|
|
26
|
+
clientRect,
|
|
27
|
+
config
|
|
28
|
+
});
|
|
29
|
+
const axis = edgeAxisLookup[edge];
|
|
30
|
+
|
|
31
|
+
// Note: changing the allowed axis during a drag will not
|
|
32
|
+
// reset time dampening. It was decided it would be too
|
|
33
|
+
// complex to implement initially, and we can add it
|
|
34
|
+
// later if needed.
|
|
35
|
+
if (!isAxisAllowed(axis, allowedAxis)) {
|
|
36
|
+
return map;
|
|
37
|
+
}
|
|
38
|
+
if (!isWithin({
|
|
39
|
+
client,
|
|
40
|
+
clientRect: hitbox
|
|
41
|
+
})) {
|
|
42
|
+
return map;
|
|
43
|
+
}
|
|
44
|
+
if (!canScrollOnEdge[edge](element)) {
|
|
45
|
+
return map;
|
|
46
|
+
}
|
|
47
|
+
map.set(edge, {
|
|
48
|
+
edge,
|
|
49
|
+
hitbox
|
|
50
|
+
});
|
|
51
|
+
return map;
|
|
52
|
+
}, new Map());
|
|
53
|
+
const left = (() => {
|
|
54
|
+
const axis = 'horizontal';
|
|
55
|
+
const leftEdge = scrollableEdges.get('left');
|
|
56
|
+
if (leftEdge) {
|
|
57
|
+
return getScrollChange({
|
|
58
|
+
client,
|
|
59
|
+
edge: leftEdge.edge,
|
|
60
|
+
hitbox: leftEdge.hitbox,
|
|
61
|
+
axis,
|
|
62
|
+
timeSinceLastFrame,
|
|
63
|
+
engagement,
|
|
64
|
+
isDistanceDampeningEnabled: true,
|
|
65
|
+
config
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const rightEdge = scrollableEdges.get('right');
|
|
69
|
+
if (rightEdge) {
|
|
70
|
+
return getScrollChange({
|
|
71
|
+
client,
|
|
72
|
+
edge: rightEdge.edge,
|
|
73
|
+
hitbox: rightEdge.hitbox,
|
|
74
|
+
axis,
|
|
75
|
+
timeSinceLastFrame,
|
|
76
|
+
engagement,
|
|
77
|
+
isDistanceDampeningEnabled: true,
|
|
78
|
+
config
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return 0;
|
|
82
|
+
})();
|
|
83
|
+
const top = (() => {
|
|
84
|
+
const axis = 'vertical';
|
|
85
|
+
const bottomEdge = scrollableEdges.get('bottom');
|
|
86
|
+
if (bottomEdge) {
|
|
87
|
+
return getScrollChange({
|
|
88
|
+
client,
|
|
89
|
+
edge: bottomEdge.edge,
|
|
90
|
+
hitbox: bottomEdge.hitbox,
|
|
91
|
+
axis,
|
|
92
|
+
timeSinceLastFrame,
|
|
93
|
+
engagement,
|
|
94
|
+
isDistanceDampeningEnabled: true,
|
|
95
|
+
config
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
const topEdge = scrollableEdges.get('top');
|
|
99
|
+
if (topEdge) {
|
|
100
|
+
return getScrollChange({
|
|
101
|
+
client,
|
|
102
|
+
edge: topEdge.edge,
|
|
103
|
+
hitbox: topEdge.hitbox,
|
|
104
|
+
axis,
|
|
105
|
+
timeSinceLastFrame,
|
|
106
|
+
engagement,
|
|
107
|
+
isDistanceDampeningEnabled: true,
|
|
108
|
+
config
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return 0;
|
|
112
|
+
})();
|
|
113
|
+
return {
|
|
114
|
+
left,
|
|
115
|
+
top
|
|
116
|
+
};
|
|
117
|
+
}
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { combine } from '../../pragmatic-drag-and-drop/public-utils/combine.js';
|
|
2
|
+
import { once } from '../../pragmatic-drag-and-drop/public-utils/once.js';
|
|
3
|
+
import { getScheduler } from '../shared/scheduler.js';
|
|
4
|
+
import { addScrollableAttribute } from './data-attributes.js';
|
|
5
|
+
import { tryScroll } from './try-scroll.js';
|
|
6
|
+
export function makeApi({
|
|
7
|
+
monitor
|
|
8
|
+
}) {
|
|
9
|
+
const elementRegistry = new Map();
|
|
10
|
+
const windowRegistry = new Set();
|
|
11
|
+
function autoScroll(args) {
|
|
12
|
+
// Warn during development if trying to add auto scroll to an element
|
|
13
|
+
// that is not scrollable.
|
|
14
|
+
// Note: this can produce a false positive when a scroll container is not
|
|
15
|
+
// scrollable initially, but becomes scrollable during a drag.
|
|
16
|
+
// I thought of adding the warning as I think it would be a more common pitfall
|
|
17
|
+
// to accidentally register auto scrolling on the wrong element
|
|
18
|
+
// If requested, we could provide a mechanism to opt out of this warning
|
|
19
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
20
|
+
const {
|
|
21
|
+
overflowX,
|
|
22
|
+
overflowY
|
|
23
|
+
} = window.getComputedStyle(args.element);
|
|
24
|
+
const isScrollable = overflowX === 'auto' || overflowX === 'scroll' || overflowY === 'auto' || overflowY === 'scroll';
|
|
25
|
+
if (!isScrollable) {
|
|
26
|
+
// eslint-disable-next-line no-console
|
|
27
|
+
console.warn('Auto scrolling has been attached to an element that appears not to be scrollable', {
|
|
28
|
+
element: args.element,
|
|
29
|
+
overflowX,
|
|
30
|
+
overflowY
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Warn if there is an existing registration
|
|
36
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
37
|
+
const existing = elementRegistry.get(args.element);
|
|
38
|
+
if (existing) {
|
|
39
|
+
// eslint-disable-next-line no-console
|
|
40
|
+
console.warn('You have already registered autoScrolling on the same element', {
|
|
41
|
+
existing,
|
|
42
|
+
proposed: args
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
elementRegistry.set(args.element, args);
|
|
47
|
+
const cleanup = combine(addScrollableAttribute(args.element), () => elementRegistry.delete(args.element));
|
|
48
|
+
return once(cleanup);
|
|
49
|
+
}
|
|
50
|
+
function autoScrollWindow(args = {}) {
|
|
51
|
+
// Putting `args` in a unique object so that
|
|
52
|
+
// each call will create a unique entry, even if a consumer
|
|
53
|
+
// shares the `args` object between calls.
|
|
54
|
+
// Just being safe here.
|
|
55
|
+
const unique = {
|
|
56
|
+
...args
|
|
57
|
+
};
|
|
58
|
+
windowRegistry.add(unique);
|
|
59
|
+
function cleanup() {
|
|
60
|
+
windowRegistry.delete(unique);
|
|
61
|
+
}
|
|
62
|
+
return once(cleanup);
|
|
63
|
+
}
|
|
64
|
+
function findEntry(element) {
|
|
65
|
+
var _elementRegistry$get;
|
|
66
|
+
return (_elementRegistry$get = elementRegistry.get(element)) !== null && _elementRegistry$get !== void 0 ? _elementRegistry$get : null;
|
|
67
|
+
}
|
|
68
|
+
function getWindowScrollEntries() {
|
|
69
|
+
return Array.from(windowRegistry);
|
|
70
|
+
}
|
|
71
|
+
function onFrame({
|
|
72
|
+
latestArgs,
|
|
73
|
+
underUsersPointer,
|
|
74
|
+
timeSinceLastFrame
|
|
75
|
+
}) {
|
|
76
|
+
tryScroll({
|
|
77
|
+
input: latestArgs.location.current.input,
|
|
78
|
+
source: latestArgs.source,
|
|
79
|
+
findEntry,
|
|
80
|
+
underUsersPointer,
|
|
81
|
+
timeSinceLastFrame,
|
|
82
|
+
getWindowScrollEntries
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
getScheduler(monitor).onFrame(onFrame);
|
|
86
|
+
return {
|
|
87
|
+
autoScroll,
|
|
88
|
+
autoScrollWindow
|
|
89
|
+
};
|
|
90
|
+
}
|