{"version":3,"sources":["../../src/wrapErrorBoundary/index.tsx"],"names":["jsx","ErrorBoundaryContext_default"],"mappings":";;;;;AAGA,IAAM,kBAAkB,MAAO,EAAA;AAE/B,IAAM,qBAAqB,MAAO,EAAA;AAElC,IAAM,wBAAwB,MAAO,EAAA;AAErC,IAAM,MAAM,MAAO,EAAA;AAGnB,IAAM,iBAAA,GAAoB,CAA6B,SAAoB,KAAA;AAZ3E,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAaE,EAAA,MAAM,EAAE,MAAA,EAAQ,iBAAmB,EAAA,oBAAA,KACjC,SAAU,CAAA,SAAA;AAGZ,EAAA,OAAO,eAAc,EACT,GAAA,SAAA,EAAA,EAAA,GAAA,GAAA,EAGA,EAEA,GAAA,eAAA,EAAA,EAAA,GAAA,kBAAA,EAEA,4BARS,EAAU,EAAA;AAAA,IAAxB,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,MAAU,IAAA,CAAA,EAAA,CAAA,uBACJ,GAAI,EAAA;AAEV,MAAA,IAAA,CAAU,EAAmB,CAAA,GAAA,MAAA;AAE7B,MAAA,IAAA,CAAU,EAAsB,CAAA,GAAA,iBAAA;AAEhC,MAAA,IAAA,CAAU,EAAyB,CAAA,GAAA,oBAAA;AAAA;AAAA,IAEnC,oBAAuB,GAAA;AACrB,MAAM,MAAA,GAAA,GAAM,KAAK,GAAG,CAAA;AAEpB,MAAM,MAAA,EAAA,GAAK,IAAI,MAAO,EAAA;AAEtB,MAAS,KAAA,IAAA,CAAA,GAAI,GAAI,CAAA,IAAA,EAAM,CAAO,EAAA,IAAA;AAC5B,QAAG,EAAA,CAAA,IAAA,GAAO,KAAM,EAAA;AAAA;AAGlB,MAAI,IAAA,IAAA,CAAK,qBAAqB,CAAG,EAAA;AAC/B,QAAA,IAAA,CAAK,qBAAqB,CAAE,EAAA;AAAA;AAC9B;AACF,IAEA,iBAAA,CAAkB,OAAY,SAAgB,EAAA;AAC5C,MAAM,MAAA,GAAA,GAAM,KAAK,GAAG,CAAA;AAEpB,MAAM,MAAA,EAAA,GAAK,IAAI,MAAO,EAAA;AAEtB,MAAS,KAAA,IAAA,CAAA,GAAI,GAAI,CAAA,IAAA,EAAM,CAAO,EAAA,IAAA;AAC5B,QAAG,EAAA,CAAA,IAAA,GAAO,KAAM,EAAA;AAAA;AAGlB,MAAA,GAAA,CAAI,KAAM,EAAA;AAEV,MAAI,IAAA,IAAA,CAAK,kBAAkB,CAAG,EAAA;AAC5B,QAAK,IAAA,CAAA,kBAAkB,CAAE,CAAA,KAAA,EAAO,SAAS,CAAA;AAAA;AAC3C;AACF,IAEA,MAAS,GAAA;AACP,MACE,uBAAAA,cAAA,CAACC,8CAAqB,CAAA,QAAA,EAArB,EAA8B,KAAA,EAAO,IAAK,CAAA,GAAG,CAC3C,EAAA,QAAA,EAAA,IAAA,CAAK,eAAe,CAAA,EACvB,EAAA,CAAA;AAAA;AAEJ,GACF;AACF,CAAA;AAEA,IAAO,yBAAQ,GAAA","file":"chunk-DVK6NZF4.cjs","sourcesContent":["import type { Component, ContextType } from 'react';\nimport ErrorBoundaryContext from '../utils/ErrorBoundaryContext';\n\nconst ORIGINAL_RENDER = Symbol();\n\nconst ORIGINAL_DID_CATCH = Symbol();\n\nconst ORIGINAL_WILL_UNMOUNT = Symbol();\n\nconst CTX = Symbol();\n\n/** A higher-order function that wraps a React class component with additional error boundary handling. */\nconst wrapErrorBoundary = <T extends typeof Component>(Component: T): T => {\n  const { render, componentDidCatch, componentWillUnmount } =\n    Component.prototype;\n\n  //@ts-expect-error\n  return class extends Component {\n    readonly [CTX]: NonNullable<ContextType<typeof ErrorBoundaryContext>> =\n      new Set();\n\n    readonly [ORIGINAL_RENDER] = render;\n\n    readonly [ORIGINAL_DID_CATCH] = componentDidCatch;\n\n    readonly [ORIGINAL_WILL_UNMOUNT] = componentWillUnmount;\n\n    componentWillUnmount() {\n      const ctx = this[CTX];\n\n      const it = ctx.values();\n\n      for (let i = ctx.size; i--; ) {\n        it.next().value();\n      }\n\n      if (this[ORIGINAL_WILL_UNMOUNT]) {\n        this[ORIGINAL_WILL_UNMOUNT]();\n      }\n    }\n\n    componentDidCatch(error: any, errorInfo: any) {\n      const ctx = this[CTX];\n\n      const it = ctx.values();\n\n      for (let i = ctx.size; i--; ) {\n        it.next().value();\n      }\n\n      ctx.clear();\n\n      if (this[ORIGINAL_DID_CATCH]) {\n        this[ORIGINAL_DID_CATCH](error, errorInfo);\n      }\n    }\n\n    render() {\n      return (\n        <ErrorBoundaryContext.Provider value={this[CTX]}>\n          {this[ORIGINAL_RENDER]()}\n        </ErrorBoundaryContext.Provider>\n      );\n    }\n  };\n};\n\nexport default wrapErrorBoundary;\n"]}