{"version":3,"file":"option.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<template>\n  <li\n    v-show=\"visible\"\n    :class=\"[\n      ns.be('dropdown', 'item'),\n      ns.is('disabled', isDisabled),\n      {\n        selected: itemSelected,\n        hover,\n      },\n    ]\"\n    @mouseenter=\"hoverItem\"\n    @click.stop=\"selectOptionClick\"\n  >\n    <slot>\n      <span>{{ currentLabel }}</span>\n    </slot>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  toRefs,\n} from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useOption } from './useOption'\nimport type { SelectOptionProxy } from './token'\n\nexport default defineComponent({\n  name: 'ElOption',\n  componentName: 'ElOption',\n\n  props: {\n    value: {\n      required: true,\n      type: [String, Number, Boolean, Object],\n    },\n    label: [String, Number],\n    created: Boolean,\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n  },\n\n  setup(props) {\n    const ns = useNamespace('select')\n    const states = reactive({\n      index: -1,\n      groupDisabled: false,\n      visible: true,\n      hitState: false,\n      hover: false,\n    })\n\n    const { currentLabel, itemSelected, isDisabled, select, hoverItem } =\n      useOption(props, states)\n\n    const { visible, hover } = toRefs(states)\n\n    const vm = getCurrentInstance().proxy\n    const key = (vm as unknown as SelectOptionProxy).value\n    select.onOptionCreate(vm as unknown as SelectOptionProxy)\n\n    onBeforeUnmount(() => {\n      const { selected } = select\n      const selectedOptions = select.props.multiple ? selected : [selected]\n      const doesSelected = selectedOptions.some((item) => {\n        return item.value === (vm as unknown as SelectOptionProxy).value\n      })\n      // if option is not selected, remove it from cache\n      if (select.cachedOptions.get(key) === vm && !doesSelected) {\n        nextTick(() => {\n          select.cachedOptions.delete(key)\n        })\n      }\n      select.onOptionDestroy(key, vm)\n    })\n\n    function selectOptionClick() {\n      if (props.disabled !== true && states.groupDisabled !== true) {\n        select.handleOptionSelect(vm, true)\n      }\n    }\n\n    return {\n      ns,\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      hoverItem,\n      visible,\n      hover,\n      selectOptionClick,\n      states,\n    }\n  },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot","_createElementVNode","_vShow"],"mappings":"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"}