UNPKG

@furystack/shades-common-components

Version:

Common UI components for FuryStack Shades

61 lines 1.99 kB
import { ObservableValue } from '@furystack/utils'; import type { ListServiceOptions } from './list-service.js'; import { ListService } from './list-service.js'; export type TreeServiceOptions<T> = ListServiceOptions<T> & { /** * Returns the children of a given node * @param item The parent node * @returns The child nodes, or an empty array if the node has no children */ getChildren: (item: T) => T[]; }; export type FlattenedTreeNode<T> = { item: T; level: number; hasChildren: boolean; isExpanded: boolean; }; /** * Service for managing tree state including expand/collapse, hierarchy navigation, * and flattening the tree into a visible items list for rendering */ export declare class TreeService<T> extends ListService<T> { private treeOptions; expandedNodes: ObservableValue<Set<T>>; rootItems: ObservableValue<T[]>; flattenedNodes: ObservableValue<FlattenedTreeNode<T>[]>; [Symbol.dispose](): void; /** * Checks whether a node is currently expanded */ isExpanded: (item: T) => boolean; /** * Expands a node, making its children visible */ expand: (item: T) => void; /** * Collapses a node, hiding its children */ collapse: (item: T) => void; /** * Toggles the expanded state of a node */ toggleExpanded: (item: T) => void; /** * Finds the parent of a given item in the tree */ getParent(item: T): T | undefined; /** * Flattens the tree based on which nodes are expanded, and syncs the result * to both flattenedNodes and the inherited ListService items */ updateFlattenedNodes(): void; /** * Gets the FlattenedTreeNode for a given item */ getNodeInfo(item: T): FlattenedTreeNode<T> | undefined; handleKeyDown(ev: KeyboardEvent): void; handleItemDoubleClick(item: T): void; constructor(treeOptions: TreeServiceOptions<T>); } //# sourceMappingURL=tree-service.d.ts.map