import { Observable } from 'rxjs'; import { SimTreeControl } from './tree-control'; import { SimTreeNodeOptions } from './tree-node.model'; import { SimTreeTransformer } from './tree-transformer'; export declare class SimTreeFlattener { /** 从嵌套节点映射到扁平节点。这有助于我们保持相同的对象进行选择 */ private nestedNodeMap; /** 从平面节点映射到嵌套节点。这有助于我们找到要修改的嵌套节点 */ private flatNodeMap; isExpandable: (node: T) => boolean; getChildren: (node: T) => Observable | T[] | undefined | null; getKey: (node: T) => string; getDisplay: (node: T) => string; getSelectable: (node: T) => boolean; getDisabled: (node: T) => boolean; getIsChecked: (node: T) => boolean; getIsSelected: (node: T) => boolean; getIsExpanded: (node: T) => boolean; getDisableCheckbox: (node: T) => boolean; constructor(transformer?: SimTreeTransformer); /** * 将节点类型T的列表扁平化为节点F的扁平化版本。 * 请注意,类型T可能是嵌套的,“structuredData”的长度可能与返回列表“F[]”的长度不同。 * @param structuredData 结构数据 * @returns 扁平数据 */ flattenNodes(structuredData: T[]): F[]; /** * 以当前展开状态展开扁平节点。返回的列表可能有不同的长度。 */ expandFlattenedNodes(nodes: F[], treeControl: SimTreeControl): F[]; /** 获取给定数据节点的深度,返回级别序号 */ private _getLevel; /** 获取给定数据节点的深度,返回级别序号 */ private _getExpandable; /** * 转换嵌套节点到平面节点。在映射中记录节点,以便以后使用。 * @param node 节点 * @param level 深度 */ private _transformer; /** * 摊平节点 */ private _flattenNode; /** * 摊平子节点 */ private _flattenChildren; }