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/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { getInternalConfig } from '../shared/configuration.js';
|
|
2
|
+
import { markAndGetEngagement } from '../shared/engagement-history.js';
|
|
3
|
+
import { selector } from './data-attributes.js';
|
|
4
|
+
import { getScrollBy } from './get-scroll-by.js';
|
|
5
|
+
function isScrollingAvailable(value) {
|
|
6
|
+
return Boolean(value.top || value.left);
|
|
7
|
+
}
|
|
8
|
+
function tryScrollElements({
|
|
9
|
+
target,
|
|
10
|
+
input,
|
|
11
|
+
source,
|
|
12
|
+
findEntry,
|
|
13
|
+
timeSinceLastFrame,
|
|
14
|
+
available = {
|
|
15
|
+
top: true,
|
|
16
|
+
left: true
|
|
17
|
+
}
|
|
18
|
+
}) {
|
|
19
|
+
var _container$getConfigu, _container$getAllowed, _container$getAllowed2;
|
|
20
|
+
// we cannot do any more scrolling
|
|
21
|
+
if (!isScrollingAvailable(available)) {
|
|
22
|
+
return available;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// run out of parents to search
|
|
26
|
+
if (!target) {
|
|
27
|
+
return available;
|
|
28
|
+
}
|
|
29
|
+
const element = target.closest(selector);
|
|
30
|
+
|
|
31
|
+
// cannot find any more scroll containers
|
|
32
|
+
if (!element) {
|
|
33
|
+
return available;
|
|
34
|
+
}
|
|
35
|
+
const container = findEntry(element);
|
|
36
|
+
|
|
37
|
+
// cannot find registration, this is bad.
|
|
38
|
+
// fail and just exit
|
|
39
|
+
if (!container) {
|
|
40
|
+
return available;
|
|
41
|
+
}
|
|
42
|
+
function continueSearchUp() {
|
|
43
|
+
var _element$parentElemen;
|
|
44
|
+
return tryScrollElements({
|
|
45
|
+
target: (_element$parentElemen = element === null || element === void 0 ? void 0 : element.parentElement) !== null && _element$parentElemen !== void 0 ? _element$parentElemen : null,
|
|
46
|
+
findEntry,
|
|
47
|
+
source,
|
|
48
|
+
timeSinceLastFrame,
|
|
49
|
+
input,
|
|
50
|
+
available
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const feedback = {
|
|
54
|
+
input,
|
|
55
|
+
source,
|
|
56
|
+
element
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// Engagement is not marked if scrolling is explicitly not allowed
|
|
60
|
+
if (container.canScroll && !container.canScroll(feedback)) {
|
|
61
|
+
return continueSearchUp();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Marking engagement even if no edges are scrollable.
|
|
65
|
+
// We are marking engagement as soon as the element is scrolled over
|
|
66
|
+
const engagement = markAndGetEngagement(element);
|
|
67
|
+
const config = getInternalConfig((_container$getConfigu = container.getConfiguration) === null || _container$getConfigu === void 0 ? void 0 : _container$getConfigu.call(container, feedback));
|
|
68
|
+
const allowedAxis = (_container$getAllowed = (_container$getAllowed2 = container.getAllowedAxis) === null || _container$getAllowed2 === void 0 ? void 0 : _container$getAllowed2.call(container, feedback)) !== null && _container$getAllowed !== void 0 ? _container$getAllowed : 'all';
|
|
69
|
+
const scrollBy = getScrollBy({
|
|
70
|
+
element,
|
|
71
|
+
engagement,
|
|
72
|
+
input,
|
|
73
|
+
timeSinceLastFrame,
|
|
74
|
+
allowedAxis,
|
|
75
|
+
config
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Only allow scrolling in directions that have not already been used
|
|
79
|
+
const scroll = {
|
|
80
|
+
top: 0,
|
|
81
|
+
left: 0
|
|
82
|
+
};
|
|
83
|
+
if (available.top && scrollBy.top !== 0) {
|
|
84
|
+
scroll.top = scrollBy.top;
|
|
85
|
+
// can no longer scroll on the top after this
|
|
86
|
+
available.top = false;
|
|
87
|
+
}
|
|
88
|
+
if (available.left && scrollBy.left !== 0) {
|
|
89
|
+
scroll.left = scrollBy.left;
|
|
90
|
+
// can no longer scroll on the left after this
|
|
91
|
+
available.left = false;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Only scroll if there is something to scroll
|
|
95
|
+
if (scroll.top !== 0 || scroll.left !== 0) {
|
|
96
|
+
element.scrollBy(scroll);
|
|
97
|
+
}
|
|
98
|
+
return continueSearchUp();
|
|
99
|
+
}
|
|
100
|
+
function tryScrollWindow({
|
|
101
|
+
input,
|
|
102
|
+
timeSinceLastFrame,
|
|
103
|
+
available,
|
|
104
|
+
source,
|
|
105
|
+
entries
|
|
106
|
+
}) {
|
|
107
|
+
const element = document.documentElement;
|
|
108
|
+
const feedback = {
|
|
109
|
+
input,
|
|
110
|
+
source,
|
|
111
|
+
element
|
|
112
|
+
};
|
|
113
|
+
for (const entry of entries) {
|
|
114
|
+
var _entry$getConfigurati, _entry$getAllowedAxis, _entry$getAllowedAxis2;
|
|
115
|
+
// this entry is not allowing scrolling, we need to look for another
|
|
116
|
+
if (entry.canScroll && !entry.canScroll(feedback)) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Note: if we had an event for when the user is leaving a tab
|
|
121
|
+
// we _could_ conceptually reset the engagement
|
|
122
|
+
const engagement = markAndGetEngagement(element);
|
|
123
|
+
const config = getInternalConfig((_entry$getConfigurati = entry.getConfiguration) === null || _entry$getConfigurati === void 0 ? void 0 : _entry$getConfigurati.call(entry, feedback));
|
|
124
|
+
const allowedAxis = (_entry$getAllowedAxis = (_entry$getAllowedAxis2 = entry.getAllowedAxis) === null || _entry$getAllowedAxis2 === void 0 ? void 0 : _entry$getAllowedAxis2.call(entry, feedback)) !== null && _entry$getAllowedAxis !== void 0 ? _entry$getAllowedAxis : 'all';
|
|
125
|
+
const scrollBy = getScrollBy({
|
|
126
|
+
element,
|
|
127
|
+
engagement,
|
|
128
|
+
input,
|
|
129
|
+
config,
|
|
130
|
+
allowedAxis,
|
|
131
|
+
getRect: element => DOMRect.fromRect({
|
|
132
|
+
y: 0,
|
|
133
|
+
x: 0,
|
|
134
|
+
width: element.clientWidth,
|
|
135
|
+
height: element.clientHeight
|
|
136
|
+
}),
|
|
137
|
+
timeSinceLastFrame
|
|
138
|
+
});
|
|
139
|
+
const scroll = {
|
|
140
|
+
top: available.top ? scrollBy.top : 0,
|
|
141
|
+
left: available.left ? scrollBy.left : 0
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// only trigger a scroll if we are actually scrolling
|
|
145
|
+
if (scroll.top !== 0 || scroll.left !== 0) {
|
|
146
|
+
element.scrollBy(scroll);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// We only want the window to scroll once
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
export function tryScroll({
|
|
154
|
+
input,
|
|
155
|
+
findEntry,
|
|
156
|
+
timeSinceLastFrame,
|
|
157
|
+
source,
|
|
158
|
+
getWindowScrollEntries,
|
|
159
|
+
underUsersPointer
|
|
160
|
+
}) {
|
|
161
|
+
// We are matching browser behaviour and scrolling inner elements
|
|
162
|
+
// before outer ones. So we try to scroll scroller containers before
|
|
163
|
+
// the window.
|
|
164
|
+
const remainder = tryScrollElements({
|
|
165
|
+
target: underUsersPointer,
|
|
166
|
+
timeSinceLastFrame,
|
|
167
|
+
input,
|
|
168
|
+
source,
|
|
169
|
+
findEntry
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
// Check if we can do any window scrolling
|
|
173
|
+
if (!isScrollingAvailable(remainder)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
tryScrollWindow({
|
|
177
|
+
input,
|
|
178
|
+
source,
|
|
179
|
+
entries: getWindowScrollEntries(),
|
|
180
|
+
timeSinceLastFrame,
|
|
181
|
+
available: remainder
|
|
182
|
+
});
|
|
183
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const vertical = {
|
|
2
|
+
start: 'top',
|
|
3
|
+
end: 'bottom',
|
|
4
|
+
point: 'y',
|
|
5
|
+
size: 'height'
|
|
6
|
+
};
|
|
7
|
+
const horizontal = {
|
|
8
|
+
start: 'left',
|
|
9
|
+
end: 'right',
|
|
10
|
+
point: 'x',
|
|
11
|
+
size: 'width'
|
|
12
|
+
};
|
|
13
|
+
export const axisLookup = {
|
|
14
|
+
vertical: {
|
|
15
|
+
mainAxis: vertical,
|
|
16
|
+
crossAxis: horizontal
|
|
17
|
+
},
|
|
18
|
+
horizontal: {
|
|
19
|
+
mainAxis: horizontal,
|
|
20
|
+
crossAxis: vertical
|
|
21
|
+
}
|
|
22
|
+
};
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const canScrollOnEdge = {
|
|
2
|
+
// Notes:
|
|
3
|
+
//
|
|
4
|
+
// 🌏 Chrome 115.0: uses fractional units for `scrollLeft` and `scrollTop`
|
|
5
|
+
// (and fractional units don't reach true integer maximum when zoomed in / out)
|
|
6
|
+
// 🍎 Safari 16.5.2: no fractional units
|
|
7
|
+
// 🦊 Firefox 115.0: no fractional units
|
|
8
|
+
|
|
9
|
+
// we have some scroll we can move backwards into
|
|
10
|
+
top: element => element.scrollTop > 0,
|
|
11
|
+
// We have some scroll we can move forward into
|
|
12
|
+
right: element => Math.ceil(element.scrollLeft) + element.clientWidth < element.scrollWidth,
|
|
13
|
+
// We have some scroll we can move forwards into
|
|
14
|
+
bottom: element => Math.ceil(element.scrollTop) + element.clientHeight < element.scrollHeight,
|
|
15
|
+
// we have some scroll we can move back into.
|
|
16
|
+
left: element => element.scrollLeft > 0
|
|
17
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const baseConfig = {
|
|
2
|
+
startHitboxAtPercentageRemainingOfElement: {
|
|
3
|
+
top: 0.25,
|
|
4
|
+
right: 0.25,
|
|
5
|
+
bottom: 0.25,
|
|
6
|
+
left: 0.25
|
|
7
|
+
},
|
|
8
|
+
maxScrollAtPercentageRemainingOfHitbox: {
|
|
9
|
+
top: 0.5,
|
|
10
|
+
right: 0.5,
|
|
11
|
+
bottom: 0.5,
|
|
12
|
+
left: 0.5
|
|
13
|
+
},
|
|
14
|
+
timeDampeningDurationMs: 400,
|
|
15
|
+
// Too big and it's too easy to trigger auto scrolling
|
|
16
|
+
// Too small and it's too hard 😅
|
|
17
|
+
maxMainAxisHitboxSize: 180
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/** What the max scroll should be per second. Using "per second" rather than "per frame"
|
|
21
|
+
* as we want a consistent scroll speed regardless of frame rate.
|
|
22
|
+
*
|
|
23
|
+
*
|
|
24
|
+
* I explored trying to make the max scroll speed dynamic based on particular factors.
|
|
25
|
+
* However, it ended up being difficult to find a _perfect_ formula.
|
|
26
|
+
*
|
|
27
|
+
* Likely the perfect answer would involve:
|
|
28
|
+
* - the size of the scrollable element
|
|
29
|
+
* - the size of the scrollable element relative to the screen size
|
|
30
|
+
* - the size of the drag preview
|
|
31
|
+
* - the size of elements being scrolled in scrollable elements (expensive and difficult to compute)
|
|
32
|
+
*/
|
|
33
|
+
const maxPixelScrollPerSecond = {
|
|
34
|
+
// What the value would be if we were scrolling at 15px per frame at 60fps.
|
|
35
|
+
// This is the default as it works well for most experiences.
|
|
36
|
+
// In certain scenarios though it can feel a bit slow.
|
|
37
|
+
standard: 15 * 60,
|
|
38
|
+
// What the value would be if we were scrolling at 25px per frame at 60fps.
|
|
39
|
+
// This is not the default as it feels too fast for a lot of experiences.
|
|
40
|
+
fast: 25 * 60
|
|
41
|
+
};
|
|
42
|
+
export function getInternalConfig(provided) {
|
|
43
|
+
var _provided$maxScrollSp;
|
|
44
|
+
return {
|
|
45
|
+
...baseConfig,
|
|
46
|
+
// only allowing limited control over the config at this stage
|
|
47
|
+
maxPixelScrollPerSecond: maxPixelScrollPerSecond[(_provided$maxScrollSp = provided === null || provided === void 0 ? void 0 : provided.maxScrollSpeed) !== null && _provided$maxScrollSp !== void 0 ? _provided$maxScrollSp : 'standard']
|
|
48
|
+
};
|
|
49
|
+
}
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const ledger = new Map();
|
|
2
|
+
const requested = new Set();
|
|
3
|
+
export function markAndGetEngagement(element) {
|
|
4
|
+
markEngagement(element);
|
|
5
|
+
const entry = ledger.get(element);
|
|
6
|
+
if (entry) {
|
|
7
|
+
return entry;
|
|
8
|
+
}
|
|
9
|
+
const fresh = {
|
|
10
|
+
timeOfEngagementStart: Date.now()
|
|
11
|
+
};
|
|
12
|
+
ledger.set(element, fresh);
|
|
13
|
+
return fresh;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
17
|
+
export function markEngagement(element) {
|
|
18
|
+
requested.add(element);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
22
|
+
export function clearUnusedEngagements(fn) {
|
|
23
|
+
// make sure previous engagement requests don't linger
|
|
24
|
+
requested.clear();
|
|
25
|
+
|
|
26
|
+
// perform the required work
|
|
27
|
+
fn();
|
|
28
|
+
|
|
29
|
+
// if engagements where not requested, purge it
|
|
30
|
+
ledger.forEach((_, element) => {
|
|
31
|
+
if (!requested.has(element)) {
|
|
32
|
+
ledger.delete(element);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// cleaning up after ourselves
|
|
37
|
+
requested.clear();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
41
|
+
export function clearEngagementHistory() {
|
|
42
|
+
ledger.clear();
|
|
43
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { axisLookup } from './axis.js';
|
|
2
|
+
import { mainAxisSideLookup } from './side.js';
|
|
3
|
+
function makeGetHitbox({
|
|
4
|
+
edge,
|
|
5
|
+
axis
|
|
6
|
+
}) {
|
|
7
|
+
return function hitbox({
|
|
8
|
+
clientRect,
|
|
9
|
+
config
|
|
10
|
+
}) {
|
|
11
|
+
const {
|
|
12
|
+
mainAxis,
|
|
13
|
+
crossAxis
|
|
14
|
+
} = axisLookup[axis];
|
|
15
|
+
const side = mainAxisSideLookup[edge];
|
|
16
|
+
const mainAxisHitboxSize = Math.min(
|
|
17
|
+
// scale the size of the hitbox down for smaller elements
|
|
18
|
+
config.startHitboxAtPercentageRemainingOfElement[edge] * clientRect[mainAxis.size],
|
|
19
|
+
// Don't let the hitbox grow too big for big elements
|
|
20
|
+
config.maxMainAxisHitboxSize);
|
|
21
|
+
return DOMRect.fromRect({
|
|
22
|
+
[mainAxis.point]: side === 'start' ?
|
|
23
|
+
// begin from the start edge and grow inwards
|
|
24
|
+
clientRect[mainAxis.point] :
|
|
25
|
+
// begin from inside the end edge and grow towards the end edge
|
|
26
|
+
clientRect[mainAxis.point] + clientRect[mainAxis.size] - mainAxisHitboxSize,
|
|
27
|
+
[crossAxis.point]: clientRect[crossAxis.point],
|
|
28
|
+
[mainAxis.size]: mainAxisHitboxSize,
|
|
29
|
+
[crossAxis.size]: clientRect[crossAxis.size]
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export const getOverElementHitbox = {
|
|
34
|
+
top: makeGetHitbox({
|
|
35
|
+
axis: 'vertical',
|
|
36
|
+
edge: 'top'
|
|
37
|
+
}),
|
|
38
|
+
right: makeGetHitbox({
|
|
39
|
+
axis: 'horizontal',
|
|
40
|
+
edge: 'right'
|
|
41
|
+
}),
|
|
42
|
+
bottom: makeGetHitbox({
|
|
43
|
+
axis: 'vertical',
|
|
44
|
+
edge: 'bottom'
|
|
45
|
+
}),
|
|
46
|
+
left: makeGetHitbox({
|
|
47
|
+
axis: 'horizontal',
|
|
48
|
+
edge: 'left'
|
|
49
|
+
})
|
|
50
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function getPercentageInRange({
|
|
2
|
+
startOfRange,
|
|
3
|
+
endOfRange,
|
|
4
|
+
value
|
|
5
|
+
}) {
|
|
6
|
+
// checking inputs
|
|
7
|
+
const isValid = startOfRange < endOfRange;
|
|
8
|
+
if (!isValid) {
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
11
|
+
if (value < startOfRange) {
|
|
12
|
+
return 0;
|
|
13
|
+
}
|
|
14
|
+
if (value > endOfRange) {
|
|
15
|
+
return 1;
|
|
16
|
+
}
|
|
17
|
+
const range = endOfRange - startOfRange;
|
|
18
|
+
return (value - startOfRange) / range;
|
|
19
|
+
}
|
package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { axisLookup } from './axis.js';
|
|
2
|
+
import { getPercentageInRange } from './get-percentage-in-range.js';
|
|
3
|
+
import { mainAxisSideLookup } from './side.js';
|
|
4
|
+
|
|
5
|
+
// We want a consistent scroll speed across devices, regardless of framerate
|
|
6
|
+
function getMaxScrollChange({
|
|
7
|
+
timeSinceLastFrame,
|
|
8
|
+
config
|
|
9
|
+
}) {
|
|
10
|
+
const targetScrollPerMs = config.maxPixelScrollPerSecond / 1000;
|
|
11
|
+
|
|
12
|
+
// Adjusting out target scroll rate to match the frame rate of the target device
|
|
13
|
+
// This will pull the scroll speed down on high frame rate devices
|
|
14
|
+
// so we get a consistent visual scroll speed regardless of device.
|
|
15
|
+
const proposed = Math.ceil(targetScrollPerMs * timeSinceLastFrame);
|
|
16
|
+
|
|
17
|
+
// If lots of time as passed since that last frame (such on lower frame rate devices)
|
|
18
|
+
// we don't want the scroll speed to be too fast, otherwise it can feel jumpy
|
|
19
|
+
// We are capping the scroll speed at what it would be if we were hitting 60fps
|
|
20
|
+
const maximum = config.maxPixelScrollPerSecond / 60;
|
|
21
|
+
return Math.min(proposed, maximum);
|
|
22
|
+
}
|
|
23
|
+
function getDistanceDampening({
|
|
24
|
+
client,
|
|
25
|
+
axis,
|
|
26
|
+
edge,
|
|
27
|
+
hitbox,
|
|
28
|
+
config
|
|
29
|
+
}) {
|
|
30
|
+
const {
|
|
31
|
+
mainAxis
|
|
32
|
+
} = axisLookup[axis];
|
|
33
|
+
const side = mainAxisSideLookup[edge];
|
|
34
|
+
|
|
35
|
+
// We want to hit the max speed before the edge of the hitbox
|
|
36
|
+
const maxSpeedBuffer = hitbox[mainAxis.size] * config.maxScrollAtPercentageRemainingOfHitbox[edge];
|
|
37
|
+
if (side === 'end') {
|
|
38
|
+
return getPercentageInRange({
|
|
39
|
+
startOfRange: hitbox[mainAxis.start],
|
|
40
|
+
endOfRange: hitbox[mainAxis.end] - maxSpeedBuffer,
|
|
41
|
+
value: client[mainAxis.point]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Moving towards start edge
|
|
46
|
+
|
|
47
|
+
const raw = getPercentageInRange({
|
|
48
|
+
startOfRange: hitbox[mainAxis.start] + maxSpeedBuffer,
|
|
49
|
+
endOfRange: hitbox[mainAxis.end],
|
|
50
|
+
value: client[mainAxis.point]
|
|
51
|
+
});
|
|
52
|
+
// When moving near start edge
|
|
53
|
+
// - the 'end' edge is where we start scrolling
|
|
54
|
+
// - the 'start' edge is where we reach max speed
|
|
55
|
+
// So we need to invert the percentage when moving backwards
|
|
56
|
+
return 1 - raw;
|
|
57
|
+
}
|
|
58
|
+
export function getScrollChange({
|
|
59
|
+
client,
|
|
60
|
+
timeSinceLastFrame,
|
|
61
|
+
engagement,
|
|
62
|
+
axis,
|
|
63
|
+
hitbox,
|
|
64
|
+
edge,
|
|
65
|
+
isDistanceDampeningEnabled,
|
|
66
|
+
config
|
|
67
|
+
}) {
|
|
68
|
+
// We have two forms of speed dampening:
|
|
69
|
+
// 1. 🗺️ Distance
|
|
70
|
+
// The closer you are to a hitbox edge, the faster the scroll speed will be
|
|
71
|
+
// 2. ⏱️ Time
|
|
72
|
+
// When first entering a scroll container we want to dampening all scrolling
|
|
73
|
+
// This is to prevent super fast auto scrolling when first entering into
|
|
74
|
+
// a scroll container, or when lifting in a scroll container
|
|
75
|
+
|
|
76
|
+
const maxScroll = getMaxScrollChange({
|
|
77
|
+
timeSinceLastFrame,
|
|
78
|
+
config
|
|
79
|
+
});
|
|
80
|
+
const percentageDistanceDampening = isDistanceDampeningEnabled ? getDistanceDampening({
|
|
81
|
+
client,
|
|
82
|
+
edge,
|
|
83
|
+
hitbox,
|
|
84
|
+
axis,
|
|
85
|
+
config
|
|
86
|
+
}) : 1;
|
|
87
|
+
|
|
88
|
+
// Dampen speed by time
|
|
89
|
+
const percentageThroughTimeDampening = getPercentageInRange({
|
|
90
|
+
startOfRange: engagement.timeOfEngagementStart,
|
|
91
|
+
endOfRange: engagement.timeOfEngagementStart + config.timeDampeningDurationMs,
|
|
92
|
+
value: Date.now()
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// Calculate how much of the max scroll we should apply based on dampening
|
|
96
|
+
const percentageOfMaxScroll = percentageDistanceDampening * percentageThroughTimeDampening;
|
|
97
|
+
|
|
98
|
+
// We _could_ ease this update (`Math.pow(percentageOfMaxSpeed, 2)`)
|
|
99
|
+
// But linear is feeling really good
|
|
100
|
+
// Always scrolling by at least one pixel, otherwise the scroll does nothing
|
|
101
|
+
const scroll = Math.max(maxScroll * percentageOfMaxScroll, 1);
|
|
102
|
+
const side = mainAxisSideLookup[edge];
|
|
103
|
+
|
|
104
|
+
// When moving backwards, we will be scrolling backwards
|
|
105
|
+
return side === 'end' ? scroll : -1 * scroll;
|
|
106
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function isWithin({
|
|
2
|
+
client,
|
|
3
|
+
clientRect
|
|
4
|
+
}) {
|
|
5
|
+
return (
|
|
6
|
+
// is within horizontal bounds
|
|
7
|
+
client.x >= clientRect.x && client.x <= clientRect.x + clientRect.width &&
|
|
8
|
+
// is within vertical bounds
|
|
9
|
+
client.y >= clientRect.y && client.y <= clientRect.y + clientRect.height
|
|
10
|
+
);
|
|
11
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { getElementFromPointWithoutHoneypot } from '../../pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js';
|
|
2
|
+
import { clearEngagementHistory, clearUnusedEngagements } from './engagement-history.js';
|
|
3
|
+
// We keep this map so that "over element" scrolling and "overflow" scrolling
|
|
4
|
+
// can leverage the same scheduler.
|
|
5
|
+
// The 'monitor' is the key for looking up schedulers
|
|
6
|
+
const schedulers = new Map();
|
|
7
|
+
export function getScheduler(monitor) {
|
|
8
|
+
const scheduler = schedulers.get(monitor);
|
|
9
|
+
if (scheduler) {
|
|
10
|
+
// @ts-expect-error: I don't know how to link the DragType generic between the key and the value when the
|
|
11
|
+
// monitor itself is the key
|
|
12
|
+
return scheduler;
|
|
13
|
+
}
|
|
14
|
+
const created = makeScheduler(monitor);
|
|
15
|
+
schedulers.set(monitor, created);
|
|
16
|
+
return created;
|
|
17
|
+
}
|
|
18
|
+
function makeScheduler(monitor) {
|
|
19
|
+
let state = {
|
|
20
|
+
type: 'idle'
|
|
21
|
+
};
|
|
22
|
+
const callbacks = [];
|
|
23
|
+
function loop(timeLastFrameFinished) {
|
|
24
|
+
if (state.type !== 'running') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const timeSinceLastFrame = timeLastFrameFinished - state.timeLastFrameFinished;
|
|
28
|
+
const {
|
|
29
|
+
latestArgs
|
|
30
|
+
} = state;
|
|
31
|
+
|
|
32
|
+
// A common starting lookup point for determining
|
|
33
|
+
// which auto scroller should be used, and what should be scrolled.
|
|
34
|
+
const underUsersPointer = getElementFromPointWithoutHoneypot({
|
|
35
|
+
x: latestArgs.location.current.input.clientX,
|
|
36
|
+
y: latestArgs.location.current.input.clientY
|
|
37
|
+
});
|
|
38
|
+
clearUnusedEngagements(() => {
|
|
39
|
+
callbacks.forEach(onFrame => onFrame({
|
|
40
|
+
underUsersPointer,
|
|
41
|
+
latestArgs,
|
|
42
|
+
timeSinceLastFrame
|
|
43
|
+
}));
|
|
44
|
+
});
|
|
45
|
+
state.timeLastFrameFinished = timeLastFrameFinished;
|
|
46
|
+
state.frameId = requestAnimationFrame(loop);
|
|
47
|
+
}
|
|
48
|
+
function reset() {
|
|
49
|
+
if (state.type === 'idle') {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
cancelAnimationFrame(state.frameId);
|
|
53
|
+
clearEngagementHistory();
|
|
54
|
+
state = {
|
|
55
|
+
type: 'idle'
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function start(args) {
|
|
59
|
+
if (state.type !== 'idle') {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
state = {
|
|
63
|
+
// Waiting a frame so we can accurately determine `timeSinceLastFrame`.
|
|
64
|
+
type: 'initializing',
|
|
65
|
+
latestArgs: args,
|
|
66
|
+
frameId: requestAnimationFrame(timeLastFrameFinished => {
|
|
67
|
+
if (state.type !== 'initializing') {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
state = {
|
|
71
|
+
type: 'running',
|
|
72
|
+
timeLastFrameFinished,
|
|
73
|
+
latestArgs: state.latestArgs,
|
|
74
|
+
frameId: requestAnimationFrame(loop)
|
|
75
|
+
};
|
|
76
|
+
})
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// this module might have been imported after a drag has started
|
|
81
|
+
// We are starting the auto scroller if we get an update event and
|
|
82
|
+
// the auto scroller has not started yet
|
|
83
|
+
function update(args) {
|
|
84
|
+
if (state.type === 'idle') {
|
|
85
|
+
start(args);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
state.latestArgs = args;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Not exposing a way to stop listening
|
|
92
|
+
monitor({
|
|
93
|
+
onDragStart: start,
|
|
94
|
+
onDropTargetChange: update,
|
|
95
|
+
onDrag: update,
|
|
96
|
+
onDrop: reset
|
|
97
|
+
});
|
|
98
|
+
const api = {
|
|
99
|
+
onFrame(fn) {
|
|
100
|
+
callbacks.push(fn);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return api;
|
|
104
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Alex Reardon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var rafSchd = function rafSchd(fn) {
|
|
2
|
+
var lastArgs = [];
|
|
3
|
+
var frameId = null;
|
|
4
|
+
|
|
5
|
+
var wrapperFn = function wrapperFn() {
|
|
6
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
7
|
+
args[_key] = arguments[_key];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
lastArgs = args;
|
|
11
|
+
|
|
12
|
+
if (frameId) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
frameId = requestAnimationFrame(function () {
|
|
17
|
+
frameId = null;
|
|
18
|
+
fn.apply(void 0, lastArgs);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
wrapperFn.cancel = function () {
|
|
23
|
+
if (!frameId) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
cancelAnimationFrame(frameId);
|
|
28
|
+
frameId = null;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return wrapperFn;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default rafSchd;
|