/* eslint-disable */ // @ts-nocheck import { Component, type ComponentType, type FunctionComponent, type GetDerivedStateFromError, type ReactNode, } from "react"; import { createNamedContext } from "./createNamedContext"; import { useRequiredContext } from "./useRequiredContext"; export interface ErrorBoundaryContextValue { error?: Error; showBoundary: (error?: Error) => void; } const ErrorBoundaryContext = createNamedContext< ErrorBoundaryContextValue | undefined >("ErrorBoundaryContext", undefined); export const useErrorBoundary = () => useRequiredContext(ErrorBoundaryContext); export interface ErrorBoundaryProviderProps { children: ReactNode; } export interface ErrorBoundaryProviderState { error?: Error; } export class ErrorBoundaryProvider extends Component< ErrorBoundaryProviderProps, ErrorBoundaryProviderState > { state: ErrorBoundaryProviderState = {}; static getDerivedStateFromError: GetDerivedStateFromError< ErrorBoundaryProviderProps, ErrorBoundaryProviderState > = (error) => { return { error }; }; showBoundary = (error?: Error) => { this.setState({ error }); }; render() { return ( {this.props.children} ); } } export interface FallbackProps { error: Error; } export interface ErrorBoundaryFallbackProps { fallback: ComponentType; children: ReactNode; } export const ErrorBoundaryFallback: FunctionComponent< ErrorBoundaryFallbackProps > = ({ children, fallback: FallbackComponent }) => { const { error } = useErrorBoundary(); if (error) { return ; } return children; };