/// import { Disposable } from '@gedit/utils'; import { Rectangle } from '@gedit/math'; import { Tree, TreeNode } from './tree'; import { IDragEvent } from '@phosphor/dragdrop'; import { LabelProvider } from '@gedit/theme'; export declare const TREE_DROP_KEY = "data-tree-move-drop"; export declare enum TreeDropType { SIBLING = 0, CHILD = 1, NONE = 2 } export declare const TreeDragdropOpts: unique symbol; export interface TreeDragdropOpts { /** * 拖拽结束是否要触发点击, 默认true */ dragEndWithSelect?: boolean; canbeDrag?(clickNode: T, tree: TREE): boolean; canbeDrop?(dropNode: T, source: T[], tree: TREE, asChild: boolean): boolean; /** * 默认拖拽选中的节点, 不包含根节点 * @param currentNode * @param tree */ getDraggingNodes?(currentNode: T, tree: TREE): T[]; dropSuccess(source: T[], dropNode: T, tree: TREE, asChild: boolean): void; } export declare const TreeDragdropDefault: TreeDragdropOpts; export declare class TreeDragdrop implements Disposable { readonly tree: TREE; protected readonly labelProvider: LabelProvider; private droppingLine; private treeElement; private currentDropId; private handleContextmenu; private dropType; protected treeNodeElements: HTMLElement[]; protected dragId: number; protected opts: Required>; constructor(tree: TREE, opts: TreeDragdropOpts, labelProvider: LabelProvider); private _tryToExpandedNode; private _expandedTimeout; get isDropping(): boolean; private clearExpandedNode; tryToExpanded(dropNode: T, cb: () => void): boolean; dispose(): void; init(element: HTMLElement): void; getDropProps(dropTarget: HTMLElement, source: T[], event: IDragEvent): { node?: T; rect?: Rectangle; type: TreeDropType; }; handleEvent(event: IDragEvent): void; protected isParent(parent: T, id: string): boolean; startDrag(node: T, e: React.MouseEvent): Promise<{ dropId?: string; shouldTriggerClick: boolean; }>; protected findDropTarget(element: HTMLElement, e: MouseEvent): HTMLElement | 'root' | undefined; } //# sourceMappingURL=tree-dragdrop.d.ts.map