/// import * as React$1 from 'react'; import React__default, { PointerEvent, MutableRefObject } from 'react'; declare type Coordinates = { x: number; y: number; }; declare type Transform = { x: number; y: number; scaleX: number; scaleY: number; }; declare type Without = Pick>; declare type DistanceMeasurement = number | Coordinates | Pick | Pick; declare type Translate = Coordinates; interface Collision { id: UniqueIdentifier; data?: Data; } declare type CollisionDetection = (args: { active: Active; collisionRect: ClientRect; droppableRects: RectMap; droppableContainers: DroppableContainer[]; pointerCoordinates: Coordinates | null; }) => Collision[]; /** * Returns the closest rectangles from an array of rectangles to the center of a given * rectangle. */ declare const closestCenter: CollisionDetection; interface DistanceConstraint { distance: DistanceMeasurement; tolerance?: DistanceMeasurement; } interface DelayConstraint { delay: number; tolerance: DistanceMeasurement; } interface EventDescriptor { name: keyof DocumentEventMap; passive?: boolean; } interface PointerEventHandlers { cancel?: EventDescriptor; move: EventDescriptor; end: EventDescriptor; } declare type PointerActivationConstraint = DelayConstraint | DistanceConstraint | (DelayConstraint & DistanceConstraint); interface AbstractPointerSensorOptions extends SensorOptions { activationConstraint?: PointerActivationConstraint; bypassActivationConstraint?(props: Pick): boolean; onActivation?({ event }: { event: Event; }): void; } declare type AbstractPointerSensorProps = SensorProps; declare class AbstractPointerSensor implements SensorInstance { private props; private events; autoScrollEnabled: boolean; private document; private activated; private initialCoordinates; private timeoutId; private listeners; private documentListeners; private windowListeners; constructor(props: AbstractPointerSensorProps, events: PointerEventHandlers, listenerTarget?: Document | EventTarget); private attach; private detach; private handlePending; private handleStart; private handleMove; private handleEnd; private handleCancel; private handleKeydown; private removeTextSelection; } interface PointerSensorOptions extends AbstractPointerSensorOptions { } declare type PointerSensorProps = SensorProps; declare class PointerSensor extends AbstractPointerSensor { constructor(props: PointerSensorProps); static activators: { eventName: "onPointerDown"; handler: ({ nativeEvent: event }: PointerEvent, { onActivation }: PointerSensorOptions) => boolean; }[]; } declare type SensorContext = { activatorEvent: Event | null; active: Active | null; activeNode: HTMLElement | null; collisionRect: ClientRect | null; collisions: Collision[] | null; draggableNodes: DraggableNodes; draggingNode: HTMLElement | null; draggingNodeRect: ClientRect | null; droppableRects: RectMap; droppableContainers: DroppableContainers; over: Over | null; scrollableAncestors: Element[]; scrollAdjustedTranslate: Translate | null; }; declare type SensorOptions = {}; interface SensorProps { active: UniqueIdentifier; activeNode: DraggableNode; event: Event; context: MutableRefObject; options: T; onAbort(id: UniqueIdentifier): void; onPending(id: UniqueIdentifier, constraint: PointerActivationConstraint, initialCoordinates: Coordinates, offset?: Coordinates | undefined): void; onStart(coordinates: Coordinates): void; onCancel(): void; onMove(coordinates: Coordinates): void; onEnd(): void; } declare type SensorInstance = { autoScrollEnabled: boolean; }; declare type SensorActivatorFunction = (event: any, options: T, context: { active: DraggableNode; }) => boolean | undefined; declare type Activator = { eventName: SyntheticEventName; handler: SensorActivatorFunction; }; declare type Activators = Activator[]; declare type Teardown = () => void; interface Sensor { new (props: SensorProps): SensorInstance; activators: Activators; setup?(): Teardown | undefined; } declare type SensorDescriptor = { sensor: Sensor; options: T; }; declare function useSensor(sensor: Sensor, options?: T): SensorDescriptor; declare function useSensors(...sensors: (SensorDescriptor | undefined | null)[]): SensorDescriptor[]; declare type KeyboardCodes = { start: KeyboardEvent['code'][]; cancel: KeyboardEvent['code'][]; end: KeyboardEvent['code'][]; }; declare type KeyboardCoordinateGetter = (event: KeyboardEvent, args: { active: UniqueIdentifier; currentCoordinates: Coordinates; context: SensorContext; }) => Coordinates | void; interface KeyboardSensorOptions extends SensorOptions { keyboardCodes?: KeyboardCodes; coordinateGetter?: KeyboardCoordinateGetter; scrollBehavior?: ScrollBehavior; onActivation?({ event }: { event: KeyboardEvent; }): void; } declare type KeyboardSensorProps = SensorProps; declare class KeyboardSensor implements SensorInstance { private props; autoScrollEnabled: boolean; private referenceCoordinates; private listeners; private windowListeners; constructor(props: KeyboardSensorProps); private attach; private handleStart; private handleKeyDown; private handleMove; private handleEnd; private handleCancel; private detach; static activators: Activators; } interface DragEvent { activatorEvent: Event; active: Active; collisions: Collision[] | null; delta: Translate; over: Over | null; } /** * Fired if a pending drag was aborted before it started. * Only meaningful in the context of activation constraints. **/ interface DragAbortEvent { id: UniqueIdentifier; } /** * Fired when a drag is about to start pending activation constraints. * @note For pointer events, it will be fired repeatedly with updated * coordinates when pointer is moved until the drag starts. */ interface DragPendingEvent { id: UniqueIdentifier; constraint: PointerActivationConstraint; initialCoordinates: Coordinates; offset?: Coordinates | undefined; } interface DragStartEvent extends Pick { } interface DragMoveEvent extends DragEvent { } interface DragOverEvent extends DragMoveEvent { } interface DragEndEvent extends DragEvent { } interface DragCancelEvent extends DragEndEvent { } declare type UniqueIdentifier = string | number; declare type SyntheticEventName = keyof Without, 'children' | 'dangerouslySetInnerHTML'>; interface ClientRect { width: number; height: number; top: number; left: number; right: number; bottom: number; } declare enum AutoScrollActivator { Pointer = 0, DraggableRect = 1 } interface Options { acceleration?: number; activator?: AutoScrollActivator; canScroll?: CanScroll; enabled?: boolean; interval?: number; layoutShiftCompensation?: boolean | { x: boolean; y: boolean; }; order?: TraversalOrder; threshold?: { x: number; y: number; }; } declare type CanScroll = (element: Element) => boolean; declare enum TraversalOrder { TreeOrder = 0, ReversedTreeOrder = 1 } declare enum MeasuringStrategy { Always = 0, BeforeDragging = 1, WhileDragging = 2 } declare enum MeasuringFrequency { Optimized = "optimized" } declare type MeasuringFunction$1 = (element: HTMLElement) => ClientRect; interface DroppableMeasuring { measure: MeasuringFunction$1; strategy: MeasuringStrategy; frequency: MeasuringFrequency | number; } declare type Identifier = UniqueIdentifier | null | undefined; declare class DroppableContainersMap extends Map { get(id: Identifier): DroppableContainer | undefined; toArray(): DroppableContainer[]; getEnabled(): DroppableContainer[]; getNodeFor(id: Identifier): HTMLElement | undefined; } declare type AnyData = Record; declare type Data = T & AnyData; declare type DataRef = MutableRefObject | undefined>; interface DroppableContainer { id: UniqueIdentifier; key: UniqueIdentifier; data: DataRef; disabled: boolean; node: MutableRefObject; rect: MutableRefObject; } interface Active { id: UniqueIdentifier; data: DataRef; rect: MutableRefObject<{ initial: ClientRect | null; translated: ClientRect | null; }>; } interface Over { id: UniqueIdentifier; rect: ClientRect; disabled: boolean; data: DataRef; } declare type DraggableNode = { id: UniqueIdentifier; key: UniqueIdentifier; node: MutableRefObject; activatorNode: MutableRefObject; data: DataRef; }; declare type DraggableNodes = Map; declare type DroppableContainers = DroppableContainersMap; declare type RectMap = Map; interface Arguments { active: Active; over: Over | null; } interface Announcements { onDragStart({ active }: Pick): string | undefined; onDragMove?({ active, over }: Arguments): string | undefined; onDragOver({ active, over }: Arguments): string | undefined; onDragEnd({ active, over }: Arguments): string | undefined; onDragCancel({ active, over }: Arguments): string | undefined; } interface ScreenReaderInstructions { draggable: string; } declare type Modifier = (args: { activatorEvent: Event | null; active: Active | null; activeNodeRect: ClientRect | null; draggingNodeRect: ClientRect | null; containerNodeRect: ClientRect | null; over: Over | null; overlayNodeRect: ClientRect | null; scrollableAncestors: Element[]; scrollableAncestorRects: ClientRect[]; transform: Transform; windowRect: ClientRect | null; }) => Transform; declare type Modifiers = Modifier[]; declare type MeasuringFunction = (node: HTMLElement) => ClientRect; interface Measuring { measure: MeasuringFunction; } interface DraggableMeasuring extends Measuring { } interface DragOverlayMeasuring extends Measuring { } interface MeasuringConfiguration { draggable?: Partial; droppable?: Partial; dragOverlay?: Partial; } interface Props { id?: string; accessibility?: { announcements?: Announcements; container?: Element; restoreFocus?: boolean; screenReaderInstructions?: ScreenReaderInstructions; }; autoScroll?: boolean | Options; cancelDrop?: CancelDrop; children?: React__default.ReactNode; collisionDetection?: CollisionDetection; measuring?: MeasuringConfiguration; modifiers?: Modifiers; sensors?: SensorDescriptor[]; onDragAbort?(event: DragAbortEvent): void; onDragPending?(event: DragPendingEvent): void; onDragStart?(event: DragStartEvent): void; onDragMove?(event: DragMoveEvent): void; onDragOver?(event: DragOverEvent): void; onDragEnd?(event: DragEndEvent): void; onDragCancel?(event: DragCancelEvent): void; } interface CancelDropArguments extends DragEndEvent { } declare type CancelDrop = (args: CancelDropArguments) => boolean | Promise; declare const DndContext: React__default.NamedExoticComponent; interface ResizeObserverConfig { /** Whether the ResizeObserver should be disabled entirely */ disabled?: boolean; /** Resize events may affect the layout and position of other droppable containers. * Specify an array of `UniqueIdentifier` of droppable containers that should also be re-measured * when this droppable container resizes. Specifying an empty array re-measures all droppable containers. */ updateMeasurementsFor?: UniqueIdentifier[]; /** Represents the debounce timeout between when resize events are observed and when elements are re-measured */ timeout?: number; } interface UseDroppableArguments { id: UniqueIdentifier; disabled?: boolean; data?: Data; resizeObserverConfig?: ResizeObserverConfig; } declare function useDroppable({ data, disabled, id, resizeObserverConfig, }: UseDroppableArguments): { active: Active | null; rect: React$1.MutableRefObject; isOver: boolean; node: React$1.MutableRefObject; over: Over | null; setNodeRef: (element: HTMLElement | null) => void; }; export { DndContext, KeyboardSensor, PointerSensor, closestCenter, useDroppable, useSensor, useSensors }; export type { DragEndEvent };