{"version":3,"sources":["../src/tree/getAncestors.ts"],"names":["getAncestors","treeObj","nodeId","options","idKey","includeSelf","DefaultTreeOptions","nodes","searchTree","node","path"],"mappings":";;;;AAmBO,SAASA,CAA+EC,CAAAA,CAAAA,CAAsBC,CAAoBC,CAAAA,CAAAA,CAAqC,CAC1K,GAAM,CAAC,KAAA,CAAAC,CAAM,CAAA,WAAA,CAAAC,CAAY,CAAA,KAAK,EAAI,MAAO,CAAA,MAAA,CAAO,EAAC,CAAGC,GAAoBH,CAAAA,CAAAA,EAAW,EAAE,CACjFI,CAAAA,CAAAA,CAAc,EAAC,CACnB,OAAAC,GAAAA,CAA6BP,CACzB,CAAA,CAAC,CAAC,IAAAQ,CAAAA,CAAI,CAAIA,GAAAA,CAAAA,CAAKL,CAAK,CAAA,EAAGF,CACvB,CAAA,CAAC,CAAC,IAAA,CAAAO,CAAK,CAAA,IAAA,CAAAC,CAAI,CAAA,IACPH,CAAMG,CAAAA,CAAAA,CACCD,GACT,CACE,GAAGN,CACH,CAAA,IAAA,CAAMM,CAAYA,EAAAA,CAAAA,CAClB,QAAS,CAAA,IACjB,CAAC,CAEE,CAAA,CAACJ,CAAeE,EAAAA,CAAAA,CAAM,MAAO,CAAA,CAAA,EAC5BA,CAAM,CAAA,GAAA,GAGFA,CACZ","file":"chunk-WGVLOGLE.mjs","sourcesContent":["/**\n * \n * 获取所有祖先节点\n * \n * getAncestors(tree,node.id) == [<祖先节点>,...,<祖先节点>,<爷节点>,<父节点>]\n * \n * \n */\n\nimport type { TreeNode, TreeNodeBase, TreeNodeOptions } from \"./types\";\nimport { forEachTreeByDfs } from './forEachTreeByDfs';\nimport { DefaultTreeOptions } from \"./consts\";\nimport { ABORT } from \"../consts\";\nimport { searchTree } from \"./searchTree\";\n\nexport interface GetAncestorsOptions extends TreeNodeOptions{\n    includeSelf?:boolean            //  返回结果是否包含自身节点\n}\n\nexport function getAncestors<Node extends TreeNodeBase = TreeNode,IdKey extends string = 'id'>(treeObj:Node | Node[],nodeId: Node[IdKey],options?:GetAncestorsOptions):Node[] {\n    const {idKey,includeSelf=false} = Object.assign({}, DefaultTreeOptions ,options || {}) as Required<GetAncestorsOptions>     \n    let nodes:Node[] =[]\n    searchTree<Node,Node[],Node>(treeObj,\n        ({node})=>node[idKey]==nodeId,\n        ({node,path})=>{\n            nodes=path\n            return node\n        },{\n            ...options,\n            path:(node:Node)=>node,\n            matchOne:true\n    })\n\n    if(!includeSelf && nodes.length>0){\n        nodes.pop()\n    }\n\n    return  nodes\n}\n"]}