import type { ArtColumnMergePath } from "../interfaces"; import { BaseTableInstance } from "./instance"; /** * 1. 可进行拖拽排序 * 2. 拖拽放置其他区域 * 3. 可在一个方法中进行数据操作 */ export interface OnUpdatedOptions { /**拖拽开始区域实例*/ form: DragBodyInstance; /**放置区域实例*/ to?: DragBodyInstance; /**列表数据*/ columns?: T[]; /**拖拽项*/ formItem: DragItemInstance; /**放置项*/ toItem?: DragItemInstance; /**横向位置*/ horizontalPosition?: "left" | "right"; /**纵向位置*/ verticalPosition?: "top" | "bottom"; /**当前是横向还是纵向*/ direction?: "horizontal" | "vertical"; /**位置*/ position?: OnUpdatedOptions['horizontalPosition'] | OnUpdatedOptions['verticalPosition']; } /**最外层包裹实例*/ export declare class DragInstance { /**表格实例*/ tableInstance: BaseTableInstance; /**实例*/ listItemInstance: DragBodyInstance[]; /**拖拽对象*/ dragItem?: DragItemInstance; /**放置区域所在实例*/ toDragInstance?: DragBodyInstance; /**拖拽所在实例*/ formDragInstance?: DragBodyInstance; /**更新操作*/ onUpdated?: (parms: OnUpdatedOptions, instance: DragInstance) => void; /**注册实例*/ register: (item: DragBodyInstance) => () => void; /**过滤方法*/ filter: (value: T_1, index: number, array: T_1[], itemData: T_1) => boolean; /**清理操作数据*/ clear: () => void; /** * 开始数据 * 结束数据 * 位置:列表->分组 分组->列表 分组->分组 列表->列表 */ /** * 这个位置进行数据操作 * 1. 如果存在放置区域则进行数据操作及其更新 * 2. 如果不存在放置区域,则不进行数据执行 */ onDragEnd: () => void; } export interface ProviderProps { children?: React.ReactNode; value?: T; } export declare const useDragInstance: (instance?: DragInstance) => [DragInstance]; export declare const DragInstanceProvider: (props: ProviderProps>) => import("react").FunctionComponentElement>>; export declare const useDragInstanceProvider: () => DragInstance; export interface DragInstanceOptions { direction: "horizontal" | "vertical"; } export declare class DragBodyInstance { /**整个包裹节点(只有放置区域才有值)*/ dom: import("react").RefObject; dragInstance?: DragInstance; /**是否分组区域数据*/ isGroup?: boolean; list: DragItemInstance[]; /**拖拽对象*/ dragItem?: DragItemInstance; /**当前移入的对象*/ hoverItem?: DragItemInstance; /**横向位置*/ horizontalPosition?: "left" | "right"; /**纵向位置*/ verticalPosition?: "top" | "bottom"; /**当前是横向还是纵向*/ direction?: "horizontal" | "vertical"; /**是否离开当前放置区域*/ isLeave?: boolean; /**所属下标位置*/ hoverIndex?: number; /**数据*/ itemListData: T[]; /**更新数据*/ updatedItemListData?: (dataList: T[]) => void; constructor(options: DragInstanceOptions); /**存储子节点*/ register: (item: DragItemInstance) => () => void; /**开始拖拽*/ onDragStart: (item: DragItemInstance, event: React.DragEvent) => void; /**结束拖拽*/ onDragEnd: (item: DragItemInstance, event: React.DragEvent) => void; /**进入放置区*/ onDragEnter: React.DragEventHandler; /**离开放置区*/ onDragLeave: React.DragEventHandler; /**放置*/ onDrop: React.DragEventHandler; /**经过*/ onDragOver: (event: React.DragEvent) => void; private removeClassList; /**计算所在位置*/ calc: (x: number, y: number) => void; /**清理数据*/ clear: () => void; } export declare const useDragBodyInstance: (instance?: DragBodyInstance, options?: DragInstanceOptions) => [DragBodyInstance]; export declare const DragBodyInstanceProvider: (props: ProviderProps> & { options?: DragInstanceOptions; }) => import("react").FunctionComponentElement>>; export declare const useDragBodyInstanceProvider: () => DragBodyInstance; /**每个拖拽项的实例*/ export declare class DragItemInstance { /**外部整个包裹节点*/ parentDOM: import("react").RefObject; /**存储数据*/ itemData?: ArtColumnMergePath; /**排序*/ sort: number; /**是否分组区域数据*/ isGroup?: boolean; } export declare const useDragItemInstance: (instance?: DragItemInstance) => [DragItemInstance]; export declare const DragItemInstanceProvider: (props: ProviderProps) => import("react").FunctionComponentElement>; export declare const useDragItemInstanceProvider: () => DragItemInstance;