diff --git a/packages/splitview/src/api/api.ts b/packages/splitview/src/api/api.ts index 4c3b5ce41..dd9c79878 100644 --- a/packages/splitview/src/api/api.ts +++ b/packages/splitview/src/api/api.ts @@ -1,18 +1,22 @@ import { Emitter, Event } from '../events'; import { CompositeDisposable, IDisposable } from '../lifecycle'; -// anything that is serializable JSON should be valid here -type StateObject = +/** + * A valid JSON type + */ +export type StateObject = | number | string | boolean - | undefined | null | object | StateObject[] | { [key: string]: StateObject }; -interface State { +/** + * A JSON-serializable object + */ +export interface State { [key: string]: StateObject; } diff --git a/packages/splitview/src/groupview/panel/parts.ts b/packages/splitview/src/groupview/panel/parts.ts index 5c03e955a..7d1bec17b 100644 --- a/packages/splitview/src/groupview/panel/parts.ts +++ b/packages/splitview/src/groupview/panel/parts.ts @@ -25,14 +25,12 @@ export interface GroupPanelPartInitParameters } export interface PanelHeaderPart extends IPanel { - id: string; element: HTMLElement; init?(parameters: GroupPanelPartInitParameters); setVisible(isPanelVisible: boolean, isGroupVisible: boolean): void; } export interface PanelContentPart extends IPanel { - id: string; element: HTMLElement; setVisible(isPanelVisible: boolean, isGroupVisible: boolean): void; init?(parameters: GroupPanelPartInitParameters); @@ -49,7 +47,6 @@ export interface IGroupPanelInitParameters } export interface IGroupPanel extends IDisposable, IPanel { - id: string; header: PanelHeaderPart; content: PanelContentPart; group: IGroupview; diff --git a/packages/splitview/src/panel/types.ts b/packages/splitview/src/panel/types.ts index 2f9ce377b..efd62416d 100644 --- a/packages/splitview/src/panel/types.ts +++ b/packages/splitview/src/panel/types.ts @@ -1,15 +1,24 @@ +import { State } from '../api/api'; import { IDisposable } from '../lifecycle'; +/** + * A key-value object of anything that is a valid JavaScript Object. + */ +export interface Parameters { + [key: string]: any; +} + export interface PanelInitParameters { - params: { [index: string]: any }; - state?: { [index: string]: any }; + params: Parameters; + state?: State; } export interface PanelUpdateEvent { - params: { [index: string]: any }; + params: Parameters; } export interface IPanel extends IDisposable { + readonly id: string; init?(params: PanelInitParameters): void; layout?(width: number, height: number): void; update?(event: PanelUpdateEvent): void; diff --git a/packages/splitview/src/react/baseReactComponentView.tsx b/packages/splitview/src/react/baseReactComponentView.tsx index b88a8ebf8..d745ef557 100644 --- a/packages/splitview/src/react/baseReactComponentView.tsx +++ b/packages/splitview/src/react/baseReactComponentView.tsx @@ -11,7 +11,7 @@ export class BaseReactComponentGridView implements IPanel { private _element: HTMLElement; private part: ReactPart; - private params: { params: any }; + private params: PanelInitParameters; private _onDidChange: Emitter = new Emitter< number | undefined @@ -66,7 +66,7 @@ export class BaseReactComponentGridView } update(params: PanelUpdateEvent) { - this.params = { ...this.params.params, ...params }; + this.params = { ...this.params, params: params.params }; this.part.update(params); } diff --git a/packages/splitview/src/react/gridview/reactComponentGridView.ts b/packages/splitview/src/react/gridview/reactComponentGridView.ts index 78cdc338a..48960e090 100644 --- a/packages/splitview/src/react/gridview/reactComponentGridView.ts +++ b/packages/splitview/src/react/gridview/reactComponentGridView.ts @@ -1,5 +1,5 @@ import { ReactLayout } from '../dockview/dockview'; -import { PanelInitParameters, IPanel } from '../../panel/types'; +import { PanelInitParameters } from '../../panel/types'; import { IGridPanelComponentView } from '../../gridview/componentGridview'; import { FunctionOrValue } from '../../types'; import { BaseReactComponentGridView } from '../baseReactComponentView'; diff --git a/packages/splitview/src/react/splitview/reactComponentView.ts b/packages/splitview/src/react/splitview/reactComponentView.ts index 34a35abaf..628d159d5 100644 --- a/packages/splitview/src/react/splitview/reactComponentView.ts +++ b/packages/splitview/src/react/splitview/reactComponentView.ts @@ -1,7 +1,6 @@ import { IView } from '../../splitview/splitview'; import { ReactLayout } from '../dockview/dockview'; import { ISplitviewPanelProps } from './splitview'; -import { IPanel } from '../../panel/types'; import { BaseReactComponentGridView } from '../baseReactComponentView'; import { PanelApi } from '../../api/panelApi';