import type { ComputedRef } from 'vue'; import type { GetRowKey } from '../interface'; export interface RowDragEvent { /** The original drag event */ originalEvent: DragEvent; /** The index of the dragged row in the current data */ dragIndex: number; /** The index of the drop target row in the current data */ dropIndex: number; /** The reordered data array after the drag */ data: RecordType[]; } export interface RowDragConfig { /** Whether row dragging is enabled */ enabled: boolean; /** * A function to determine whether a specific row can be dragged. * If not provided, all rows are draggable. */ canDrag?: (record: any, index: number) => boolean; /** * Custom drag handle column key — if provided, only the handle element triggers dragging. * If not provided, the entire row is draggable. */ handleColumnKey?: string; } export default function useRowDrag(rowDrag: ComputedRef, data: ComputedRef, _getRowKey: ComputedRef>, prefixCls: ComputedRef, emit: (event: string, ...args: any[]) => void): { buildDragCustomRow: (userCustomRow?: (record: any, index: number) => Record) => (record: any, index: number) => Record; rowDragging: import("vue").Ref; draggingIndex: import("vue").Ref; droppedIndex: import("vue").Ref; };