{"version":3,"file":"option.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<template>\n  <li v-if=\"divider\" class=\"menu-divider\"></li>\n  <li\n    v-else\n    v-show=\"visible\"\n    :id=\"id\"\n    role=\"option\"\n    :aria-disabled=\"isDisabled || undefined\"\n    :aria-selected=\"itemSelected\"\n    :class=\"{\n      [namespace]: true,\n      'select-dropdown-item': true,\n      'is-selected': itemSelected,\n      'is-disabled': isDisabled,\n      'hover': hover\n    }\"\n    @mouseenter=\"hoverItem\"\n    @click.stop=\"selectOptionClick\"\n  >\n    <slot>\n      <div>{{ currentLabel }}</div>\n      <hl-icon v-if=\"itemSelected\">\n        <system-checked />\n      </hl-icon>\n    </slot>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n  toRefs,\n  defineComponent,\n  getCurrentInstance,\n  onBeforeUnmount,\n  reactive,\n  nextTick,\n} from 'vue'\nimport { useId, useNamespace } from '@hongluan-ui/hooks'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport { SystemChecked } from '@hongluan-ui/components/system-icon'\nimport { useOption } from './useOption'\nimport type { SelectOptionProxy } from './token'\n\nexport default defineComponent({\n  name: 'Option',\n  components: {\n    HlIcon,\n    SystemChecked,\n  },\n  componentName: 'Option',\n\n  props: {\n    /**\n     * @description value of option\n     */\n    value: {\n      type: [String, Number, Boolean, Object],\n    },\n    /**\n     * @description label of option, same as `value` if omitted\n     */\n    label: [String, Number],\n    created: Boolean,\n    /**\n     * @description whether option is disabled\n     */\n    disabled: Boolean,\n    divider: Boolean,\n  },\n\n  setup(props) {\n    const { namespace } = useNamespace('option')\n    const id = useId()\n\n    const states = reactive({\n      index: -1,\n      groupDisabled: false,\n      visible: true,\n      hitState: false,\n      hover: false,\n    })\n\n    const {\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      hoverItem,\n    } = useOption(props, states)\n\n    const {\n      visible,\n      hover,\n    } = toRefs(states)\n\n    const vm = getCurrentInstance().proxy\n    select.onOptionCreate(vm as unknown as SelectOptionProxy)\n\n    onBeforeUnmount(() => {\n      const key = (vm as unknown as SelectOptionProxy).value\n      const { selected } = select\n      let 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      nextTick(() => {\n        if (select.cachedOptions.get(key) === vm && !doesSelected) {\n          select.cachedOptions.delete(key)\n        }\n      })\n\n      select.onOptionDestroy(key, vm as unknown as SelectOptionProxy)\n    })\n\n    function selectOptionClick() {\n      if (props.disabled !== true && states.groupDisabled !== true) {\n        select.handleOptionSelect(vm)\n      }\n    }\n\n    return {\n      id,\n      namespace,\n      currentLabel,\n      itemSelected,\n      isDisabled,\n      select,\n      hoverItem,\n      visible,\n      hover,\n      selectOptionClick,\n      states,\n    }\n  },\n})\n\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_withModifiers","_renderSlot","_createElementVNode","_createBlock","_createVNode"],"mappings":";;;;;;;;;;AA2CA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA;AACF,EACA,eAAe;AAAA,EAEf,OAAO;AAAA,IAIL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,QAAQ,SAAS,MAAM;AAAA;AACxC,IAIA,OAAO,CAAC,QAAQ,MAAM;AAAA,IACtB,SAAS;AAAA,IAIT,UAAU;AAAA,IACV,SAAS;AAAA;AACX,EAEA,MAAM,OAAO;AACX,UAAM,EAAE,cAAc,aAAa,QAAQ;AAC3C,UAAM,KAAK;AAEX,UAAM,SAAS,SAAS;AAAA,MACtB,OAAO;AAAA,MACP,eAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,KACR;AAED,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,UAAU,OAAO,MAAM;AAE3B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,QACE,OAAO,MAAM;AAEjB,UAAM,KAAK,qBAAqB;AAChC,WAAO,eAAe,EAAkC;AAExD,oBAAgB,MAAM;AACpB,YAAM,MAAO,GAAoC;AACjD,YAAM,EAAE,aAAa;AACrB,UAAI,kBAAkB,OAAO,MAAM,WAAW,WAAW,CAAC,QAAQ;AAClE,YAAM,eAAe,gBAAgB,KAAK,UAAQ;AAChD,eAAO,KAAK,UAAW,GAAoC;AAAA,OAC5D;AAED,eAAS,MAAM;AACb,YAAI,OAAO,cAAc,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc;AACzD,iBAAO,cAAc,OAAO,GAAG;AAAA;AACjC,OACD;AAED,aAAO,gBAAgB,KAAK,EAAkC;AAAA,KAC/D;AAED,iCAA6B;AAC3B,UAAI,MAAM,aAAa,QAAQ,OAAO,kBAAkB,MAAM;AAC5D,eAAO,mBAAmB,EAAE;AAAA;AAC9B;AAGF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;SAtIW,6BAAVA,mBAA6C;AAAA;IAA1B,OAAM;AAAA,qCACzBA,mBAuBK;AAAA;IApBF,IAAI;AAAA,IACL,MAAK;AAAA,IACJ,iBAAe,mBAAc;AAAA,IAC7B,iBAAe;AAAA,IACf,OAAKC;AAAA,OAAW,iBAAS;AAAA;qBAAkE;AAAA,qBAAmC;AAAA,eAA2B;AAAA;IAOzJ,cAAY;AAAA,IACZ,SAAKC,cAAO,wBAAiB;AAAA;IAE9BC,WAKO,4BALP,MAKO;AAAA,MAJLC,mBAA6B,6BAArB,iBAAY;AAAA,MACL,kCAAfC,YAEU;AAAA,yBADR,MAAkB;AAAA,UAAlBC,YAAkB;AAAA;;;;;YAlBd,YAAO;AAAA;;;;;;"}