Merge pull request #207 from mathuo/206-internal-enhancements

refactor: remove legacy code
This commit is contained in:
mathuo 2023-03-14 21:11:04 +03:00 committed by GitHub
commit 325a203877
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
50 changed files with 2924 additions and 2802 deletions

View File

@ -1,20 +0,0 @@
const {join, normalize} = require("path");
const tsconfig = normalize(join(__dirname, "tsconfig.test.json"))
module.exports = {
displayName: { name: "root" },
preset: "ts-jest",
projects: ["<rootDir>/packages/*/jest.config.js"],
transform: {
"^.+\\.tsx?$":"ts-jest"
},
moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"],
globals: {
"ts-jest": {
tsconfig,
experimental: true,
compilerHost: true
}
}
}

View File

@ -1,17 +0,0 @@
const baseConfig = require("./jest.config.base");
module.exports = {
...baseConfig,
displayName: { name: "root", color: "blue" },
projects: ["<rootDir>/packages/*/jest.config.js"],
collectCoverage: true,
collectCoverageFrom:[
"<rootDir>/packages/*/src/**/*.{js,jsx,ts,tsx}",
],
coveragePathIgnorePatterns: [
"/node_modules/",
"<rootDir>packages/*/src/__tests__/",
],
coverageDirectory: "coverage",
testResultsProcessor: 'jest-sonar-reporter',
};

17
jest.config.ts Normal file
View File

@ -0,0 +1,17 @@
import { JestConfigWithTsJest } from 'ts-jest';
const config: JestConfigWithTsJest = {
preset: 'ts-jest',
displayName: { name: 'root', color: 'blue' },
projects: ['<rootDir>/packages/*/jest.config.ts'],
collectCoverage: true,
collectCoverageFrom: ['<rootDir>/packages/*/src/**/*.{js,jsx,ts,tsx}'],
coveragePathIgnorePatterns: [
'/node_modules/',
'<rootDir>packages/*/src/__tests__/',
],
coverageDirectory: 'coverage',
testResultsProcessor: 'jest-sonar-reporter',
};
export default config;

View File

@ -44,7 +44,6 @@
"gulp": "^4.0.2",
"gulp-concat": "^2.6.1",
"gulp-dart-sass": "^1.0.2",
"jest": "^29.4.3",
"jest-environment-jsdom": "^29.4.3",
"jest-sonar-reporter": "^2.0.0",
"jsdom": "^21.1.0",
@ -61,5 +60,9 @@
"webpack": "^5.75.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.11.1"
},
"dependencies": {
"jest": "^29.5.0",
"ts-node": "^10.9.1"
}
}

View File

@ -1,14 +1,10 @@
const { name } = require('./package');
import { JestConfigWithTsJest } from 'ts-jest';
const baseConfig = require('../../jest.config.base');
console.log('loaded');
module.exports = {
...baseConfig,
const config: JestConfigWithTsJest = {
preset: 'ts-jest',
roots: ['<rootDir>/packages/dockview-core'],
modulePaths: ['<rootDir>/packages/dockview-core/src'],
displayName: { name, color: 'blue' },
displayName: { name: 'dockview-core', color: 'blue' },
rootDir: '../../',
collectCoverageFrom: [
'<rootDir>/packages/dockview-core/src/**/*.{js,jsx,ts,tsx}',
@ -25,3 +21,5 @@ module.exports = {
testResultsProcessor: 'jest-sonar-reporter',
testEnvironment: 'jsdom',
};
export default config;

View File

@ -29,13 +29,6 @@ export class DockviewPanelModelMock implements IDockviewPanelModel {
//
}
updateParentGroup(
group: DockviewGroupPanel,
isPanelVisible: boolean
): void {
//
}
dispose(): void {
//
}

View File

@ -8,7 +8,7 @@ import {
IGroupPanelInitParameters,
} from '../../dockview/types';
import { PanelUpdateEvent } from '../../panel/types';
import { Orientation } from '../../splitview/core/splitview';
import { Orientation } from '../../splitview/splitview';
import { CompositeDisposable } from '../../lifecycle';
import { Emitter } from '../../events';
import { IDockviewPanel } from '../../dockview/dockviewPanel';

View File

@ -11,7 +11,7 @@ import {
PanelUpdateEvent,
Parameters,
} from '../../panel/types';
import { LayoutPriority, Orientation } from '../../splitview/core/splitview';
import { LayoutPriority, Orientation } from '../../splitview/splitview';
class TestPanel implements IGridPanelView {
_onDidChange = new Emitter<IViewSize | undefined>();

View File

@ -1,5 +1,5 @@
import { Gridview } from '../../gridview/gridview';
import { Orientation } from '../../splitview/core/splitview';
import { Orientation } from '../../splitview/splitview';
describe('gridview', () => {
let container: HTMLElement;

View File

@ -2,7 +2,7 @@ import { GridviewComponent } from '../../gridview/gridviewComponent';
import { GridviewPanel } from '../../gridview/gridviewPanel';
import { CompositeDisposable } from '../../lifecycle';
import { IFrameworkPart } from '../../panel/types';
import { Orientation } from '../../splitview/core/splitview';
import { Orientation } from '../../splitview/splitview';
class TestGridview extends GridviewPanel {
constructor(id: string, componentName: string) {

View File

@ -5,7 +5,7 @@ import {
IPaneHeaderPart,
PaneviewPanel,
} from '../../paneview/paneviewPanel';
import { Orientation } from '../../splitview/core/splitview';
import { Orientation } from '../../splitview/splitview';
class TestPanel extends PaneviewPanel {
protected getBodyComponent(): IPaneBodyPart {

View File

@ -8,7 +8,7 @@ import {
IPaneHeaderPart,
PanePanelComponentInitParameter,
} from '../../paneview/paneviewPanel';
import { Orientation } from '../../splitview/core/splitview';
import { Orientation } from '../../splitview/splitview';
class TestPanel extends PaneviewPanel {
constructor(id: string, component: string) {

View File

@ -1,12 +1,12 @@
import { Emitter } from '../../../events';
import { CompositeDisposable } from '../../../lifecycle';
import { Emitter } from '../../events';
import { CompositeDisposable } from '../../lifecycle';
import {
IView,
LayoutPriority,
Orientation,
Sizing,
Splitview,
} from '../../../splitview/core/splitview';
} from '../../splitview/splitview';
class Testview implements IView {
private _element: HTMLElement = document.createElement('div');

View File

@ -1,6 +1,6 @@
import { PanelDimensionChangeEvent } from '../../api/panelApi';
import { CompositeDisposable } from '../../lifecycle';
import { Orientation } from '../../splitview/core/splitview';
import { Orientation } from '../../splitview/splitview';
import { SplitviewComponent } from '../../splitview/splitviewComponent';
import { SplitviewPanel } from '../../splitview/splitviewPanel';

View File

@ -1,29 +0,0 @@
.actions-bar {
text-align: right;
width: 28px;
display: flex;
align-items: center;
flex-shrink: 0;
.actions-container {
display: flex;
padding: 0px;
margin: 0px;
justify-content: flex-end;
.close-action {
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
cursor: pointer;
color: var(--dv-activegroup-hiddenpanel-tab-color);
&:hover {
border-radius: 2px;
background-color: var(--dv-icon-hover-background-color);
}
}
}
}

View File

@ -1,24 +0,0 @@
export class ActionContainer {
private _element: HTMLElement;
private _list: HTMLElement;
get element(): HTMLElement {
return this._element;
}
constructor() {
this._element = document.createElement('div');
this._element.className = 'actions-bar';
this._list = document.createElement('ul');
this._list.className = 'actions-container';
this._element.appendChild(this._list);
}
public add(element: HTMLElement): void {
const listItem = document.createElement('li');
listItem.className = 'action-item';
this._list.appendChild(element);
}
}

View File

@ -28,7 +28,7 @@ import {
SerializedSplitview,
SplitviewComponentUpdateOptions,
} from '../splitview/splitviewComponent';
import { IView, Orientation, Sizing } from '../splitview/core/splitview';
import { IView, Orientation, Sizing } from '../splitview/splitview';
import { ISplitviewPanel } from '../splitview/splitviewPanel';
import {
DockviewGroupPanel,

View File

@ -7,9 +7,6 @@ import { createCloseButton } from '../../../svg';
export class DefaultTab extends CompositeDisposable implements ITabRenderer {
private _element: HTMLElement;
private _isPanelVisible = false;
private _isGroupActive = false;
private _content: HTMLElement;
private _actionContainer: HTMLElement;
private _list: HTMLElement;
@ -17,7 +14,7 @@ export class DefaultTab extends CompositeDisposable implements ITabRenderer {
//
private params: GroupPanelPartInitParameters = {} as any;
get element() {
get element(): HTMLElement {
return this._element;
}
@ -55,16 +52,16 @@ export class DefaultTab extends CompositeDisposable implements ITabRenderer {
this.render();
}
public update(event: PanelUpdateEvent) {
public update(event: PanelUpdateEvent): void {
this.params = { ...this.params, ...event.params };
this.render();
}
focus() {
focus(): void {
//noop
}
public init(params: GroupPanelPartInitParameters) {
public init(params: GroupPanelPartInitParameters): void {
this.params = params;
this._content.textContent = params.title;
@ -74,27 +71,19 @@ export class DefaultTab extends CompositeDisposable implements ITabRenderer {
});
}
public updateParentGroup(
group: DockviewGroupPanel,
isPanelVisible: boolean
) {
const changed =
this._isPanelVisible !== isPanelVisible ||
this._isGroupActive !== group.isActive;
this._isPanelVisible = isPanelVisible;
this._isGroupActive = group.isActive;
if (changed) {
onGroupChange(_group: DockviewGroupPanel): void {
this.render();
}
onPanelVisibleChange(_isPanelVisible: boolean): void {
this.render();
}
public layout(_width: number, _height: number) {
public layout(_width: number, _height: number): void {
// noop
}
private render() {
private render(): void {
if (this._content.textContent !== this.params.title) {
this._content.textContent = this.params.title;
}

View File

@ -4,7 +4,7 @@
&.has-actions {
.watermark-title {
.actions-bar {
.actions-container {
display: none;
}
}
@ -18,4 +18,28 @@
.watermark-content {
flex-grow: 1;
}
.actions-container {
display: flex;
align-items: center;
padding: 0px 8px;
// padding: 0px;
// margin: 0px;
// justify-content: flex-end;
.close-action {
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
cursor: pointer;
color: var(--dv-activegroup-hiddenpanel-tab-color);
&:hover {
border-radius: 2px;
background-color: var(--dv-icon-hover-background-color);
}
}
}
}

View File

@ -1,5 +1,4 @@
import { GroupPanelPartInitParameters, IWatermarkRenderer } from '../../types';
import { ActionContainer } from '../../../actionbar/actionsContainer';
import { addDisposableListener } from '../../../events';
import { toggleClass } from '../../../dom';
import { CompositeDisposable } from '../../../lifecycle';
@ -36,15 +35,17 @@ export class Watermark
this._element.appendChild(title);
this._element.appendChild(content);
const actions = new ActionContainer();
title.appendChild(emptySpace);
title.appendChild(actions.element);
const actionsContainer = document.createElement('div');
actionsContainer.className = 'actions-container';
const closeAnchor = document.createElement('div');
closeAnchor.className = 'close-action';
closeAnchor.appendChild(createCloseButton());
actions.add(closeAnchor);
actionsContainer.appendChild(closeAnchor);
title.appendChild(emptySpace);
title.appendChild(actionsContainer);
this.addDisposables(
addDisposableListener(closeAnchor, 'click', (ev) => {

View File

@ -35,7 +35,7 @@ import {
toTarget,
} from '../gridview/baseComponentGridview';
import { DockviewApi } from '../api/component.api';
import { Orientation, Sizing } from '../splitview/core/splitview';
import { Orientation, Sizing } from '../splitview/splitview';
import {
GroupOptions,
GroupPanelViewState,

View File

@ -155,7 +155,7 @@ export class DockviewPanel
isVisible: isPanelVisible,
});
this.view?.updateParentGroup(
this.view.updateParentGroup(
this._group,
this._group.model.isPanelActive(this)
);

View File

@ -12,7 +12,7 @@ import {
DockviewGroupPanel,
DockviewGroupPanelApi,
} from './dockviewGroupPanel';
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
import { ISplitviewStyles, Orientation } from '../splitview/splitview';
import { FrameworkFactory } from '../types';
import { PanelTransfer } from '../dnd/dataTransfer';
import { IDisposable } from '../lifecycle';

View File

@ -3,11 +3,7 @@ import { getGridLocation, Gridview, IGridView } from './gridview';
import { Position } from '../dnd/droptarget';
import { CompositeDisposable, IValueDisposable } from '../lifecycle';
import { sequentialNumberGenerator } from '../math';
import {
ISplitviewStyles,
Orientation,
Sizing,
} from '../splitview/core/splitview';
import { ISplitviewStyles, Orientation, Sizing } from '../splitview/splitview';
import { IPanel } from '../panel/types';
import { MovementOptions2 } from '../dockview/options';

View File

@ -10,7 +10,7 @@ import {
Sizing,
LayoutPriority,
ISplitviewStyles,
} from '../splitview/core/splitview';
} from '../splitview/splitview';
import { Emitter, Event } from '../events';
import { INodeDescriptor } from './gridview';
import { LeafNode } from './leafNode';

View File

@ -8,7 +8,7 @@ import {
LayoutPriority,
Orientation,
Sizing,
} from '../splitview/core/splitview';
} from '../splitview/splitview';
import { tail } from '../array';
import { LeafNode } from './leafNode';
import { BranchNode } from './branchNode';

View File

@ -22,7 +22,7 @@ import {
IGridviewPanel,
} from './gridviewPanel';
import { BaseComponentOptions } from '../panel/types';
import { Orientation, Sizing } from '../splitview/core/splitview';
import { Orientation, Sizing } from '../splitview/splitview';
import { createComponent } from '../panel/componentFactory';
import { Emitter, Event } from '../events';
import { Position } from '../dnd/droptarget';

View File

@ -13,7 +13,7 @@ import {
GridviewPanelApi,
GridviewPanelApiImpl,
} from '../api/gridviewPanelApi';
import { LayoutPriority } from '../splitview/core/splitview';
import { LayoutPriority } from '../splitview/splitview';
import { Emitter, Event } from '../events';
import { IViewSize } from './gridview';

View File

@ -3,11 +3,7 @@
* https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid
*--------------------------------------------------------------------------------------------*/
import {
IView,
LayoutPriority,
Orientation,
} from '../splitview/core/splitview';
import { IView, LayoutPriority, Orientation } from '../splitview/splitview';
import { Emitter, Event } from '../events';
import { IGridView } from './gridview';
import { IDisposable } from '../lifecycle';

View File

@ -1,5 +1,5 @@
import { GridviewPanel } from './gridviewPanel';
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
import { ISplitviewStyles, Orientation } from '../splitview/splitview';
import { FrameworkFactory } from '../types';
export interface GridviewComponentOptions {

View File

@ -18,8 +18,8 @@ export {
export * from './panel/types';
export * from './panel/componentFactory';
export * from './splitview/core/splitview';
export * from './splitview/core/options';
export * from './splitview/splitview';
export * from './splitview/options';
export * from './paneview/paneview';
export * from './gridview/gridview';

View File

@ -1,5 +1,5 @@
import { IDisposable } from '../lifecycle';
import { LayoutPriority } from '../splitview/core/splitview';
import { LayoutPriority } from '../splitview/splitview';
/**
* A key-value object of anything that is a valid JavaScript Object.

View File

@ -8,7 +8,7 @@ import {
import { Droptarget, DroptargetEvent } from '../dnd/droptarget';
import { Emitter } from '../events';
import { IDisposable } from '../lifecycle';
import { Orientation } from '../splitview/core/splitview';
import { Orientation } from '../splitview/splitview';
import { IPaneviewComponent } from './paneviewComponent';
import {
IPaneviewPanel,

View File

@ -3,7 +3,7 @@ import {
Orientation,
ISplitViewDescriptor,
Sizing,
} from '../splitview/core/splitview';
} from '../splitview/splitview';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import { Emitter, Event } from '../events';
import { addClasses, removeClasses } from '../dom';

View File

@ -6,11 +6,7 @@ import {
IDisposable,
MutableDisposable,
} from '../lifecycle';
import {
LayoutPriority,
Orientation,
Sizing,
} from '../splitview/core/splitview';
import { LayoutPriority, Orientation, Sizing } from '../splitview/splitview';
import { PaneviewComponentOptions } from './options';
import { Paneview } from './paneview';
import {

View File

@ -14,7 +14,7 @@ import {
PanelUpdateEvent,
Parameters,
} from '../panel/types';
import { IView, Orientation } from '../splitview/core/splitview';
import { IView, Orientation } from '../splitview/splitview';
export interface PanePanelViewState extends BasePanelViewState {
headerComponent?: string;

View File

@ -1,8 +1,8 @@
import { IPanel, PanelInitParameters } from '../../panel/types';
import { IPanel, PanelInitParameters } from '../panel/types';
import { IView, SplitViewOptions, LayoutPriority } from './splitview';
import { FrameworkFactory } from '../../types';
import { SplitviewPanel } from '../splitviewPanel';
import { SplitviewComponent } from '../splitviewComponent';
import { FrameworkFactory } from '../types';
import { SplitviewPanel } from './splitviewPanel';
import { SplitviewComponent } from './splitviewComponent';
export interface PanelViewInitParameters extends PanelInitParameters {
minimumSize?: number;

View File

@ -8,10 +8,10 @@ import {
addClasses,
toggleClass,
getElementsByTagName,
} from '../../dom';
import { clamp } from '../../math';
import { Event, Emitter } from '../../events';
import { pushToStart, pushToEnd, range, firstIndex } from '../../array';
} from '../dom';
import { clamp } from '../math';
import { Event, Emitter } from '../events';
import { pushToStart, pushToEnd, range, firstIndex } from '../array';
import { ViewItem } from './viewItem';
export enum Orientation {

View File

@ -10,8 +10,8 @@ import {
Orientation,
Sizing,
Splitview,
} from './core/splitview';
import { SplitviewComponentOptions } from './core/options';
} from './splitview';
import { SplitviewComponentOptions } from './options';
import { BaseComponentOptions } from '../panel/types';
import { Emitter, Event } from '../events';
import { SplitviewPanel, ISplitviewPanel } from './splitviewPanel';

View File

@ -1,10 +1,10 @@
import { ISerializableView, PanelViewInitParameters } from './core/options';
import { ISerializableView, PanelViewInitParameters } from './options';
import {
BasePanelView,
BasePanelViewExported,
} from '../gridview/basePanelView';
import { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';
import { LayoutPriority, Orientation } from './core/splitview';
import { LayoutPriority, Orientation } from './splitview';
import { FunctionOrValue } from '../types';
import { Emitter, Event } from '../events';

View File

@ -1,5 +1,5 @@
import { IDisposable } from '../../lifecycle';
import { clamp } from '../../math';
import { IDisposable } from '../lifecycle';
import { clamp } from '../math';
import { IView, LayoutPriority } from './splitview';
export class ViewItem {

View File

@ -1,14 +1,13 @@
const { name } = require('./package');
import { JestConfigWithTsJest } from 'ts-jest';
import { join, normalize } from 'path';
const baseConfig = require('../../jest.config.base');
const tsconfig = normalize(join(__dirname, '..', '..', 'tsconfig.test.json'));
console.log('loaded');
module.exports = {
...baseConfig,
const config: JestConfigWithTsJest = {
preset: 'ts-jest',
roots: ['<rootDir>/packages/dockview'],
modulePaths: ['<rootDir>/packages/dockview/src'],
displayName: { name, color: 'blue' },
displayName: { name: 'dockview', color: 'blue' },
rootDir: '../../',
collectCoverageFrom: [
'<rootDir>/packages/dockview/src/**/*.{js,jsx,ts,tsx}',
@ -24,4 +23,14 @@ module.exports = {
coverageDirectory: '<rootDir>/packages/dockview/coverage/',
testResultsProcessor: 'jest-sonar-reporter',
testEnvironment: 'jsdom',
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{
tsconfig,
},
],
},
};
export default config;

View File

@ -4,7 +4,6 @@ import { IDockviewPanelProps } from '../dockview/dockview';
import {
DockviewEmitter,
DockviewEvent,
DockviewGroupPanel,
PanelUpdateEvent,
IContentRenderer,
GroupPanelContentPartInitParameters,
@ -13,8 +12,6 @@ import {
export class ReactPanelContentPart implements IContentRenderer {
private _element: HTMLElement;
private part?: ReactPart<IDockviewPanelProps>;
//
private _group: DockviewGroupPanel | undefined;
private readonly _onDidFocus = new DockviewEmitter<void>();
readonly onDidFocus: DockviewEvent<void> = this._onDidFocus.event;
@ -56,13 +53,6 @@ export class ReactPanelContentPart implements IContentRenderer {
this.part?.update(event.params);
}
public updateParentGroup(
group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
this._group = group;
}
public layout(_width: number, _height: number): void {
// noop
}

View File

@ -3,7 +3,6 @@ import { ReactPart, ReactPortalStore } from '../react';
import { IGroupPanelBaseProps } from './dockview';
import {
PanelUpdateEvent,
DockviewGroupPanel,
ITabRenderer,
GroupPanelPartInitParameters,
} from 'dockview-core';
@ -50,13 +49,6 @@ export class ReactPanelHeaderPart implements ITabRenderer {
// noop - retrieval from api
}
public updateParentGroup(
_group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
// noop - retrieval from api
}
public dispose(): void {
this.part?.dispose();
}

View File

@ -15,9 +15,6 @@ export interface IWatermarkPanelProps extends IGroupPanelBaseProps {
export class ReactWatermarkPart implements IWatermarkRenderer {
private _element: HTMLElement;
private part?: ReactPart<IWatermarkPanelProps>;
private _groupRef: { value: DockviewGroupPanel | undefined } = {
value: undefined,
};
private parameters: GroupPanelPartInitParameters | undefined;
get element(): HTMLElement {
@ -45,11 +42,7 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
api: parameters.api,
containerApi: parameters.containerApi,
close: () => {
if (this._groupRef.value) {
parameters.containerApi.removeGroup(
this._groupRef.value
);
}
parameters.containerApi.removeGroup(parameters.api.group);
},
}
);
@ -72,11 +65,10 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
}
updateParentGroup(
group: DockviewGroupPanel,
_group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
// noop - retrieval from api
this._groupRef.value = group;
// noop
}
dispose(): void {

View File

@ -1,100 +0,0 @@
import {
GroupPanelPartInitParameters,
IContentRenderer,
DockviewGroupPanel,
HostedContainer,
PanelUpdateEvent,
DockviewEvent,
} from 'dockview-core';
import { ReactPart, ReactPortalStore } from '../../react';
import { IDockviewPanelProps } from '../dockview';
export class ReactContentRenderer implements IContentRenderer {
private _hostedContainer: HostedContainer;
private _element: HTMLElement;
private part?: ReactPart<IDockviewPanelProps>;
private _group: DockviewGroupPanel | undefined;
private parameters: GroupPanelPartInitParameters | undefined;
get element(): HTMLElement {
return this._element;
}
get onDidBlur(): DockviewEvent<void> {
return this._hostedContainer.onDidBlur;
}
get onDidFocus(): DockviewEvent<void> {
return this._hostedContainer.onDidFocus;
}
constructor(
public readonly id: string,
private readonly component: React.FunctionComponent<IDockviewPanelProps>,
private readonly reactPortalStore: ReactPortalStore
) {
this._hostedContainer = new HostedContainer({
id,
parent: document
.getElementsByClassName('dockview')
.item(0) as HTMLElement,
});
this._element = document.createElement('div');
this._element.style.height = '100%';
this._element.style.width = '100%';
}
focus(): void {
// noop
}
public init(parameters: GroupPanelPartInitParameters): void {
this.parameters = parameters;
parameters.api.onDidVisibilityChange((event) => {
if (event.isVisible) {
this._hostedContainer.show();
this._hostedContainer.layout(this.element);
} else {
this._hostedContainer.hide();
}
});
this.part = new ReactPart(
this._hostedContainer.element,
this.reactPortalStore,
this.component,
{
params: parameters.params,
api: parameters.api,
containerApi: parameters.containerApi,
}
);
}
public update(params: PanelUpdateEvent): void {
if (this.parameters) {
this.parameters.params = params.params;
}
this.part?.update(params.params);
}
public updateParentGroup(
group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
this._group = group;
}
public layout(_width: number, _height: number): void {
this._hostedContainer.layout(this.element);
}
public dispose(): void {
this.part?.dispose();
}
}

View File

@ -1,55 +0,0 @@
import {
GroupPanelPartInitParameters,
IContentRenderer,
DockviewGroupPanel,
HostedContainer,
PanelUpdateEvent,
} from 'dockview-core';
export class WebviewContentRenderer implements IContentRenderer {
private _hostedContainer: HostedContainer;
private _element: HTMLElement;
private parameters: GroupPanelPartInitParameters | undefined;
get element(): HTMLElement {
return this._element;
}
constructor(public readonly id: string) {
this._hostedContainer = new HostedContainer({ id });
this._element = document.createElement('div');
this._element.style.height = '100%';
this._element.style.width = '100%';
}
focus(): void {
// noop
}
public init(parameters: GroupPanelPartInitParameters): void {
this.parameters = parameters;
}
public update(params: PanelUpdateEvent): void {
if (this.parameters) {
this.parameters.params = params.params;
}
}
public updateParentGroup(
_group: DockviewGroupPanel,
_isPanelVisible: boolean
): void {
//
}
public layout(_width: number, _height: number): void {
this._hostedContainer.layout(this._element);
}
public dispose(): void {
//
}
}

5213
yarn.lock

File diff suppressed because it is too large Load Diff