ErrorBoundary: Support recovering from errors in PanelChrome & PanelRenderer (#40785)

* ErrorBoundary: Support recovering from errors in PanelChrome & PanelRenderer

* Rename recover to dependencies

* Pushed an update that fixed test and adds new error mode to DebugPanel
This commit is contained in:
Torkel Ödegaard
2021-10-22 11:52:05 +02:00
committed by GitHub
parent 5af8d7de07
commit a091d35f11
9 changed files with 133 additions and 50 deletions

View File

@@ -13,18 +13,17 @@ export class DebugPanel extends Component<Props> {
render() {
const { options } = this.props;
if (options.mode === DebugMode.Events) {
return <EventBusLoggerPanel eventBus={this.props.eventBus} />;
switch (options.mode) {
case DebugMode.Events:
return <EventBusLoggerPanel eventBus={this.props.eventBus} />;
case DebugMode.Cursor:
return <CursorView eventBus={this.props.eventBus} />;
case DebugMode.State:
return <StateView {...this.props} />;
case DebugMode.ThrowError:
throw new Error('I failed you and for that i am deeply sorry');
default:
return <RenderInfoViewer {...this.props} />;
}
if (options.mode === DebugMode.Cursor) {
return <CursorView eventBus={this.props.eventBus} />;
}
if (options.mode === DebugMode.State) {
return <StateView {...this.props} />;
}
return <RenderInfoViewer {...this.props} />;
}
}

View File

@@ -5,7 +5,7 @@ import { DebugMode, DebugPanelOptions } from './types';
export const plugin = new PanelPlugin<DebugPanelOptions>(DebugPanel).useFieldConfig().setPanelOptions((builder) => {
builder
.addRadio({
.addSelect({
path: 'mode',
name: 'Mode',
defaultValue: DebugMode.Render,
@@ -14,7 +14,9 @@ export const plugin = new PanelPlugin<DebugPanelOptions>(DebugPanel).useFieldCon
{ label: 'Render', value: DebugMode.Render },
{ label: 'Events', value: DebugMode.Events },
{ label: 'Cursor', value: DebugMode.Cursor },
{ label: 'Cursor', value: DebugMode.Cursor },
{ label: 'Share state', value: DebugMode.State },
{ label: 'Throw error', value: DebugMode.ThrowError },
],
},
})

View File

@@ -13,6 +13,7 @@ export enum DebugMode {
Events = 'events',
Cursor = 'cursor',
State = 'State',
ThrowError = 'ThrowError',
}
export interface DebugPanelOptions {