{"version":3,"sources":["../../src/useScript/useScript.ts"],"names":["useEffect","useState","cachedScripts","useScript","src","state","setState","script","onScriptLoad","onScriptError","scriptIndex","useScript_default"],"mappings":"8BAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAGpC,MAAMC,EAA0B,CAAC,EAE3BC,EAAuBC,GAAO,CAClC,KAAM,CAACC,EAAOC,CAAQ,EAAIL,EAAS,CACjC,OAAQ,GACR,MAAO,EACT,CAAC,EAED,OAAAD,EAAU,IAAM,CACd,GAAIE,EAAc,SAASE,CAAG,EAAG,CAC/BE,EAAS,CACP,OAAQ,GACR,MAAO,EACT,CAAC,EAED,WACK,CACLJ,EAAc,KAAKE,CAAG,EAEtB,MAAMG,EAAS,SAAS,cAAc,QAAQ,EAE9CA,EAAO,IAAMH,EAEbG,EAAO,MAAQ,GAEf,MAAMC,EAAe,IAAM,CACzBF,EAAS,CACP,OAAQ,GACR,MAAO,EACT,CAAC,CACH,EAEMG,EAAgB,IAAM,CAC1B,MAAMC,EAAcR,EAAc,QAAQE,CAAG,EAEzCM,IAAgB,IAClBR,EAAc,OAAOQ,EAAa,CAAC,EAGrCH,EAAO,OAAO,EAEdD,EAAS,CACP,OAAQ,GACR,MAAO,EACT,CAAC,CACH,EAEA,OAAAC,EAAO,iBAAiB,OAAQC,CAAY,EAE5CD,EAAO,iBAAiB,QAASE,CAAa,EAE9C,SAAS,KAAK,YAAYF,CAAM,EAEzB,IAAM,CACXA,EAAO,oBAAoB,OAAQC,CAAY,EAE/CD,EAAO,oBAAoB,QAASE,CAAa,CACnD,EAEJ,EAAG,CAACL,CAAG,CAAC,EAED,CAACC,EAAM,OAAQA,EAAM,KAAK,CACnC,EAEA,IAAOM,EAAQR","sourcesContent":["import { useEffect, useState } from 'react';\nimport type { UseScript } from './types';\n\nconst cachedScripts: string[] = [];\n\nconst useScript: UseScript = src => {\n  const [state, setState] = useState({\n    loaded: false,\n    error: false\n  });\n\n  useEffect(() => {\n    if (cachedScripts.includes(src)) {\n      setState({\n        loaded: true,\n        error: false\n      });\n\n      return;\n    } else {\n      cachedScripts.push(src);\n\n      const script = document.createElement('script');\n\n      script.src = src;\n\n      script.async = true;\n\n      const onScriptLoad = () => {\n        setState({\n          loaded: true,\n          error: false\n        });\n      };\n\n      const onScriptError = () => {\n        const scriptIndex = cachedScripts.indexOf(src);\n\n        if (scriptIndex !== -1) {\n          cachedScripts.splice(scriptIndex, 1);\n        }\n\n        script.remove();\n\n        setState({\n          loaded: false,\n          error: true\n        });\n      };\n\n      script.addEventListener('load', onScriptLoad);\n\n      script.addEventListener('error', onScriptError);\n\n      document.body.appendChild(script);\n\n      return () => {\n        script.removeEventListener('load', onScriptLoad);\n\n        script.removeEventListener('error', onScriptError);\n      };\n    }\n  }, [src]);\n\n  return [state.loaded, state.error];\n};\n\nexport default useScript;\n"]}