import { TreeNodeData } from './type'; /** * 查找节点在树中的详细位置信息 * 返回节点的父节点、同级节点列表、索引和路径 * * @param treeData 树数据 * @param nodeId 要查找的节点ID * @returns 位置信息对象,包含 parent, siblings, index, path;未找到返回 null * * @example * ```ts * const position = findNodePosition(treeData, 'node-123'); * if (position) { * console.log('父节点:', position.parent); * console.log('在同级中的索引:', position.index); * } * ``` */ export declare function findNodePosition>(treeData: TreeNodeData[], nodeId: string | number): { parent: TreeNodeData | null; siblings: TreeNodeData[]; index: number; path: (string | number)[]; } | null; /** * 从树中移除节点 * @param treeData 树数据 * @param nodeId 要移除的节点 ID * @param childrenKey 子节点的字段名,默认 'children' * @returns 包含更新后的树数据和被移除的节点 */ export declare function removeNode>(treeData: TreeNodeData[], nodeId: string | number, childrenKey?: string): { updatedTree: TreeNodeData[]; removedNode: TreeNodeData | null; }; /** * 在指定位置插入节点 * 可以插入到根层级或指定父节点下的某个位置 * * @param treeData 树数据 * @param node 要插入的节点 * @param targetParentId 目标父节点ID,null 表示插入到根层级 * @param insertIndex 插入位置索引 * @returns 更新后的树数据 * * @example * ```ts * // 插入到根层级的第1个位置 * const newTree = insertNodeAtPosition(treeData, newNode, null, 0); * * // 插入到指定父节点下的第2个位置 * const newTree = insertNodeAtPosition(treeData, newNode, 'parent-1', 1); * ``` */ export declare function insertNodeAtPosition>(treeData: TreeNodeData[], node: TreeNodeData, targetParentId: string | number | null, insertIndex: number): TreeNodeData[]; /** * 在同级数组中重新排序节点 * 用于根层级或同一父节点下的节点重排 * * @param treeData 原始树数据 * @param oldIndex 原索引 * @param newIndex 新索引 * @returns 更新后的树数据 * * @example * ```ts * // 将索引0的节点移动到索引2 * const newTreeData = reorderSiblingNodes(treeData, 0, 2); * ``` */ export declare function reorderSiblingNodes>(treeData: TreeNodeData[], oldIndex: number, newIndex: number): TreeNodeData[]; /** * 在指定路径的节点中重新排序子节点 * @param treeData 原始树数据 * @param nodePath 节点路径(节点 ID 数组) * @param oldIndex 原索引 * @param newIndex 新索引 * @param childrenKey 子节点的字段名,默认 'children' * @returns 更新后的树数据 * * @example * ```ts * // 在 ID 为 'project-1' 的节点的子节点中,将索引 0 的节点移动到索引 2 * const newTreeData = reorderNodeChildren(treeData, ['project-1'], 0, 2); * ``` */ export declare function reorderNodeChildren>(treeData: TreeNodeData[], nodePath: (string | number)[], oldIndex: number, newIndex: number, childrenKey?: string): TreeNodeData[]; /** * 根据路径查找节点 * @param treeData 树数据 * @param nodePath 节点路径(节点 ID 数组) * @param childrenKey 子节点的字段名,默认 'children' * @returns 找到的节点,未找到返回 null */ export declare function findNodeByPath>(treeData: TreeNodeData[], nodePath: (string | number)[], childrenKey?: string): TreeNodeData | null; /** * 根据节点 ID 查找节点 * @param treeData 树数据 * @param nodeId 节点 ID * @param childrenKey 子节点的字段名,默认 'children' * @returns 找到的节点和其路径,未找到返回 null */ export declare function findNodeById>(treeData: TreeNodeData[], nodeId: string | number, childrenKey?: string): { node: TreeNodeData; path: (string | number)[]; } | null; /** * 将节点插入为指定节点的子节点 * @param treeData 树数据 * @param parentId 父节点 ID * @param node 要插入的节点 * @param childrenKey 子节点的字段名,默认 'children' * @returns 更新后的树数据 */ export declare function insertAsChild>(treeData: TreeNodeData[], parentId: string | number, node: TreeNodeData, childrenKey?: string): TreeNodeData[]; /** * 将节点插入为指定节点的同级节点 * @param treeData 树数据 * @param siblingId 同级节点 ID * @param node 要插入的节点 * @param position 插入位置:'before' 或 'after' * @param childrenKey 子节点的字段名,默认 'children' * @returns 更新后的树数据 */ export declare function insertAsSibling>(treeData: TreeNodeData[], siblingId: string | number, node: TreeNodeData, position: 'before' | 'after', childrenKey?: string): TreeNodeData[];