@push.rocks/lik
Version:
Provides a collection of lightweight helpers and utilities for Node.js projects.
49 lines (48 loc) • 1.83 kB
TypeScript
export declare class Tree<T> {
symbolTree: any;
constructor();
/**
*
* @param objectArg
*/
initialize(objectArg: T): T;
hasChildren(objectArg: T): boolean;
firstChild(objectArg: T): T;
lastChild(objectArg: T): T;
previousSibling(objectArg: T): T;
nextSibling(objectArg: T): T;
parent(objectArg: T): T;
lastInclusiveDescendant(objectArg: T): T;
preceding(objectArg: T, optionsArg?: any): T;
following(object: T, optionsArg: any): any;
childrenToArray(parentArg: T, optionsArg: any): T[];
ancestorsToArray(objectArg: T, optionsArg: any): T[];
treeToArray(rootArg: T, optionsArg: any): T[];
childrenIterator(parentArg: T, optionsArg: any): T;
previousSiblingsIterator(objectArg: T): T;
nextSiblingsIterator(objectArg: T): any;
ancestorsIterator(objectArg: T): Iterable<T>;
treeIterator(rootArg: T, optionsArg?: any): Iterable<T>;
index(childArg: T): number;
childrenCount(parentArg: T): number;
compareTreePosition(leftArg: T, rightArg: T): number;
remove(removeObjectArg: T): T;
insertBefore(referenceObjectArg: T, newObjectArg: T): T;
insertAfter(referenceObject: T, newObjectArg: T): any;
prependChild(referenceObjectArg: T, newObjectArg: T): T;
appendChild(referenceObjectArg: T, newObjectArg: T): any;
/**
* returns a branch of the tree as a recursive JSON structure
*/
toJsonWithHierachy(rootElement: T): ITreeNode<T>;
/**
* builds a tree from a recursive JSON structure
* @param jsonRoot the root node in ITreeNode format
* @param reviver optional function to reconstruct T from serialized data
*/
fromJsonWithHierachy(jsonRoot: ITreeNode<T>, reviver?: (data: any) => T): T;
}
export interface ITreeNode<T> {
data: T;
children: ITreeNode<T>[];
}