mirror of
https://github.com/mathuo/dockview
synced 2025-02-15 12:55:44 +00:00
refactor: improve typings
This commit is contained in:
parent
7d50eb5453
commit
8918e254ed
@ -1767,15 +1767,14 @@ describe('dockviewComponent', () => {
|
|||||||
panels: {
|
panels: {
|
||||||
panel1: {
|
panel1: {
|
||||||
id: 'panel1',
|
id: 'panel1',
|
||||||
view: { content: { id: 'default' } },
|
contentComponent: 'default',
|
||||||
|
|
||||||
title: 'panel1',
|
title: 'panel1',
|
||||||
},
|
},
|
||||||
panel2: {
|
panel2: {
|
||||||
id: 'panel2',
|
id: 'panel2',
|
||||||
view: {
|
contentComponent: 'default',
|
||||||
content: { id: 'default' },
|
tabComponent: 'test_tab_id',
|
||||||
tab: { id: 'test_tab_id' },
|
|
||||||
},
|
|
||||||
title: 'panel2',
|
title: 'panel2',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -87,7 +87,7 @@ export class DockviewGroupPanel
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
initialize() {
|
initialize(): void {
|
||||||
this._model.initialize();
|
this._model.initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,6 +106,7 @@ export class DockviewGroupPanel
|
|||||||
}
|
}
|
||||||
|
|
||||||
toJSON(): any {
|
toJSON(): any {
|
||||||
|
// TODO fix typing
|
||||||
return this.model.toJSON();
|
return this.model.toJSON();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ export class DefaultHeader
|
|||||||
private readonly _expander: HTMLElement;
|
private readonly _expander: HTMLElement;
|
||||||
private apiRef: { api: PaneviewPanelApiImpl | null } = { api: null };
|
private apiRef: { api: PaneviewPanelApiImpl | null } = { api: null };
|
||||||
|
|
||||||
get element() {
|
get element(): HTMLElement {
|
||||||
return this._element;
|
return this._element;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ export class DefaultHeader
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
init(params: PanePanelInitParameter & { api: PaneviewPanelApiImpl }) {
|
init(params: PanePanelInitParameter & { api: PaneviewPanelApiImpl }): void {
|
||||||
this.apiRef.api = params.api;
|
this.apiRef.api = params.api;
|
||||||
|
|
||||||
this._content.textContent = params.title;
|
this._content.textContent = params.title;
|
||||||
@ -54,7 +54,7 @@ export class DefaultHeader
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateIcon() {
|
private updateIcon(): void {
|
||||||
const isExpanded = !!this.apiRef.api?.isExpanded;
|
const isExpanded = !!this.apiRef.api?.isExpanded;
|
||||||
toggleClass(this._expander, 'collapsed', !isExpanded);
|
toggleClass(this._expander, 'collapsed', !isExpanded);
|
||||||
|
|
||||||
@ -75,11 +75,11 @@ export class DefaultHeader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
update(_params: PanelUpdateEvent) {
|
update(_params: PanelUpdateEvent): void {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
dispose() {
|
dispose(): void {
|
||||||
this.disposable.dispose();
|
this.disposable.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ export abstract class DraggablePaneviewPanel extends PaneviewPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private initDragFeatures() {
|
private initDragFeatures(): void {
|
||||||
if (!this.header) {
|
if (!this.header) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ export abstract class DraggablePaneviewPanel extends PaneviewPanel {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private onDrop(event: DroptargetEvent) {
|
private onDrop(event: DroptargetEvent): void {
|
||||||
const data = getPaneData();
|
const data = getPaneData();
|
||||||
|
|
||||||
if (!data || data.viewId !== this.accessor.id) {
|
if (!data || data.viewId !== this.accessor.id) {
|
||||||
|
@ -25,30 +25,30 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
private readonly _onDidChange = new Emitter<void>();
|
private readonly _onDidChange = new Emitter<void>();
|
||||||
readonly onDidChange: Event<void> = this._onDidChange.event;
|
readonly onDidChange: Event<void> = this._onDidChange.event;
|
||||||
|
|
||||||
get onDidAddView() {
|
get onDidAddView(): Event<PaneviewPanel> {
|
||||||
return <Event<PaneviewPanel>>this.splitview.onDidAddView;
|
return <Event<PaneviewPanel>>this.splitview.onDidAddView;
|
||||||
}
|
}
|
||||||
get onDidRemoveView() {
|
get onDidRemoveView(): Event<PaneviewPanel> {
|
||||||
return <Event<PaneviewPanel>>this.splitview.onDidRemoveView;
|
return <Event<PaneviewPanel>>this.splitview.onDidRemoveView;
|
||||||
}
|
}
|
||||||
|
|
||||||
get minimumSize() {
|
get minimumSize(): number {
|
||||||
return this.splitview.minimumSize;
|
return this.splitview.minimumSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get maximumSize() {
|
get maximumSize(): number {
|
||||||
return this.splitview.maximumSize;
|
return this.splitview.maximumSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orientation() {
|
get orientation(): Orientation {
|
||||||
return this.splitview.orientation;
|
return this.splitview.orientation;
|
||||||
}
|
}
|
||||||
|
|
||||||
get size() {
|
get size(): number {
|
||||||
return this.splitview.size;
|
return this.splitview.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orthogonalSize() {
|
get orthogonalSize(): number {
|
||||||
return this.splitview.orthogonalSize;
|
return this.splitview.orthogonalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
size?: number | Sizing,
|
size?: number | Sizing,
|
||||||
index = this.splitview.length,
|
index = this.splitview.length,
|
||||||
skipLayout = false
|
skipLayout = false
|
||||||
) {
|
): void {
|
||||||
const disposable = pane.onDidChangeExpansionState(() => {
|
const disposable = pane.onDidChangeExpansionState(() => {
|
||||||
this.setupAnimation();
|
this.setupAnimation();
|
||||||
this._onDidChange.fire(undefined);
|
this._onDidChange.fire(undefined);
|
||||||
@ -134,7 +134,7 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
this.splitview.addView(pane, size, index, skipLayout);
|
this.splitview.addView(pane, size, index, skipLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
getViewSize(index: number) {
|
getViewSize(index: number): number {
|
||||||
return this.splitview.getViewSize(index);
|
return this.splitview.getViewSize(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
public removePane(
|
public removePane(
|
||||||
index: number,
|
index: number,
|
||||||
options: { skipDispose: boolean } = { skipDispose: false }
|
options: { skipDispose: boolean } = { skipDispose: false }
|
||||||
) {
|
): PaneItem {
|
||||||
const paneItem = this.paneItems.splice(index, 1)[0];
|
const paneItem = this.paneItems.splice(index, 1)[0];
|
||||||
this.splitview.removeView(index);
|
this.splitview.removeView(index);
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
return paneItem;
|
return paneItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public moveView(from: number, to: number) {
|
public moveView(from: number, to: number): void {
|
||||||
if (from === to) {
|
if (from === to) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
this.splitview.layout(size, orthogonalSize);
|
this.splitview.layout(size, orthogonalSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private setupAnimation() {
|
private setupAnimation(): void {
|
||||||
if (this.skipAnimation) {
|
if (this.skipAnimation) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ export class Paneview extends CompositeDisposable implements IDisposable {
|
|||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
|
||||||
if (this.animationTimer) {
|
if (this.animationTimer) {
|
||||||
|
@ -175,25 +175,25 @@ export class PaneviewComponent
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
get paneview() {
|
get paneview(): Paneview {
|
||||||
return this._paneview;
|
return this._paneview;
|
||||||
}
|
}
|
||||||
|
|
||||||
get minimumSize() {
|
get minimumSize(): number {
|
||||||
return this.paneview.minimumSize;
|
return this.paneview.minimumSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get maximumSize() {
|
get maximumSize(): number {
|
||||||
return this.paneview.maximumSize;
|
return this.paneview.maximumSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get height() {
|
get height(): number {
|
||||||
return this.paneview.orientation === Orientation.HORIZONTAL
|
return this.paneview.orientation === Orientation.HORIZONTAL
|
||||||
? this.paneview.orthogonalSize
|
? this.paneview.orthogonalSize
|
||||||
: this.paneview.size;
|
: this.paneview.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get width() {
|
get width(): number {
|
||||||
return this.paneview.orientation === Orientation.HORIZONTAL
|
return this.paneview.orientation === Orientation.HORIZONTAL
|
||||||
? this.paneview.size
|
? this.paneview.size
|
||||||
: this.paneview.orthogonalSize;
|
: this.paneview.orthogonalSize;
|
||||||
@ -234,8 +234,8 @@ export class PaneviewComponent
|
|||||||
this.addDisposables(this._disposable);
|
this.addDisposables(this._disposable);
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
//
|
//noop
|
||||||
}
|
}
|
||||||
|
|
||||||
updateOptions(options: Partial<PaneviewComponentOptions>): void {
|
updateOptions(options: Partial<PaneviewComponentOptions>): void {
|
||||||
@ -311,7 +311,7 @@ export class PaneviewComponent
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
removePanel(panel: PaneviewPanel) {
|
removePanel(panel: PaneviewPanel): void {
|
||||||
const views = this.panels;
|
const views = this.panels;
|
||||||
const index = views.findIndex((_) => _ === panel);
|
const index = views.findIndex((_) => _ === panel);
|
||||||
this.paneview.removePane(index);
|
this.paneview.removePane(index);
|
||||||
@ -462,7 +462,7 @@ export class PaneviewComponent
|
|||||||
this.paneview.dispose();
|
this.paneview.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private doAddPanel(panel: PaneFramework) {
|
private doAddPanel(panel: PaneFramework): void {
|
||||||
const disposable = panel.onDidDrop((event) => {
|
const disposable = panel.onDidDrop((event) => {
|
||||||
this._onDidDrop.fire(event);
|
this._onDidDrop.fire(event);
|
||||||
});
|
});
|
||||||
@ -470,7 +470,7 @@ export class PaneviewComponent
|
|||||||
this._viewDisposables.set(panel.id, disposable);
|
this._viewDisposables.set(panel.id, disposable);
|
||||||
}
|
}
|
||||||
|
|
||||||
private doRemovePanel(panel: PaneviewPanel) {
|
private doRemovePanel(panel: PaneviewPanel): void {
|
||||||
const disposable = this._viewDisposables.get(panel.id);
|
const disposable = this._viewDisposables.get(panel.id);
|
||||||
|
|
||||||
if (disposable) {
|
if (disposable) {
|
||||||
|
@ -96,7 +96,7 @@ export abstract class PaneviewPanel
|
|||||||
this._orientation = value;
|
this._orientation = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orientation() {
|
get orientation(): Orientation {
|
||||||
return this._orientation;
|
return this._orientation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,11 +116,11 @@ export abstract class PaneviewPanel
|
|||||||
return headerSize + maximumBodySize;
|
return headerSize + maximumBodySize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get size() {
|
get size(): number {
|
||||||
return this._size;
|
return this._size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orthogonalSize() {
|
get orthogonalSize(): number {
|
||||||
return this._orthogonalSize;
|
return this._orthogonalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ export abstract class PaneviewPanel
|
|||||||
this._orthogonalSize = size;
|
this._orthogonalSize = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
get minimumBodySize() {
|
get minimumBodySize(): number {
|
||||||
return this._minimumBodySize;
|
return this._minimumBodySize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ export abstract class PaneviewPanel
|
|||||||
this._minimumBodySize = typeof value === 'number' ? value : 0;
|
this._minimumBodySize = typeof value === 'number' ? value : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
get maximumBodySize() {
|
get maximumBodySize(): number {
|
||||||
return this._maximumBodySize;
|
return this._maximumBodySize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,11 +217,11 @@ export abstract class PaneviewPanel
|
|||||||
this.renderOnce();
|
this.renderOnce();
|
||||||
}
|
}
|
||||||
|
|
||||||
setVisible(isVisible: boolean) {
|
setVisible(isVisible: boolean): void {
|
||||||
this.api._onDidVisibilityChange.fire({ isVisible });
|
this.api._onDidVisibilityChange.fire({ isVisible });
|
||||||
}
|
}
|
||||||
|
|
||||||
setActive(isActive: boolean) {
|
setActive(isActive: boolean): void {
|
||||||
this.api._onDidActiveChange.fire({ isActive });
|
this.api._onDidActiveChange.fire({ isActive });
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +253,7 @@ export abstract class PaneviewPanel
|
|||||||
this._onDidChangeExpansionState.fire(expanded);
|
this._onDidChangeExpansionState.fire(expanded);
|
||||||
}
|
}
|
||||||
|
|
||||||
layout(size: number, orthogonalSize: number) {
|
layout(size: number, orthogonalSize: number): void {
|
||||||
this._size = size;
|
this._size = size;
|
||||||
this._orthogonalSize = orthogonalSize;
|
this._orthogonalSize = orthogonalSize;
|
||||||
const [width, height] =
|
const [width, height] =
|
||||||
@ -299,7 +299,7 @@ export abstract class PaneviewPanel
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderOnce() {
|
private renderOnce(): void {
|
||||||
this.header = document.createElement('div');
|
this.header = document.createElement('div');
|
||||||
this.header.tabIndex = 0;
|
this.header.tabIndex = 0;
|
||||||
|
|
||||||
|
@ -105,6 +105,8 @@ export class Splitview {
|
|||||||
private contentSize = 0;
|
private contentSize = 0;
|
||||||
private _proportions: number[] | undefined = undefined;
|
private _proportions: number[] | undefined = undefined;
|
||||||
private proportionalLayout: boolean;
|
private proportionalLayout: boolean;
|
||||||
|
private _startSnappingEnabled = true;
|
||||||
|
private _endSnappingEnabled = true;
|
||||||
|
|
||||||
private readonly _onDidSashEnd = new Emitter<void>();
|
private readonly _onDidSashEnd = new Emitter<void>();
|
||||||
readonly onDidSashEnd = this._onDidSashEnd.event;
|
readonly onDidSashEnd = this._onDidSashEnd.event;
|
||||||
@ -113,7 +115,7 @@ export class Splitview {
|
|||||||
private readonly _onDidRemoveView = new Emitter<IView>();
|
private readonly _onDidRemoveView = new Emitter<IView>();
|
||||||
readonly onDidRemoveView = this._onDidRemoveView.event;
|
readonly onDidRemoveView = this._onDidRemoveView.event;
|
||||||
|
|
||||||
get size() {
|
get size(): number {
|
||||||
return this._size;
|
return this._size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ export class Splitview {
|
|||||||
this._size = value;
|
this._size = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orthogonalSize() {
|
get orthogonalSize(): number {
|
||||||
return this._orthogonalSize;
|
return this._orthogonalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,15 +131,15 @@ export class Splitview {
|
|||||||
this._orthogonalSize = value;
|
this._orthogonalSize = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public get length() {
|
public get length(): number {
|
||||||
return this.views.length;
|
return this.views.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public get proportions() {
|
public get proportions(): number[] | undefined {
|
||||||
return this._proportions ? [...this._proportions] : undefined;
|
return this._proportions ? [...this._proportions] : undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
get orientation() {
|
get orientation(): Orientation {
|
||||||
return this._orientation;
|
return this._orientation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,10 +168,10 @@ export class Splitview {
|
|||||||
: this.views.reduce((r, item) => r + item.maximumSize, 0);
|
: this.views.reduce((r, item) => r + item.maximumSize, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private _startSnappingEnabled = true;
|
|
||||||
get startSnappingEnabled(): boolean {
|
get startSnappingEnabled(): boolean {
|
||||||
return this._startSnappingEnabled;
|
return this._startSnappingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
set startSnappingEnabled(startSnappingEnabled: boolean) {
|
set startSnappingEnabled(startSnappingEnabled: boolean) {
|
||||||
if (this._startSnappingEnabled === startSnappingEnabled) {
|
if (this._startSnappingEnabled === startSnappingEnabled) {
|
||||||
return;
|
return;
|
||||||
@ -179,10 +181,10 @@ export class Splitview {
|
|||||||
this.updateSashEnablement();
|
this.updateSashEnablement();
|
||||||
}
|
}
|
||||||
|
|
||||||
private _endSnappingEnabled = true;
|
|
||||||
get endSnappingEnabled(): boolean {
|
get endSnappingEnabled(): boolean {
|
||||||
return this._endSnappingEnabled;
|
return this._endSnappingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
set endSnappingEnabled(endSnappingEnabled: boolean) {
|
set endSnappingEnabled(endSnappingEnabled: boolean) {
|
||||||
if (this._endSnappingEnabled === endSnappingEnabled) {
|
if (this._endSnappingEnabled === endSnappingEnabled) {
|
||||||
return;
|
return;
|
||||||
@ -321,7 +323,7 @@ export class Splitview {
|
|||||||
this.relayout(lowPriorityIndexes, highPriorityIndexes);
|
this.relayout(lowPriorityIndexes, highPriorityIndexes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public getViews<T extends IView>() {
|
public getViews<T extends IView>(): T[] {
|
||||||
return this.views.map((x) => x.view as T);
|
return this.views.map((x) => x.view as T);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,7 +347,7 @@ export class Splitview {
|
|||||||
size: number | Sizing = { type: 'distribute' },
|
size: number | Sizing = { type: 'distribute' },
|
||||||
index: number = this.views.length,
|
index: number = this.views.length,
|
||||||
skipLayout?: boolean
|
skipLayout?: boolean
|
||||||
) {
|
): void {
|
||||||
const container = document.createElement('div');
|
const container = document.createElement('div');
|
||||||
container.className = 'view';
|
container.className = 'view';
|
||||||
|
|
||||||
@ -622,7 +624,7 @@ export class Splitview {
|
|||||||
return viewItem.cachedVisibleSize;
|
return viewItem.cachedVisibleSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public moveView(from: number, to: number) {
|
public moveView(from: number, to: number): void {
|
||||||
const cachedVisibleSize = this.getViewCachedVisibleSize(from);
|
const cachedVisibleSize = this.getViewCachedVisibleSize(from);
|
||||||
const sizing =
|
const sizing =
|
||||||
typeof cachedVisibleSize === 'undefined'
|
typeof cachedVisibleSize === 'undefined'
|
||||||
@ -632,7 +634,7 @@ export class Splitview {
|
|||||||
this.addView(view, sizing, to);
|
this.addView(view, sizing, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(size: number, orthogonalSize: number) {
|
public layout(size: number, orthogonalSize: number): void {
|
||||||
const previousSize = Math.max(this.size, this.contentSize);
|
const previousSize = Math.max(this.size, this.contentSize);
|
||||||
this.size = size;
|
this.size = size;
|
||||||
this.orthogonalSize = orthogonalSize;
|
this.orthogonalSize = orthogonalSize;
|
||||||
@ -672,7 +674,7 @@ export class Splitview {
|
|||||||
private relayout(
|
private relayout(
|
||||||
lowPriorityIndexes?: number[],
|
lowPriorityIndexes?: number[],
|
||||||
highPriorityIndexes?: number[]
|
highPriorityIndexes?: number[]
|
||||||
) {
|
): void {
|
||||||
const contentSize = this.views.reduce((r, i) => r + i.size, 0);
|
const contentSize = this.views.reduce((r, i) => r + i.size, 0);
|
||||||
|
|
||||||
this.resize(
|
this.resize(
|
||||||
@ -687,7 +689,7 @@ export class Splitview {
|
|||||||
this.saveProportions();
|
this.saveProportions();
|
||||||
}
|
}
|
||||||
|
|
||||||
private distributeEmptySpace(lowPriorityIndex?: number) {
|
private distributeEmptySpace(lowPriorityIndex?: number): void {
|
||||||
const contentSize = this.views.reduce((r, i) => r + i.size, 0);
|
const contentSize = this.views.reduce((r, i) => r + i.size, 0);
|
||||||
let emptyDelta = this.size - contentSize;
|
let emptyDelta = this.size - contentSize;
|
||||||
|
|
||||||
@ -733,7 +735,7 @@ export class Splitview {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private layoutViews() {
|
private layoutViews(): void {
|
||||||
this.contentSize = this.views.reduce((r, i) => r + i.size, 0);
|
this.contentSize = this.views.reduce((r, i) => r + i.size, 0);
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
const x: number[] = [];
|
const x: number[] = [];
|
||||||
@ -875,7 +877,7 @@ export class Splitview {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateSash(sash: ISashItem, state: SashState) {
|
private updateSash(sash: ISashItem, state: SashState): void {
|
||||||
toggleClass(sash.container, 'disabled', state === SashState.DISABLED);
|
toggleClass(sash.container, 'disabled', state === SashState.DISABLED);
|
||||||
toggleClass(sash.container, 'enabled', state === SashState.ENABLED);
|
toggleClass(sash.container, 'enabled', state === SashState.ENABLED);
|
||||||
toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);
|
toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);
|
||||||
@ -1011,19 +1013,19 @@ export class Splitview {
|
|||||||
return delta;
|
return delta;
|
||||||
};
|
};
|
||||||
|
|
||||||
private createViewContainer() {
|
private createViewContainer(): HTMLElement {
|
||||||
const element = document.createElement('div');
|
const element = document.createElement('div');
|
||||||
element.className = 'view-container';
|
element.className = 'view-container';
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
private createSashContainer() {
|
private createSashContainer(): HTMLElement {
|
||||||
const element = document.createElement('div');
|
const element = document.createElement('div');
|
||||||
element.className = 'sash-container';
|
element.className = 'sash-container';
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
private createContainer() {
|
private createContainer(): HTMLElement {
|
||||||
const element = document.createElement('div');
|
const element = document.createElement('div');
|
||||||
const orientationClassname =
|
const orientationClassname =
|
||||||
this._orientation === Orientation.HORIZONTAL
|
this._orientation === Orientation.HORIZONTAL
|
||||||
@ -1033,7 +1035,7 @@ export class Splitview {
|
|||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this._onDidSashEnd.dispose();
|
this._onDidSashEnd.dispose();
|
||||||
this._onDidAddView.dispose();
|
this._onDidAddView.dispose();
|
||||||
this._onDidRemoveView.dispose();
|
this._onDidRemoveView.dispose();
|
||||||
|
@ -4,6 +4,8 @@ import { IView, LayoutPriority } from './splitview';
|
|||||||
|
|
||||||
export class ViewItem {
|
export class ViewItem {
|
||||||
private _size: number;
|
private _size: number;
|
||||||
|
private _cachedVisibleSize: number | undefined = undefined;
|
||||||
|
|
||||||
set size(size: number) {
|
set size(size: number) {
|
||||||
this._size = size;
|
this._size = size;
|
||||||
}
|
}
|
||||||
@ -12,7 +14,6 @@ export class ViewItem {
|
|||||||
return this._size;
|
return this._size;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _cachedVisibleSize: number | undefined = undefined;
|
|
||||||
get cachedVisibleSize(): number | undefined {
|
get cachedVisibleSize(): number | undefined {
|
||||||
return this._cachedVisibleSize;
|
return this._cachedVisibleSize;
|
||||||
}
|
}
|
||||||
@ -21,31 +22,6 @@ export class ViewItem {
|
|||||||
return typeof this._cachedVisibleSize === 'undefined';
|
return typeof this._cachedVisibleSize === 'undefined';
|
||||||
}
|
}
|
||||||
|
|
||||||
setVisible(visible: boolean, size?: number): void {
|
|
||||||
if (visible === this.visible) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (visible) {
|
|
||||||
this.size = clamp(
|
|
||||||
this._cachedVisibleSize ?? 0,
|
|
||||||
this.viewMinimumSize,
|
|
||||||
this.viewMaximumSize
|
|
||||||
);
|
|
||||||
this._cachedVisibleSize = undefined;
|
|
||||||
} else {
|
|
||||||
this._cachedVisibleSize =
|
|
||||||
typeof size === 'number' ? size : this.size;
|
|
||||||
this.size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.container.classList.toggle('visible', visible);
|
|
||||||
|
|
||||||
if (this.view.setVisible) {
|
|
||||||
this.view.setVisible(visible);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
get minimumSize(): number {
|
get minimumSize(): number {
|
||||||
return this.visible ? this.view.minimumSize : 0;
|
return this.visible ? this.view.minimumSize : 0;
|
||||||
}
|
}
|
||||||
@ -87,12 +63,30 @@ export class ViewItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// layout(offset: number, layoutContext: TLayoutContext | undefined): void {
|
setVisible(visible: boolean, size?: number): void {
|
||||||
// this.layoutContainer(offset);
|
if (visible === this.visible) {
|
||||||
// this.view.layout(this.size, offset, layoutContext);
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// abstract layoutContainer(offset: number): void;
|
if (visible) {
|
||||||
|
this.size = clamp(
|
||||||
|
this._cachedVisibleSize ?? 0,
|
||||||
|
this.viewMinimumSize,
|
||||||
|
this.viewMaximumSize
|
||||||
|
);
|
||||||
|
this._cachedVisibleSize = undefined;
|
||||||
|
} else {
|
||||||
|
this._cachedVisibleSize =
|
||||||
|
typeof size === 'number' ? size : this.size;
|
||||||
|
this.size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.container.classList.toggle('visible', visible);
|
||||||
|
|
||||||
|
if (this.view.setVisible) {
|
||||||
|
this.view.setVisible(visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dispose(): IView {
|
dispose(): IView {
|
||||||
this.disposable.dispose();
|
this.disposable.dispose();
|
||||||
|
Loading…
Reference in New Issue
Block a user