{"version":3,"file":"option.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<template>\r\n  <li\r\n    v-show=\"visible\"\r\n    class=\"sg-select-dropdown__item\"\r\n    :class=\"{\r\n      selected: itemSelected,\r\n      'is-disabled': isDisabled,\r\n      hover: hover,\r\n    }\"\r\n    @mouseenter=\"hoverItem\"\r\n    @click.stop=\"selectOptionClick\"\r\n  >\r\n    <slot>\r\n      <span v-html=\"highlightCurrentLabel\" v-if=\"select.props.filterHighlight && select.props.filterable\"></span>\r\n      <span v-else>{{ currentLabel }}</span>\r\n    </slot>\r\n  </li>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  toRefs,\r\n  defineComponent,\r\n  getCurrentInstance,\r\n  onBeforeUnmount,\r\n  reactive,\r\n} from 'vue'\r\nimport { useOption } from './useOption'\r\nimport type { SelectOptionProxy } from './token'\r\n\r\nexport default defineComponent({\r\n  name: 'SgOption',\r\n  componentName: 'SgOption',\r\n\r\n  props: {\r\n    value: {\r\n      required: true,\r\n      type: [String, Number, Boolean, Object],\r\n    },\r\n    label: [String, Number],\r\n    isCreated: Boolean,\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n  },\r\n\r\n  setup(props) {\r\n    const states = reactive({\r\n      index: -1,\r\n      groupDisabled: false,\r\n      visible: true,\r\n      hitState: false,\r\n      hover: false,\r\n    })\r\n\r\n    const { currentLabel, itemSelected, isDisabled, select, hoverItem, highlightCurrentLabel } = useOption(props, states)\r\n    const { visible, hover } = toRefs(states)\r\n\r\n    const vm = (getCurrentInstance() || {}).proxy\r\n    const key = (vm as unknown as SelectOptionProxy).value\r\n    select.onOptionCreate(vm as unknown as SelectOptionProxy)\r\n\r\n    onBeforeUnmount(() => {\r\n      const { selected } = select\r\n\r\n      const selectedOptions = select.props.multiple ? selected : [selected]\r\n      const doesExist = select.cachedOptions.has(key)\r\n      const doesSelected = selectedOptions.some((item) => {\r\n        return item.value === (vm as unknown as SelectOptionProxy).value\r\n      })\r\n      // if option is not selected, remove it from cache\r\n      if (doesExist && !doesSelected) {\r\n        select.cachedOptions.delete(key)\r\n      }\r\n      select.onOptionDestroy(key)\r\n    })\r\n\r\n    function selectOptionClick() {\r\n      if (props.disabled !== true && states.groupDisabled !== true) {\r\n        select.handleOptionSelect(vm, true)\r\n      }\r\n    }\r\n\r\n    return {\r\n      highlightCurrentLabel,\r\n      currentLabel,\r\n      itemSelected,\r\n      isDisabled,\r\n      select,\r\n      hoverItem,\r\n      visible,\r\n      hover,\r\n      selectOptionClick,\r\n      states,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_withModifiers","_toDisplayString"],"mappings":";;;;;;AAGS,SAAA,WAAA,CAAA,IAAA,EAAA,MAAA,EAAC,MAA0B,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA;yBACLA,SAAY,EAAA,EAAAC,kBAAA,CAAA,IAAA,EAAA;AAAA,IAAA,KAAA,EAAAC,cAAA,CAAwB,CAAU,0BAAA,EAAA;AAAA,MAAgB,QAAA,EAAA,IAAA,CAAA,YAAA;AAAA,MAAA,aAAA,EAAA,IAAA,CAAA,UAAA;MAKxF,KAAU,EAAA,IAAA,CAAA,KAAA;AAAA,KACV,CAAA,CAAA;AAAA,IAAA,YAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,SAAA,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAED,OAGO,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAC,aAAA,CAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,iBAAA,IAAA,IAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA,EAAA;4BAFL,SAA2G,EAAA,EAAA,EAAA,MAAA;AAAA,MAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA,eAAA,IAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA,UAAA,IAAAH,SAAA,IAA7FC,kBAAqB,CAAA,MAAA,EAAA;AAAA,QAAA,GAAA,EAAA,CAAA;AACnC,QAAA,SAAA,EAAA,IAAA,CAAA,qBAAA;AAAA,OAAA,EAAA,IAAA,EAAA,CAAA,EAAA,UAAA,CAAA,KAAAD,SAAA,EAAA,EAAAC,kBAAA,CAAA,MAAA,EAAA,UAAA,EAAAG,eAAA,CAAA,IAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;"}