{"version":3,"file":"focus-guards.mjs","sources":["../src/focus-guards/FocusGuards.ts"],"sourcesContent":["import { onMounted, onUnmounted } from 'vue'\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0\n\nexport function useFocusGuards() {\n  onMounted(() => {\n    const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]')\n    document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? createFocusGuard())\n    document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? createFocusGuard())\n    count++\n  })\n\n  onUnmounted(() => {\n    if (count === 1) {\n      document.querySelectorAll('[data-radix-focus-guard]').forEach(node => node.remove())\n    }\n    count--\n  })\n}\n\nfunction createFocusGuard() {\n  const element = document.createElement('span')\n  element.setAttribute('data-radix-focus-guard', '')\n  element.tabIndex = 0\n  element.style.outline = 'none'\n  element.style.opacity = '0'\n  element.style.position = 'fixed'\n  element.style.pointerEvents = 'none'\n  return element\n}\n"],"names":[],"mappings":";;AAGA,IAAI,KAAQ,GAAA,CAAA;AAEL,SAAS,cAAiB,GAAA;AAC/B,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,QAAS,CAAA,gBAAA,CAAiB,0BAA0B,CAAA;AACvE,IAAA,QAAA,CAAS,KAAK,qBAAsB,CAAA,YAAA,EAAc,WAAW,CAAC,CAAA,IAAK,kBAAkB,CAAA;AACrF,IAAA,QAAA,CAAS,KAAK,qBAAsB,CAAA,WAAA,EAAa,WAAW,CAAC,CAAA,IAAK,kBAAkB,CAAA;AACpF,IAAA,KAAA,EAAA;AAAA,GACD,CAAA;AAED,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,IAAI,UAAU,CAAG,EAAA;AACf,MAAA,QAAA,CAAS,iBAAiB,0BAA0B,CAAA,CAAE,QAAQ,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AAErF,IAAA,KAAA,EAAA;AAAA,GACD,CAAA;AACH;AAEA,SAAS,gBAAmB,GAAA;AAC1B,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA;AAC7C,EAAQ,OAAA,CAAA,YAAA,CAAa,0BAA0B,EAAE,CAAA;AACjD,EAAA,OAAA,CAAQ,QAAW,GAAA,CAAA;AACnB,EAAA,OAAA,CAAQ,MAAM,OAAU,GAAA,MAAA;AACxB,EAAA,OAAA,CAAQ,MAAM,OAAU,GAAA,GAAA;AACxB,EAAA,OAAA,CAAQ,MAAM,QAAW,GAAA,OAAA;AACzB,EAAA,OAAA,CAAQ,MAAM,aAAgB,GAAA,MAAA;AAC9B,EAAO,OAAA,OAAA;AACT;;;;"}