{"version":3,"file":"useFocusable.mjs","sources":["../../../../src/composables/useFocusable.ts"],"sourcesContent":["import { ExtractPropTypes, Ref, onMounted } from 'vue'\nimport { blurElement, focusElement } from '../utils/focus'\nimport { unwrapEl } from '../utils/unwrapEl'\n\nexport const useFocusableProps = {\n  /** Focus element when mounted */\n  autofocus: { type: Boolean, default: false },\n}\n\n// TODO: Maybe accept a component here\nexport const useFocusable = (\n  el: Ref<HTMLElement | null | undefined>,\n  props: ExtractPropTypes<typeof useFocusableProps>,\n) => {\n  const focus = () => {\n    focusElement(unwrapEl(el.value))\n  }\n\n  const blur = () => {\n    blurElement(unwrapEl(el.value))\n  }\n\n  onMounted(() => {\n    if (props.autofocus) {\n      focus()\n    }\n  })\n\n  return {\n    focus,\n    blur,\n  }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA;AAAA,EAE/B,WAAW,EAAE,MAAM,SAAS,SAAS,MAAM;AAC7C;AAGa,MAAA,eAAe,CAC1B,IACA,UACG;AACH,QAAM,QAAQ,MAAM;AACL,iBAAA,SAAS,GAAG,KAAK,CAAC;AAAA,EAAA;AAGjC,QAAM,OAAO,MAAM;AACL,gBAAA,SAAS,GAAG,KAAK,CAAC;AAAA,EAAA;AAGhC,YAAU,MAAM;AACd,QAAI,MAAM,WAAW;AACb;IACR;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}