com-tools
Version:
com-tools 提供了一些通用的工具函数;
62 lines • 2.03 kB
TypeScript
/**
* 分组树
*/
export type GroupTree<Member, Group extends PropertyKey = string> = {
members?: Member[];
} & {
[C in Group]?: GroupTree<Member, Group>;
};
/**
* 获取分组路径
*/
export type GetGroupPath<Member, Group extends PropertyKey = string> = (member: Member, index: number, array: Member[]) => Group[];
/**
* 根据 getGroupPath 提示的多层级分组信息,将 members 整理成 树状的分组层级结构
* @param members
* @param getGroupPath
* @returns
*/
export declare function groupTreeBy<Member, Group extends PropertyKey = string>(members: Member[], getGroupPath: GetGroupPath<Member, Group>): GroupTree<Member, Group>;
/**
* 获取组树某个节点的子组名字
* @param node
* @returns
*/
export declare function getSubGroupNames<Group extends PropertyKey = string>(node: GroupTree<any, Group>): Group[];
/**
* 获取某个节点的所有直接子组节点
* @param node
* @returns
*/
export declare function getSubGroupNodes<Member, Group extends PropertyKey = string>(node: GroupTree<Member, Group>): GroupTree<Member, Group>[];
/**
* 获取某个节点的所有直接子组名字 和 对应的节点
* @param node
* @returns
*/
export declare function getSubGroupEntries<Member, Group extends PropertyKey = string>(node: GroupTree<any, Group>): [Group, GroupTree<Member, Group>][];
/**
* 判断 目标是否不是 GroupTree
* @param target
* @returns
*/
export declare function isGroupTree(target?: any): any;
/**
* 判断组节点是否包含子组
* @param node
* @returns
*/
export declare function hasSubGroups(node: GroupTree<any, any>): boolean;
/**
* 扁平化组树
* @remarks
* @param tree
* @returns 返回启平后的 所有成员 和 所有节点
* + members - 包含树中所有节点的成员
* + nodes - 树的所有节点
*/
export declare function flatGroupTree<Member>(tree: GroupTree<Member, PropertyKey>): {
members: Member[];
nodes: GroupTree<Member, PropertyKey>[];
};
//# sourceMappingURL=group-tree.d.ts.map