From 454542b72995b198b983620435c100cbe2391c67 Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Wed, 15 Mar 2023 21:26:34 +0300 Subject: [PATCH] feat: adjust watermark component props --- .../dockview/components/watermark/watermark.ts | 16 ++++++---------- .../src/dockview/dockviewComponent.ts | 3 --- .../src/dockview/dockviewGroupPanelModel.ts | 4 +--- packages/dockview-core/src/dockview/types.ts | 11 ++++++++--- .../src/dockview/reactWatermarkPart.ts | 18 +++++++++++------- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/dockview-core/src/dockview/components/watermark/watermark.ts b/packages/dockview-core/src/dockview/components/watermark/watermark.ts index a726c7bb3..48664bec7 100644 --- a/packages/dockview-core/src/dockview/components/watermark/watermark.ts +++ b/packages/dockview-core/src/dockview/components/watermark/watermark.ts @@ -1,4 +1,8 @@ -import { GroupPanelPartInitParameters, IWatermarkRenderer } from '../../types'; +import { + GroupPanelPartInitParameters, + IWatermarkRenderer, + WatermarkRendererInitParameters, +} from '../../types'; import { addDisposableListener } from '../../../events'; import { toggleClass } from '../../../dom'; import { CompositeDisposable } from '../../../lifecycle'; @@ -69,15 +73,7 @@ export class Watermark // noop } - init(params: GroupPanelPartInitParameters) { - this.params = params; - - this.addDisposables( - this.params.containerApi.onDidLayoutChange(() => { - this.render(); - }) - ); - + init(_params: WatermarkRendererInitParameters) { this.render(); } diff --git a/packages/dockview-core/src/dockview/dockviewComponent.ts b/packages/dockview-core/src/dockview/dockviewComponent.ts index 4ecd85e6b..5ffbf99c2 100644 --- a/packages/dockview-core/src/dockview/dockviewComponent.ts +++ b/packages/dockview-core/src/dockview/dockviewComponent.ts @@ -632,9 +632,6 @@ export class DockviewComponent this.watermark.init({ containerApi: new DockviewApi(this), - params: {}, - title: '', - api: null as any, }); const watermarkContainer = document.createElement('div'); diff --git a/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts b/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts index 30229eb02..e917f2c42 100644 --- a/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts +++ b/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts @@ -670,9 +670,7 @@ export class DockviewGroupPanelModel const watermark = this.accessor.createWatermarkComponent(); watermark.init({ containerApi: new DockviewApi(this.accessor), - params: {}, - title: '', - api: null as any, + group: this.groupPanel, }); this.watermark = watermark; diff --git a/packages/dockview-core/src/dockview/types.ts b/packages/dockview-core/src/dockview/types.ts index 6dcd6f13f..107da33ed 100644 --- a/packages/dockview-core/src/dockview/types.ts +++ b/packages/dockview-core/src/dockview/types.ts @@ -9,7 +9,7 @@ import { import { DockviewApi } from '../api/component.api'; import { Event } from '../events'; import { Optional } from '../types'; -import { DockviewGroupPanel } from './dockviewGroupPanel'; +import { DockviewGroupPanel, IDockviewGroupPanel } from './dockviewGroupPanel'; export enum DockviewDropTargets { Tab, @@ -34,13 +34,18 @@ export interface GroupPanelContentPartInitParameters tab: ITabRenderer; } +export interface WatermarkRendererInitParameters { + containerApi: DockviewApi; + group?: IDockviewGroupPanel; +} + export interface IWatermarkRenderer extends Optional< - Omit, + Omit, 'dispose' | 'update' | 'layout' | 'toJSON' > { readonly element: HTMLElement; - init: (params: GroupPanelPartInitParameters) => void; + init: (params: WatermarkRendererInitParameters) => void; updateParentGroup(group: DockviewGroupPanel, visible: boolean): void; } diff --git a/packages/dockview/src/dockview/reactWatermarkPart.ts b/packages/dockview/src/dockview/reactWatermarkPart.ts index e1f16066a..940bf6bec 100644 --- a/packages/dockview/src/dockview/reactWatermarkPart.ts +++ b/packages/dockview/src/dockview/reactWatermarkPart.ts @@ -6,9 +6,14 @@ import { DockviewGroupPanel, GroupPanelPartInitParameters, IWatermarkRenderer, + WatermarkRendererInitParameters, + DockviewApi, + IDockviewGroupPanel, } from 'dockview-core'; -export interface IWatermarkPanelProps extends IGroupPanelBaseProps { +export interface IWatermarkPanelProps { + containerApi: DockviewApi; + group?: IDockviewGroupPanel; close: () => void; } @@ -30,19 +35,18 @@ export class ReactWatermarkPart implements IWatermarkRenderer { this._element.className = 'dockview-react-part'; } - init(parameters: GroupPanelPartInitParameters): void { - this.parameters = parameters; - + init(parameters: WatermarkRendererInitParameters): void { this.part = new ReactPart( this.element, this.reactPortalStore, this.component, { - params: parameters.params, - api: parameters.api, + group: parameters.group, containerApi: parameters.containerApi, close: () => { - parameters.containerApi.removeGroup(parameters.api.group); + if (parameters.group) { + parameters.containerApi.removeGroup(parameters.group); + } }, } );