import { AriaButtonProps } from '../button/useButton'; import { DraggableCollectionState } from 'react-stately/useDraggableCollectionState'; import { HTMLAttributes } from 'react'; import { Key } from '@react-types/shared'; export interface DraggableItemProps { /** The key of the draggable item within the collection. */ key: Key; /** * Whether the item has an explicit focusable drag affordance to initiate accessible drag and drop mode. * If true, the dragProps will omit these event handlers, and they will be applied to dragButtonProps instead. */ hasDragButton?: boolean; /** * Whether the item has a primary action (e.g. Enter key or long press) that would * conflict with initiating accessible drag and drop. If true, the Alt key must be held to * start dragging with a keyboard, and long press is disabled until selection mode is entered. * This should be passed from the associated collection item hook (e.g. useOption, useGridListItem, etc.). */ hasAction?: boolean; } export interface DraggableItemResult { /** Props for the draggable item. */ dragProps: HTMLAttributes; /** Props for the explicit drag button affordance, if any. */ dragButtonProps: AriaButtonProps; } /** * Handles drag interactions for an item within a draggable collection. */ export declare function useDraggableItem(props: DraggableItemProps, state: DraggableCollectionState): DraggableItemResult;