import type { CSSProperties } from 'react'; import type { TdUploadProps, UploadFile, UploadChangeContext } from '../type'; interface UploadFileWithUid extends UploadFile { __uid?: string; } export interface UseDragReturn { /** 是否处于拖拽中 */ dragging: boolean; /** 被拖 item 在 sortedFiles 中的当前 index */ dragIndex: number; /** 拖拽排序用的本地文件数组 */ sortedFiles: UploadFile[]; /** 浮动 clone 是否可见 */ cloneVisible: boolean; /** 浮动 clone 的内联样式 */ cloneStyle: CSSProperties; /** clone 显示的文件内容 */ cloneFile: UploadFile | null; /** 获取 file 的唯一 key */ getDragKey: (file: UploadFileWithUid) => string; /** 同步 sortedFiles 与 displayFiles(非拖拽时调用) */ syncFiles: (files: UploadFile[]) => void; /** 触摸开始:启动长按定时器 */ onTouchstart: (e: React.TouchEvent, index: number) => void; /** 触摸移动:更新 clone 位置 + 碰撞检测 */ onTouchmove: (e: React.TouchEvent) => void; /** 触摸结束:归位动画 + 提交排序结果 */ onTouchend: (e: React.TouchEvent) => void; /** 触摸取消:清理状态 */ onTouchcancel: (e: React.TouchEvent) => void; /** 拖拽刚结束 300ms 内为 true,用于屏蔽误触预览 */ dragEnded: boolean; } export default function useDrag(props: TdUploadProps, uploadClass: string, setUploadValue: (value: UploadFile[], context: UploadChangeContext) => void): UseDragReturn; export {};