{"version":3,"sources":["../src/tree/mapTree.ts"],"names":["mapTree","treeData","mapper","options","from","to","generatePath","buildPathGenerator","mapTreeNode","node","parent","level","parentPath","index","curPath","newNode","i","childNode","nodes"],"mappings":";;;;AA6BO,SAASA,EAAyFC,CAA+BC,CAAAA,CAAAA,CAAwCC,EAAoD,CAEhO,IAAMC,EAAO,MAAO,CAAA,MAAA,CAAO,CAAC,KAAM,CAAA,IAAA,CAAK,YAAY,UAAU,CAAA,CAAGD,GAAS,IAAQ,EAAA,EAAE,CAC7EE,CAAAA,CAAAA,CAAK,MAAO,CAAA,MAAA,CAAO,CAAC,KAAM,CAAA,IAAA,CAAK,YAAY,UAAU,CAAA,CAAGF,GAAS,EAAM,EAAA,EAAE,CACzEG,CAAAA,CAAAA,CAAeC,EAAmBJ,CAAS,EAAA,IAAA,CAAKC,EAAK,KAAK,CAAA,CAEhE,SAASI,CAAYC,CAAAA,CAAAA,CAAcC,CAAuBC,CAAAA,CAAAA,CAAaC,EAAiBC,CAAoB,CAAA,CACxG,IAAIC,CAAU,CAAA,CAAC,GAAGF,CAAYN,CAAAA,CAAAA,CAAaG,CAAI,CAAC,CAAA,CAC5CM,EAAU,MAAO,CAAA,MAAA,CAAO,EAAIb,CAAAA,CAAAA,CAAO,CAAE,IAAAO,CAAAA,CAAAA,CAAM,OAAAC,CAAQ,CAAA,KAAA,CAAAC,EAAM,IAAKG,CAAAA,CAAAA,CAAQ,MAAAD,CAAK,CAAC,CAAC,CACjF,CAAA,GAAGJ,EAAKL,CAAK,CAAA,WAAW,GAAM,KAAM,CAAA,OAAA,CAAQK,EAAKL,CAAK,CAAA,WAAW,CAAC,CAAKK,EAAAA,CAAAA,CAAKL,CAAK,CAAA,WAAW,EAAG,MAAO,CAAA,CAAA,CAAE,CACnGW,CAAgBV,CAAAA,CAAAA,CAAG,WAAW,CAAK,CAAA,GACpC,IAAQW,IAAAA,CAAAA,CAAE,EAAEA,CAAEP,CAAAA,CAAAA,CAAKL,EAAK,WAAW,CAAA,CAAE,OAAOY,CAAK,EAAA,CAAA,CAC7C,IAAMC,CAAAA,CAAYR,EAAKL,CAAK,CAAA,WAAW,EAAEY,CAAC,CAAA,CAC1CD,EAAQV,CAAG,CAAA,WAAW,EAAE,IAAKG,CAAAA,CAAAA,CAAYS,EAAWR,CAAKE,CAAAA,CAAAA,CAAM,EAAEG,CAAQE,CAAAA,CAAC,CAAC,EAC/E,CACJ,CACA,OAAOD,CACX,CACA,GAAG,MAAM,OAAQd,CAAAA,CAAQ,EAAE,CACvB,IAAIiB,EAAkB,EAAC,CACvB,QAAQF,CAAE,CAAA,CAAA,CAAEA,EAAEf,CAAS,CAAA,MAAA,CAAOe,IAC1BE,CAAM,CAAA,IAAA,CAAKV,EAAYP,CAASe,CAAAA,CAAC,EAAE,IAAK,CAAA,CAAA,CAAE,EAAGA,CAAAA,CAAC,CAAC,CAEnD,CAAA,OAAOE,CACX,CACI,KAAA,OAAOV,EAAYP,CAAS,CAAA,IAAA,CAAK,EAAE,EAAC,CAAE,EAAE,CAEhD","file":"chunk-W63KZAKL.mjs","sourcesContent":["import { DefaultTreeOptions } from \"./consts\"\nimport type { TreeNode, TreeNodeBase, TreeNodeOptions } from \"./types\"\nimport { buildPathGenerator } from \"./utils\";\n\nexport type ITreeNodeMapper<FromNode,ToNode> = ({node,parent,level,path,index}:{node:FromNode,parent:FromNode | null,level:number,path:any[],index:number})=>ToNode\n\n\nexport interface MapTreeOptions<Node>{    \n    path?:string | ((node:Node)=>any)\n    from?:{\n        idKey?:string\n        childrenKey?:string\n    }\n    to?:{\n        idKey?:string,childrenKey?:string\n    }\n} \n\n\n\n/**\n * 映射生成新的树\n * 每一个节点生成新的节点\n * \n * 注意生成的映射树不会更新原有的树结构\n * \n * @param treeData \n * @param mapper \n */\nexport function mapTree<FromNode extends TreeNodeBase = TreeNode,ToNode extends TreeNodeBase = FromNode>(treeData:FromNode[] | FromNode,mapper:ITreeNodeMapper<FromNode,ToNode>,options?:MapTreeOptions<FromNode>):ToNode[] | ToNode{\n    \n    const from = Object.assign({idKey:'id',childrenKey:\"children\"}, options?.from || {})\n    const to = Object.assign({idKey:'id',childrenKey:\"children\"}, options?.to || {})\n    const generatePath = buildPathGenerator(options?.path,from.idKey)\n\n    function mapTreeNode(node:FromNode,parent:FromNode | null,level:number,parentPath:any[],index:number):ToNode{\n        let curPath = [...parentPath, generatePath(node)] \n        let newNode = Object.assign({}, mapper({ node, parent, level,path:curPath,index})) as ToNode\n        if(node[from.childrenKey]  && Array.isArray(node[from.childrenKey]) && node[from.childrenKey] .length>0){\n            (newNode as any)[to.childrenKey]  = [] \n            for(let i=0;i<node[from.childrenKey].length;i++ ){\n                const childNode = node[from.childrenKey][i] as FromNode\n                newNode[to.childrenKey].push(mapTreeNode(childNode ,node,level+1,curPath,i))\n            }\n        }\n        return newNode  \n    }\n    if(Array.isArray(treeData)){\n        let nodes:ToNode[] =  []\n        for(let i=0;i<treeData.length;i++ ){\n            nodes.push(mapTreeNode(treeData[i],null,0,[],i))\n        }\n        return nodes\n    }else{\n        return mapTreeNode(treeData,null,0,[],-1)\n    }    \n}\n"]}