import _ from "lodash"; export const pathsToTree = (paths: string[]) => { let __result = []; let level = { __result, __prefix: "" }; paths.forEach((path) => { path.split("/").reduce((r, label, i, a) => { if (!r[label]) { const __prefix = `${r.__prefix ? r.__prefix + "/" : ""}${label}`; r[label] = { __result: [], __prefix }; r.__result.push({ key: __prefix, label, isDir: a.length !== i + 1, children: r[label].__result, }); } return r[label]; }, level); }); return __result; }; type TreeNodeLike = { children?: TreeNodeLike[]; }; export const getTreeLeafs = ( treeNode: T ): T[] => { if (treeNode.children?.length) { return _.flatMap(treeNode.children as T[], getTreeLeafs); } return [treeNode]; };