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
}
}