{"version":3,"sources":["../../src/useAsyncLoading/useAsyncLoading.ts"],"names":["useCallback","useState","useAsyncLoading","func","onError","onSuccess","deps","loading","setLoading","error","setError","args","__async","res","e","useAsyncLoading_default"],"mappings":"0CAAA,OAAS,eAAAA,MAAmB,QAC5B,OAAOC,MAAc,yCAGrB,MAAMC,EAAmC,CAAC,CAAE,KAAAC,EAAM,QAAAC,EAAS,UAAAC,CAAU,EAAGC,IAAS,CAC/E,KAAM,CAACC,EAASC,CAAU,EAAIP,EAAS,EAAK,EAEtC,CAACQ,EAAOC,CAAQ,EAAIT,EAA4B,MAAS,EA8B/D,MAAO,CA5BaD,EAClB,IAAUW,IAAgBC,EAAA,wBACxB,GAAI,CAACT,EACH,OAGFK,EAAW,EAAI,EAEf,IAAIK,EAEJ,GAAI,CACFA,EAAO,MAAMV,GAAA,YAAAA,EAAO,GAAGQ,GAEvBN,GAAA,MAAAA,EAAYQ,EACd,OAASC,EAAP,CACAJ,EAASI,CAAC,EAEVV,GAAA,MAAAA,EAAUU,EACZ,QAAE,CACAN,EAAW,EAAK,CAClB,CAEA,OAAOK,CACT,GAEAP,GAAA,KAAAA,EAAQ,CAACH,CAAI,CACf,EAEiDI,EAASE,CAAK,CACjE,EAEA,IAAOM,EAAQb","sourcesContent":["import { useCallback } from 'react';\nimport useState from '../useStateIfMounted/useStateIfMounted';\nimport type { UseAsyncLoading } from './types';\n\nconst useAsyncLoading: UseAsyncLoading = ({ func, onError, onSuccess }, deps) => {\n  const [loading, setLoading] = useState(false);\n\n  const [error, setError] = useState<undefined | Error>(undefined);\n\n  const wrappedFunc = useCallback(\n    async (...args: any[]) => {\n      if (!func) {\n        return;\n      }\n\n      setLoading(true);\n\n      let res;\n\n      try {\n        res = (await func?.(...args)) as Awaited<ReturnType<typeof func>>;\n\n        onSuccess?.(res);\n      } catch (e: any) {\n        setError(e);\n\n        onError?.(e);\n      } finally {\n        setLoading(false);\n      }\n\n      return res;\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    deps ?? [func]\n  );\n\n  return [wrappedFunc as NonNullable<typeof func>, loading, error];\n};\n\nexport default useAsyncLoading;\n"]}