mirror of
https://github.com/mathuo/dockview
synced 2025-08-24 02:56:19 +00:00
refactor: rename panel api objects
This commit is contained in:
parent
85f53ffae9
commit
f341b01fea
@ -1,10 +1,10 @@
|
|||||||
import { BaseViewApi, StateObject } from '../../api/api';
|
import { PanelApi, StateObject } from '../../api/panelApi';
|
||||||
|
|
||||||
describe('api', () => {
|
describe('api', () => {
|
||||||
let api: BaseViewApi;
|
let api: PanelApi;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
api = new BaseViewApi('dummy_id');
|
api = new PanelApi('dummy_id');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('sets api state', () => {
|
it('sets api state', () => {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { IGroupPanelApi } from '../../api/groupPanelApi';
|
|
||||||
import { IDockviewComponent } from '../../dockview/dockviewComponent';
|
import { IDockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { Emitter } from '../../events';
|
import { Emitter } from '../../events';
|
||||||
import {
|
import {
|
||||||
@ -22,6 +21,7 @@ import {
|
|||||||
IGroupPanelView,
|
IGroupPanelView,
|
||||||
} from '../../react/dockview/v2/defaultGroupPanelView';
|
} from '../../react/dockview/v2/defaultGroupPanelView';
|
||||||
import { GroupOptions, GroupDropEvent } from '../../groupview/v2/component';
|
import { GroupOptions, GroupDropEvent } from '../../groupview/v2/component';
|
||||||
|
import { IDockviewPanelApi } from '../../api/groupPanelApi';
|
||||||
|
|
||||||
class Watermark implements WatermarkPart {
|
class Watermark implements WatermarkPart {
|
||||||
public readonly element = document.createElement('div');
|
public readonly element = document.createElement('div');
|
||||||
@ -129,7 +129,7 @@ class TestPanel implements IGroupPanel {
|
|||||||
return this._view;
|
return this._view;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(public readonly id: string, public api: IGroupPanelApi) {
|
constructor(public readonly id: string, public api: IDockviewPanelApi) {
|
||||||
this.init({
|
this.init({
|
||||||
view: new DefaultGroupPanelView({
|
view: new DefaultGroupPanelView({
|
||||||
tab: new TestHeaderPart(id),
|
tab: new TestHeaderPart(id),
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { PanelDimensionChangeEvent } from '../../api/api';
|
import { PanelDimensionChangeEvent } from '../../api/panelApi';
|
||||||
import { CompositeDisposable } from '../../lifecycle';
|
import { CompositeDisposable } from '../../lifecycle';
|
||||||
import { PanelUpdateEvent } from '../../panel/types';
|
import { PanelUpdateEvent } from '../../panel/types';
|
||||||
import { PaneviewComponent } from '../../paneview/paneviewComponent';
|
import { PaneviewComponent } from '../../paneview/paneviewComponent';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { PanelDimensionChangeEvent } from '../../api/api';
|
import { PanelDimensionChangeEvent } from '../../api/panelApi';
|
||||||
import { CompositeDisposable } from '../../lifecycle';
|
import { CompositeDisposable } from '../../lifecycle';
|
||||||
import { Orientation } from '../../splitview/core/splitview';
|
import { Orientation } from '../../splitview/core/splitview';
|
||||||
import { SplitviewComponent } from '../../splitview/splitviewComponent';
|
import { SplitviewComponent } from '../../splitview/splitviewComponent';
|
||||||
|
@ -1,207 +0,0 @@
|
|||||||
import { Emitter, Event } from '../events';
|
|
||||||
import { CompositeDisposable } from '../lifecycle';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A valid JSON type
|
|
||||||
*/
|
|
||||||
export type StateObject =
|
|
||||||
| number
|
|
||||||
| string
|
|
||||||
| boolean
|
|
||||||
| null
|
|
||||||
| object
|
|
||||||
| StateObject[]
|
|
||||||
| { [key: string]: StateObject };
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A JSON-serializable object
|
|
||||||
*/
|
|
||||||
export interface State {
|
|
||||||
[key: string]: StateObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FocusEvent {
|
|
||||||
isFocused: boolean;
|
|
||||||
}
|
|
||||||
export interface PanelDimensionChangeEvent {
|
|
||||||
width: number;
|
|
||||||
height: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface VisibilityEvent {
|
|
||||||
isVisible: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ActiveEvent {
|
|
||||||
isActive: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IBaseViewApi {
|
|
||||||
// events
|
|
||||||
onDidDimensionsChange: Event<PanelDimensionChangeEvent>;
|
|
||||||
onDidStateChange: Event<void>;
|
|
||||||
onDidFocusChange: Event<FocusEvent>;
|
|
||||||
onDidVisibilityChange: Event<VisibilityEvent>;
|
|
||||||
onDidActiveChange: Event<ActiveEvent>;
|
|
||||||
onFocusEvent: Event<void>;
|
|
||||||
//
|
|
||||||
setVisible(isVisible: boolean): void;
|
|
||||||
setActive(): void;
|
|
||||||
// state
|
|
||||||
setState(key: string, value: StateObject): void;
|
|
||||||
setState(state: State): void;
|
|
||||||
getState: () => State;
|
|
||||||
getStateKey: <T extends StateObject>(key: string) => T;
|
|
||||||
/**
|
|
||||||
* The id of the panel that would have been assigned when the panel was created
|
|
||||||
*/
|
|
||||||
readonly id: string;
|
|
||||||
/**
|
|
||||||
* Whether the panel holds the current focus
|
|
||||||
*/
|
|
||||||
readonly isFocused: boolean;
|
|
||||||
/**
|
|
||||||
* Whether the panel is the actively selected panel
|
|
||||||
*/
|
|
||||||
readonly isActive: boolean;
|
|
||||||
/**
|
|
||||||
* Whether the panel is visible
|
|
||||||
*/
|
|
||||||
readonly isVisible: boolean;
|
|
||||||
/**
|
|
||||||
* The panel width in pixels
|
|
||||||
*/
|
|
||||||
readonly width: number;
|
|
||||||
/**
|
|
||||||
* The panel height in pixels
|
|
||||||
*/
|
|
||||||
readonly height: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A core api implementation that should be used across all panel-like objects
|
|
||||||
*/
|
|
||||||
export class BaseViewApi extends CompositeDisposable implements IBaseViewApi {
|
|
||||||
private _state: State = {};
|
|
||||||
private _isFocused = false;
|
|
||||||
private _isActive = false;
|
|
||||||
private _isVisible = true;
|
|
||||||
private _width = 0;
|
|
||||||
private _height = 0;
|
|
||||||
|
|
||||||
readonly _onDidStateChange = new Emitter<void>();
|
|
||||||
readonly onDidStateChange: Event<void> = this._onDidStateChange.event;
|
|
||||||
//
|
|
||||||
readonly _onDidPanelDimensionChange = new Emitter<PanelDimensionChangeEvent>(
|
|
||||||
{
|
|
||||||
replay: true,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
readonly onDidDimensionsChange = this._onDidPanelDimensionChange.event;
|
|
||||||
//
|
|
||||||
readonly _onDidChangeFocus = new Emitter<FocusEvent>({
|
|
||||||
replay: true,
|
|
||||||
});
|
|
||||||
readonly onDidFocusChange: Event<FocusEvent> = this._onDidChangeFocus.event;
|
|
||||||
//
|
|
||||||
readonly _onFocusEvent = new Emitter<void>();
|
|
||||||
readonly onFocusEvent: Event<void> = this._onFocusEvent.event;
|
|
||||||
//
|
|
||||||
readonly _onDidVisibilityChange = new Emitter<VisibilityEvent>({
|
|
||||||
replay: true,
|
|
||||||
});
|
|
||||||
readonly onDidVisibilityChange: Event<VisibilityEvent> = this
|
|
||||||
._onDidVisibilityChange.event;
|
|
||||||
//
|
|
||||||
|
|
||||||
readonly _onVisibilityChange = new Emitter<VisibilityEvent>();
|
|
||||||
readonly onVisibilityChange: Event<VisibilityEvent> = this
|
|
||||||
._onVisibilityChange.event;
|
|
||||||
//
|
|
||||||
readonly _onDidActiveChange = new Emitter<ActiveEvent>({
|
|
||||||
replay: true,
|
|
||||||
});
|
|
||||||
readonly onDidActiveChange: Event<ActiveEvent> = this._onDidActiveChange
|
|
||||||
.event;
|
|
||||||
//
|
|
||||||
readonly _onActiveChange = new Emitter<void>();
|
|
||||||
readonly onActiveChange: Event<void> = this._onActiveChange.event;
|
|
||||||
//
|
|
||||||
|
|
||||||
get isFocused() {
|
|
||||||
return this._isFocused;
|
|
||||||
}
|
|
||||||
|
|
||||||
get isActive() {
|
|
||||||
return this._isActive;
|
|
||||||
}
|
|
||||||
get isVisible() {
|
|
||||||
return this._isVisible;
|
|
||||||
}
|
|
||||||
|
|
||||||
get width() {
|
|
||||||
return this._width;
|
|
||||||
}
|
|
||||||
|
|
||||||
get height() {
|
|
||||||
return this._height;
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(readonly id: string) {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.addDisposables(
|
|
||||||
this._onDidStateChange,
|
|
||||||
this._onDidPanelDimensionChange,
|
|
||||||
this._onDidChangeFocus,
|
|
||||||
this._onDidVisibilityChange,
|
|
||||||
this._onDidActiveChange,
|
|
||||||
this._onFocusEvent,
|
|
||||||
this.onDidFocusChange((event) => {
|
|
||||||
this._isFocused = event.isFocused;
|
|
||||||
}),
|
|
||||||
this.onDidActiveChange((event) => {
|
|
||||||
this._isActive = event.isActive;
|
|
||||||
}),
|
|
||||||
this.onDidVisibilityChange((event) => {
|
|
||||||
this._isVisible = event.isVisible;
|
|
||||||
}),
|
|
||||||
this.onDidDimensionsChange((event) => {
|
|
||||||
this._width = event.width;
|
|
||||||
this._height = event.height;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
setVisible(isVisible: boolean) {
|
|
||||||
this._onVisibilityChange.fire({ isVisible });
|
|
||||||
}
|
|
||||||
|
|
||||||
setActive(): void {
|
|
||||||
this._onActiveChange.fire();
|
|
||||||
}
|
|
||||||
|
|
||||||
setState(
|
|
||||||
key: string | { [key: string]: StateObject },
|
|
||||||
value?: StateObject
|
|
||||||
): void {
|
|
||||||
if (typeof key === 'object') {
|
|
||||||
this._state = key;
|
|
||||||
} else if (typeof value !== undefined) {
|
|
||||||
this._state[key] = value!;
|
|
||||||
}
|
|
||||||
this._onDidStateChange.fire(undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
getState(): State {
|
|
||||||
return this._state;
|
|
||||||
}
|
|
||||||
|
|
||||||
getStateKey<T extends StateObject>(key: string): T {
|
|
||||||
return this._state[key] as T;
|
|
||||||
}
|
|
||||||
|
|
||||||
dispose() {
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { FunctionOrValue } from '../types';
|
import { FunctionOrValue } from '../types';
|
||||||
import { BaseViewApi, IBaseViewApi } from './api';
|
import { PanelApi, IPanelApi } from './panelApi';
|
||||||
|
|
||||||
export interface GridConstraintChangeEvent {
|
export interface GridConstraintChangeEvent {
|
||||||
minimumWidth?: number;
|
minimumWidth?: number;
|
||||||
@ -21,19 +21,16 @@ export interface SizeEvent {
|
|||||||
height?: number;
|
height?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IGridPanelApi extends IBaseViewApi {
|
export interface IGridviewPanelApi extends IPanelApi {
|
||||||
onDidConstraintsChange: Event<GridConstraintChangeEvent>;
|
onDidConstraintsChange: Event<GridConstraintChangeEvent>;
|
||||||
setConstraints(value: GridConstraintChangeEvent2): void;
|
setConstraints(value: GridConstraintChangeEvent2): void;
|
||||||
setSize(event: SizeEvent): void;
|
setSize(event: SizeEvent): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GridPanelApi extends BaseViewApi implements IGridPanelApi {
|
export class GridviewPanelApi extends PanelApi implements IGridviewPanelApi {
|
||||||
readonly _onDidConstraintsChangeInternal = new Emitter<
|
readonly _onDidConstraintsChangeInternal = new Emitter<GridConstraintChangeEvent2>();
|
||||||
GridConstraintChangeEvent2
|
readonly onDidConstraintsChangeInternal: Event<GridConstraintChangeEvent2> = this
|
||||||
>();
|
._onDidConstraintsChangeInternal.event;
|
||||||
readonly onDidConstraintsChangeInternal: Event<
|
|
||||||
GridConstraintChangeEvent2
|
|
||||||
> = this._onDidConstraintsChangeInternal.event;
|
|
||||||
//
|
//
|
||||||
|
|
||||||
readonly _onDidConstraintsChange = new Emitter<GridConstraintChangeEvent>({
|
readonly _onDidConstraintsChange = new Emitter<GridConstraintChangeEvent>({
|
@ -1,5 +1,5 @@
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { GridPanelApi, IGridPanelApi } from './gridPanelApi';
|
import { GridviewPanelApi, IGridviewPanelApi } from './gridviewPanelApi';
|
||||||
import { IGroupPanel } from '../groupview/groupPanel';
|
import { IGroupPanel } from '../groupview/groupPanel';
|
||||||
import { GroupviewPanel } from '../groupview/v2/groupviewPanel';
|
import { GroupviewPanel } from '../groupview/v2/groupviewPanel';
|
||||||
|
|
||||||
@ -11,8 +11,8 @@ export interface TitleEvent {
|
|||||||
* omit visibility modifiers since the visibility of a single group doesn't make sense
|
* omit visibility modifiers since the visibility of a single group doesn't make sense
|
||||||
* because it belongs to a groupview
|
* because it belongs to a groupview
|
||||||
*/
|
*/
|
||||||
export interface IGroupPanelApi
|
export interface IDockviewPanelApi
|
||||||
extends Omit<IGridPanelApi, 'setVisible' | 'visible'> {
|
extends Omit<IGridviewPanelApi, 'setVisible' | 'visible'> {
|
||||||
readonly group: GroupviewPanel | undefined;
|
readonly group: GroupviewPanel | undefined;
|
||||||
readonly isGroupActive: boolean;
|
readonly isGroupActive: boolean;
|
||||||
onDidDirtyChange: Event<boolean>;
|
onDidDirtyChange: Event<boolean>;
|
||||||
@ -22,7 +22,9 @@ export interface IGroupPanelApi
|
|||||||
setTitle(title: string): void;
|
setTitle(title: string): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GroupPanelApi extends GridPanelApi implements IGroupPanelApi {
|
export class DockviewPanelApi
|
||||||
|
extends GridviewPanelApi
|
||||||
|
implements IDockviewPanelApi {
|
||||||
private _group: GroupviewPanel | undefined;
|
private _group: GroupviewPanel | undefined;
|
||||||
private _interceptor: undefined | (() => Promise<boolean>);
|
private _interceptor: undefined | (() => Promise<boolean>);
|
||||||
|
|
||||||
|
@ -1,64 +1,207 @@
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { IDisposable } from '../lifecycle';
|
import { CompositeDisposable } from '../lifecycle';
|
||||||
import { FunctionOrValue } from '../types';
|
|
||||||
import { BaseViewApi, IBaseViewApi } from './api';
|
|
||||||
|
|
||||||
interface PanelConstraintChangeEvent2 {
|
/**
|
||||||
minimumSize?: FunctionOrValue<number>;
|
* A valid JSON type
|
||||||
maximumSize?: FunctionOrValue<number>;
|
*/
|
||||||
|
export type StateObject =
|
||||||
|
| number
|
||||||
|
| string
|
||||||
|
| boolean
|
||||||
|
| null
|
||||||
|
| object
|
||||||
|
| StateObject[]
|
||||||
|
| { [key: string]: StateObject };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A JSON-serializable object
|
||||||
|
*/
|
||||||
|
export interface State {
|
||||||
|
[key: string]: StateObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PanelConstraintChangeEvent {
|
export interface FocusEvent {
|
||||||
minimumSize?: number;
|
isFocused: boolean;
|
||||||
maximumSize?: number;
|
}
|
||||||
|
export interface PanelDimensionChangeEvent {
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PanelSizeEvent {
|
export interface VisibilityEvent {
|
||||||
size: number;
|
isVisible: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IPanelApi extends IBaseViewApi {
|
export interface ActiveEvent {
|
||||||
onDidConstraintsChange: Event<PanelConstraintChangeEvent>;
|
isActive: boolean;
|
||||||
setConstraints(value: PanelConstraintChangeEvent2): void;
|
|
||||||
setSize(event: PanelSizeEvent): void;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PanelApi extends BaseViewApi implements IPanelApi, IDisposable {
|
export interface IPanelApi {
|
||||||
readonly _onDidConstraintsChangeInternal = new Emitter<
|
// events
|
||||||
PanelConstraintChangeEvent2
|
onDidDimensionsChange: Event<PanelDimensionChangeEvent>;
|
||||||
>();
|
onDidStateChange: Event<void>;
|
||||||
readonly onDidConstraintsChangeInternal: Event<
|
onDidFocusChange: Event<FocusEvent>;
|
||||||
PanelConstraintChangeEvent2
|
onDidVisibilityChange: Event<VisibilityEvent>;
|
||||||
> = this._onDidConstraintsChangeInternal.event;
|
onDidActiveChange: Event<ActiveEvent>;
|
||||||
|
onFocusEvent: Event<void>;
|
||||||
//
|
//
|
||||||
|
setVisible(isVisible: boolean): void;
|
||||||
|
setActive(): void;
|
||||||
|
// state
|
||||||
|
setState(key: string, value: StateObject): void;
|
||||||
|
setState(state: State): void;
|
||||||
|
getState: () => State;
|
||||||
|
getStateKey: <T extends StateObject>(key: string) => T;
|
||||||
|
/**
|
||||||
|
* The id of the panel that would have been assigned when the panel was created
|
||||||
|
*/
|
||||||
|
readonly id: string;
|
||||||
|
/**
|
||||||
|
* Whether the panel holds the current focus
|
||||||
|
*/
|
||||||
|
readonly isFocused: boolean;
|
||||||
|
/**
|
||||||
|
* Whether the panel is the actively selected panel
|
||||||
|
*/
|
||||||
|
readonly isActive: boolean;
|
||||||
|
/**
|
||||||
|
* Whether the panel is visible
|
||||||
|
*/
|
||||||
|
readonly isVisible: boolean;
|
||||||
|
/**
|
||||||
|
* The panel width in pixels
|
||||||
|
*/
|
||||||
|
readonly width: number;
|
||||||
|
/**
|
||||||
|
* The panel height in pixels
|
||||||
|
*/
|
||||||
|
readonly height: number;
|
||||||
|
}
|
||||||
|
|
||||||
readonly _onDidConstraintsChange = new Emitter<PanelConstraintChangeEvent>({
|
/**
|
||||||
|
* A core api implementation that should be used across all panel-like objects
|
||||||
|
*/
|
||||||
|
export class PanelApi extends CompositeDisposable implements IPanelApi {
|
||||||
|
private _state: State = {};
|
||||||
|
private _isFocused = false;
|
||||||
|
private _isActive = false;
|
||||||
|
private _isVisible = true;
|
||||||
|
private _width = 0;
|
||||||
|
private _height = 0;
|
||||||
|
|
||||||
|
readonly _onDidStateChange = new Emitter<void>();
|
||||||
|
readonly onDidStateChange: Event<void> = this._onDidStateChange.event;
|
||||||
|
//
|
||||||
|
readonly _onDidPanelDimensionChange = new Emitter<PanelDimensionChangeEvent>(
|
||||||
|
{
|
||||||
|
replay: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
readonly onDidDimensionsChange = this._onDidPanelDimensionChange.event;
|
||||||
|
//
|
||||||
|
readonly _onDidChangeFocus = new Emitter<FocusEvent>({
|
||||||
replay: true,
|
replay: true,
|
||||||
});
|
});
|
||||||
readonly onDidConstraintsChange: Event<PanelConstraintChangeEvent> = this
|
readonly onDidFocusChange: Event<FocusEvent> = this._onDidChangeFocus.event;
|
||||||
._onDidConstraintsChange.event;
|
//
|
||||||
|
readonly _onFocusEvent = new Emitter<void>();
|
||||||
|
readonly onFocusEvent: Event<void> = this._onFocusEvent.event;
|
||||||
|
//
|
||||||
|
readonly _onDidVisibilityChange = new Emitter<VisibilityEvent>({
|
||||||
|
replay: true,
|
||||||
|
});
|
||||||
|
readonly onDidVisibilityChange: Event<VisibilityEvent> = this
|
||||||
|
._onDidVisibilityChange.event;
|
||||||
//
|
//
|
||||||
|
|
||||||
readonly _onDidSizeChange = new Emitter<PanelSizeEvent>();
|
readonly _onVisibilityChange = new Emitter<VisibilityEvent>();
|
||||||
readonly onDidSizeChange: Event<PanelSizeEvent> = this._onDidSizeChange
|
readonly onVisibilityChange: Event<VisibilityEvent> = this
|
||||||
|
._onVisibilityChange.event;
|
||||||
|
//
|
||||||
|
readonly _onDidActiveChange = new Emitter<ActiveEvent>({
|
||||||
|
replay: true,
|
||||||
|
});
|
||||||
|
readonly onDidActiveChange: Event<ActiveEvent> = this._onDidActiveChange
|
||||||
.event;
|
.event;
|
||||||
//
|
//
|
||||||
|
readonly _onActiveChange = new Emitter<void>();
|
||||||
|
readonly onActiveChange: Event<void> = this._onActiveChange.event;
|
||||||
|
//
|
||||||
|
|
||||||
constructor(id: string) {
|
get isFocused() {
|
||||||
super(id);
|
return this._isFocused;
|
||||||
}
|
}
|
||||||
|
|
||||||
setConstraints(value: PanelConstraintChangeEvent2) {
|
get isActive() {
|
||||||
this._onDidConstraintsChangeInternal.fire(value);
|
return this._isActive;
|
||||||
|
}
|
||||||
|
get isVisible() {
|
||||||
|
return this._isVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
setSize(event: PanelSizeEvent) {
|
get width() {
|
||||||
this._onDidSizeChange.fire(event);
|
return this._width;
|
||||||
|
}
|
||||||
|
|
||||||
|
get height() {
|
||||||
|
return this._height;
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(readonly id: string) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.addDisposables(
|
||||||
|
this._onDidStateChange,
|
||||||
|
this._onDidPanelDimensionChange,
|
||||||
|
this._onDidChangeFocus,
|
||||||
|
this._onDidVisibilityChange,
|
||||||
|
this._onDidActiveChange,
|
||||||
|
this._onFocusEvent,
|
||||||
|
this.onDidFocusChange((event) => {
|
||||||
|
this._isFocused = event.isFocused;
|
||||||
|
}),
|
||||||
|
this.onDidActiveChange((event) => {
|
||||||
|
this._isActive = event.isActive;
|
||||||
|
}),
|
||||||
|
this.onDidVisibilityChange((event) => {
|
||||||
|
this._isVisible = event.isVisible;
|
||||||
|
}),
|
||||||
|
this.onDidDimensionsChange((event) => {
|
||||||
|
this._width = event.width;
|
||||||
|
this._height = event.height;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setVisible(isVisible: boolean) {
|
||||||
|
this._onVisibilityChange.fire({ isVisible });
|
||||||
|
}
|
||||||
|
|
||||||
|
setActive(): void {
|
||||||
|
this._onActiveChange.fire();
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(
|
||||||
|
key: string | { [key: string]: StateObject },
|
||||||
|
value?: StateObject
|
||||||
|
): void {
|
||||||
|
if (typeof key === 'object') {
|
||||||
|
this._state = key;
|
||||||
|
} else if (typeof value !== undefined) {
|
||||||
|
this._state[key] = value!;
|
||||||
|
}
|
||||||
|
this._onDidStateChange.fire(undefined);
|
||||||
|
}
|
||||||
|
|
||||||
|
getState(): State {
|
||||||
|
return this._state;
|
||||||
|
}
|
||||||
|
|
||||||
|
getStateKey<T extends StateObject>(key: string): T {
|
||||||
|
return this._state[key] as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
dispose() {
|
dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
this._onDidConstraintsChange.dispose();
|
|
||||||
this._onDidSizeChange.dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { PaneviewPanel } from '../paneview/paneviewPanel';
|
import { PaneviewPanel } from '../paneview/paneviewPanel';
|
||||||
import { IPanelApi, PanelApi } from './panelApi';
|
import { ISplitviewPanelApi, SplitviewPanelApi } from './splitviewPanelApi';
|
||||||
|
|
||||||
export interface ExpansionEvent {
|
export interface ExpansionEvent {
|
||||||
isExpanded: boolean;
|
isExpanded: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IPanePanelApi extends IPanelApi {
|
export interface IPaneviewPanelApi extends ISplitviewPanelApi {
|
||||||
onDidExpansionChange: Event<ExpansionEvent>;
|
onDidExpansionChange: Event<ExpansionEvent>;
|
||||||
readonly onMouseEnter: Event<MouseEvent>;
|
readonly onMouseEnter: Event<MouseEvent>;
|
||||||
readonly onMouseLeave: Event<MouseEvent>;
|
readonly onMouseLeave: Event<MouseEvent>;
|
||||||
@ -14,7 +14,9 @@ export interface IPanePanelApi extends IPanelApi {
|
|||||||
readonly isExpanded: boolean;
|
readonly isExpanded: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PanePanelApi extends PanelApi implements IPanePanelApi {
|
export class PaneviewPanelApi
|
||||||
|
extends SplitviewPanelApi
|
||||||
|
implements IPaneviewPanelApi {
|
||||||
readonly _onDidExpansionChange = new Emitter<ExpansionEvent>({
|
readonly _onDidExpansionChange = new Emitter<ExpansionEvent>({
|
||||||
replay: true,
|
replay: true,
|
||||||
});
|
});
|
63
packages/splitview/src/api/splitviewPanelApi.ts
Normal file
63
packages/splitview/src/api/splitviewPanelApi.ts
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import { Emitter, Event } from '../events';
|
||||||
|
import { IDisposable } from '../lifecycle';
|
||||||
|
import { FunctionOrValue } from '../types';
|
||||||
|
import { PanelApi, IPanelApi } from './panelApi';
|
||||||
|
|
||||||
|
interface PanelConstraintChangeEvent2 {
|
||||||
|
minimumSize?: FunctionOrValue<number>;
|
||||||
|
maximumSize?: FunctionOrValue<number>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PanelConstraintChangeEvent {
|
||||||
|
minimumSize?: number;
|
||||||
|
maximumSize?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PanelSizeEvent {
|
||||||
|
size: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ISplitviewPanelApi extends IPanelApi {
|
||||||
|
onDidConstraintsChange: Event<PanelConstraintChangeEvent>;
|
||||||
|
setConstraints(value: PanelConstraintChangeEvent2): void;
|
||||||
|
setSize(event: PanelSizeEvent): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SplitviewPanelApi
|
||||||
|
extends PanelApi
|
||||||
|
implements ISplitviewPanelApi, IDisposable {
|
||||||
|
readonly _onDidConstraintsChangeInternal = new Emitter<PanelConstraintChangeEvent2>();
|
||||||
|
readonly onDidConstraintsChangeInternal: Event<PanelConstraintChangeEvent2> = this
|
||||||
|
._onDidConstraintsChangeInternal.event;
|
||||||
|
//
|
||||||
|
|
||||||
|
readonly _onDidConstraintsChange = new Emitter<PanelConstraintChangeEvent>({
|
||||||
|
replay: true,
|
||||||
|
});
|
||||||
|
readonly onDidConstraintsChange: Event<PanelConstraintChangeEvent> = this
|
||||||
|
._onDidConstraintsChange.event;
|
||||||
|
//
|
||||||
|
|
||||||
|
readonly _onDidSizeChange = new Emitter<PanelSizeEvent>();
|
||||||
|
readonly onDidSizeChange: Event<PanelSizeEvent> = this._onDidSizeChange
|
||||||
|
.event;
|
||||||
|
//
|
||||||
|
|
||||||
|
constructor(id: string) {
|
||||||
|
super(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
setConstraints(value: PanelConstraintChangeEvent2) {
|
||||||
|
this._onDidConstraintsChangeInternal.fire(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
setSize(event: PanelSizeEvent) {
|
||||||
|
this._onDidSizeChange.fire(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
dispose() {
|
||||||
|
super.dispose();
|
||||||
|
this._onDidConstraintsChange.dispose();
|
||||||
|
this._onDidSizeChange.dispose();
|
||||||
|
}
|
||||||
|
}
|
@ -47,7 +47,7 @@ import {
|
|||||||
toTarget,
|
toTarget,
|
||||||
} from '../gridview/baseComponentGridview';
|
} from '../gridview/baseComponentGridview';
|
||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { State } from '../api/api';
|
import { State } from '../api/panelApi';
|
||||||
import { LayoutMouseEvent, MouseEventKind } from '../groupview/tab';
|
import { LayoutMouseEvent, MouseEventKind } from '../groupview/tab';
|
||||||
import { Orientation } from '../splitview/core/splitview';
|
import { Orientation } from '../splitview/core/splitview';
|
||||||
import { DefaultTab } from './components/tab/defaultTab';
|
import { DefaultTab } from './components/tab/defaultTab';
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
PanelInitParameters,
|
PanelInitParameters,
|
||||||
IPanel,
|
IPanel,
|
||||||
} from '../panel/types';
|
} from '../panel/types';
|
||||||
import { BaseViewApi } from '../api/api';
|
import { PanelApi } from '../api/panelApi';
|
||||||
|
|
||||||
export interface BasePanelViewState {
|
export interface BasePanelViewState {
|
||||||
id: string;
|
id: string;
|
||||||
@ -15,7 +15,7 @@ export interface BasePanelViewState {
|
|||||||
state?: { [key: string]: any };
|
state?: { [key: string]: any };
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface BasePanelViewExported<T extends BaseViewApi> {
|
export interface BasePanelViewExported<T extends PanelApi> {
|
||||||
readonly id: string;
|
readonly id: string;
|
||||||
readonly api: T;
|
readonly api: T;
|
||||||
readonly width: number;
|
readonly width: number;
|
||||||
@ -25,7 +25,7 @@ export interface BasePanelViewExported<T extends BaseViewApi> {
|
|||||||
update(params: PanelUpdateEvent): void;
|
update(params: PanelUpdateEvent): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export abstract class BasePanelView<T extends BaseViewApi>
|
export abstract class BasePanelView<T extends PanelApi>
|
||||||
extends CompositeDisposable
|
extends CompositeDisposable
|
||||||
implements IPanel, BasePanelViewExported<T> {
|
implements IPanel, BasePanelViewExported<T> {
|
||||||
private _height = 0;
|
private _height = 0;
|
||||||
|
@ -19,14 +19,14 @@ import {
|
|||||||
IGridviewPanel,
|
IGridviewPanel,
|
||||||
} from './gridviewPanel';
|
} from './gridviewPanel';
|
||||||
import { BaseComponentOptions } from '../panel/types';
|
import { BaseComponentOptions } from '../panel/types';
|
||||||
import { GridPanelApi } from '../api/gridPanelApi';
|
import { GridviewPanelApi } from '../api/gridviewPanelApi';
|
||||||
import { GridviewApi } from '../api/component.api';
|
import { GridviewApi } from '../api/component.api';
|
||||||
import { Orientation, Sizing } from '../splitview/core/splitview';
|
import { Orientation, Sizing } from '../splitview/core/splitview';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
import { GroupChangeKind } from '../groupview/v2/component';
|
import { GroupChangeKind } from '../groupview/v2/component';
|
||||||
|
|
||||||
interface PanelReference {
|
interface PanelReference {
|
||||||
api: GridPanelApi;
|
api: GridviewPanelApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SerializedGridview {
|
export interface SerializedGridview {
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
BasePanelViewExported,
|
BasePanelViewExported,
|
||||||
BasePanelViewState,
|
BasePanelViewState,
|
||||||
} from './basePanelView';
|
} from './basePanelView';
|
||||||
import { GridPanelApi } from '../api/gridPanelApi';
|
import { GridviewPanelApi } from '../api/gridviewPanelApi';
|
||||||
import { LayoutPriority } from '../splitview/core/splitview';
|
import { LayoutPriority } from '../splitview/core/splitview';
|
||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
import { IViewSize } from './gridview';
|
import { IViewSize } from './gridview';
|
||||||
@ -23,7 +23,8 @@ export interface GridviewInitParameters extends PanelInitParameters {
|
|||||||
isVisible?: boolean;
|
isVisible?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IGridviewPanel extends BasePanelViewExported<GridPanelApi> {
|
export interface IGridviewPanel
|
||||||
|
extends BasePanelViewExported<GridviewPanelApi> {
|
||||||
readonly minimumWidth: number;
|
readonly minimumWidth: number;
|
||||||
readonly maximumWidth: number;
|
readonly maximumWidth: number;
|
||||||
readonly minimumHeight: number;
|
readonly minimumHeight: number;
|
||||||
@ -33,7 +34,7 @@ export interface IGridviewPanel extends BasePanelViewExported<GridPanelApi> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export abstract class GridviewPanel
|
export abstract class GridviewPanel
|
||||||
extends BasePanelView<GridPanelApi>
|
extends BasePanelView<GridviewPanelApi>
|
||||||
implements IGridPanelComponentView, IGridviewPanel {
|
implements IGridPanelComponentView, IGridviewPanel {
|
||||||
private _evaluatedMinimumWidth = 0;
|
private _evaluatedMinimumWidth = 0;
|
||||||
private _evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;
|
private _evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;
|
||||||
@ -119,7 +120,7 @@ export abstract class GridviewPanel
|
|||||||
return this.api.isActive;
|
return this.api.isActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(id: string, component: string, api = new GridPanelApi(id)) {
|
constructor(id: string, component: string, api = new GridviewPanelApi(id)) {
|
||||||
super(id, component, api);
|
super(id, component, api);
|
||||||
|
|
||||||
this.addDisposables(
|
this.addDisposables(
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GroupPanelApi, IGroupPanelApi } from '../api/groupPanelApi';
|
import { DockviewPanelApi, IDockviewPanelApi } from '../api/groupPanelApi';
|
||||||
import { Event } from '../events';
|
import { Event } from '../events';
|
||||||
import {
|
import {
|
||||||
MutableDisposable,
|
MutableDisposable,
|
||||||
@ -31,7 +31,7 @@ export interface IGroupPanel extends IDisposable, IPanel {
|
|||||||
// readonly content?: IContentRenderer;
|
// readonly content?: IContentRenderer;
|
||||||
readonly view?: IGroupPanelView;
|
readonly view?: IGroupPanelView;
|
||||||
readonly group?: GroupviewPanel;
|
readonly group?: GroupviewPanel;
|
||||||
readonly api: IGroupPanelApi;
|
readonly api: IDockviewPanelApi;
|
||||||
updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
|
updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
|
||||||
setDirty(isDirty: boolean): void;
|
setDirty(isDirty: boolean): void;
|
||||||
close?(): Promise<boolean>;
|
close?(): Promise<boolean>;
|
||||||
@ -52,7 +52,7 @@ export interface GroupviewPanelState {
|
|||||||
export class GroupPanel extends CompositeDisposable implements IGroupPanel {
|
export class GroupPanel extends CompositeDisposable implements IGroupPanel {
|
||||||
private readonly mutableDisposable = new MutableDisposable();
|
private readonly mutableDisposable = new MutableDisposable();
|
||||||
|
|
||||||
readonly api: GroupPanelApi;
|
readonly api: DockviewPanelApi;
|
||||||
private _group: GroupviewPanel | undefined;
|
private _group: GroupviewPanel | undefined;
|
||||||
private params?: IGroupPanelInitParameters;
|
private params?: IGroupPanelInitParameters;
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ export class GroupPanel extends CompositeDisposable implements IGroupPanel {
|
|||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.api = new GroupPanelApi(this, this._group);
|
this.api = new DockviewPanelApi(this, this._group);
|
||||||
this.onDidStateChange = this.api.onDidStateChange;
|
this.onDidStateChange = this.api.onDidStateChange;
|
||||||
|
|
||||||
this.addDisposables(
|
this.addDisposables(
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
import { Emitter, Event } from '../../events';
|
import { Emitter, Event } from '../../events';
|
||||||
import { trackFocus } from '../../dom';
|
import { trackFocus } from '../../dom';
|
||||||
import { HostedContainer } from '../../hostedContainer';
|
import { HostedContainer } from '../../hostedContainer';
|
||||||
import { IGroupPanelApi } from '../../api/groupPanelApi';
|
import { IDockviewPanelApi } from '../../api/groupPanelApi';
|
||||||
import { IGroupPanel } from '../groupPanel';
|
import { IGroupPanel } from '../groupPanel';
|
||||||
|
|
||||||
export interface IRenderable {
|
export interface IRenderable {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { IDisposable } from '../lifecycle';
|
import { IDisposable } from '../lifecycle';
|
||||||
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
||||||
import { IGroupPanelApi } from '../api/groupPanelApi';
|
import { IDockviewPanelApi } from '../api/groupPanelApi';
|
||||||
import { PanelInitParameters, IPanel } from '../panel/types';
|
import { PanelInitParameters, IPanel } from '../panel/types';
|
||||||
import { DockviewApi } from '../api/component.api';
|
import { DockviewApi } from '../api/component.api';
|
||||||
import { GroupviewPanel } from './v2/groupviewPanel';
|
import { GroupviewPanel } from './v2/groupviewPanel';
|
||||||
@ -14,7 +14,7 @@ export interface HeaderPartInitParameters {
|
|||||||
export interface GroupPanelPartInitParameters
|
export interface GroupPanelPartInitParameters
|
||||||
extends PanelInitParameters,
|
extends PanelInitParameters,
|
||||||
HeaderPartInitParameters {
|
HeaderPartInitParameters {
|
||||||
api: IGroupPanelApi;
|
api: IDockviewPanelApi;
|
||||||
containerApi: DockviewApi;
|
containerApi: DockviewApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
import { IFrameworkPart } from '../../panel/types';
|
import { IFrameworkPart } from '../../panel/types';
|
||||||
import { IDockviewComponent } from '../../dockview/dockviewComponent';
|
import { IDockviewComponent } from '../../dockview/dockviewComponent';
|
||||||
import { GridPanelApi, IGridPanelApi } from '../../api/gridPanelApi';
|
import {
|
||||||
|
GridviewPanelApi,
|
||||||
|
IGridviewPanelApi,
|
||||||
|
} from '../../api/gridviewPanelApi';
|
||||||
import { GroupComponent, GroupOptions, GroupPanelViewState } from './component';
|
import { GroupComponent, GroupOptions, GroupPanelViewState } from './component';
|
||||||
import {
|
import {
|
||||||
GridPanelViewState,
|
GridPanelViewState,
|
||||||
GridviewPanel,
|
GridviewPanel,
|
||||||
} from '../../gridview/gridviewPanel';
|
} from '../../gridview/gridviewPanel';
|
||||||
|
|
||||||
interface IGroupApi extends IGridPanelApi {}
|
interface IGroupApi extends IGridviewPanelApi {}
|
||||||
|
|
||||||
class GroupApi extends GridPanelApi implements IGroupApi {
|
class GroupApi extends GridviewPanelApi implements IGroupApi {
|
||||||
private _value?: GroupComponent;
|
private _value?: GroupComponent;
|
||||||
|
|
||||||
set group(value: GroupComponent) {
|
set group(value: GroupComponent) {
|
||||||
|
@ -27,16 +27,16 @@ export {
|
|||||||
PanelDimensionChangeEvent,
|
PanelDimensionChangeEvent,
|
||||||
VisibilityEvent,
|
VisibilityEvent,
|
||||||
ActiveEvent,
|
ActiveEvent,
|
||||||
} from './api/api';
|
} from './api/panelApi';
|
||||||
export {
|
export {
|
||||||
SizeEvent,
|
SizeEvent,
|
||||||
IGridPanelApi,
|
IGridviewPanelApi,
|
||||||
GridConstraintChangeEvent,
|
GridConstraintChangeEvent,
|
||||||
} from './api/gridPanelApi';
|
} from './api/gridviewPanelApi';
|
||||||
export { TitleEvent, IGroupPanelApi } from './api/groupPanelApi';
|
export { TitleEvent, IDockviewPanelApi } from './api/groupPanelApi';
|
||||||
export {
|
export {
|
||||||
PanelSizeEvent,
|
PanelSizeEvent,
|
||||||
PanelConstraintChangeEvent,
|
PanelConstraintChangeEvent,
|
||||||
IPanelApi,
|
ISplitviewPanelApi,
|
||||||
} from './api/panelApi';
|
} from './api/splitviewPanelApi';
|
||||||
export { ExpansionEvent, IPanePanelApi } from './api/panePanelApi';
|
export { ExpansionEvent, IPaneviewPanelApi } from './api/paneviewPanelApi';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { State } from '../api/api';
|
import { State } from '../api/panelApi';
|
||||||
import { IDisposable } from '../lifecycle';
|
import { IDisposable } from '../lifecycle';
|
||||||
import { LayoutPriority } from '../splitview/core/splitview';
|
import { LayoutPriority } from '../splitview/core/splitview';
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { PaneviewApi } from '../api/component.api';
|
import { PaneviewApi } from '../api/component.api';
|
||||||
import { PanePanelApi } from '../api/panePanelApi';
|
import { PaneviewPanelApi } from '../api/paneviewPanelApi';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
import { addDisposableListener, Emitter, Event } from '../events';
|
import { addDisposableListener, Emitter, Event } from '../events';
|
||||||
import {
|
import {
|
||||||
@ -47,7 +47,7 @@ export interface SerializedPaneview {
|
|||||||
|
|
||||||
class DefaultHeader extends CompositeDisposable implements IPaneHeaderPart {
|
class DefaultHeader extends CompositeDisposable implements IPaneHeaderPart {
|
||||||
private _element: HTMLElement;
|
private _element: HTMLElement;
|
||||||
private apiRef: { api: PanePanelApi | null } = { api: null };
|
private apiRef: { api: PaneviewPanelApi | null } = { api: null };
|
||||||
|
|
||||||
get element() {
|
get element() {
|
||||||
return this._element;
|
return this._element;
|
||||||
@ -64,7 +64,7 @@ class DefaultHeader extends CompositeDisposable implements IPaneHeaderPart {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
init(params: PanePanelInitParameter & { api: PanePanelApi }) {
|
init(params: PanePanelInitParameter & { api: PaneviewPanelApi }) {
|
||||||
this.apiRef.api = params.api;
|
this.apiRef.api = params.api;
|
||||||
this._element.textContent = params.title;
|
this._element.textContent = params.title;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { PaneviewApi } from '../api/component.api';
|
import { PaneviewApi } from '../api/component.api';
|
||||||
import { PanePanelApi } from '../api/panePanelApi';
|
import { PaneviewPanelApi } from '../api/paneviewPanelApi';
|
||||||
import { addDisposableListener, Emitter, Event } from '../events';
|
import { addDisposableListener, Emitter, Event } from '../events';
|
||||||
import {
|
import {
|
||||||
BasePanelView,
|
BasePanelView,
|
||||||
@ -30,7 +30,7 @@ export interface PanePanelInitParameter extends PanelInitParameters {
|
|||||||
|
|
||||||
export interface PanePanelComponentInitParameter
|
export interface PanePanelComponentInitParameter
|
||||||
extends PanePanelInitParameter {
|
extends PanePanelInitParameter {
|
||||||
api: PanePanelApi;
|
api: PaneviewPanelApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IPaneBodyPart extends IDisposable {
|
export interface IPaneBodyPart extends IDisposable {
|
||||||
@ -49,7 +49,8 @@ export interface IPaneview extends IView {
|
|||||||
onDidChangeExpansionState: Event<boolean>;
|
onDidChangeExpansionState: Event<boolean>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IPaneviewPanel extends BasePanelViewExported<PanePanelApi> {
|
export interface IPaneviewPanel
|
||||||
|
extends BasePanelViewExported<PaneviewPanelApi> {
|
||||||
readonly minimumSize: number;
|
readonly minimumSize: number;
|
||||||
readonly maximumSize: number;
|
readonly maximumSize: number;
|
||||||
readonly minimumBodySize: number;
|
readonly minimumBodySize: number;
|
||||||
@ -59,7 +60,7 @@ export interface IPaneviewPanel extends BasePanelViewExported<PanePanelApi> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export abstract class PaneviewPanel
|
export abstract class PaneviewPanel
|
||||||
extends BasePanelView<PanePanelApi>
|
extends BasePanelView<PaneviewPanelApi>
|
||||||
implements IPaneview, IPaneviewPanel {
|
implements IPaneview, IPaneviewPanel {
|
||||||
private _onDidChangeExpansionState: Emitter<boolean> = new Emitter<boolean>(
|
private _onDidChangeExpansionState: Emitter<boolean> = new Emitter<boolean>(
|
||||||
{ replay: true }
|
{ replay: true }
|
||||||
@ -138,7 +139,7 @@ export abstract class PaneviewPanel
|
|||||||
orientation: Orientation,
|
orientation: Orientation,
|
||||||
isExpanded: boolean
|
isExpanded: boolean
|
||||||
) {
|
) {
|
||||||
super(id, component, new PanePanelApi(id));
|
super(id, component, new PaneviewPanelApi(id));
|
||||||
this.api.pane = this; // TODO cannot use 'this' before 'super'
|
this.api.pane = this; // TODO cannot use 'this' before 'super'
|
||||||
this._isExpanded = isExpanded;
|
this._isExpanded = isExpanded;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import {
|
|||||||
GroupPanelFrameworkComponentFactory,
|
GroupPanelFrameworkComponentFactory,
|
||||||
TabContextMenuEvent,
|
TabContextMenuEvent,
|
||||||
} from '../../dockview/options';
|
} from '../../dockview/options';
|
||||||
import { IGroupPanelApi } from '../../api/groupPanelApi';
|
import { IDockviewPanelApi } from '../../api/groupPanelApi';
|
||||||
import { usePortalsLifecycle } from '../react';
|
import { usePortalsLifecycle } from '../react';
|
||||||
import { DockviewApi } from '../../api/component.api';
|
import { DockviewApi } from '../../api/component.api';
|
||||||
import { ReactWatermarkPart } from './reactWatermarkPart';
|
import { ReactWatermarkPart } from './reactWatermarkPart';
|
||||||
@ -27,7 +27,7 @@ export interface ActionsbarReference<P> extends IDisposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IGroupPanelBaseProps {
|
export interface IGroupPanelBaseProps {
|
||||||
api: IGroupPanelApi;
|
api: IDockviewPanelApi;
|
||||||
containerApi: DockviewApi;
|
containerApi: DockviewApi;
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,14 @@ import {
|
|||||||
import { ReactPart, ReactPortalStore } from '../react';
|
import { ReactPart, ReactPortalStore } from '../react';
|
||||||
import { ActionsbarReference, IDockviewPanelProps } from '../dockview/dockview';
|
import { ActionsbarReference, IDockviewPanelProps } from '../dockview/dockview';
|
||||||
import { PanelUpdateEvent } from '../../panel/types';
|
import { PanelUpdateEvent } from '../../panel/types';
|
||||||
import { IGroupPanelApi } from '../../api/groupPanelApi';
|
import { IDockviewPanelApi } from '../../api/groupPanelApi';
|
||||||
import { DockviewApi } from '../../api/component.api';
|
import { DockviewApi } from '../../api/component.api';
|
||||||
import { HostedContainer } from '../../hostedContainer';
|
import { HostedContainer } from '../../hostedContainer';
|
||||||
import { GroupviewPanel } from '../../groupview/v2/groupviewPanel';
|
import { GroupviewPanel } from '../../groupview/v2/groupviewPanel';
|
||||||
import { Emitter, Event } from '../../events';
|
import { Emitter, Event } from '../../events';
|
||||||
|
|
||||||
export interface IGroupPanelActionbarProps {
|
export interface IGroupPanelActionbarProps {
|
||||||
api: IGroupPanelApi;
|
api: IDockviewPanelApi;
|
||||||
containerApi: DockviewApi;
|
containerApi: DockviewApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import {
|
|||||||
GridviewComponent,
|
GridviewComponent,
|
||||||
IGridviewComponent,
|
IGridviewComponent,
|
||||||
} from '../../gridview/gridviewComponent';
|
} from '../../gridview/gridviewComponent';
|
||||||
import { IGridPanelApi } from '../../api/gridPanelApi';
|
import { IGridviewPanelApi } from '../../api/gridviewPanelApi';
|
||||||
import { Orientation } from '../../splitview/core/splitview';
|
import { Orientation } from '../../splitview/core/splitview';
|
||||||
import { ReactGridPanelView } from './view';
|
import { ReactGridPanelView } from './view';
|
||||||
import { usePortalsLifecycle } from '../react';
|
import { usePortalsLifecycle } from '../react';
|
||||||
@ -16,7 +16,7 @@ export interface GridviewReadyEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IGridviewPanelProps {
|
export interface IGridviewPanelProps {
|
||||||
api: IGridPanelApi;
|
api: IGridviewPanelApi;
|
||||||
containerApi: GridviewApi;
|
containerApi: GridviewApi;
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { IPanePanelApi } from '../../api/panePanelApi';
|
import { IPaneviewPanelApi } from '../../api/paneviewPanelApi';
|
||||||
import {
|
import {
|
||||||
PaneviewComponent,
|
PaneviewComponent,
|
||||||
IPaneviewComponent,
|
IPaneviewComponent,
|
||||||
@ -15,7 +15,7 @@ export interface PaneviewReadyEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IPaneviewPanelProps {
|
export interface IPaneviewPanelProps {
|
||||||
api: IPanePanelApi;
|
api: IPaneviewPanelApi;
|
||||||
containerApi: PaneviewApi;
|
containerApi: PaneviewApi;
|
||||||
title: string;
|
title: string;
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { SplitviewApi } from '../../api/component.api';
|
import { SplitviewApi } from '../../api/component.api';
|
||||||
import { IPanelApi } from '../../api/panelApi';
|
import { ISplitviewPanelApi } from '../../api/splitviewPanelApi';
|
||||||
import {
|
import {
|
||||||
ISplitviewComponent,
|
ISplitviewComponent,
|
||||||
SplitviewComponent,
|
SplitviewComponent,
|
||||||
@ -16,7 +16,7 @@ export interface SplitviewReadyEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ISplitviewPanelProps {
|
export interface ISplitviewPanelProps {
|
||||||
api: IPanelApi;
|
api: ISplitviewPanelApi;
|
||||||
containerApi: SplitviewApi;
|
containerApi: SplitviewApi;
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,13 @@ import {
|
|||||||
BasePanelView,
|
BasePanelView,
|
||||||
BasePanelViewExported,
|
BasePanelViewExported,
|
||||||
} from '../gridview/basePanelView';
|
} from '../gridview/basePanelView';
|
||||||
import { PanelApi } from '../api/panelApi';
|
import { SplitviewPanelApi } from '../api/splitviewPanelApi';
|
||||||
import { LayoutPriority, Orientation } from './core/splitview';
|
import { LayoutPriority, Orientation } from './core/splitview';
|
||||||
import { FunctionOrValue } from '../types';
|
import { FunctionOrValue } from '../types';
|
||||||
import { Emitter, Event } from '../events';
|
import { Emitter, Event } from '../events';
|
||||||
|
|
||||||
export interface ISplitviewPanel extends BasePanelViewExported<PanelApi> {
|
export interface ISplitviewPanel
|
||||||
|
extends BasePanelViewExported<SplitviewPanelApi> {
|
||||||
readonly priority: LayoutPriority | undefined;
|
readonly priority: LayoutPriority | undefined;
|
||||||
readonly minimumSize: number;
|
readonly minimumSize: number;
|
||||||
readonly maximumSize: number;
|
readonly maximumSize: number;
|
||||||
@ -17,7 +18,7 @@ export interface ISplitviewPanel extends BasePanelViewExported<PanelApi> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export abstract class SplitviewPanel
|
export abstract class SplitviewPanel
|
||||||
extends BasePanelView<PanelApi>
|
extends BasePanelView<SplitviewPanelApi>
|
||||||
implements ISerializableView, ISplitviewPanel {
|
implements ISerializableView, ISplitviewPanel {
|
||||||
private _evaluatedMinimumSize = 0;
|
private _evaluatedMinimumSize = 0;
|
||||||
private _evaluatedMaximumSize = Number.POSITIVE_INFINITY;
|
private _evaluatedMaximumSize = Number.POSITIVE_INFINITY;
|
||||||
@ -77,7 +78,7 @@ export abstract class SplitviewPanel
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor(id: string, componentName: string) {
|
constructor(id: string, componentName: string) {
|
||||||
super(id, componentName, new PanelApi(id));
|
super(id, componentName, new SplitviewPanelApi(id));
|
||||||
|
|
||||||
this.addDisposables(
|
this.addDisposables(
|
||||||
this.api.onVisibilityChange((event) => {
|
this.api.onVisibilityChange((event) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user