{"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,UAAU;EAChC,IAAI,kBAAiC,EAAE;EAEvC,aAAa;GACX,MAAM,WAAW,MAAM,WAAW;GAClC,MAAM,YAA2B,EAAE;GAEnC,SAAS,cAAc,UAAoC;IACzD,IAAI,CAAC,QAAQ,SAAS,EAAE;IACvB,SAAsB,SAAS,SAAS;KACvC,MAAM,QAAS,MAAM,QAAQ,EAAE,GAAiB;KAEhD,IAAI,SAAS,iBACX,cACE,CAAC,SAAS,KAAK,SAAS,IACtB,CAAC,QAAQ,KAAK,SAAS,IACvB,WAAW,KAAK,UAAU,QAAQ,GAChC,KAAK,UAAU,SAAS,GACxB,KAAK,SACV;UACI,IAAI,SAAS,YAClB,UAAU,KAAK,KAAK,OAAO,MAAM;UAC5B,IAAI,QAAQ,KAAK,SAAS,EAC/B,cAAc,KAAK,SAAS;MAE9B;;GAGJ,IAAI,SAAS,QACX,cAAc,SAAS,IAAI,SAAS;GAGtC,IAAI,CAAC,QAAQ,WAAW,gBAAgB,EAAE;IACxC,kBAAkB;IAClB,IAAI,QACF,OAAO,OAAO,eAAe;;GAIjC,OAAO;;;CAGZ,CAAC"}