{"version":3,"file":"useTreeData.cjs","sources":["../../../../../../../packages/vue-components/vc-tree-select/src/hooks/useTreeData.ts"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { Ref, ShallowRef } from 'vue';\nimport type { SimpleModeConfig, TreeSelectDataNode } from '../interface';\nimport type { DefaultOptionType } from '../TreeSelect';\nimport { shallowRef, toRaw, watch } from 'vue';\nimport { convertChildrenToData } from '../utils/legacyUtil';\n\nfunction parseSimpleTreeData(\n  treeData: TreeSelectDataNode[],\n  { id, pId, rootPId }: SimpleModeConfig,\n): TreeSelectDataNode[] {\n  const keyNodes = {};\n  const rootNodeList = [];\n\n  // Fill in the map\n  const nodeList = treeData.map((node) => {\n    const clone = { ...node };\n    const key = clone[id];\n    keyNodes[key] = clone;\n    clone.key = clone.key || key;\n    return clone;\n  });\n\n  // Connect tree\n  nodeList.forEach((node) => {\n    const parentKey = node[pId];\n    const parent = keyNodes[parentKey];\n\n    // Fill parent\n    if (parent) {\n      parent.children = parent.children || [];\n      parent.children.push(node);\n    }\n\n    // Fill root tree node\n    if (parentKey === rootPId || (!parent && rootPId === null))\n      rootNodeList.push(node);\n  });\n\n  return rootNodeList;\n}\n\n/**\n * Convert `treeData` or `children` into formatted `treeData`.\n * Will not re-calculate if `treeData` or `children` not change.\n */\nexport default function useTreeData(\n  treeData: Ref<TreeSelectDataNode[]>,\n  children: Ref<VueNode[]>,\n  simpleMode: Ref<boolean | SimpleModeConfig>,\n): ShallowRef<DefaultOptionType[]> {\n  const mergedTreeData = shallowRef<DefaultOptionType[]>();\n  watch(\n    [simpleMode, treeData, children],\n    () => {\n      const simpleModeValue = simpleMode.value;\n      if (treeData.value) {\n        mergedTreeData.value = simpleMode.value\n          ? parseSimpleTreeData(toRaw(treeData.value), {\n              id: 'id',\n              pId: 'pId',\n              rootPId: null,\n              ...(simpleModeValue !== true ? simpleModeValue : {}),\n            })\n          : toRaw(treeData.value).slice();\n      } else {\n        mergedTreeData.value = convertChildrenToData(toRaw(children.value));\n      }\n    },\n    { immediate: true, deep: true },\n  );\n  return mergedTreeData;\n}\n"],"names":["shallowRef","watch","toRaw","convertChildrenToData"],"mappings":";;;;;;;AAOA,SAAS,oBACP,QACA,EAAA,EAAE,EAAI,EAAA,GAAA,EAAK,SACW,EAAA;AACtB,EAAA,MAAM,WAAW,EAAC,CAAA;AAClB,EAAA,MAAM,eAAe,EAAC,CAAA;AAGtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,IAAS,KAAA;AACtC,IAAM,MAAA,KAAA,GAAQ,EAAE,GAAG,IAAK,EAAA,CAAA;AACxB,IAAM,MAAA,GAAA,GAAM,MAAM,EAAE,CAAA,CAAA;AACpB,IAAA,QAAA,CAAS,GAAG,CAAI,GAAA,KAAA,CAAA;AAChB,IAAM,KAAA,CAAA,GAAA,GAAM,MAAM,GAAO,IAAA,GAAA,CAAA;AACzB,IAAO,OAAA,KAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAGD,EAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACzB,IAAM,MAAA,SAAA,GAAY,KAAK,GAAG,CAAA,CAAA;AAC1B,IAAM,MAAA,MAAA,GAAS,SAAS,SAAS,CAAA,CAAA;AAGjC,IAAA,IAAI,MAAQ,EAAA;AACV,MAAO,MAAA,CAAA,QAAA,GAAW,MAAO,CAAA,QAAA,IAAY,EAAC,CAAA;AACtC,MAAO,MAAA,CAAA,QAAA,CAAS,KAAK,IAAI,CAAA,CAAA;AAAA,KAC3B;AAGA,IAAA,IAAI,SAAc,KAAA,OAAA,IAAY,CAAC,MAAA,IAAU,OAAY,KAAA,IAAA;AACnD,MAAA,YAAA,CAAa,KAAK,IAAI,CAAA,CAAA;AAAA,GACzB,CAAA,CAAA;AAED,EAAO,OAAA,YAAA,CAAA;AACT,CAAA;AAMwB,SAAA,WAAA,CACtB,QACA,EAAA,QAAA,EACA,UACiC,EAAA;AACjC,EAAA,MAAM,iBAAiBA,cAAgC,EAAA,CAAA;AACvD,EAAAC,SAAA;AAAA,IACE,CAAC,UAAY,EAAA,QAAA,EAAU,QAAQ,CAAA;AAAA,IAC/B,MAAM;AACJ,MAAA,MAAM,kBAAkB,UAAW,CAAA,KAAA,CAAA;AACnC,MAAA,IAAI,SAAS,KAAO,EAAA;AAClB,QAAA,cAAA,CAAe,QAAQ,UAAW,CAAA,KAAA,GAC9B,oBAAoBC,SAAM,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AAAA,UACzC,EAAI,EAAA,IAAA;AAAA,UACJ,GAAK,EAAA,KAAA;AAAA,UACL,OAAS,EAAA,IAAA;AAAA,UACT,GAAI,eAAA,KAAoB,IAAO,GAAA,eAAA,GAAkB,EAAC;AAAA,SACnD,CACD,GAAAA,SAAA,CAAM,QAAS,CAAA,KAAK,EAAE,KAAM,EAAA,CAAA;AAAA,OAC3B,MAAA;AACL,QAAA,cAAA,CAAe,KAAQ,GAAAC,gCAAA,CAAsBD,SAAM,CAAA,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA;AAAA,OACpE;AAAA,KACF;AAAA,IACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA;AAAA,GAChC,CAAA;AACA,EAAO,OAAA,cAAA,CAAA;AACT;;;;"}