{"version":3,"file":"useDisplayValues.cjs","sources":["../../../../../../../packages/vue-components/vc-cascader/src/hooks/useDisplayValues.ts"],"sourcesContent":["import type { Ref, VNode } from 'vue';\nimport type { BaseCascaderProps, DefaultOptionType, InternalFieldNames, SingleValueType } from '../Cascader';\nimport { cloneElement, isValidElement } from '@antdv/utils';\nimport { computed } from 'vue';\nimport { toPathKey } from '../utils/commonUtil';\nimport { toPathOptions } from '../utils/treeUtil';\n\nexport default (\n  rawValues: Ref<SingleValueType[]>,\n  options: Ref<DefaultOptionType[]>,\n  fieldNames: Ref<InternalFieldNames>,\n  multiple: Ref<boolean>,\n  displayRender: Ref<BaseCascaderProps['displayRender']>,\n) => {\n  return computed(() => {\n    const mergedDisplayRender\n      = displayRender.value\n      // Default displayRender\n      || (({ labels }) => {\n        const mergedLabels = multiple.value ? labels.slice(-1) : labels;\n        const SPLIT = ' / ';\n\n        if (mergedLabels.every(label => ['string', 'number'].includes(typeof label)))\n          return mergedLabels.join(SPLIT);\n\n        // If exist non-string value, use VueNode instead\n        return mergedLabels.reduce((list, label, index) => {\n          const keyedLabel = isValidElement(label)\n            ? cloneElement(label as unknown as VNode, { key: index })\n            : label;\n\n          if (index === 0)\n            return [keyedLabel];\n\n          return [...list, SPLIT, keyedLabel];\n        }, []);\n      });\n\n    return rawValues.value.map((valueCells) => {\n      const valueOptions = toPathOptions(valueCells, options.value, fieldNames.value);\n\n      const label = mergedDisplayRender({\n        labels: valueOptions.map(({ option, value }) => option?.[fieldNames.value.label] ?? value),\n        selectedOptions: valueOptions.map(({ option }) => option),\n      });\n      const value = toPathKey(valueCells);\n      return {\n        label,\n        value,\n        key: value,\n        valueCells,\n      };\n    });\n  });\n};\n"],"names":["computed","isValidElement","cloneElement","toPathOptions","value","toPathKey"],"mappings":";;;;;;;;;;;AAOA,uBAAe,CACb,SAAA,EACA,OACA,EAAA,UAAA,EACA,UACA,aACG,KAAA;AACH,EAAA,OAAOA,aAAS,MAAM;AACpB,IAAA,MAAM,sBACF,aAAc,CAAA,KAAA,KAEZ,CAAC,EAAE,QAAa,KAAA;AAClB,MAAA,MAAM,eAAe,QAAS,CAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA,MAAA,CAAA;AACzD,MAAA,MAAM,KAAQ,GAAA,KAAA,CAAA;AAEd,MAAI,IAAA,YAAA,CAAa,KAAM,CAAA,CAAA,KAAA,KAAS,CAAC,QAAA,EAAU,QAAQ,CAAE,CAAA,QAAA,CAAS,OAAO,KAAK,CAAC,CAAA;AACzE,QAAO,OAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AAGhC,MAAA,OAAO,YAAa,CAAA,MAAA,CAAO,CAAC,IAAA,EAAM,OAAO,KAAU,KAAA;AACjD,QAAM,MAAA,UAAA,GAAaC,iBAAe,CAAA,KAAK,CACnC,GAAAC,kBAAA,CAAa,OAA2B,EAAE,GAAA,EAAK,KAAM,EAAC,CACtD,GAAA,KAAA,CAAA;AAEJ,QAAA,IAAI,KAAU,KAAA,CAAA;AACZ,UAAA,OAAO,CAAC,UAAU,CAAA,CAAA;AAEpB,QAAA,OAAO,CAAC,GAAG,IAAM,EAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AAAA,OACpC,EAAG,EAAE,CAAA,CAAA;AAAA,KACP,CAAA,CAAA;AAEF,IAAA,OAAO,SAAU,CAAA,KAAA,CAAM,GAAI,CAAA,CAAC,UAAe,KAAA;AACzC,MAAA,MAAM,eAAeC,sBAAc,CAAA,UAAA,EAAY,OAAQ,CAAA,KAAA,EAAO,WAAW,KAAK,CAAA,CAAA;AAE9E,MAAA,MAAM,QAAQ,mBAAoB,CAAA;AAAA,QAChC,MAAA,EAAQ,aAAa,GAAI,CAAA,CAAC,EAAE,MAAQ,EAAA,KAAA,EAAAC,QAAS,KAAA;AA1CrD,UAAA,IAAA,EAAA,CAAA;AA0CwD,UAAS,OAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,UAAA,CAAW,KAAM,CAAA,KAAA,CAAA,KAA1B,IAAoCA,GAAAA,EAAAA,GAAAA,MAAAA,CAAAA;AAAA,SAAK,CAAA;AAAA,QACzF,iBAAiB,YAAa,CAAA,GAAA,CAAI,CAAC,EAAE,MAAA,OAAa,MAAM,CAAA;AAAA,OACzD,CAAA,CAAA;AACD,MAAM,MAAA,KAAA,GAAQC,qBAAU,UAAU,CAAA,CAAA;AAClC,MAAO,OAAA;AAAA,QACL,KAAA;AAAA,QACA,KAAA;AAAA,QACA,GAAK,EAAA,KAAA;AAAA,QACL,UAAA;AAAA,OACF,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AACH,CAAA;;;;"}