diff --git a/packages/dockview/src/react/dockview/dockview.tsx b/packages/dockview/src/react/dockview/dockview.tsx index c770a08f6..db401876a 100644 --- a/packages/dockview/src/react/dockview/dockview.tsx +++ b/packages/dockview/src/react/dockview/dockview.tsx @@ -11,28 +11,33 @@ import { DockviewPanelApi } from '../../api/groupPanelApi'; import { usePortalsLifecycle } from '../react'; import { DockviewApi } from '../../api/component.api'; import { ReactWatermarkPart } from './reactWatermarkPart'; -import { PanelCollection } from '../types'; +import { PanelCollection, PanelParameters } from '../types'; import { watchElementResize } from '../../dom'; import { IContentRenderer, ITabRenderer } from '../../groupview/types'; -export interface IGroupPanelBaseProps { - api: DockviewPanelApi; - containerApi: DockviewApi; - [key: string]: any; +export interface PanelCollection1 { + [name: string]: React.FunctionComponent; } -export interface IDockviewPanelProps extends IGroupPanelBaseProps { - [key: string]: any; +export interface IGroupPanelBaseProps> + extends PanelParameters { + api: DockviewPanelApi; + containerApi: DockviewApi; +} + +export interface IDockviewPanelProps> + extends IGroupPanelBaseProps { + // noop } export interface DockviewReadyEvent { api: DockviewApi; } -export interface IWatermarkPanelProps { +export interface IWatermarkPanelProps> + extends PanelParameters { containerApi: DockviewApi; close(): void; - [key: string]: any; } export interface IDockviewReactProps { diff --git a/packages/dockview/src/react/dockview/reactContentPart.ts b/packages/dockview/src/react/dockview/reactContentPart.ts index b7cac6f59..9fb8d975e 100644 --- a/packages/dockview/src/react/dockview/reactContentPart.ts +++ b/packages/dockview/src/react/dockview/reactContentPart.ts @@ -102,7 +102,7 @@ export class ReactPanelContentPart implements IContentRenderer { this.reactPortalStore, this.component, { - ...parameters.params, + params: parameters.params, api: parameters.api, containerApi: parameters.containerApi, }, diff --git a/packages/dockview/src/react/dockview/reactHeaderPart.ts b/packages/dockview/src/react/dockview/reactHeaderPart.ts index fd289dbee..e27a03d96 100644 --- a/packages/dockview/src/react/dockview/reactHeaderPart.ts +++ b/packages/dockview/src/react/dockview/reactHeaderPart.ts @@ -37,7 +37,7 @@ export class ReactPanelHeaderPart implements ITabRenderer { this.reactPortalStore, this.component, { - ...parameters.params, + params: parameters.params, api: parameters.api, containerApi: parameters.containerApi, } diff --git a/packages/dockview/src/react/dockview/reactWatermarkPart.ts b/packages/dockview/src/react/dockview/reactWatermarkPart.ts index 68dda28df..704e6f821 100644 --- a/packages/dockview/src/react/dockview/reactWatermarkPart.ts +++ b/packages/dockview/src/react/dockview/reactWatermarkPart.ts @@ -38,7 +38,7 @@ export class ReactWatermarkPart implements WatermarkPart { this.reactPortalStore, this.component, { - ...parameters.params, + params: parameters.params, api: parameters.api, containerApi: parameters.containerApi, close: () => { diff --git a/packages/dockview/src/react/dockview/v2/reactContentRenderer.ts b/packages/dockview/src/react/dockview/v2/reactContentRenderer.ts index df263a04f..7196063dc 100644 --- a/packages/dockview/src/react/dockview/v2/reactContentRenderer.ts +++ b/packages/dockview/src/react/dockview/v2/reactContentRenderer.ts @@ -67,10 +67,9 @@ export class ReactContentRenderer implements IContentRenderer { this.reactPortalStore, this.component, { - ...parameters.params, + params: parameters.params, api: parameters.api, containerApi: parameters.containerApi, - setActionsbar: () => null as any, } ); } diff --git a/packages/dockview/src/react/gridview/gridview.tsx b/packages/dockview/src/react/gridview/gridview.tsx index c803fb5a0..18ec9e382 100644 --- a/packages/dockview/src/react/gridview/gridview.tsx +++ b/packages/dockview/src/react/gridview/gridview.tsx @@ -8,17 +8,17 @@ import { Orientation } from '../../splitview/core/splitview'; import { ReactGridPanelView } from './view'; import { usePortalsLifecycle } from '../react'; import { GridviewApi } from '../../api/component.api'; -import { PanelCollection } from '../types'; +import { PanelCollection, PanelParameters } from '../types'; import { watchElementResize } from '../../dom'; export interface GridviewReadyEvent { api: GridviewApi; } -export interface IGridviewPanelProps { +export interface IGridviewPanelProps> + extends PanelParameters { api: GridviewPanelApi; containerApi: GridviewApi; - [key: string]: any; } export interface IGridviewReactProps { diff --git a/packages/dockview/src/react/gridview/view.ts b/packages/dockview/src/react/gridview/view.ts index 01aafd5b7..22ca05f1c 100644 --- a/packages/dockview/src/react/gridview/view.ts +++ b/packages/dockview/src/react/gridview/view.ts @@ -21,7 +21,7 @@ export class ReactGridPanelView extends GridviewPanel { this.reactPortalStore, this.reactComponent, { - ...(this.params?.params || {}), + params: this.params?.params || {}, api: this.api, containerApi: (this.params as GridviewInitParameters) .containerApi, diff --git a/packages/dockview/src/react/paneview/paneview.tsx b/packages/dockview/src/react/paneview/paneview.tsx index a00689717..91dd63821 100644 --- a/packages/dockview/src/react/paneview/paneview.tsx +++ b/packages/dockview/src/react/paneview/paneview.tsx @@ -7,18 +7,18 @@ import { import { usePortalsLifecycle } from '../react'; import { PaneviewApi } from '../../api/component.api'; import { PanePanelSection } from './view'; -import { PanelCollection } from '../types'; +import { PanelCollection, PanelParameters } from '../types'; import { watchElementResize } from '../../dom'; export interface PaneviewReadyEvent { api: PaneviewApi; } -export interface IPaneviewPanelProps { +export interface IPaneviewPanelProps> + extends PanelParameters { api: PaneviewPanelApi; containerApi: PaneviewApi; title: string; - [key: string]: any; } export interface IPaneviewReactProps { diff --git a/packages/dockview/src/react/paneview/view.tsx b/packages/dockview/src/react/paneview/view.tsx index 7baae1de0..06624a873 100644 --- a/packages/dockview/src/react/paneview/view.tsx +++ b/packages/dockview/src/react/paneview/view.tsx @@ -31,7 +31,7 @@ export class PanePanelSection implements IPaneBodyPart { this.reactPortalStore, this.component, { - ...parameters.params, + params: parameters.params, api: parameters.api, title: parameters.title, containerApi: parameters.containerApi, diff --git a/packages/dockview/src/react/splitview/splitview.tsx b/packages/dockview/src/react/splitview/splitview.tsx index 862342d13..738dad84c 100644 --- a/packages/dockview/src/react/splitview/splitview.tsx +++ b/packages/dockview/src/react/splitview/splitview.tsx @@ -7,7 +7,7 @@ import { } from '../../splitview/splitviewComponent'; import { Orientation } from '../../splitview/core/splitview'; import { usePortalsLifecycle } from '../react'; -import { PanelCollection } from '../types'; +import { PanelCollection, PanelParameters } from '../types'; import { ReactPanelView } from './view'; import { watchElementResize } from '../../dom'; @@ -15,10 +15,10 @@ export interface SplitviewReadyEvent { api: SplitviewApi; } -export interface ISplitviewPanelProps { +export interface ISplitviewPanelProps> + extends PanelParameters { api: SplitviewPanelApi; containerApi: SplitviewApi; - [key: string]: any; } export interface ISplitviewReactProps { diff --git a/packages/dockview/src/react/splitview/view.ts b/packages/dockview/src/react/splitview/view.ts index 5ba502412..fba1bbb7b 100644 --- a/packages/dockview/src/react/splitview/view.ts +++ b/packages/dockview/src/react/splitview/view.ts @@ -19,7 +19,7 @@ export class ReactPanelView extends SplitviewPanel { this.reactPortalStore, this.reactComponent, { - ...(this.params?.params || {}), + params: this.params?.params || {}, api: this.api, containerApi: (this.params as PanelViewInitParameters) .containerApi, diff --git a/packages/dockview/src/react/types.ts b/packages/dockview/src/react/types.ts index 8d9e2ff6f..d5b7b07a3 100644 --- a/packages/dockview/src/react/types.ts +++ b/packages/dockview/src/react/types.ts @@ -1,3 +1,9 @@ +import * as React from 'react'; + export interface PanelCollection { [name: string]: React.FunctionComponent; } + +export interface PanelParameters> { + params: T; +}