UNPKG

@igo2/utils

Version:
55 lines (54 loc) 1.57 kB
interface ITreeConfig<T> { getChildren: (dataNode: T) => T[] | undefined | null; getId: (dataNode: T) => string; getLevel: (dataNode: T) => number; reverse?: boolean; } export declare const TREE_SEPERATOR = "."; export declare class Tree<T> { private config; private _data; getChildren: (dataNode: T) => T[] | undefined | null; getId: (dataNode: T) => string; getLevel: (dataNode: T) => number; constructor(initialData: T[], config: ITreeConfig<T>); get data(): readonly T[]; get flattened(): readonly T[]; add(...nodes: T[]): T[]; addBefore(beforeId: string | undefined, ...nodes: T[]): void; remove(...nodes: T[]): T[]; clear(): void; exist(node: T): boolean; /** * Move a node to a different position * @param node * @param beforeTo The position of index into the tree. If -1 move at the end */ moveTo(beforeTo: number[], ...nodes: T[]): T[]; getPosition(node: T): number[]; private _addBefore; private _remove; /** * Move an node before an id * @param node Node to be move * @param recipient * @param beforeId */ private move; private _getPosition; private getAncestorAtPosition; /** Recursive */ private sortDeep; private sort; /** Recursive */ private _getNodeById; getNodeByPosition(indexes: number[]): T; private _getByIndex; private getNodeAncestor; /** Recursive */ private getAncestorById; /** Recursive */ private flatten; private getIndex; } export {};