export interface TreeNode { label: string; children?: TreeNode[]; expanded?: boolean; parent?: TreeNode; data: any; } export declare class FindResult { data: T; node: TreeNode; constructor(data: T, node: TreeNode); } export interface TreeFindResult { } export declare class TreeNodeNavigated extends Event { node: TreeNode; static NAME: string; constructor(node: TreeNode, eventInit?: EventInit); } export declare class TreeView extends HTMLElement { private root; private elementToNode; private nodeToElement; private nodes; constructor(); connectedCallback(): void; selected?: TreeNode; render(nodes: TreeNode[]): void; add(node: TreeNode): void; addToParent(node: TreeNode, parent: TreeNode, addAlphabetically?: boolean): void; /** * Finds nodes in the tree that match the provided filter * * @param filter - Function to test each node's data * @param parent - Optional parent node to limit search scope * @returns Array of FindResult objects containing matches * * @example * // Find all nodes with data type User and name "John" * treeView.find(data => data.type === 'User' && data.name === 'John'); * * @example * // Find nodes under a specific parent * treeView.find(data => data.isActive, parentNode); */ find(filter: (data: T) => boolean, parent?: TreeNode): FindResult[]; /** * Selects a node in the tree and ensures all parent nodes are expanded * * @param node - The node to select * @returns True if node was successfully selected, false otherwise * * @example * // Select a node obtained from a find operation * const results = treeView.find(data => data.id === 42); * if (results.length > 0) { * treeView.select(results[0].node); * } */ select(node: TreeNode): boolean; private findInSubtree; private expandPathToNode; private renderTreeImp; private addNode; private selectNode; private implementsInterface; }