{"version":3,"file":"PopoverContentNonModal.cjs","sources":["../../src/Popover/PopoverContentNonModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport PopoverContentImpl, { type PopoverContentImplEmits, type PopoverContentImplProps } from './PopoverContentImpl.vue'\nimport { injectPopoverRootContext } from './PopoverRoot.vue'\nimport { useForwardPropsEmits } from '@/shared'\n\nconst props = defineProps<PopoverContentImplProps>()\nconst emits = defineEmits<PopoverContentImplEmits>()\nconst rootContext = injectPopoverRootContext()\nconst hasInteractedOutsideRef = ref(false)\nconst hasPointerDownOutsideRef = ref(false)\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <PopoverContentImpl\n    v-bind=\"forwarded\"\n    :trap-focus=\"false\"\n    :disable-outside-pointer-events=\"false\"\n    @close-auto-focus=\"\n      (event) => {\n        emits('closeAutoFocus', event);\n\n        if (!event.defaultPrevented) {\n          if (!hasInteractedOutsideRef) rootContext.triggerElement.value?.focus();\n          // Always prevent auto focus because we either focus manually or want user agent focus\n          event.preventDefault();\n        }\n\n        hasInteractedOutsideRef = false;\n        hasPointerDownOutsideRef = false;\n      }\n    \"\n    @interact-outside=\"\n      async (event) => {\n        emits('interactOutside', event);\n\n        if (!event.defaultPrevented) {\n          hasInteractedOutsideRef = true;\n          if (event.detail.originalEvent.type === 'pointerdown') {\n            hasPointerDownOutsideRef = true;\n          }\n        }\n\n        // Prevent dismissing when clicking the trigger.\n        // As the trigger is already setup to close, without doing so would\n        // cause it to close and immediately open.\n        const target = event.target as HTMLElement;\n        const targetIsTrigger = rootContext.triggerElement.value?.contains(target);\n        if (targetIsTrigger) event.preventDefault();\n\n        // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n        // we will get the pointer down outside event on the trigger, but then a subsequent\n        // focus outside event on the container, we ignore any focus outside event when we've\n        // already had a pointer down outside event.\n        if (\n          event.detail.originalEvent.type === 'focusin'\n          && hasPointerDownOutsideRef\n        ) {\n          event.preventDefault();\n        }\n      }\n    \"\n  >\n    <slot />\n  </PopoverContentImpl>\n</template>\n"],"names":["injectPopoverRootContext","ref","useForwardPropsEmits"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAA,MAAM,cAAcA,4CAAyB,EAAA;AAC7C,IAAM,MAAA,uBAAA,GAA0BC,QAAI,KAAK,CAAA;AACzC,IAAM,MAAA,wBAAA,GAA2BA,QAAI,KAAK,CAAA;AAE1C,IAAM,MAAA,SAAA,GAAYC,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}