{"version":3,"file":"useFocus.mjs","sources":["../../../../src/composables/useFocus.ts"],"sourcesContent":["import { unwrapEl } from './../utils/unwrapEl'\nimport { focusElement, blurElement } from './../utils/focus'\nimport { ref, onMounted, onBeforeUnmount, Ref, Component, computed } from 'vue'\nimport { useEvent } from './useEvent'\nimport { useActiveElement } from './useActiveElement'\nimport { isNilValue } from '../utils/isNilValue'\n\nexport const useFocusEmits = ['focus', 'blur'] as const\n\nexport function useFocus (\n  el?: Ref<HTMLElement | null | undefined | Component>,\n  emit?: (event: 'focus' | 'blur', e?: Event) => void,\n) {\n  const activeElement = useActiveElement()\n  const isFocused = computed({\n    get: () => {\n      if (isNilValue(activeElement.value)) { return false }\n      if (isNilValue(el?.value)) { return false }\n\n      return activeElement.value === el?.value\n    },\n    set: (value) => {\n      if (value) {\n        focus()\n      } else {\n        blur()\n      }\n    },\n  })\n\n  const onFocus = (e?: Event) => {\n    emit?.('focus', e)\n  }\n\n  const onBlur = (e?: Event) => {\n    emit?.('blur', e)\n  }\n\n  const focus = (): void => {\n    if (!el?.value) { return }\n    focusElement(unwrapEl(el?.value))\n  }\n\n  const blur = (): void => {\n    if (!el?.value) { return }\n    blurElement(unwrapEl(el?.value))\n  }\n\n  useEvent('focus', onFocus, el)\n  useEvent('blur', onBlur, el)\n\n  return {\n    isFocused,\n    onFocus,\n    onBlur,\n    focus,\n    blur,\n  }\n}\n"],"names":[],"mappings":";;;;;;AAOa,MAAA,gBAAgB,CAAC,SAAS,MAAM;AAE7B,SAAA,SACd,IACA,MACA;AACA,QAAM,gBAAgB;AACtB,QAAM,YAAY,SAAS;AAAA,IACzB,KAAK,MAAM;AACL,UAAA,WAAW,cAAc,KAAK,GAAG;AAAS,eAAA;AAAA,MAAM;AAChD,UAAA,WAAW,yBAAI,KAAK,GAAG;AAAS,eAAA;AAAA,MAAM;AAEnC,aAAA,cAAc,WAAU,yBAAI;AAAA,IACrC;AAAA,IACA,KAAK,CAAC,UAAU;AACd,UAAI,OAAO;AACH;MAAA,OACD;AACA;MACP;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,UAAU,CAAC,MAAc;AAC7B,iCAAO,SAAS;AAAA,EAAC;AAGb,QAAA,SAAS,CAAC,MAAc;AAC5B,iCAAO,QAAQ;AAAA,EAAC;AAGlB,QAAM,QAAQ,MAAY;AACpB,QAAA,EAAC,yBAAI,QAAO;AAAE;AAAA,IAAO;AACZ,iBAAA,SAAS,yBAAI,KAAK,CAAC;AAAA,EAAA;AAGlC,QAAM,OAAO,MAAY;AACnB,QAAA,EAAC,yBAAI,QAAO;AAAE;AAAA,IAAO;AACb,gBAAA,SAAS,yBAAI,KAAK,CAAC;AAAA,EAAA;AAGxB,WAAA,SAAS,SAAS,EAAE;AACpB,WAAA,QAAQ,QAAQ,EAAE;AAEpB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}