{"version":3,"file":"use-focus-trap.mjs","sources":["../../../../../../../../packages/components/popper/src/composables/use-focus-trap.ts"],"sourcesContent":["import { ref } from 'vue'\n\nimport type { SetupContext } from 'vue'\nimport type { PopperContentEmits, PopperContentProps } from '../content'\n\nexport const usePopperContentFocusTrap = (\n  props: PopperContentProps,\n  emit: SetupContext<PopperContentEmits>['emit']\n) => {\n  const trapped = ref(false)\n  const focusStartRef = ref<'container' | 'first' | HTMLElement>()\n\n  const onFocusAfterTrapped = () => {\n    emit('focus')\n  }\n\n  const onFocusAfterReleased = (event: CustomEvent) => {\n    if (event.detail?.focusReason !== 'pointer') {\n      focusStartRef.value = 'first'\n      emit('blur')\n    }\n  }\n\n  const onFocusInTrap = (event: FocusEvent) => {\n    if (props.visible && !trapped.value) {\n      if (event.target) {\n        focusStartRef.value = event.target as typeof focusStartRef.value\n      }\n      trapped.value = true\n    }\n  }\n\n  const onFocusoutPrevented = (event: CustomEvent) => {\n    if (!props.trapping) {\n      if (event.detail.focusReason === 'pointer') {\n        event.preventDefault()\n      }\n      trapped.value = false\n    }\n  }\n\n  const onReleaseRequested = () => {\n    trapped.value = false\n    emit('close')\n  }\n\n  return {\n    focusStartRef,\n    trapped,\n\n    onFocusAfterReleased,\n    onFocusAfterTrapped,\n    onFocusInTrap,\n    onFocusoutPrevented,\n    onReleaseRequested,\n  }\n}\n\nexport type UsePopperContentFocusTrapReturn = ReturnType<\n  typeof usePopperContentFocusTrap\n>\n"],"names":[],"mappings":";;AAKa,MAAA,yBAAA,GAA4B,CACvC,KAAA,EACA,IACG,KAAA;AACH,EAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,EAAA,MAAM,gBAAgB,GAAyC,EAAA,CAAA;AAE/D,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAM,MAAA,oBAAA,GAAuB,CAAC,KAAuB,KAAA;AAhBvD,IAAA,IAAA,EAAA,CAAA;AAiBI,IAAA,IAAA,CAAA,CAAI,EAAM,GAAA,KAAA,CAAA,MAAA,KAAN,IAAc,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA,MAAgB,SAAW,EAAA;AAC3C,MAAA,aAAA,CAAc,KAAQ,GAAA,OAAA,CAAA;AACtB,MAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,KACb;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAAsB,KAAA;AAC3C,IAAA,IAAI,KAAM,CAAA,OAAA,IAAW,CAAC,OAAA,CAAQ,KAAO,EAAA;AACnC,MAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,QAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,MAAA,CAAA;AAAA,OAC9B;AACA,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAAA,KAClB;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,mBAAA,GAAsB,CAAC,KAAuB,KAAA;AAClD,IAAI,IAAA,CAAC,MAAM,QAAU,EAAA;AACnB,MAAI,IAAA,KAAA,CAAM,MAAO,CAAA,WAAA,KAAgB,SAAW,EAAA;AAC1C,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,OACvB;AACA,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAAA,KAClB;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAChB,IAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,OAAA;AAAA,IAEA,oBAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,GACF,CAAA;AACF;;;;"}