/** * @module viw-webgl-component */ import * as VIM from 'vim-webgl-viewer'; import { TreeItem } from 'react-complex-tree'; import { MapTree } from '../helpers/data'; import { AugmentedElement } from '../helpers/element'; /** * Custom visibility CSS classes to avoid clashes with tailwind */ export type NodeVisibility = 'vim-visible' | 'vim-undefined' | 'vim-hidden'; export type Grouping = 'Family' | 'Level' | 'Workset'; /** * Extension of TreeItem */ export type VimTreeNode = TreeItem & { title: string; parent: number; visible: NodeVisibility; }; /** * Returns map-based tree with elements organized hierarchically. * @param viewer current viewer. * @param elements elements to include in the treeview. * @returns */ export declare function toTreeData(vim: VIM.Vim, elements: AugmentedElement[], grouping: Grouping): BimTreeData; export declare class BimTreeData { nodes: Record; elementToNode: Map; constructor(map: MapTree); updateVisibility(vim: VIM.Vim): void; getRange(start: number, end: number): number[]; getNodeFromElement(element: number): number; getLeafs(node: number, result?: number[]): number[]; getSelection(elements: number[]): number[]; countPredicate(node: any, predicate: (c: number) => boolean): "all" | "none" | "some"; getChildren(node: number, includeSelf?: boolean, recursive?: boolean, result?: number[]): number[]; getParent(node: number): number; getSiblings(node: number): number[]; getAncestors(node: number): number[]; private flatten; }