UNPKG

com-tools

Version:

com-tools 提供了一些通用的工具函数;

62 lines 2.03 kB
/** * 分组树 */ 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