refactor: set deserializer by default

This commit is contained in:
mathuo 2023-03-07 22:33:13 +08:00
parent 8918e254ed
commit db1cb49487
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
3 changed files with 4 additions and 31 deletions

View File

@ -16,7 +16,6 @@ import {
DockviewPanelApi,
DockviewPanelApiImpl,
} from '../../api/dockviewPanelApi';
import { DefaultDockviewDeserialzier } from '../../dockview/deserializer';
import { IDockviewPanelModel } from '../../dockview/dockviewPanelModel';
import { DockviewPanelModelMock } from '../__mocks__/mockDockviewPanelMode';
import { DefaultTab } from '../../dockview/components/tab/defaultTab';
@ -470,7 +469,6 @@ describe('dockviewComponent', () => {
test('serialization', () => {
dockview.layout(1000, 1000);
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
dockview.fromJSON({
activeGroup: 'group-1',
grid: {
@ -1382,7 +1380,6 @@ describe('dockviewComponent', () => {
default: PanelContentPartTest,
},
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
dockview.layout(500, 1000);
@ -1507,7 +1504,6 @@ describe('dockviewComponent', () => {
})
);
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
dockview.fromJSON({
activeGroup: 'group-1',
grid: {
@ -1641,7 +1637,6 @@ describe('dockviewComponent', () => {
default: PanelContentPartTest,
},
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
dockview.fromJSON({
activeGroup: 'group-1',
grid: {
@ -1731,7 +1726,6 @@ describe('dockviewComponent', () => {
test_tab_id: PanelTabPartTest,
},
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
dockview.fromJSON({
activeGroup: 'group-1',
grid: {
@ -1840,7 +1834,6 @@ describe('dockviewComponent', () => {
test_tab_id: PanelTabPartTest,
},
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
dockview.fromJSON({
activeGroup: 'group-1',
grid: {
@ -1928,7 +1921,6 @@ describe('dockviewComponent', () => {
},
orientation: Orientation.HORIZONTAL,
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
expect(dockview.orientation).toBe(Orientation.HORIZONTAL);
@ -2034,7 +2026,6 @@ describe('dockviewComponent', () => {
},
orientation: Orientation.HORIZONTAL,
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
expect(dockview.orientation).toBe(Orientation.HORIZONTAL);
@ -2175,7 +2166,6 @@ describe('dockviewComponent', () => {
},
orientation: Orientation.HORIZONTAL,
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
expect(dockview.orientation).toBe(Orientation.HORIZONTAL);
@ -2303,7 +2293,6 @@ describe('dockviewComponent', () => {
},
orientation: Orientation.HORIZONTAL,
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
expect(dockview.groups.length).toBe(0);
});
@ -2320,7 +2309,6 @@ describe('dockviewComponent', () => {
},
orientation: Orientation.HORIZONTAL,
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
expect(dockview.groups.length).toBe(0);
@ -2360,7 +2348,6 @@ describe('dockviewComponent', () => {
},
orientation: Orientation.HORIZONTAL,
});
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
expect(JSON.parse(JSON.stringify(dockview.toJSON()))).toEqual({
grid: {

View File

@ -16,7 +16,7 @@ import {
DockviewDropTargets,
} from './types';
import { sequentialNumberGenerator } from '../math';
import { IPanelDeserializer } from './deserializer';
import { DefaultDockviewDeserialzier } from './deserializer';
import { createComponent } from '../panel/componentFactory';
import {
AddGroupOptions,
@ -87,7 +87,6 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
readonly onDidDrop: Event<DockviewDropEvent>;
readonly orientation: Orientation;
tabHeight: number | undefined;
deserializer: IPanelDeserializer | undefined;
updateOptions(options: DockviewComponentUpdateOptions): void;
moveGroupOrPanel(
referenceGroup: DockviewGroupPanel,
@ -125,8 +124,8 @@ export class DockviewComponent
implements IDockviewComponent
{
private readonly nextGroupId = sequentialNumberGenerator();
private _deserializer: IPanelDeserializer | undefined;
private _api: DockviewApi;
private readonly _deserializer = new DefaultDockviewDeserialzier(this);
private readonly _api: DockviewApi;
private _options: Exclude<DockviewComponentOptions, 'orientation'>;
private watermark: IWatermarkRenderer | null = null;
@ -161,14 +160,6 @@ export class DockviewComponent
return this.groups.flatMap((group) => group.panels);
}
get deserializer(): IPanelDeserializer | undefined {
return this._deserializer;
}
set deserializer(value: IPanelDeserializer | undefined) {
this._deserializer = value;
}
get options(): DockviewComponentOptions {
return this._options;
}
@ -428,9 +419,6 @@ export class DockviewComponent
fromJSON(data: SerializedDockview): void {
this.clear();
if (!this.deserializer) {
throw new Error('no deserializer provided');
}
const { grid, panels, options, activeGroup } = data;
if (typeof options?.tabHeight === 'number') {
@ -454,7 +442,7 @@ export class DockviewComponent
this._onDidAddGroup.fire(group);
for (const child of views) {
const panel = this.deserializer!.fromJSON(
const panel = this._deserializer.fromJSON(
panels[child],
group
);

View File

@ -11,7 +11,6 @@ import {
ITabRenderer,
watchElementResize,
DockviewGroupPanel,
DefaultDockviewDeserialzier,
} from 'dockview-core';
import { ReactPanelContentPart } from './reactContentPart';
import { ReactPanelHeaderPart } from './reactHeaderPart';
@ -173,7 +172,6 @@ export const DockviewReact = React.forwardRef(
});
domRef.current?.appendChild(dockview.element);
dockview.deserializer = new DefaultDockviewDeserialzier(dockview);
const { clientWidth, clientHeight } = domRef.current!;
dockview.layout(clientWidth, clientHeight);