import * as react_jsx_runtime from 'react/jsx-runtime'; import { PropsWithChildren, RefObject, MutableRefObject, ReactNode } from 'react'; import { Data, DragDropEventHandlers, DragDropManager as DragDropManager$1 } from '@dnd-kit/abstract'; import { Draggable, Droppable, DragDropManager, DragDropManagerInput, DraggableInput, DropAnimation, DroppableInput } from '@dnd-kit/dom'; export { BeforeDragStartEvent, CollisionEvent, DragDropManager, DragEndEvent, DragMoveEvent, DragOverEvent, DragStartEvent, KeyboardSensor, PointerSensor } from '@dnd-kit/dom'; import { CleanupFunction } from '@dnd-kit/state'; type Events$1 = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager> = DragDropEventHandlers; interface Props$1 = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager> extends DragDropManagerInput, PropsWithChildren { manager?: W; onBeforeDragStart?: Events$1['beforedragstart']; onCollision?: Events$1['collision']; onDragStart?: Events$1['dragstart']; onDragMove?: Events$1['dragmove']; onDragOver?: Events$1['dragover']; onDragEnd?: Events$1['dragend']; } declare function DragDropProvider = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager>({ children, onCollision, onBeforeDragStart, onDragStart, onDragMove, onDragOver, onDragEnd, ...input }: Props$1): react_jsx_runtime.JSX.Element; type Ref = RefObject | MutableRefObject; type RefOrValue = T | Ref | null | undefined; interface UseDraggableInput extends Omit, 'handle' | 'element'> { handle?: RefOrValue; element?: RefOrValue; } declare function useDraggable(input: UseDraggableInput): { draggable: Draggable; readonly isDragging: boolean; readonly isDropping: boolean; readonly isDragSource: boolean; handleRef: (element: Element | null) => void; ref: (element: Element | null) => void; }; interface Props> { className?: string; children: ReactNode | ((source: U) => ReactNode); /** * Customize or disable the drop animation that plays when a drag operation ends. * * - `undefined` – use the default animation (250ms ease) * - `null` – disable the drop animation entirely * - `{duration, easing}` – customize the animation timing * - `(context) => Promise | void` – provide a fully custom animation function */ dropAnimation?: DropAnimation | null; style?: React.CSSProperties; tag?: string; disabled?: boolean | ((source: U | null) => boolean); } declare function DragOverlay>({ children, className, dropAnimation, style, tag, disabled, }: Props): react_jsx_runtime.JSX.Element; interface UseDroppableInput extends Omit, 'element'> { element?: RefOrValue; } declare function useDroppable(input: UseDroppableInput): { droppable: Droppable; readonly isDropTarget: boolean; ref: (element: Element | null) => void; }; declare function useDragDropManager = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager>(): W | null; type EventNameOverrides = { beforedragstart: 'onBeforeDragStart'; }; type EventHandlerName = T extends keyof EventNameOverrides ? EventNameOverrides[T] : T extends `drag${infer Second}${infer Rest}` ? `onDrag${Uppercase}${Rest}` : `on${Capitalize}`; /** * Type for all possible event handlers */ type Events, V extends Droppable, W extends DragDropManager> = DragDropEventHandlers; type EventHandlers = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager> = { [K in keyof Events as EventHandlerName]: Events[K]; }; /** * Hook to monitor drag and drop events anywhere within a DragDropProvider * @param handlers Object containing event handlers for drag and drop events */ declare function useDragDropMonitor = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager>(handlers: Partial>): void; declare function useDragOperation = Draggable, V extends Droppable = Droppable, W extends DragDropManager = DragDropManager>(): { readonly source: U | null | undefined; readonly target: V | null | undefined; }; interface Instance = DragDropManager$1> { manager: T | undefined; register(): CleanupFunction | void; } declare function useInstance(initializer: (manager: DragDropManager$1 | undefined) => T): T; export { type EventHandlers as DragDropEventHandlers, DragDropProvider, DragOverlay, type UseDraggableInput, type UseDroppableInput, useDragDropManager, useDragDropMonitor, useDragOperation, useDraggable, useDroppable, useInstance };