mirror of
https://github.com/mathuo/dockview
synced 2025-08-10 03:06:02 +00:00
feat: panel.api.setSize links to group setSize
This commit is contained in:
parent
4bd6eba53a
commit
debdcb8d8b
@ -1,6 +1,6 @@
|
|||||||
|
import { DockviewPanelApiImpl, TitleEvent } from '../../api/dockviewPanelApi';
|
||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { DockviewPanelApiImpl, TitleEvent } from '../../api/groupPanelApi';
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
import { IDockviewPanel } from '../../groupview/groupPanel';
|
|
||||||
import { GroupPanel } from '../../groupview/groupviewPanel';
|
import { GroupPanel } from '../../groupview/groupviewPanel';
|
||||||
|
|
||||||
describe('groupPanelApi', () => {
|
describe('groupPanelApi', () => {
|
||||||
|
@ -13,16 +13,16 @@ import { CompositeDisposable } from '../../lifecycle';
|
|||||||
import {
|
import {
|
||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
IDockviewPanel,
|
|
||||||
IGroupPanelInitParameters,
|
IGroupPanelInitParameters,
|
||||||
} from '../../groupview/groupPanel';
|
} from '../../groupview/types';
|
||||||
import { IGroupPanelView } from '../../dockview/defaultGroupPanelView';
|
import { IGroupPanelView } from '../../dockview/defaultGroupPanelView';
|
||||||
|
import { DefaultTab } from '../../dockview/components/tab/defaultTab';
|
||||||
|
import { Emitter } from '../../events';
|
||||||
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
import {
|
import {
|
||||||
DockviewPanelApi,
|
DockviewPanelApi,
|
||||||
DockviewPanelApiImpl,
|
DockviewPanelApiImpl,
|
||||||
} from '../../api/groupPanelApi';
|
} from '../../api/dockviewPanelApi';
|
||||||
import { DefaultTab } from '../../dockview/components/tab/defaultTab';
|
|
||||||
import { Emitter } from '../../events';
|
|
||||||
|
|
||||||
class PanelContentPartTest implements IContentRenderer {
|
class PanelContentPartTest implements IContentRenderer {
|
||||||
element: HTMLElement = document.createElement('div');
|
element: HTMLElement = document.createElement('div');
|
||||||
|
@ -4,7 +4,7 @@ import { IGroupPanelView } from '../../dockview/defaultGroupPanelView';
|
|||||||
import { DockviewPanel } from '../../dockview/dockviewPanel';
|
import { DockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
import { GroupPanel } from '../../groupview/groupviewPanel';
|
import { GroupPanel } from '../../groupview/groupviewPanel';
|
||||||
|
|
||||||
describe('dockviewGroupPanel', () => {
|
describe('dockviewPanel', () => {
|
||||||
test('update title', () => {
|
test('update title', () => {
|
||||||
const dockviewApiMock = jest.fn<DockviewApi, []>(() => {
|
const dockviewApiMock = jest.fn<DockviewApi, []>(() => {
|
||||||
return {
|
return {
|
||||||
@ -94,4 +94,29 @@ describe('dockviewGroupPanel', () => {
|
|||||||
|
|
||||||
expect(cut.params).toEqual({ variableA: 'A', variableB: 'B' });
|
expect(cut.params).toEqual({ variableA: 'A', variableB: 'B' });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('setSize propagates to underlying group', () => {
|
||||||
|
const dockviewApiMock = jest.fn<DockviewApi, []>(() => {
|
||||||
|
return {} as any;
|
||||||
|
});
|
||||||
|
const accessorMock = jest.fn<DockviewComponent, []>(() => {
|
||||||
|
return {} as any;
|
||||||
|
});
|
||||||
|
const groupMock = jest.fn<GroupPanel, []>(() => {
|
||||||
|
return {
|
||||||
|
api: {
|
||||||
|
setSize: jest.fn(),
|
||||||
|
},
|
||||||
|
} as any;
|
||||||
|
});
|
||||||
|
const api = new dockviewApiMock();
|
||||||
|
const accessor = new accessorMock();
|
||||||
|
const group = new groupMock();
|
||||||
|
const cut = new DockviewPanel('fake-id', accessor, api, group);
|
||||||
|
|
||||||
|
cut.api.setSize({ height: 123, width: 456 });
|
||||||
|
|
||||||
|
expect(group.api.setSize).toBeCalledWith({ height: 123, width: 456 });
|
||||||
|
expect(group.api.setSize).toBeCalledTimes(1);
|
||||||
|
});
|
||||||
});
|
});
|
@ -1,9 +1,8 @@
|
|||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import {
|
import {
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
IDockviewPanel,
|
|
||||||
IGroupPanelInitParameters,
|
IGroupPanelInitParameters,
|
||||||
} from '../../groupview/groupPanel';
|
} from '../../groupview/types';
|
||||||
import {
|
import {
|
||||||
GroupPanelPartInitParameters,
|
GroupPanelPartInitParameters,
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
@ -12,7 +11,6 @@ import {
|
|||||||
} from '../../groupview/types';
|
} from '../../groupview/types';
|
||||||
import { PanelUpdateEvent } from '../../panel/types';
|
import { PanelUpdateEvent } from '../../panel/types';
|
||||||
import { GroupOptions, Groupview } from '../../groupview/groupview';
|
import { GroupOptions, Groupview } from '../../groupview/groupview';
|
||||||
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
|
||||||
import {
|
import {
|
||||||
DefaultGroupPanelView,
|
DefaultGroupPanelView,
|
||||||
IGroupPanelView,
|
IGroupPanelView,
|
||||||
@ -21,6 +19,8 @@ import { GroupPanel } from '../../groupview/groupviewPanel';
|
|||||||
import { fireEvent } from '@testing-library/dom';
|
import { fireEvent } from '@testing-library/dom';
|
||||||
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
|
import { LocalSelectionTransfer, PanelTransfer } from '../../dnd/dataTransfer';
|
||||||
import { CompositeDisposable } from '../../lifecycle';
|
import { CompositeDisposable } from '../../lifecycle';
|
||||||
|
import { DockviewPanelApi } from '../../api/dockviewPanelApi';
|
||||||
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
|
|
||||||
enum GroupChangeKind2 {
|
enum GroupChangeKind2 {
|
||||||
ADD_PANEL,
|
ADD_PANEL,
|
||||||
|
@ -8,8 +8,8 @@ import {
|
|||||||
import { CompositeDisposable } from '../../../lifecycle';
|
import { CompositeDisposable } from '../../../lifecycle';
|
||||||
import { PanelUpdateEvent } from '../../../panel/types';
|
import { PanelUpdateEvent } from '../../../panel/types';
|
||||||
import { IGroupPanelView } from '../../../dockview/defaultGroupPanelView';
|
import { IGroupPanelView } from '../../../dockview/defaultGroupPanelView';
|
||||||
import { IDockviewPanel } from '../../../groupview/groupPanel';
|
|
||||||
import { GroupPanel } from '../../../groupview/groupviewPanel';
|
import { GroupPanel } from '../../../groupview/groupviewPanel';
|
||||||
|
import { IDockviewPanel } from '../../../dockview/dockviewPanel';
|
||||||
|
|
||||||
class TestContentRenderer
|
class TestContentRenderer
|
||||||
extends CompositeDisposable
|
extends CompositeDisposable
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
SerializedGridview,
|
SerializedGridview,
|
||||||
} from '../gridview/gridviewComponent';
|
} from '../gridview/gridviewComponent';
|
||||||
import { IGridviewPanel } from '../gridview/gridviewPanel';
|
import { IGridviewPanel } from '../gridview/gridviewPanel';
|
||||||
import { IDockviewPanel } from '../groupview/groupPanel';
|
|
||||||
import {
|
import {
|
||||||
AddPaneviewComponentOptions,
|
AddPaneviewComponentOptions,
|
||||||
SerializedPaneview,
|
SerializedPaneview,
|
||||||
@ -33,6 +33,7 @@ import { ISplitviewPanel } from '../splitview/splitviewPanel';
|
|||||||
import { GroupPanel, IGroupviewPanel } from '../groupview/groupviewPanel';
|
import { GroupPanel, IGroupviewPanel } from '../groupview/groupviewPanel';
|
||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { PaneviewDropEvent } from '../react';
|
import { PaneviewDropEvent } from '../react';
|
||||||
|
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface CommonApi<T = any> {
|
export interface CommonApi<T = any> {
|
||||||
readonly height: number;
|
readonly height: number;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { GridviewPanelApiImpl, GridviewPanelApi } from './gridviewPanelApi';
|
import { GridviewPanelApiImpl, GridviewPanelApi } from './gridviewPanelApi';
|
||||||
import { IDockviewPanel } from '../groupview/groupPanel';
|
|
||||||
import { GroupPanel } from '../groupview/groupviewPanel';
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
||||||
import { MutableDisposable } from '../lifecycle';
|
import { MutableDisposable } from '../lifecycle';
|
||||||
|
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface TitleEvent {
|
export interface TitleEvent {
|
||||||
readonly title: string;
|
readonly title: string;
|
||||||
@ -37,13 +37,13 @@ export class DockviewPanelApiImpl
|
|||||||
private readonly _onDidGroupChange = new Emitter<void>();
|
private readonly _onDidGroupChange = new Emitter<void>();
|
||||||
readonly onDidGroupChange = this._onDidGroupChange.event;
|
readonly onDidGroupChange = this._onDidGroupChange.event;
|
||||||
|
|
||||||
private disposable = new MutableDisposable();
|
private readonly disposable = new MutableDisposable();
|
||||||
|
|
||||||
get title() {
|
get title(): string {
|
||||||
return this.panel.title;
|
return this.panel.title;
|
||||||
}
|
}
|
||||||
|
|
||||||
get isGroupActive() {
|
get isGroupActive(): boolean {
|
||||||
return !!this.group?.isActive;
|
return !!this.group?.isActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,14 +84,11 @@ export class DockviewPanelApiImpl
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public setTitle(title: string) {
|
public setTitle(title: string): void {
|
||||||
this._onDidTitleChange.fire({ title });
|
this._onDidTitleChange.fire({ title });
|
||||||
}
|
}
|
||||||
|
|
||||||
public close(): void {
|
public close(): void {
|
||||||
if (!this.group) {
|
this.group.model.closePanel(this.panel);
|
||||||
throw new Error(`panel ${this.id} has no group`);
|
|
||||||
}
|
|
||||||
return this.group.model.closePanel(this.panel);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -32,22 +32,19 @@ export class GridviewPanelApiImpl
|
|||||||
extends PanelApiImpl
|
extends PanelApiImpl
|
||||||
implements GridviewPanelApi
|
implements GridviewPanelApi
|
||||||
{
|
{
|
||||||
readonly _onDidConstraintsChangeInternal =
|
private readonly _onDidConstraintsChangeInternal =
|
||||||
new Emitter<GridConstraintChangeEvent2>();
|
new Emitter<GridConstraintChangeEvent2>();
|
||||||
readonly onDidConstraintsChangeInternal: Event<GridConstraintChangeEvent2> =
|
readonly onDidConstraintsChangeInternal: Event<GridConstraintChangeEvent2> =
|
||||||
this._onDidConstraintsChangeInternal.event;
|
this._onDidConstraintsChangeInternal.event;
|
||||||
//
|
|
||||||
|
|
||||||
readonly _onDidConstraintsChange = new Emitter<GridConstraintChangeEvent>({
|
readonly _onDidConstraintsChange = new Emitter<GridConstraintChangeEvent>({
|
||||||
replay: true,
|
replay: true,
|
||||||
});
|
});
|
||||||
readonly onDidConstraintsChange: Event<GridConstraintChangeEvent> =
|
readonly onDidConstraintsChange: Event<GridConstraintChangeEvent> =
|
||||||
this._onDidConstraintsChange.event;
|
this._onDidConstraintsChange.event;
|
||||||
//
|
|
||||||
|
|
||||||
readonly _onDidSizeChange = new Emitter<SizeEvent>();
|
private readonly _onDidSizeChange = new Emitter<SizeEvent>();
|
||||||
readonly onDidSizeChange: Event<SizeEvent> = this._onDidSizeChange.event;
|
readonly onDidSizeChange: Event<SizeEvent> = this._onDidSizeChange.event;
|
||||||
//
|
|
||||||
|
|
||||||
constructor(id: string, panel?: IPanel) {
|
constructor(id: string, panel?: IPanel) {
|
||||||
super(id);
|
super(id);
|
||||||
@ -63,11 +60,11 @@ export class GridviewPanelApiImpl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public setConstraints(value: GridConstraintChangeEvent) {
|
public setConstraints(value: GridConstraintChangeEvent): void {
|
||||||
this._onDidConstraintsChangeInternal.fire(value);
|
this._onDidConstraintsChangeInternal.fire(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public setSize(event: SizeEvent) {
|
public setSize(event: SizeEvent): void {
|
||||||
this._onDidSizeChange.fire(event);
|
this._onDidSizeChange.fire(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import { CompositeDisposable } from '../lifecycle';
|
|||||||
import { DragAndDropObserver } from './dnd';
|
import { DragAndDropObserver } from './dnd';
|
||||||
import { clamp } from '../math';
|
import { clamp } from '../math';
|
||||||
import { Direction } from '../gridview/baseComponentGridview';
|
import { Direction } from '../gridview/baseComponentGridview';
|
||||||
|
import { isBooleanValue } from '../types';
|
||||||
|
|
||||||
function numberOrFallback(maybeNumber: any, fallback: number): number {
|
function numberOrFallback(maybeNumber: any, fallback: number): number {
|
||||||
return typeof maybeNumber === 'number' ? maybeNumber : fallback;
|
return typeof maybeNumber === 'number' ? maybeNumber : fallback;
|
||||||
@ -33,12 +34,6 @@ export interface DroptargetEvent {
|
|||||||
|
|
||||||
export type Position = 'top' | 'bottom' | 'left' | 'right' | 'center';
|
export type Position = 'top' | 'bottom' | 'left' | 'right' | 'center';
|
||||||
|
|
||||||
function isBooleanValue(
|
|
||||||
canDisplayOverlay: CanDisplayOverlay
|
|
||||||
): canDisplayOverlay is boolean {
|
|
||||||
return typeof canDisplayOverlay === 'boolean';
|
|
||||||
}
|
|
||||||
|
|
||||||
export type CanDisplayOverlay =
|
export type CanDisplayOverlay =
|
||||||
| boolean
|
| boolean
|
||||||
| ((dragEvent: DragEvent, state: Position) => boolean);
|
| ((dragEvent: DragEvent, state: Position) => boolean);
|
||||||
@ -103,6 +98,7 @@ export class Droptarget extends CompositeDisposable {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (quadrant === null) {
|
if (quadrant === null) {
|
||||||
|
// no drop target should be displayed
|
||||||
this.removeDropTarget();
|
this.removeDropTarget();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -288,7 +284,7 @@ export class Droptarget extends CompositeDisposable {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private removeDropTarget() {
|
private removeDropTarget(): void {
|
||||||
if (this.target) {
|
if (this.target) {
|
||||||
this._state = undefined;
|
this._state = undefined;
|
||||||
this.element.removeChild(this.target);
|
this.element.removeChild(this.target);
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
} from '../groupview/types';
|
} from '../groupview/types';
|
||||||
import { GroupPanel } from '../groupview/groupviewPanel';
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
||||||
import { IDisposable } from '../lifecycle';
|
import { IDisposable } from '../lifecycle';
|
||||||
import { GroupPanelUpdateEvent } from '../groupview/groupPanel';
|
import { GroupPanelUpdateEvent } from '../groupview/types';
|
||||||
|
|
||||||
export interface IGroupPanelView extends IDisposable {
|
export interface IGroupPanelView extends IDisposable {
|
||||||
readonly content: IContentRenderer;
|
readonly content: IContentRenderer;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { GroupviewPanelState, IDockviewPanel } from '../groupview/groupPanel';
|
import { GroupviewPanelState } from '../groupview/types';
|
||||||
import { GroupPanel } from '../groupview/groupviewPanel';
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
||||||
|
import { IDockviewPanel } from './dockviewPanel';
|
||||||
|
|
||||||
export interface IPanelDeserializer {
|
export interface IPanelDeserializer {
|
||||||
fromJSON(panelData: GroupviewPanelState, group: GroupPanel): IDockviewPanel;
|
fromJSON(panelData: GroupviewPanelState, group: GroupPanel): IDockviewPanel;
|
||||||
|
@ -6,8 +6,8 @@ import {
|
|||||||
} from '../gridview/gridview';
|
} from '../gridview/gridview';
|
||||||
import { directionToPosition, Droptarget, Position } from '../dnd/droptarget';
|
import { directionToPosition, Droptarget, Position } from '../dnd/droptarget';
|
||||||
import { tail, sequenceEquals } from '../array';
|
import { tail, sequenceEquals } from '../array';
|
||||||
import { GroupviewPanelState, IDockviewPanel } from '../groupview/groupPanel';
|
import { GroupviewPanelState } from '../groupview/types';
|
||||||
import { DockviewPanel } from './dockviewPanel';
|
import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
|
||||||
import { CompositeDisposable } from '../lifecycle';
|
import { CompositeDisposable } from '../lifecycle';
|
||||||
import { Event, Emitter } from '../events';
|
import { Event, Emitter } from '../events';
|
||||||
import { Watermark } from './components/watermark/watermark';
|
import { Watermark } from './components/watermark/watermark';
|
||||||
|
@ -1,17 +1,35 @@
|
|||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { DockviewPanelApiImpl } from '../api/groupPanelApi';
|
import {
|
||||||
|
DockviewPanelApi,
|
||||||
|
DockviewPanelApiImpl,
|
||||||
|
} from '../api/dockviewPanelApi';
|
||||||
import {
|
import {
|
||||||
GroupPanelUpdateEvent,
|
GroupPanelUpdateEvent,
|
||||||
GroupviewPanelState,
|
GroupviewPanelState,
|
||||||
IDockviewPanel,
|
|
||||||
IGroupPanelInitParameters,
|
IGroupPanelInitParameters,
|
||||||
} from '../groupview/groupPanel';
|
} from '../groupview/types';
|
||||||
import { GroupPanel } from '../groupview/groupviewPanel';
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
||||||
import { CompositeDisposable, MutableDisposable } from '../lifecycle';
|
import {
|
||||||
import { Parameters } from '../panel/types';
|
CompositeDisposable,
|
||||||
|
IDisposable,
|
||||||
|
MutableDisposable,
|
||||||
|
} from '../lifecycle';
|
||||||
|
import { IPanel, Parameters } from '../panel/types';
|
||||||
import { IGroupPanelView } from './defaultGroupPanelView';
|
import { IGroupPanelView } from './defaultGroupPanelView';
|
||||||
import { DockviewComponent } from './dockviewComponent';
|
import { DockviewComponent } from './dockviewComponent';
|
||||||
|
|
||||||
|
export interface IDockviewPanel extends IDisposable, IPanel {
|
||||||
|
readonly view?: IGroupPanelView;
|
||||||
|
readonly group: GroupPanel;
|
||||||
|
readonly api: DockviewPanelApi;
|
||||||
|
readonly title: string;
|
||||||
|
readonly params: Record<string, any> | undefined;
|
||||||
|
updateParentGroup(group: GroupPanel, isGroupActive: boolean): void;
|
||||||
|
init(params: IGroupPanelInitParameters): void;
|
||||||
|
toJSON(): GroupviewPanelState;
|
||||||
|
update(event: GroupPanelUpdateEvent): void;
|
||||||
|
}
|
||||||
|
|
||||||
export class DockviewPanel
|
export class DockviewPanel
|
||||||
extends CompositeDisposable
|
extends CompositeDisposable
|
||||||
implements IDockviewPanel
|
implements IDockviewPanel
|
||||||
@ -26,11 +44,11 @@ export class DockviewPanel
|
|||||||
|
|
||||||
private _title: string;
|
private _title: string;
|
||||||
|
|
||||||
get params() {
|
get params(): Parameters | undefined {
|
||||||
return this._params;
|
return this._params;
|
||||||
}
|
}
|
||||||
|
|
||||||
get title() {
|
get title(): string {
|
||||||
return this._title;
|
return this._title;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,6 +75,11 @@ export class DockviewPanel
|
|||||||
this.addDisposables(
|
this.addDisposables(
|
||||||
this.api.onActiveChange(() => {
|
this.api.onActiveChange(() => {
|
||||||
accessor.setActivePanel(this);
|
accessor.setActivePanel(this);
|
||||||
|
}),
|
||||||
|
this.api.onDidSizeChange((event) => {
|
||||||
|
// forward the resize event to the group since if you want to resize a panel
|
||||||
|
// you are actually just resizing the panels parent which is the group
|
||||||
|
this.group.api.setSize(event);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -74,7 +97,7 @@ export class DockviewPanel
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
focus() {
|
focus(): void {
|
||||||
this.api._onFocusEvent.fire();
|
this.api._onFocusEvent.fire();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +113,7 @@ export class DockviewPanel
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
setTitle(title: string) {
|
setTitle(title: string): void {
|
||||||
const didTitleChange = title !== this._params?.title;
|
const didTitleChange = title !== this._params?.title;
|
||||||
|
|
||||||
if (didTitleChange) {
|
if (didTitleChange) {
|
||||||
@ -129,7 +152,7 @@ export class DockviewPanel
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateParentGroup(group: GroupPanel, isGroupActive: boolean) {
|
public updateParentGroup(group: GroupPanel, isGroupActive: boolean): void {
|
||||||
this._group = group;
|
this._group = group;
|
||||||
this.api.group = group;
|
this.api.group = group;
|
||||||
|
|
||||||
@ -148,7 +171,7 @@ export class DockviewPanel
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public layout(width: number, height: number) {
|
public layout(width: number, height: number): void {
|
||||||
// the obtain the correct dimensions of the content panel we must deduct the tab height
|
// the obtain the correct dimensions of the content panel we must deduct the tab height
|
||||||
this.api._onDidDimensionChange.fire({
|
this.api._onDidDimensionChange.fire({
|
||||||
width,
|
width,
|
||||||
@ -158,7 +181,7 @@ export class DockviewPanel
|
|||||||
this.view?.layout(width, height);
|
this.view?.layout(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
public dispose() {
|
public dispose(): void {
|
||||||
this.api.dispose();
|
this.api.dispose();
|
||||||
this.mutableDisposable.dispose();
|
this.mutableDisposable.dispose();
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { Direction } from '../gridview/baseComponentGridview';
|
import { Direction } from '../gridview/baseComponentGridview';
|
||||||
import { IGridView } from '../gridview/gridview';
|
import { IGridView } from '../gridview/gridview';
|
||||||
import { IDockviewPanel } from '../groupview/groupPanel';
|
|
||||||
import {
|
import {
|
||||||
IContentRenderer,
|
IContentRenderer,
|
||||||
ITabRenderer,
|
ITabRenderer,
|
||||||
@ -15,6 +14,7 @@ import { DockviewDropTargets } from '../groupview/dnd';
|
|||||||
import { PanelTransfer } from '../dnd/dataTransfer';
|
import { PanelTransfer } from '../dnd/dataTransfer';
|
||||||
import { IGroupControlRenderer } from '../react/dockview/groupControlsRenderer';
|
import { IGroupControlRenderer } from '../react/dockview/groupControlsRenderer';
|
||||||
import { Position } from '../dnd/droptarget';
|
import { Position } from '../dnd/droptarget';
|
||||||
|
import { IDockviewPanel } from './dockviewPanel';
|
||||||
|
|
||||||
export interface GroupPanelFrameworkComponentFactory {
|
export interface GroupPanelFrameworkComponentFactory {
|
||||||
content: FrameworkFactory<IContentRenderer>;
|
content: FrameworkFactory<IContentRenderer>;
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
import { DockviewPanelApi } from '../api/groupPanelApi';
|
|
||||||
import { IDisposable } from '../lifecycle';
|
|
||||||
import { HeaderPartInitParameters } from './types';
|
|
||||||
import {
|
|
||||||
IPanel,
|
|
||||||
PanelInitParameters,
|
|
||||||
PanelUpdateEvent,
|
|
||||||
Parameters,
|
|
||||||
} from '../panel/types';
|
|
||||||
import { GroupPanel } from './groupviewPanel';
|
|
||||||
import { IGroupPanelView } from '../dockview/defaultGroupPanelView';
|
|
||||||
|
|
||||||
export interface IGroupPanelInitParameters
|
|
||||||
extends PanelInitParameters,
|
|
||||||
HeaderPartInitParameters {
|
|
||||||
view: IGroupPanelView;
|
|
||||||
}
|
|
||||||
|
|
||||||
export type GroupPanelUpdateEvent = PanelUpdateEvent<{
|
|
||||||
params?: Parameters;
|
|
||||||
title?: string;
|
|
||||||
}>;
|
|
||||||
|
|
||||||
export interface IDockviewPanel extends IDisposable, IPanel {
|
|
||||||
readonly view?: IGroupPanelView;
|
|
||||||
readonly group: GroupPanel;
|
|
||||||
readonly api: DockviewPanelApi;
|
|
||||||
readonly title: string;
|
|
||||||
readonly params: Record<string, any> | undefined;
|
|
||||||
updateParentGroup(group: GroupPanel, isGroupActive: boolean): void;
|
|
||||||
init(params: IGroupPanelInitParameters): void;
|
|
||||||
toJSON(): GroupviewPanelState;
|
|
||||||
update(event: GroupPanelUpdateEvent): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GroupviewPanelState {
|
|
||||||
id: string;
|
|
||||||
view?: any;
|
|
||||||
title: string;
|
|
||||||
params?: { [key: string]: any };
|
|
||||||
}
|
|
@ -8,13 +8,13 @@ import { IGridPanelView } from '../gridview/baseComponentGridview';
|
|||||||
import { IViewSize } from '../gridview/gridview';
|
import { IViewSize } from '../gridview/gridview';
|
||||||
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
||||||
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
||||||
import { IDockviewPanel } from './groupPanel';
|
|
||||||
import { ContentContainer, IContentContainer } from './panel/content';
|
import { ContentContainer, IContentContainer } from './panel/content';
|
||||||
import { ITabsContainer, TabsContainer } from './titlebar/tabsContainer';
|
import { ITabsContainer, TabsContainer } from './titlebar/tabsContainer';
|
||||||
import { IWatermarkRenderer } from './types';
|
import { IWatermarkRenderer } from './types';
|
||||||
import { GroupPanel } from './groupviewPanel';
|
import { GroupPanel } from './groupviewPanel';
|
||||||
import { DockviewDropTargets } from './dnd';
|
import { DockviewDropTargets } from './dnd';
|
||||||
import { IGroupControlRenderer } from '../react/dockview/groupControlsRenderer';
|
import { IGroupControlRenderer } from '../react/dockview/groupControlsRenderer';
|
||||||
|
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface DndService {
|
export interface DndService {
|
||||||
canDisplayOverlay(
|
canDisplayOverlay(
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
} from '../api/gridviewPanelApi';
|
} from '../api/gridviewPanelApi';
|
||||||
import { Groupview, GroupOptions, IHeader } from './groupview';
|
import { Groupview, GroupOptions, IHeader } from './groupview';
|
||||||
import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
|
import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
|
||||||
import { IDockviewPanel } from './groupPanel';
|
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface IGroupviewPanel extends IGridviewPanel {
|
export interface IGroupviewPanel extends IGridviewPanel {
|
||||||
model: Groupview;
|
model: Groupview;
|
||||||
|
@ -5,7 +5,7 @@ import {
|
|||||||
} from '../../lifecycle';
|
} from '../../lifecycle';
|
||||||
import { Emitter, Event } from '../../events';
|
import { Emitter, Event } from '../../events';
|
||||||
import { trackFocus } from '../../dom';
|
import { trackFocus } from '../../dom';
|
||||||
import { IDockviewPanel } from '../groupPanel';
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface IContentContainer extends IDisposable {
|
export interface IContentContainer extends IDisposable {
|
||||||
onDidFocus: Event<void>;
|
onDidFocus: Event<void>;
|
||||||
|
@ -5,11 +5,11 @@ import {
|
|||||||
} from '../../lifecycle';
|
} from '../../lifecycle';
|
||||||
import { addDisposableListener, Emitter, Event } from '../../events';
|
import { addDisposableListener, Emitter, Event } from '../../events';
|
||||||
import { ITab, Tab } from '../tab';
|
import { ITab, Tab } from '../tab';
|
||||||
import { IDockviewPanel } from '../groupPanel';
|
|
||||||
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { GroupPanel } from '../groupviewPanel';
|
import { GroupPanel } from '../groupviewPanel';
|
||||||
import { VoidContainer } from './voidContainer';
|
import { VoidContainer } from './voidContainer';
|
||||||
import { toggleClass } from '../../dom';
|
import { toggleClass } from '../../dom';
|
||||||
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface TabDropIndexEvent {
|
export interface TabDropIndexEvent {
|
||||||
event: DragEvent;
|
event: DragEvent;
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
||||||
import { DockviewPanelApi } from '../api/groupPanelApi';
|
import { DockviewPanelApi } from '../api/dockviewPanelApi';
|
||||||
import { PanelInitParameters, IPanel } from '../panel/types';
|
import {
|
||||||
|
PanelInitParameters,
|
||||||
|
IPanel,
|
||||||
|
PanelUpdateEvent,
|
||||||
|
Parameters,
|
||||||
|
} from '../panel/types';
|
||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { GroupPanel } from './groupviewPanel';
|
import { GroupPanel } from './groupviewPanel';
|
||||||
import { Event } from '../events';
|
import { Event } from '../events';
|
||||||
|
import { IGroupPanelView } from '../dockview/defaultGroupPanelView';
|
||||||
|
|
||||||
export interface IRenderable {
|
export interface IRenderable {
|
||||||
id: string;
|
id: string;
|
||||||
@ -67,3 +73,21 @@ export interface PanelContentPartConstructor {
|
|||||||
export interface WatermarkConstructor {
|
export interface WatermarkConstructor {
|
||||||
new (): IWatermarkRenderer;
|
new (): IWatermarkRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IGroupPanelInitParameters
|
||||||
|
extends PanelInitParameters,
|
||||||
|
HeaderPartInitParameters {
|
||||||
|
view: IGroupPanelView;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type GroupPanelUpdateEvent = PanelUpdateEvent<{
|
||||||
|
params?: Parameters;
|
||||||
|
title?: string;
|
||||||
|
}>;
|
||||||
|
|
||||||
|
export interface GroupviewPanelState {
|
||||||
|
id: string;
|
||||||
|
view?: any;
|
||||||
|
title: string;
|
||||||
|
params?: { [key: string]: any };
|
||||||
|
}
|
||||||
|
@ -21,7 +21,7 @@ export { PaneviewComponentOptions } from './paneview/options';
|
|||||||
export * from './gridview/gridviewPanel';
|
export * from './gridview/gridviewPanel';
|
||||||
export * from './splitview/splitviewPanel';
|
export * from './splitview/splitviewPanel';
|
||||||
export * from './paneview/paneviewPanel';
|
export * from './paneview/paneviewPanel';
|
||||||
export * from './groupview/groupPanel';
|
export * from './groupview/types';
|
||||||
|
|
||||||
export * from './react'; // TODO: should be conditional on whether user wants the React wrappers
|
export * from './react'; // TODO: should be conditional on whether user wants the React wrappers
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ export {
|
|||||||
GridviewPanelApi,
|
GridviewPanelApi,
|
||||||
GridConstraintChangeEvent,
|
GridConstraintChangeEvent,
|
||||||
} from './api/gridviewPanelApi';
|
} from './api/gridviewPanelApi';
|
||||||
export { TitleEvent, DockviewPanelApi } from './api/groupPanelApi';
|
export { TitleEvent, DockviewPanelApi } from './api/dockviewPanelApi';
|
||||||
export {
|
export {
|
||||||
PanelSizeEvent,
|
PanelSizeEvent,
|
||||||
PanelConstraintChangeEvent,
|
PanelConstraintChangeEvent,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { DockviewComponent } from '../dockview/dockviewComponent';
|
import { DockviewComponent } from '../dockview/dockviewComponent';
|
||||||
import { GroupviewPanelState, IDockviewPanel } from '../groupview/groupPanel';
|
import { GroupviewPanelState } from '../groupview/types';
|
||||||
import { DockviewPanel } from '../dockview/dockviewPanel';
|
import { DockviewPanel, IDockviewPanel } from '../dockview/dockviewPanel';
|
||||||
import { IPanelDeserializer } from '../dockview/deserializer';
|
import { IPanelDeserializer } from '../dockview/deserializer';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
|
@ -10,7 +10,7 @@ import {
|
|||||||
DockviewDndOverlayEvent,
|
DockviewDndOverlayEvent,
|
||||||
GroupPanelFrameworkComponentFactory,
|
GroupPanelFrameworkComponentFactory,
|
||||||
} from '../../dockview/options';
|
} from '../../dockview/options';
|
||||||
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
import { DockviewPanelApi } from '../../api/dockviewPanelApi';
|
||||||
import { ReactPortalStore, usePortalsLifecycle } from '../react';
|
import { ReactPortalStore, usePortalsLifecycle } from '../react';
|
||||||
import { DockviewApi } from '../../api/component.api';
|
import { DockviewApi } from '../../api/component.api';
|
||||||
import { IWatermarkPanelProps, ReactWatermarkPart } from './reactWatermarkPart';
|
import { IWatermarkPanelProps, ReactWatermarkPart } from './reactWatermarkPart';
|
||||||
|
@ -8,7 +8,7 @@ import {
|
|||||||
IDisposable,
|
IDisposable,
|
||||||
MutableDisposable,
|
MutableDisposable,
|
||||||
} from '../../lifecycle';
|
} from '../../lifecycle';
|
||||||
import { IDockviewPanel } from '../../groupview/groupPanel';
|
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
||||||
|
|
||||||
export interface IDockviewGroupControlProps {
|
export interface IDockviewGroupControlProps {
|
||||||
api: GroupviewPanelApi;
|
api: GroupviewPanelApi;
|
||||||
|
@ -7,3 +7,7 @@ export interface FrameworkFactory<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type FunctionOrValue<T> = (() => T) | T;
|
export type FunctionOrValue<T> = (() => T) | T;
|
||||||
|
|
||||||
|
export function isBooleanValue(value: any): value is boolean {
|
||||||
|
return typeof value === 'boolean';
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user