{"version":3,"file":"NavigationMenuContent.cjs","sources":["../../src/NavigationMenu/NavigationMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { NavigationMenuContentImplEmits, NavigationMenuContentImplProps } from './NavigationMenuContentImpl.vue'\n\nexport type NavigationMenuContentEmits = NavigationMenuContentImplEmits\n\nexport interface NavigationMenuContentProps extends NavigationMenuContentImplProps {\n  /**\n   * Used to force mounting when more control is needed. Useful when\n   * controlling animation with Vue animation libraries.\n   */\n  forceMount?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { injectNavigationMenuContext } from './NavigationMenuRoot.vue'\nimport { injectNavigationMenuItemContext } from './NavigationMenuItem.vue'\nimport { getOpenState, whenMouse } from './utils'\nimport { Presence } from '@/Presence'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\nimport { isClient, reactiveOmit } from '@vueuse/shared'\nimport NavigationMenuContentImpl from './NavigationMenuContentImpl.vue'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = defineProps<NavigationMenuContentProps>()\nconst emits = defineEmits<NavigationMenuContentEmits>()\n\nconst forwarded = useForwardPropsEmits(reactiveOmit(props, 'forceMount'), emits)\nconst { forwardRef } = useForwardExpose()\n\nconst menuContext = injectNavigationMenuContext()\nconst itemContext = injectNavigationMenuItemContext()\n\nconst open = computed(() => itemContext.value === menuContext.modelValue.value)\n\n// We persist the last active content value as the viewport may be animating out\n// and we want the content to remain mounted for the lifecycle of the viewport.\nconst isLastActiveValue = computed(() => {\n  if (menuContext.viewport.value) {\n    if (!menuContext.modelValue.value && menuContext.previousValue.value)\n      return (menuContext.previousValue.value === itemContext.value)\n  }\n  return false\n})\n</script>\n\n<template>\n  <Teleport\n    :to=\"isClient && menuContext.viewport.value ? menuContext.viewport.value : 'body'\"\n    :disabled=\"isClient && menuContext.viewport.value ? !menuContext.viewport.value : true\"\n  >\n    <Presence\n      v-slot=\"{ present }\"\n      :present=\"forceMount || open || isLastActiveValue\"\n      :force-mount=\"!menuContext.unmountOnHide.value\"\n    >\n      <NavigationMenuContentImpl\n        :ref=\"forwardRef\"\n        :data-state=\"getOpenState(open)\"\n        :style=\"{\n          pointerEvents: !open && menuContext.isRootMenu ? 'none' : undefined,\n        }\"\n        v-bind=\"{ ...$attrs, ...forwarded }\"\n        :hidden=\"!present\"\n        @pointerenter=\"menuContext.onContentEnter(itemContext.value)\"\n        @pointerleave=\"whenMouse(() => menuContext.onContentLeave())($event)\"\n        @pointer-down-outside=\"emits('pointerDownOutside', $event)\"\n        @focus-outside=\"emits('focusOutside', $event)\"\n        @interact-outside=\"emits('interactOutside', $event)\"\n      >\n        <slot />\n      </NavigationMenuContentImpl>\n    </Presence>\n  </Teleport>\n</template>\n"],"names":["useForwardPropsEmits","reactiveOmit","useForwardExpose","injectNavigationMenuContext","injectNavigationMenuItemContext","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,YAAYA,gDAAqB,CAAAC,mBAAA,CAAa,KAAO,EAAA,YAAY,GAAG,KAAK,CAAA;AAC/E,IAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,wCAAiB,EAAA;AAExC,IAAA,MAAM,cAAcC,6DAA4B,EAAA;AAChD,IAAA,MAAM,cAAcC,iEAAgC,EAAA;AAEpD,IAAA,MAAM,OAAOC,YAAS,CAAA,MAAM,YAAY,KAAU,KAAA,WAAA,CAAY,WAAW,KAAK,CAAA;AAI9E,IAAM,MAAA,iBAAA,GAAoBA,aAAS,MAAM;AACvC,MAAI,IAAA,WAAA,CAAY,SAAS,KAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAA,CAAY,UAAW,CAAA,KAAA,IAAS,YAAY,aAAc,CAAA,KAAA;AAC7D,UAAQ,OAAA,WAAA,CAAY,aAAc,CAAA,KAAA,KAAU,WAAY,CAAA,KAAA;AAAA;AAE5D,MAAO,OAAA,KAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}