{"version":3,"file":"use-focus-trap.mjs","names":[],"sources":["../../../../../../../packages/components/popper/src/composables/use-focus-trap.ts"],"sourcesContent":["import { onBeforeUnmount, 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  onBeforeUnmount(() => {\n    focusStartRef.value = undefined\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"],"mappings":";;AAKA,MAAa,6BACX,OACA,SACG;CACH,MAAM,UAAU,IAAI,MAAM;CAC1B,MAAM,gBAAgB,KAA0C;CAEhE,MAAM,4BAA4B;EAChC,KAAK,QAAQ;;CAGf,MAAM,wBAAwB,UAAuB;EACnD,IAAI,MAAM,QAAQ,gBAAgB,WAAW;GAC3C,cAAc,QAAQ;GACtB,KAAK,OAAO;;;CAIhB,MAAM,iBAAiB,UAAsB;EAC3C,IAAI,MAAM,WAAW,CAAC,QAAQ,OAAO;GACnC,IAAI,MAAM,QACR,cAAc,QAAQ,MAAM;GAE9B,QAAQ,QAAQ;;;CAIpB,MAAM,uBAAuB,UAAuB;EAClD,IAAI,CAAC,MAAM,UAAU;GACnB,IAAI,MAAM,OAAO,gBAAgB,WAC/B,MAAM,gBAAgB;GAExB,QAAQ,QAAQ;;;CAIpB,MAAM,2BAA2B;EAC/B,QAAQ,QAAQ;EAChB,KAAK,QAAQ;;CAGf,sBAAsB;EACpB,cAAc,QAAQ,KAAA;GACtB;CAEF,OAAO;EACL;EACA;EAEA;EACA;EACA;EACA;EACA;EACD"}