import type { AllDragTypes, Input } from '@atlaskit/pragmatic-drag-and-drop/types'; export type ElementGetFeedbackArgs = { /** * The users _current_ input */ input: Input; /** * The data associated with the entity being dragged */ source: DragType['payload']; /** * The element trying to be scrolled */ element: Element; }; export type WindowGetFeedbackArgs = Omit, 'element'>; export type Spacing = { top: number; right: number; bottom: number; left: number; }; export type Edge = keyof Spacing; export type EngagementHistoryEntry = { timeOfEngagementStart: number; }; export type InternalConfig = { startHitboxAtPercentageRemainingOfElement: Spacing; maxScrollAtPercentageRemainingOfHitbox: Spacing; maxPixelScrollPerSecond: number; timeDampeningDurationMs: number; maxMainAxisHitboxSize: number; }; export type PublicConfig = Partial<{ maxScrollSpeed: 'standard' | 'fast'; }>; export type ElementAutoScrollArgs = { element: Element; canScroll?: (args: ElementGetFeedbackArgs) => boolean; getAllowedAxis?: (args: ElementGetFeedbackArgs) => AllowedAxis; getConfiguration?: (args: ElementGetFeedbackArgs) => PublicConfig; }; export type WindowAutoScrollArgs = { canScroll?: (args: WindowGetFeedbackArgs) => boolean; getAllowedAxis?: (args: WindowGetFeedbackArgs) => AllowedAxis; getConfiguration?: (args: WindowGetFeedbackArgs) => PublicConfig; }; export type Side = 'start' | 'end'; export type Axis = 'vertical' | 'horizontal'; export type AllowedAxis = Axis | 'all';