{"version":3,"file":"option.vue.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<script lang=\"ts\">\n  import {\n    computed,\n    defineComponent,\n    inject,\n    getCurrentInstance,\n    onBeforeUnmount,\n    ref,\n    onMounted\n  } from 'vue'\n  import { getComponentNamespace, getNamespace } from '../../../utils/global-config'\n  import { BnIconCheck } from '../../icon'\n  import { selectInjectKey } from './context'\n\n  export default defineComponent({\n    name: getComponentNamespace('Option'),\n    components: {\n      BnIconCheck\n    },\n    props: {\n      value: {\n        required: true,\n        type: [String, Number, Boolean, Object]\n      },\n      label: {\n        type: [String, Number],\n        default: ''\n      },\n      disabled: {\n        type: Boolean,\n        default: false\n      }\n    },\n    setup(props) {\n      const ns = getNamespace('select-menu')\n\n      const selectContext = inject(selectInjectKey)\n\n      // 是否选中\n      const isSelected = ref(false)\n      // 是否hover\n      const isHover = ref(false)\n      // 是否可见（过滤）\n      const visible = ref(true)\n\n      const multiple = computed(() => selectContext?.multiple)\n\n      const cls = computed(() => {\n        return [\n          `${ns}__item`,\n          isHover.value && 'is-hover',\n          props.disabled && `is-disabled`,\n          isSelected.value && 'is-selected'\n        ]\n      })\n\n      const currentLabel = computed(() => {\n        return props.label\n      })\n\n      const currentValue = computed(() => {\n        return props.value\n      })\n\n      const optVmProxy = getCurrentInstance()!.proxy as any\n\n      const optionItemHoverChange = () => {\n        if (!props.disabled) {\n          selectContext?.optionItemHoverChange(optVmProxy)\n        }\n      }\n\n      const optionItemSelect = () => {\n        if (props.disabled) return\n        selectContext?.optionItemSelect(optVmProxy)\n      }\n\n      onMounted(() => {\n        selectContext?.optionItemCreate(optVmProxy)\n      })\n\n      onBeforeUnmount(() => {\n        selectContext?.optionItemDestroy(optVmProxy)\n      })\n\n      return {\n        cls,\n        currentLabel,\n        currentValue,\n        optionItemHoverChange,\n        optionItemSelect,\n        multiple,\n\n        visible,\n        isHover,\n        isSelected\n      }\n    }\n  })\n</script>\n\n<template>\n  <div\n    v-show=\"visible\"\n    :class=\"cls\"\n    @mouseenter.stop=\"optionItemHoverChange\"\n    @click.stop=\"optionItemSelect\"\n  >\n    <slot>\n      <span>{{ currentLabel }}</span>\n    </slot>\n\n    <BnIconCheck v-if=\"multiple && isSelected\" />\n  </div>\n</template>\n"],"names":["_withDirectives","_openBlock","_createElementBlock","_normalizeClass","_withModifiers","multiple","isSelected","_toDisplayString","_createBlock","_createCommentVNode"],"mappings":";;;;;kDAsGE,aAWM,CAAA,CAAA;EARH,OAAAA,cAAA,EAAUC,WAAA,EAAAC,kBAAA;AAAA,IAAA,KAAA;AAAA,IAAA;AAAA,MACV,KAAA,EAAKC,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AAAA,MAAA,cAAA,MAAA,CAAA,CAAA,MAAA,MAAA,CAAA,CAAA,IAAAC,aAAA,CAAA,CAAA,GAAA,SAAA,IAAA,CAAA,qBAAA,IAAA,KAAA,qBAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,MAEN,SAEO,MAAA,CAAA,CAAA,MAAA,MAAA,CAAA,CAAA,IAAAA,aAAA,CAAA,CAAA,GAAA,SAAA,IAAA,CAAA,gBAAA,IAAA,KAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA;;QAEYC,kBAAAA;AAAAA,UAAYC,MAAAA;AAAAA,UAAAA,IAAAA;AAAAA,UAAUC,eAAA,CAAA,KAAA,YAAA,CAAA;AAAA,UAAA,CAAA;AAAA;AAAA,SAAA;AAAA,OAAA,CAAA;AAAA,MAT1B,IAAA,CAAA,QAAA,IAAA,IAAA,CAAA,UAAA,IAAAN,WAAA,EAAAO,WAAA,CAAA,sBAAA,EAAA,EAAA,KAAA,CAAA,EAAA,CAAA,IAAAC,kBAAA,CAAA,QAAA,IAAA,CAAA;AAAA,KAAA;AAAA;;;;;;;;;;"}