import React, { Component } from 'react' import { createBanner } from './Banner' import { Button } from './buttons/Button' import { Code } from './Code' import { Space } from './Space' import { SubTitle } from './text/SubTitle' export class ErrorBoundary extends Component<{ name: string; displayInline?: boolean }> { state = { error: null, } handle = createBanner() componentDidCatch(error) { console.warn('ErrorBoundary caught error', this.props.name) console.log(error.stack) this.handle.set({ type: 'error', title: `Error in ${this.props.name}`, message: ( <> {error.message} {error.stack} ), }) this.setState({ error }) } render() { if (this.state.error) { return ( ) } return this.props.children } }