{"version":3,"file":"menu-item.mjs","sources":["../../../../../../packages/components/menu/src/menu-item.vue"],"sourcesContent":["<template>\n  <li\n    role=\"menuitem\"\n    tabindex=\"-1\"\n    :style=\"[itemStyle]\"\n    :class=\"{\n      [namespace + '-menu-item']: true,\n      'is-active': active,\n      'is-disabled': disabled,\n    }\"\n    @click=\"handleClick\"\n  >\n    <hl-tooltip\n      v-if=\"\n        parentMenu.type.name === 'Menu' &&\n          rootMenu.finalCollapse &&\n          $slots.title\n      \"\n      trigger=\"hover\"\n      class=\"no-style\"\n      placement=\"right\"\n      :fallback-placements=\"['left']\"\n      :show-arrow=\"false\"\n      :offset=\"0\"\n      :hide-after=\"0\"\n      :popper-class=\"`${namespace}-menu-popover`\"\n    >\n      <template #content>\n        <slot name=\"title\"></slot>\n      </template>\n      <div class=\"item-content\">\n        <slot></slot>\n      </div>\n    </hl-tooltip>\n    <template v-else>\n      <div class=\"item-content\">\n        <slot></slot>\n        <slot name=\"title\"></slot>\n      </div>\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  computed,\n  onMounted,\n  onBeforeUnmount,\n  inject,\n  getCurrentInstance,\n  toRef,\n  reactive,\n} from 'vue'\nimport HlTooltip from '@hongluan-ui/components/tooltip'\nimport { Effect } from '@hongluan-ui/components/popper'\nimport { throwError } from '@hongluan-ui/utils'\nimport { useNamespace } from '@hongluan-ui/hooks'\nimport useMenu from './use-menu'\nimport { menuItemProps } from './menu-item'\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'MenuItem'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  components: {\n    HlTooltip,\n  },\n\n  props: menuItemProps,\n  emits: ['click'],\n\n  setup(props, { emit }) {\n    const { namespace } = useNamespace()\n    const instance = getCurrentInstance()\n    const rootMenu = inject<MenuProvider>('rootMenu')\n    if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n    const { parentMenu, indexPath } = useMenu(\n      instance,\n      toRef(props, 'index'),\n    )\n\n    const subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`)\n    if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n    const active = computed(() => props.index === rootMenu.activeIndex)\n    const backgroundColor = computed(() => rootMenu.props.backgroundColor || '')\n    const activeTextColor = computed(() => rootMenu.props.activeTextColor || '')\n    const textColor = computed(() => rootMenu.props.textColor || '')\n\n    const item: MenuItemRegistered = reactive({\n      index: props.index,\n      indexPath,\n      active,\n    })\n    const itemStyle = computed(() => {\n      const style = {\n        color: active.value ? activeTextColor.value : textColor.value,\n        backgroundColor: backgroundColor.value,\n      }\n      return style\n    })\n\n    const handleClick = () => {\n      if (!props.disabled) {\n        rootMenu.handleMenuItemClick({\n          index: props.index,\n          indexPath: indexPath.value,\n          route: props.route,\n        })\n        emit('click', item)\n      }\n    }\n\n    onMounted(() => {\n      subMenu.addSubMenu(item)\n      rootMenu.addMenuItem(item)\n    })\n\n    onBeforeUnmount(() => {\n      subMenu.removeSubMenu(item)\n      rootMenu.removeMenuItem(item)\n    })\n\n    return {\n      namespace,\n      itemStyle,\n      Effect,\n      parentMenu,\n      rootMenu,\n      active,\n      handleClick,\n    }\n  },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeStyle","_normalizeClass","_createBlock","_withCtx","_renderSlot","_createElementVNode"],"mappings":";;;;;;;;;;;;AA+DA,MAAM,iBAAiB;AACvB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AACF,EAEA,OAAO;AAAA,EACP,OAAO,CAAC,OAAO;AAAA,EAEf,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,EAAE,cAAc;AACtB,UAAM,WAAW;AACjB,UAAM,WAAW,OAAqB,UAAU;AAChD,QAAI,CAAC;AAAU,iBAAW,gBAAgB,0BAA0B;AAEpE,UAAM,EAAE,YAAY,cAAc,QAChC,UACA,MAAM,OAAO,OAAO,CACtB;AAEA,UAAM,UAAU,OAAwB,WAAW,WAAW,MAAM,KAAK;AACzE,QAAI,CAAC;AAAS,iBAAW,gBAAgB,yBAAyB;AAElE,UAAM,SAAS,SAAS,MAAM,MAAM,UAAU,SAAS,WAAW;AAClE,UAAM,kBAAkB,SAAS,MAAM,SAAS,MAAM,mBAAmB,EAAE;AAC3E,UAAM,kBAAkB,SAAS,MAAM,SAAS,MAAM,mBAAmB,EAAE;AAC3E,UAAM,YAAY,SAAS,MAAM,SAAS,MAAM,aAAa,EAAE;AAE/D,UAAM,OAA2B,SAAS;AAAA,MACxC,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,KACD;AACD,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,QAAQ;AAAA,QACZ,OAAO,OAAO,QAAQ,gBAAgB,QAAQ,UAAU;AAAA,QACxD,iBAAiB,gBAAgB;AAAA;AAEnC,aAAO;AAAA,KACR;AAED,UAAM,cAAc,MAAM;AACxB,UAAI,CAAC,MAAM,UAAU;AACnB,iBAAS,oBAAoB;AAAA,UAC3B,OAAO,MAAM;AAAA,UACb,WAAW,UAAU;AAAA,UACrB,OAAO,MAAM;AAAA,SACd;AACD,aAAK,SAAS,IAAI;AAAA;AACpB;AAGF,cAAU,MAAM;AACd,cAAQ,WAAW,IAAI;AACvB,eAAS,YAAY,IAAI;AAAA,KAC1B;AAED,oBAAgB,MAAM;AACpB,cAAQ,cAAc,IAAI;AAC1B,eAAS,eAAe,IAAI;AAAA,KAC7B;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;sBAvICA,mBAuCK;AAAA,IAtCH,MAAK;AAAA,IACL,UAAS;AAAA,IACR,OAAKC,gBAAG,cAAS;AAAA,IACjB,OAAKC;AAAA,OAAW,iBAAS;AAAA,mBAA2C;AAAA,qBAA6B;AAAA;IAKjG,SAAO;AAAA;IAGS,gBAAW,KAAK,SAAI,UAAyB,cAAS,iBAA2B,YAAO,sBADzGC,YAqBa;AAAA;MAfX,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,WAAU;AAAA,MACT,uBAAqB;AAAA,MACrB,cAAY;AAAA,MACZ,QAAQ;AAAA,MACR,cAAY;AAAA,MACZ,gBAAY,GAAK;AAAA;MAEP,SAAOC,QAChB,MAA0B;AAAA,QAA1BC,WAA0B;AAAA;uBAE5B,MAEM;AAAA,QAFNC,mBAEM,SAFD,OAAM;AAAc,UACvBD,WAAa;AAAA;;;6CAIfL,mBAGM;AAAA;MAHD,OAAM;AAAA;MACTK,WAAa;AAAA,MACbA,WAA0B;AAAA;;;;;;;"}