UNPKG

@speckle/viewer

Version:

A 3d viewer for Speckle, based on threejs.

59 lines (58 loc) 2.23 kB
import TreeModel, { type Model } from 'tree-model'; import { NodeRenderView } from './NodeRenderView.js'; import { RenderTree } from './RenderTree.js'; export type TreeNode = TreeModel.Node<NodeData>; export type SearchPredicate = (node: TreeNode) => boolean; export interface NodeData { id: string; raw: { [prop: string]: any; }; children: TreeNode[]; atomic: boolean; nestedNodes?: TreeNode[]; subtreeId?: number; renderView?: NodeRenderView | null; instanced?: boolean; color?: number; } export declare class WorldTree { private renderTreeInstances; private nodeMaps; private readonly supressWarnings; static readonly ROOT_ID = "ROOT"; private subtreeId; constructor(); /** The root render tree will always be non-null because it will always contain the root */ getRenderTree(): RenderTree; getRenderTree(subtreeId: string): RenderTree | null; private tree; _root: TreeNode; get root(): TreeNode; private get nextSubtreeId(); get nodeCount(): number; isRoot(node: TreeNode): boolean; isSubtreeRoot(node: TreeNode): boolean; parse(model: Model<NodeData>): TreeNode; addSubtree(node: TreeNode): void; addNode(node: TreeNode, parent: TreeNode | null): void; removeNode(node: TreeNode, removeChildren: boolean): void; hasNodeId(id: string, subtreeId?: number): boolean; hasInstanceId(id: string, subtreeId?: number): boolean; hasId(id: string, subtreeId?: number): boolean; findAll(predicate: SearchPredicate, node?: TreeNode): Array<TreeNode>; findId(id: string, subtreeId?: number): TreeNode[] | null; /** TODO: Would rather not have this */ findSubtree(id: string): TreeNode | null; getAncestors(node: TreeNode): Array<TreeNode>; getInstances(subtreeId: string): { [id: string]: Record<string, TreeNode>; }; getDuplicates(subtreeId: string): { [id: string]: Record<string, TreeNode>; }; /** TO DO: We might want to add boolean as return type here too */ walk(predicate: SearchPredicate, node?: TreeNode): void; walkAsync(predicate: SearchPredicate, node?: TreeNode): Promise<boolean>; purge(subtreeId?: string): void; }