|
@@ -25,10 +25,13 @@ export interface PanelEditorProps<T = any> {
|
|
|
onChange: (options: T) => void;
|
|
onChange: (options: T) => void;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+export type PreservePanelOptionsHandler<TOptions> = (pluginId: string, prevOptions: any) => Partial<TOptions>;
|
|
|
|
|
+
|
|
|
export class ReactPanelPlugin<TOptions = any> {
|
|
export class ReactPanelPlugin<TOptions = any> {
|
|
|
panel: ComponentClass<PanelProps<TOptions>>;
|
|
panel: ComponentClass<PanelProps<TOptions>>;
|
|
|
editor?: ComponentClass<PanelEditorProps<TOptions>>;
|
|
editor?: ComponentClass<PanelEditorProps<TOptions>>;
|
|
|
defaults?: TOptions;
|
|
defaults?: TOptions;
|
|
|
|
|
+ preserveOptions?: PreservePanelOptionsHandler<TOptions>;
|
|
|
|
|
|
|
|
constructor(panel: ComponentClass<PanelProps<TOptions>>) {
|
|
constructor(panel: ComponentClass<PanelProps<TOptions>>) {
|
|
|
this.panel = panel;
|
|
this.panel = panel;
|
|
@@ -41,6 +44,10 @@ export class ReactPanelPlugin<TOptions = any> {
|
|
|
setDefaults(defaults: TOptions) {
|
|
setDefaults(defaults: TOptions) {
|
|
|
this.defaults = defaults;
|
|
this.defaults = defaults;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ setPreserveOptionsHandler(handler: PreservePanelOptionsHandler<TOptions>) {
|
|
|
|
|
+ this.preserveOptions = handler;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
export interface PanelSize {
|
|
export interface PanelSize {
|