{"version":3,"sources":["../src/tree/removeTreeNodes.ts"],"names":["removeTreeNodes","treeObj","matcher","options","opts","DefaultTreeOptions","childrenKey","idKey","forEachTree","node","level","parent","path","index","isMatched","children","item","key","ABORT"],"mappings":";;;;AAsBO,SAASA,CAAAA,CAAsDC,GAAsBC,CAAAA,CAAAA,CAAmCC,CAAqC,CAAA,CAChK,IAAMC,CAAAA,CAAM,MAAO,CAAA,MAAA,CAAO,CAAC,aAAA,CAAc,KAAK,CAAA,CAAGC,CAAoBF,CAAAA,CAAAA,EAAW,EAAE,CAC5E,CAAA,CAAC,WAAAG,CAAAA,CAAAA,CAAY,UAAY,CAAA,KAAA,CAAAC,CAAM,CAAA,IAAI,CAAIH,CAAAA,CAAAA,CAC7CI,GAAkBP,CAAAA,GAAAA,CAAQ,CAAC,CAAC,IAAA,CAAAQ,CAAK,CAAA,KAAA,CAAAC,CAAM,CAAA,MAAA,CAAAC,CAAO,CAAA,IAAA,CAAAC,CAAK,CAAA,KAAA,CAAAC,CAAK,CAAA,GAAI,CACxD,IAAMC,CAAYZ,CAAAA,CAAAA,CAAQ,CAAC,IAAA,CAAAO,CAAK,CAAA,KAAA,CAAAC,CAAM,CAAA,MAAA,CAAAC,CAAO,CAAA,IAAA,CAAAC,CAAK,CAAA,KAAA,CAAAC,CAAK,CAAC,CACxD,CAAA,GAAGC,EAAU,CACT,GAAGH,CACC,CAAA,CAAA,GAAG,KAAM,CAAA,OAAA,CAAQA,CAAOL,CAAAA,CAAW,CAAC,CAAA,CAAE,CAClC,IAAMS,CAAWJ,CAAAA,CAAAA,CAAOL,CAAW,CAAA,CAC/BO,CAAQE,CAAAA,CAAAA,CAAS,SAAWC,CAAAA,CAAAA,EAAaP,CAAKF,CAAAA,CAAK,CAAGS,EAAAA,CAAAA,CAAKT,CAAK,CAAC,CAClEM,CAAAA,CAAAA,CAAM,EAAIE,EAAAA,CAAAA,CAAS,MAAOF,CAAAA,CAAAA,CAAM,CAAC,EACxC,CAEA,CAAA,KAAA,MAAA,CAAO,IAAKJ,CAAAA,CAAI,CAAE,CAAA,OAAA,CAAQQ,CAAK,EAAA,CAC3B,OAAOR,CAAAA,CAAKQ,CAAG,EACnB,CAAC,CAAA,CAEL,GAAGb,CAAAA,CAAK,aAAe,CAAA,OAAOc,GAClC,CAAA,KAAA,GAASJ,CAAaI,EAAAA,GAAAA,CAClB,OAAOA,GAEf,CAAEd,CAAAA,CAAI,EACV","file":"chunk-JR45AWLY.mjs","sourcesContent":["/**\n * \n * 移除满足条件的节点\n * \n * \n * removeTreeNodes({\n *    id:1,\n *    children\n * \n * })\n * \n */\n\nimport type { TreeNodeBase, TreeNode,TreeNodeOptions } from \"./types\";\nimport { DefaultTreeOptions } from \"./consts\";\nimport { forEachTree, IForEachTreeCallback } from \"./forEachTree\";\nimport { ABORT } from \"../object\";\n\nexport interface RemoveTreeNodesOptions extends TreeNodeOptions {\n    onlyRemoveOne?: boolean;                    // 只删除一个\n}\n\nexport function removeTreeNodes<Node extends TreeNodeBase = TreeNode>(treeObj:Node | Node[],matcher:IForEachTreeCallback<Node>,options?:RemoveTreeNodesOptions):void{\n    const opts= Object.assign({onlyRemoveOne:false}, DefaultTreeOptions ,options || {}) as Required<RemoveTreeNodesOptions>   \n    const {childrenKey='children', idKey='id'} = opts\n    forEachTree<Node>(treeObj,({node,level,parent,path,index})=>{\n        const isMatched = matcher({node,level,parent,path,index})\n        if(isMatched){\n            if(parent){\n                if(Array.isArray(parent[childrenKey])){\n                    const children = parent[childrenKey]\n                    let index = children.findIndex((item: Node)=>node[idKey]==item[idKey])\n                    if(index>-1) children.splice(index,1)\n                }\n            }else{ // 如果parent==null则需要删除清空对象\n                Object.keys(node).forEach(key=>{\n                    delete node[key]\n                })\n            }\n            if(opts.onlyRemoveOne) return ABORT\n        }else if(isMatched == ABORT){\n            return ABORT\n        }\n    },opts) \n}\n "]}