{"version":3,"file":"menu-item2.mjs","sources":["../../../../../../packages/components/menu/src/menu-item.vue"],"sourcesContent":["<template>\r\n  <li\r\n    class=\"sg-menu-item\"\r\n    role=\"menuitem\"\r\n    tabindex=\"-1\"\r\n    :style=\"paddingStyle\"\r\n    :class=\"{\r\n      'is-active': active,\r\n      'is-disabled': disabled,\r\n    }\"\r\n    @click=\"handleClick\"\r\n  >\r\n    <sg-tooltip\r\n      v-if=\"\r\n        parentMenu.type.name === 'SgMenu' &&\r\n        rootMenu.props.collapse &&\r\n        $slots.title\r\n      \"\r\n      :theme=\"Effect.DARK\"\r\n      trigger='hover'\r\n      placement=\"right\"\r\n      persistent\r\n    >\r\n      <template #content>\r\n        <slot name=\"title\" />\r\n      </template>\r\n      <div class=\"sg-menu-tooltip__trigger\">\r\n        <slot />\r\n      </div>\r\n    </sg-tooltip>\r\n    <template v-else>\r\n      <span v-if=\"rootMenu.props.mode === 'horizontal'\">\r\n        <slot />\r\n        <slot name=\"title\" />\r\n      </span>\r\n      <span v-else class=\"sg-menu-item-title-wrapper\">\r\n        <template v-if=\"tooltipText && rootMenu.props.showTooltip\">\r\n          <sg-tooltip\r\n            :disabled=\"!tooltipDisabled\"\r\n            class=\"box-item\"\r\n            theme=\"dark\"\r\n            :content=\"tooltipText\"\r\n            placement=\"top\"\r\n          >\r\n            <div ref=\"content\" @mouseenter=\"handleTooltipIn\" @mouseleave=\"handleTooltipOut\">\r\n              <span class=\"sg-menu-item-title\"><slot /></span>\r\n              <slot name=\"title\" />\r\n            </div>\r\n          </sg-tooltip>\r\n        </template>\r\n        <span v-else>\r\n          <slot></slot>\r\n          <slot name=\"title\" />\r\n        </span>\r\n      </span>\r\n    </template>\r\n  </li>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  defineComponent,\r\n  computed,\r\n  ref,\r\n  onMounted,\r\n  onBeforeUnmount,\r\n  inject,\r\n  getCurrentInstance,\r\n  toRef,\r\n  reactive,\r\n} from 'vue'\r\nimport SgTooltip from '@sgui-plus/components/tooltip'\r\nimport { Effect } from '@sgui-plus/components/popper'\r\nimport { throwError } from '@sgui-plus/utils/error'\r\nimport useMenu from './use-menu'\r\nimport { menuItemEmits, menuItemProps } from './menu-item'\r\n\r\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\r\n\r\nconst COMPONENT_NAME = 'SgMenuItem'\r\nexport default defineComponent({\r\n  name: COMPONENT_NAME,\r\n  components: {\r\n    SgTooltip,\r\n  },\r\n\r\n  props: menuItemProps,\r\n  emits: menuItemEmits,\r\n\r\n  setup(props, { emit }) {\r\n    const tooltipDisabled = ref(false)\r\n    const instance = getCurrentInstance()! as any\r\n    const rootMenu = inject<MenuProvider>('rootMenu')\r\n    if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\r\n\r\n    const { parentMenu, paddingStyle, indexPath } = useMenu(\r\n      instance,\r\n      toRef(props, 'index')\r\n    )\r\n    const handleTooltipIn = ()=>{\r\n      tooltipDisabled.value = instance.refs.content.scrollWidth > instance.refs.content.offsetWidth\r\n    }\r\n    const handleTooltipOut = ()=>{\r\n      tooltipDisabled.value  = false;\r\n    }\r\n    const subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`)\r\n    if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\r\n\r\n    const active = computed(() => props.index === rootMenu.activeIndex)\r\n    const item: MenuItemRegistered = reactive({\r\n      index: props.index,\r\n      indexPath,\r\n      active,\r\n    })\r\n\r\n    const handleClick = () => {\r\n      if (!props.disabled) {\r\n        rootMenu.handleMenuItemClick({\r\n          index: props.index,\r\n          indexPath: indexPath.value,\r\n          route: props.route,\r\n        })\r\n        emit('onClick', item)\r\n      }\r\n    }\r\n\r\n    onMounted(() => {\r\n      subMenu.addSubMenu(item)\r\n      rootMenu.addMenuItem(item)\r\n    })\r\n\r\n    onBeforeUnmount(() => {\r\n      subMenu.removeSubMenu(item)\r\n      rootMenu.removeMenuItem(item)\r\n    })\r\n\r\n    return {\r\n      Effect,\r\n      parentMenu,\r\n      rootMenu,\r\n      paddingStyle,\r\n      active,\r\n      handleTooltipIn,\r\n      handleTooltipOut,\r\n      tooltipDisabled,\r\n      handleClick,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_createElementBlock","_normalizeClass","_normalizeStyle","_createBlock","_renderSlot","_withCtx","_createElementVNode","_openBlock","_Fragment"],"mappings":";;;;;;MAmCmB,UAAM,GAAA;AAAA,EAAA,GAAA,EAAA,CAAA;;;;;;gCAlCvBA,gBAuDK,CAAA,YAAA,CAAA,CAAA;oBAlDiC,EAAAC,kBAAA,CAAA,IAAA,EAAA;AAAA,IAAA,KAAA,EAAAC,cAAA,CAAwB,CAAQ,cAAA,EAAA;AAAA,MAAA,WAAA,EAAA,IAAA,CAAA,MAAA;MAHpE,aAAe,EAAA,IAAA,CAAA,QAAA;AAAA,KACf,CAAA,CAAA;AAAA,IACC,IAAK,EAAA,UAAA;AAAA,IAKL,QAAK,EAAA,IAAA;AAAA,IAAA,KAAA,EAAAC,cAAA,CAAA,IAAA,CAAA,YAAA,CAAA;;;IAG8F,IAAO,CAAA,UAAA,CAAA,IAAA,CAAK,qFAK3F,EAAAC,WAAA,CAAA,qBAAA,EAAA;AAAA,MACnB,GAAA,EAAA,CAAA;AAAA,MACA,YAAU,MAAO,CAAA,IAAA;AAAA,MACjB,OAAA,EAAA,OAAA;AAAA,MAAA,SAAA,EAAA,OAAA;MAEW,UAAO,EAAA,EAAA;AAAA,KAAA,EAAA;;AAKZ,QAAAC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,OAAA,CAAA;AAAA,OAAA,CAAA;eADJC,OAAQ,CAAA,MAAA;AAAA,QAAAC,kBAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;;OAIE,CAAS,EAAA,CAAA,OAAM,CAAI,CAAA,KAAAC,SAAA,EAAA,EAAAP,kBAAA,CAA/BQ,QAGO,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,EAAA;AAAA,MAFL,IAAA,CAAA,QAAA,CAAA,KAAA,CAAQ,oCACa,EAAAR,kBAAA,CAAA,MAAA,EAAA,UAAA,EAAA;AAAA,QAAAI,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAEvB,QAAAA,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,OAAA,CAAA;AAAA,OAaiB,CAAA,KAAAG,SAAA,EAAA,EAAAP,kBAAA,CAAA,MAAA,EAAA,UAAA,EAAA;AAAA,QAAA,IAAA,CAAA,WAAA,IAAA,IAAA,CAAA,QAAA,CAAA,KAAA,CAAA,WAAA,IAAAO,SAAA,IAVCJ,WAAe,CAAA,qBAAA,EAAA;AAAA,UAC3B,GAAK,EAAA,CAAA;AAAA,UACL,UAAM,CAAM,IAAA,CAAA,eAAA;AAAA,UACX,KAAO,EAAA,UAAA;AAAA,UACR,KAAA,EAAA,MAAA;AAAA,UAAA,OAAA,EAAA,IAAA,CAAA,WAAA;;;mBAESE,OAAS,CAAA,MAAA;AAAA,YAAYC,kBAAA,CAAA,KAAA,EAAA;AAAA,cAAoB,GAAA,EAAA,SAAA;AAAA,cAAA,YAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,eAAA,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAChD,cAAA,YAAA,EAAA,MAAA,CAAgD,OAAhD,MAAgD,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,gBAAA,IAAA,IAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,aAAA,EAAA;;gBAChDF,UAAqB,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA,eAAA,CAAA;;;;;AAKzB,SAAA,EAAA,CAAA,EAAa,wCACQ,EAAAJ,kBAAA,CAAA,MAAA,EAAA,UAAA,EAAA;AAAA,UAAAI,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;;;;;;;;;;;"}