1{"version":3,"file":"useRejectionHandler.js","sourceRoot":"","sources":["../../src/error-overlay/useRejectionHandler.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,oFAA4D;AAE5D,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,OAAO,GAAG,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI;YACF,qEAAqE;YACrE,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC;YAC3C,qEAAqE;YACrE,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;YAC9B,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC;SAChC;QAAC,MAAM,GAAE;QACV,OAAO,GAAG,EAAE;YACV,IAAI;gBACF,qEAAqE;gBACrE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;aACzC;YAAC,MAAM,GAAE;QACZ,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,CAAC;AAED,SAAgB,mBAAmB;IACjC,MAAM,QAAQ,GAAG,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAEvB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,SAAS,gBAAgB,CAAC,EAAc;YACtC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAExB,MAAM,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC1E,OAAO;aACR;YAED,2BAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,SAAS,oBAAoB,CAAC,EAAyB;YACrD,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAExB,MAAM,MAAM,GAAG,EAAE,EAAE,MAAM,CAAC;YAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC7E,OAAO;aACR;YAED,2BAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACtD,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,QAAQ,CAAC;AAClB,CAAC;AArCD,kDAqCC","sourcesContent":["import React from 'react';\n\nimport ExceptionsManager from './modules/ExceptionsManager';\n\nfunction useStackTraceLimit(limit: number) {\n  const current = React.useRef(0);\n  React.useEffect(() => {\n    try {\n      // @ts-expect-error: StackTraceLimit is not defined in the Error type\n      const currentLimit = Error.stackTraceLimit;\n      // @ts-expect-error: StackTraceLimit is not defined in the Error type\n      Error.stackTraceLimit = limit;\n      current.current = currentLimit;\n    } catch {}\n    return () => {\n      try {\n        // @ts-expect-error: StackTraceLimit is not defined in the Error type\n        Error.stackTraceLimit = current.current;\n      } catch {}\n    };\n  }, [limit]);\n}\n\nexport function useRejectionHandler() {\n  const hasError = React.useRef(false);\n\n  useStackTraceLimit(35);\n\n  React.useEffect(() => {\n    function onUnhandledError(ev: ErrorEvent) {\n      hasError.current = true;\n\n      const error = ev?.error;\n      if (!error || !(error instanceof Error) || typeof error.stack !== 'string') {\n        return;\n      }\n\n      ExceptionsManager.handleException(error);\n    }\n\n    function onUnhandledRejection(ev: PromiseRejectionEvent) {\n      hasError.current = true;\n\n      const reason = ev?.reason;\n      if (!reason || !(reason instanceof Error) || typeof reason.stack !== 'string') {\n        return;\n      }\n\n      ExceptionsManager.handleException(reason);\n    }\n\n    window.addEventListener('unhandledrejection', onUnhandledRejection);\n    window.addEventListener('error', onUnhandledError);\n    return () => {\n      window.removeEventListener('error', onUnhandledError);\n      window.removeEventListener('unhandledrejection', onUnhandledRejection);\n    };\n  }, []);\n\n  return hasError;\n}\n"]}