{"version":3,"file":"useBlur.mjs","sources":["../../../../../../src/components/va-modal/hooks/useBlur.ts"],"sourcesContent":["import { Ref, getCurrentInstance, watchEffect, onBeforeUnmount } from 'vue'\nimport { useDocument, useCurrentComponentId } from '../../../composables'\n\nconst openedModals: string[] = []\n\nexport const useBlur = (shouldBlur: Ref<boolean>, isModalShown: Ref<boolean>) => {\n  const id = useCurrentComponentId()\n  const document = useDocument()\n\n  const blur = () => {\n    if (openedModals.includes(id)) { return }\n    openedModals.push(id)\n    document.value?.body.classList.add('va-modal-overlay-background--blurred')\n  }\n\n  const removeBlur = () => {\n    const modalIndex = openedModals.indexOf(id)\n    if (modalIndex === -1) { return } // Modal is closed\n\n    openedModals.splice(modalIndex, 1) // Remove modal from opened modals\n    if (openedModals.length === 0) {\n      document.value?.body.classList.remove('va-modal-overlay-background--blurred')\n    }\n  }\n\n  watchEffect(() => {\n    if (!shouldBlur.value) { return }\n\n    if (isModalShown.value) {\n      blur()\n    } else {\n      removeBlur()\n    }\n  })\n\n  onBeforeUnmount(removeBlur)\n}\n"],"names":[],"mappings":";;;AAGA,MAAM,eAAyB,CAAA;AAElB,MAAA,UAAU,CAAC,YAA0B,iBAA+B;AAC/E,QAAM,KAAK;AACX,QAAM,WAAW;AAEjB,QAAM,OAAO,MAAM;;AACb,QAAA,aAAa,SAAS,EAAE,GAAG;AAAE;AAAA,IAAO;AACxC,iBAAa,KAAK,EAAE;AACpB,mBAAS,UAAT,mBAAgB,KAAK,UAAU,IAAI;AAAA,EAAsC;AAG3E,QAAM,aAAa,MAAM;;AACjB,UAAA,aAAa,aAAa,QAAQ,EAAE;AAC1C,QAAI,eAAe,IAAI;AAAE;AAAA,IAAO;AAEnB,iBAAA,OAAO,YAAY,CAAC;AAC7B,QAAA,aAAa,WAAW,GAAG;AAC7B,qBAAS,UAAT,mBAAgB,KAAK,UAAU,OAAO;AAAA,IACxC;AAAA,EAAA;AAGF,cAAY,MAAM;AACZ,QAAA,CAAC,WAAW,OAAO;AAAE;AAAA,IAAO;AAEhC,QAAI,aAAa,OAAO;AACjB;IAAA,OACA;AACM;IACb;AAAA,EAAA,CACD;AAED,kBAAgB,UAAU;AAC5B;"}