element-plus
Version:
A Component Library for Vue 3
1 lines • 2.46 kB
Source Map (JSON)
{"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"}