dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
35 lines (34 loc) • 1.73 kB
JavaScript
import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
import { createComponent } from '../panel/componentFactory';
import { DockviewApi } from '../api/component.api';
import { DefaultTab } from '../dockview/components/tab/defaultTab';
import { DefaultGroupPanelView } from '../dockview/defaultGroupPanelView';
export class ReactPanelDeserialzier {
constructor(layout) {
this.layout = layout;
}
fromJSON(panelData) {
var _a, _b, _c;
const panelId = panelData.id;
const params = panelData.params;
const title = panelData.title;
const state = panelData.state;
const suppressClosable = panelData.suppressClosable;
const viewData = panelData.view;
const view = new DefaultGroupPanelView({
content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (_a = this.layout.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content),
tab: ((_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id)
? createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab)
: new DefaultTab(),
});
const panel = new DockviewGroupPanel(panelId, new DockviewApi(this.layout));
panel.init({
view,
title,
suppressClosable,
params: params || {},
state: state || {},
});
return panel;
}
}