import Vue from 'vue'; export interface ISlTreeNodeModel { title: string; isLeaf?: boolean; children?: ISlTreeNodeModel[]; isExpanded?: boolean; isSelected?: boolean; isDraggable?: boolean; isSelectable?: boolean; data?: TDataType; } export interface ISlTreeNode extends ISlTreeNodeModel { isVisible?: boolean; isFirstChild: boolean; isLastChild: boolean; ind: number; level: number; path: number[]; pathStr: string; children: ISlTreeNode[]; } export interface ICursorPosition { node: ISlTreeNode; placement: 'before' | 'inside' | 'after'; } export interface IVueData { rootCursorPosition: ICursorPosition; rootDraggingNode: ISlTreeNode; } export default class SlVueTree extends Vue { value: ISlTreeNodeModel[]; edgeSize: number; allowMultiselect: boolean; showBranches: boolean; level: number; parentInd: number; allowToggleBranch: boolean; private rootCursorPosition; private rootDraggingNode; cursorPosition: ICursorPosition; draggingNode: ISlTreeNode; readonly nodes: ISlTreeNode[]; getNode(path: number[]): ISlTreeNode; getFirstNode(): ISlTreeNode; getLastNode(): ISlTreeNode; getNextNode(path: number[], filter?: (node: ISlTreeNode) => boolean): ISlTreeNode; getPrevNode(path: number[], filter?: (node: ISlTreeNode) => boolean): ISlTreeNode; updateNode(path: number[], patch: Partial>): void; getSelected(): ISlTreeNode[]; traverse(cb: (node: ISlTreeNode, nodeModel: ISlTreeNodeModel, siblings: ISlTreeNodeModel[]) => boolean | void, nodeModels?: ISlTreeNodeModel[], parentPath?: number[]): ISlTreeNode[] | boolean; getNodeEl(path: number[]): HTMLElement; select(path: number[], addToSelection?: boolean): ISlTreeNode; remove(paths: number[][]): void; insert(cursorPosition: ICursorPosition, nodeModel:ISlTreeNodeModel): void; }