{"version":3,"sources":["../src/tree/searchTree.ts"],"names":["searchTree","treeData","matcher","picker","options","result","pickerFunc","node","opts","forEachTreeByDfs","level","parent","path","index","ABORT"],"mappings":";;;;AA0BO,SAASA,EAA0EC,CAAuBC,CAAAA,CAAAA,CAAwCC,EAAwCC,CAAqC,CAAA,CAClO,IAAIC,CAAmB,CAAA,EACjBC,CAAAA,CAAAA,CAAaH,IAAW,CAAC,CAAC,KAAAI,CAAI,CAAA,GAAIA,GAClCC,CAAO,CAAA,MAAA,CAAO,MAAO,CAAA,CAAC,SAAS,IAAI,CAAA,CAAEJ,GAAW,EAAE,EACxD,OAAAK,CAAAA,CAA4BR,EAAS,CAAC,CAAC,KAAAM,CAAK,CAAA,KAAA,CAAAG,EAAM,MAAAC,CAAAA,CAAAA,CAAO,KAAAC,CAAK,CAAA,KAAA,CAAAC,CAAK,CAAA,GAAI,CACpE,GAAGX,CAAAA,CAAQ,CAAC,IAAAK,CAAAA,CAAAA,CAAK,MAAAG,CAAM,CAAA,MAAA,CAAAC,EAAO,IAAAC,CAAAA,CAAAA,CAAK,MAAAC,CAAK,CAAC,EACrC,OAAAR,CAAAA,CAAO,KAAKC,CAAW,CAAA,CAAC,IAAAC,CAAAA,CAAAA,CAAK,MAAAG,CAAM,CAAA,MAAA,CAAAC,EAAO,IAAAC,CAAAA,CAAAA,CAAK,MAAAC,CAAK,CAAC,CAAC,CAC/CL,CAAAA,CAAAA,CAAK,UAAU,KAAQ,CAAA,MAAA,CAAYM,GAEjD,CAAEN,CAAAA,CAAI,EACCH,CACX","file":"chunk-YF5VFBWI.mjs","sourcesContent":["import { ABORT } from \"../object/forEachObject\"\nimport type { ForEachTreeOptions, IForEachTreeCallback  } from \"./forEachTree\"\nimport { TreeNode,TreeNodeBase,TreeNodeOptions } from \"./types\"\nimport { forEachTreeByDfs } from \"./forEachTreeByDfs\";\n\nexport interface SerachTreeOptions extends TreeNodeOptions,ForEachTreeOptions {\n    matchOne?:boolean               //   只匹配一个就退出搜索\n}\n\n/**\n *    遍历树的每一个节点，执行mather({node,level,parent,path,index})，如果\n *    返回true，则调用picker函数返回结果\n * \n *   \n *   matchOne:只匹配一个\n *   path: 完整路径，默认情况返回的所在节点以及其祖先节点的集合\n *   如果提供了pathKey参数，则fullpath返回的 所在节点以及其祖先节点的集合的名称数组\n *   如果没有提供pathKey参数，则fullpath返回的 所在节点以及其祖先节点的集合\n * \n  * \n  * @param treeData \n  * @param matcher \n  * @param picker\n  * @param matchOne 只匹配一个就退出,匹配所有,默认只匹配一个\n  * \n  */\nexport function searchTree<Node extends TreeNodeBase=TreeNode,Returns=Node[],Path=string>(treeData:Node[] | Node,matcher:IForEachTreeCallback<Node,Path>,picker?:IForEachTreeCallback<Node,Path>,options?:SerachTreeOptions):Returns[]{\n    let result:Returns[] = []\n    const pickerFunc = picker || (({node})=>node) as IForEachTreeCallback<Node,Path>\n    const opts = Object.assign({matchOne:true},options || {})   \n    forEachTreeByDfs<Node,Path>(treeData,({node,level,parent,path,index})=>{\n       if(matcher({node,level,parent,path,index})){\n           result.push(pickerFunc({node,level,parent,path,index}))\n           return opts.matchOne==false ? undefined : ABORT  \n       }\n    },opts)\n    return result as  Returns[]\n}\n\n "]}