{"version":3,"file":"utils.mjs","names":[],"sources":["../../../../../../packages/components/tree-select/src/utils.ts"],"sourcesContent":["import { isArray } from '@element-plus/utils'\n\nimport type { TreeNodeData } from '@element-plus/components/tree/src/tree.type'\n\nexport function isValidValue(val: any) {\n  return val || val === 0\n}\n\nexport function isValidArray(val: any) {\n  return isArray(val) && val.length\n}\n\nexport function toValidArray(val: any) {\n  return isArray(val) ? val : isValidValue(val) ? [val] : []\n}\n\ntype TreeCallback<T extends TreeNodeData, R> = (\n  data: T,\n  index: number,\n  array: T[],\n  parent?: T\n) => R\n\ntype TreeFindCallback<T extends TreeNodeData> = TreeCallback<T, boolean>\n\nexport function treeFind<T extends TreeNodeData>(\n  treeData: T[],\n  findCallback: TreeFindCallback<T>,\n  getChildren: (data: T) => T[]\n): T | undefined\nexport function treeFind<T extends TreeNodeData, R>(\n  treeData: T[],\n  findCallback: TreeFindCallback<T>,\n  getChildren: (data: T) => T[],\n  resultCallback?: TreeCallback<T, R>,\n  parent?: T\n): R | undefined\nexport function treeFind<T extends TreeNodeData, R>(\n  treeData: T[],\n  findCallback: TreeFindCallback<T>,\n  getChildren: (data: T) => T[],\n  resultCallback?: TreeCallback<T, R>,\n  parent?: T\n): T | R | undefined {\n  for (let i = 0; i < treeData.length; i++) {\n    const data = treeData[i]\n    if (findCallback(data, i, treeData, parent)) {\n      return resultCallback ? resultCallback(data, i, treeData, parent) : data\n    } else {\n      const children = getChildren(data)\n      if (isValidArray(children)) {\n        const find = treeFind(\n          children,\n          findCallback,\n          getChildren,\n          resultCallback,\n          data\n        )\n        if (find) return find\n      }\n    }\n  }\n}\n\nexport function treeEach<T extends TreeNodeData>(\n  treeData: T[],\n  callback: TreeCallback<T, void>,\n  getChildren: (data: T) => T[],\n  parent?: T\n) {\n  for (let i = 0; i < treeData.length; i++) {\n    const data = treeData[i]\n    callback(data, i, treeData, parent)\n\n    const children = getChildren(data)\n    if (isValidArray(children)) {\n      treeEach(children, callback, getChildren, data)\n    }\n  }\n}\n"],"mappings":";;;AAIA,SAAgB,aAAa,KAAU;AACrC,QAAO,OAAO,QAAQ;;AAGxB,SAAgB,aAAa,KAAU;AACrC,QAAO,QAAQ,IAAI,IAAI,IAAI;;AAG7B,SAAgB,aAAa,KAAU;AACrC,QAAO,QAAQ,IAAI,GAAG,MAAM,aAAa,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE;;AAwB5D,SAAgB,SACd,UACA,cACA,aACA,gBACA,QACmB;AACnB,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,OAAO,SAAS;AACtB,MAAI,aAAa,MAAM,GAAG,UAAU,OAAO,CACzC,QAAO,iBAAiB,eAAe,MAAM,GAAG,UAAU,OAAO,GAAG;OAC/D;GACL,MAAM,WAAW,YAAY,KAAK;AAClC,OAAI,aAAa,SAAS,EAAE;IAC1B,MAAM,OAAO,SACX,UACA,cACA,aACA,gBACA,KACD;AACD,QAAI,KAAM,QAAO;;;;;AAMzB,SAAgB,SACd,UACA,UACA,aACA,QACA;AACA,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,OAAO,SAAS;AACtB,WAAS,MAAM,GAAG,UAAU,OAAO;EAEnC,MAAM,WAAW,YAAY,KAAK;AAClC,MAAI,aAAa,SAAS,CACxB,UAAS,UAAU,UAAU,aAAa,KAAK"}