{"version":3,"file":"options.mjs","names":[],"sources":["../../../../../../packages/components/select/src/options.ts"],"sourcesContent":["import { defineComponent, inject } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { isArray, isFunction, isString } from '@element-plus/utils'\nimport { selectKey } from './token'\n\nimport type { Component, VNode, VNodeNormalizedChildren } from 'vue'\nimport type { OptionValue } from './type'\n\nexport default defineComponent({\n  name: 'ElOptions',\n  setup(_, { slots }) {\n    const select = inject(selectKey)\n    let cachedValueList: OptionValue[] = []\n\n    return () => {\n      const children = slots.default?.()!\n      const valueList: OptionValue[] = []\n\n      function filterOptions(children?: VNodeNormalizedChildren) {\n        if (!isArray(children)) return\n        ;(children as VNode[]).forEach((item) => {\n          const name = ((item?.type || {}) as Component)?.name\n\n          if (name === 'ElOptionGroup') {\n            filterOptions(\n              !isString(item.children) &&\n                !isArray(item.children) &&\n                isFunction(item.children?.default)\n                ? item.children?.default()\n                : item.children\n            )\n          } else if (name === 'ElOption') {\n            valueList.push(item.props?.value)\n          } else if (isArray(item.children)) {\n            filterOptions(item.children)\n          }\n        })\n      }\n\n      if (children.length) {\n        filterOptions(children[0]?.children)\n      }\n\n      if (!isEqual(valueList, cachedValueList)) {\n        cachedValueList = valueList\n        if (select) {\n          select.states.optionValues = valueList\n        }\n      }\n\n      return children\n    }\n  },\n})\n"],"mappings":";;;;;AAQA,IAAA,kBAAe,gBAAgB;CAC7B,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,SAAS,OAAO,SAAS;EAC/B,IAAI,kBAAiC,CAAC;EAEtC,aAAa;GACX,MAAM,WAAW,MAAM,UAAU;GACjC,MAAM,YAA2B,CAAC;GAElC,SAAS,cAAc,UAAoC;IACzD,IAAI,CAAC,QAAQ,QAAQ,GAAG;IACvB,SAAsB,SAAS,SAAS;KACvC,MAAM,QAAS,MAAM,QAAQ,CAAC,EAAA,EAAkB;KAEhD,IAAI,SAAS,iBACX,cACE,CAAC,SAAS,KAAK,QAAQ,KACrB,CAAC,QAAQ,KAAK,QAAQ,KACtB,WAAW,KAAK,UAAU,OAAO,IAC/B,KAAK,UAAU,QAAQ,IACvB,KAAK,QACX;UACK,IAAI,SAAS,YAClB,UAAU,KAAK,KAAK,OAAO,KAAK;UAC3B,IAAI,QAAQ,KAAK,QAAQ,GAC9B,cAAc,KAAK,QAAQ;IAE/B,CAAC;GACH;GAEA,IAAI,SAAS,QACX,cAAc,SAAS,EAAE,EAAE,QAAQ;GAGrC,IAAI,CAAC,QAAQ,WAAW,eAAe,GAAG;IACxC,kBAAkB;IAClB,IAAI,QACF,OAAO,OAAO,eAAe;GAEjC;GAEA,OAAO;EACT;CACF;AACF,CAAC"}