dockview 1.4.3 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -0
- package/dist/cjs/dockview/components/tab/defaultTab.js +6 -3
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/components/watermark/watermark.js +3 -1
- package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
- package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -5
- package/dist/cjs/dockview/defaultGroupPanelView.js +5 -20
- package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +7 -18
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +5 -0
- package/dist/cjs/groupview/groupview.d.ts +16 -15
- package/dist/cjs/groupview/groupview.js +24 -33
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/tab.d.ts +1 -0
- package/dist/cjs/groupview/tab.js +2 -1
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.js +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/groupview/types.d.ts +0 -4
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +3 -0
- package/dist/cjs/paneview/defaultPaneviewHeader.js +29 -5
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js +24 -9
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/options.d.ts +2 -0
- package/dist/cjs/paneview/paneviewComponent.d.ts +12 -1
- package/dist/cjs/paneview/paneviewComponent.js +13 -1
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/react/deserializer.js +13 -5
- package/dist/cjs/react/deserializer.js.map +1 -1
- package/dist/cjs/react/dockview/defaultTab.d.ts +4 -0
- package/dist/cjs/react/dockview/defaultTab.js +73 -0
- package/dist/cjs/react/dockview/defaultTab.js.map +1 -0
- package/dist/cjs/react/dockview/dockview.d.ts +3 -0
- package/dist/cjs/react/dockview/dockview.js +45 -3
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +43 -0
- package/dist/cjs/react/dockview/groupControlsRenderer.js +87 -0
- package/dist/cjs/react/dockview/groupControlsRenderer.js.map +1 -0
- package/dist/cjs/react/dockview/reactContentPart.d.ts +1 -16
- package/dist/cjs/react/dockview/reactContentPart.js +2 -18
- package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -0
- package/dist/cjs/react/dockview/reactHeaderPart.js +4 -0
- package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
- package/dist/cjs/react/index.d.ts +2 -2
- package/dist/cjs/react/index.js +1 -2
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/paneview/paneview.d.ts +2 -0
- package/dist/cjs/react/paneview/paneview.js +9 -0
- package/dist/cjs/react/paneview/paneview.js.map +1 -1
- package/dist/cjs/react/react.d.ts +1 -0
- package/dist/cjs/react/react.js +12 -2
- package/dist/cjs/react/react.js.map +1 -1
- package/dist/cjs/react/svg.d.ts +3 -0
- package/dist/cjs/react/svg.js +36 -0
- package/dist/cjs/react/svg.js.map +1 -0
- package/dist/cjs/svg.d.ts +3 -0
- package/dist/cjs/svg.js +44 -0
- package/dist/cjs/svg.js.map +1 -0
- package/dist/dockview.amd.js +327 -113
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.noStyle.js +326 -112
- package/dist/dockview.cjs.js +327 -113
- package/dist/dockview.esm.js +327 -112
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.js +327 -113
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.noStyle.js +326 -112
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -0
- package/dist/esm/dockview/components/tab/defaultTab.js +5 -2
- package/dist/esm/dockview/components/watermark/watermark.js +3 -1
- package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -5
- package/dist/esm/dockview/defaultGroupPanelView.js +5 -16
- package/dist/esm/dockview/dockviewComponent.d.ts +1 -1
- package/dist/esm/dockview/dockviewComponent.js +7 -18
- package/dist/esm/dockview/options.d.ts +5 -0
- package/dist/esm/groupview/groupview.d.ts +16 -15
- package/dist/esm/groupview/groupview.js +23 -32
- package/dist/esm/groupview/tab.d.ts +1 -0
- package/dist/esm/groupview/tab.js +2 -1
- package/dist/esm/groupview/titlebar/tabsContainer.js +1 -1
- package/dist/esm/groupview/types.d.ts +0 -4
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +3 -0
- package/dist/esm/paneview/defaultPaneviewHeader.js +29 -5
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js +24 -9
- package/dist/esm/paneview/options.d.ts +2 -0
- package/dist/esm/paneview/paneviewComponent.d.ts +12 -1
- package/dist/esm/paneview/paneviewComponent.js +9 -1
- package/dist/esm/react/deserializer.js +13 -5
- package/dist/esm/react/dockview/defaultTab.d.ts +4 -0
- package/dist/esm/react/dockview/defaultTab.js +34 -0
- package/dist/esm/react/dockview/dockview.d.ts +3 -0
- package/dist/esm/react/dockview/dockview.js +30 -1
- package/dist/esm/react/dockview/groupControlsRenderer.d.ts +43 -0
- package/dist/esm/react/dockview/groupControlsRenderer.js +68 -0
- package/dist/esm/react/dockview/reactContentPart.d.ts +1 -16
- package/dist/esm/react/dockview/reactContentPart.js +2 -14
- package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -0
- package/dist/esm/react/dockview/reactHeaderPart.js +4 -0
- package/dist/esm/react/index.d.ts +2 -2
- package/dist/esm/react/index.js +1 -2
- package/dist/esm/react/paneview/paneview.d.ts +2 -0
- package/dist/esm/react/paneview/paneview.js +9 -0
- package/dist/esm/react/react.d.ts +1 -0
- package/dist/esm/react/react.js +12 -2
- package/dist/esm/react/svg.d.ts +3 -0
- package/dist/esm/react/svg.js +7 -0
- package/dist/esm/svg.d.ts +3 -0
- package/dist/esm/svg.js +31 -0
- package/dist/styles/dockview.css +155 -42
- package/package.json +2 -2
|
@@ -2,6 +2,7 @@ import { CompositeDisposable } from '../../../lifecycle';
|
|
|
2
2
|
import { ITabRenderer, GroupPanelPartInitParameters } from '../../../groupview/types';
|
|
3
3
|
import { PanelUpdateEvent } from '../../../panel/types';
|
|
4
4
|
import { GroupPanel } from '../../../groupview/groupviewPanel';
|
|
5
|
+
export declare const DEFAULT_TAB_IDENTIFIER = "__default__tab__";
|
|
5
6
|
export declare class DefaultTab extends CompositeDisposable implements ITabRenderer {
|
|
6
7
|
private _element;
|
|
7
8
|
private _isPanelVisible;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CompositeDisposable } from '../../../lifecycle';
|
|
2
2
|
import { addDisposableListener } from '../../../events';
|
|
3
|
+
import { createCloseButton } from '../../../svg';
|
|
4
|
+
export const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
|
|
3
5
|
export class DefaultTab extends CompositeDisposable {
|
|
4
6
|
constructor() {
|
|
5
7
|
super();
|
|
@@ -19,8 +21,9 @@ export class DefaultTab extends CompositeDisposable {
|
|
|
19
21
|
this._list = document.createElement('ul');
|
|
20
22
|
this._list.className = 'tab-list';
|
|
21
23
|
//
|
|
22
|
-
this.action = document.createElement('
|
|
24
|
+
this.action = document.createElement('div');
|
|
23
25
|
this.action.className = 'tab-action';
|
|
26
|
+
this.action.appendChild(createCloseButton());
|
|
24
27
|
//
|
|
25
28
|
this._element.appendChild(this._content);
|
|
26
29
|
this._element.appendChild(this._actionContainer);
|
|
@@ -36,7 +39,7 @@ export class DefaultTab extends CompositeDisposable {
|
|
|
36
39
|
return this._element;
|
|
37
40
|
}
|
|
38
41
|
get id() {
|
|
39
|
-
return
|
|
42
|
+
return DEFAULT_TAB_IDENTIFIER;
|
|
40
43
|
}
|
|
41
44
|
update(event) {
|
|
42
45
|
this.params = Object.assign(Object.assign({}, this.params), event.params);
|
|
@@ -2,6 +2,7 @@ import { ActionContainer } from '../../../actionbar/actionsContainer';
|
|
|
2
2
|
import { addDisposableListener } from '../../../events';
|
|
3
3
|
import { toggleClass } from '../../../dom';
|
|
4
4
|
import { CompositeDisposable } from '../../../lifecycle';
|
|
5
|
+
import { createCloseButton } from '../../../svg';
|
|
5
6
|
export class Watermark extends CompositeDisposable {
|
|
6
7
|
constructor() {
|
|
7
8
|
super();
|
|
@@ -18,8 +19,9 @@ export class Watermark extends CompositeDisposable {
|
|
|
18
19
|
const actions = new ActionContainer();
|
|
19
20
|
title.appendChild(emptySpace);
|
|
20
21
|
title.appendChild(actions.element);
|
|
21
|
-
const closeAnchor = document.createElement('
|
|
22
|
+
const closeAnchor = document.createElement('div');
|
|
22
23
|
closeAnchor.className = 'close-action';
|
|
24
|
+
closeAnchor.appendChild(createCloseButton());
|
|
23
25
|
actions.add(closeAnchor);
|
|
24
26
|
this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
|
|
25
27
|
var _a;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { GroupPanelPartInitParameters,
|
|
1
|
+
import { GroupPanelPartInitParameters, IContentRenderer, ITabRenderer } from '../groupview/types';
|
|
2
2
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
3
3
|
import { IDisposable } from '../lifecycle';
|
|
4
4
|
import { GroupPanelUpdateEvent } from '../groupview/groupPanel';
|
|
5
5
|
export interface IGroupPanelView extends IDisposable {
|
|
6
6
|
readonly content: IContentRenderer;
|
|
7
7
|
readonly tab?: ITabRenderer;
|
|
8
|
-
readonly actions?: IActionsRenderer;
|
|
9
8
|
update(event: GroupPanelUpdateEvent): void;
|
|
10
9
|
layout(width: number, height: number): void;
|
|
11
10
|
init(params: GroupPanelPartInitParameters): void;
|
|
@@ -15,14 +14,11 @@ export interface IGroupPanelView extends IDisposable {
|
|
|
15
14
|
export declare class DefaultGroupPanelView implements IGroupPanelView {
|
|
16
15
|
private readonly _content;
|
|
17
16
|
private readonly _tab;
|
|
18
|
-
private readonly _actions;
|
|
19
17
|
get content(): IContentRenderer;
|
|
20
18
|
get tab(): ITabRenderer;
|
|
21
|
-
get actions(): IActionsRenderer | undefined;
|
|
22
19
|
constructor(renderers: {
|
|
23
20
|
content: IContentRenderer;
|
|
24
21
|
tab?: ITabRenderer;
|
|
25
|
-
actions?: IActionsRenderer;
|
|
26
22
|
});
|
|
27
23
|
init(params: GroupPanelPartInitParameters): void;
|
|
28
24
|
updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
|
|
@@ -4,16 +4,6 @@ export class DefaultGroupPanelView {
|
|
|
4
4
|
var _a;
|
|
5
5
|
this._content = renderers.content;
|
|
6
6
|
this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
|
|
7
|
-
this._actions =
|
|
8
|
-
renderers.actions ||
|
|
9
|
-
(this.content.actions
|
|
10
|
-
? {
|
|
11
|
-
element: this.content.actions,
|
|
12
|
-
dispose: () => {
|
|
13
|
-
//
|
|
14
|
-
},
|
|
15
|
-
}
|
|
16
|
-
: undefined);
|
|
17
7
|
}
|
|
18
8
|
get content() {
|
|
19
9
|
return this._content;
|
|
@@ -21,9 +11,6 @@ export class DefaultGroupPanelView {
|
|
|
21
11
|
get tab() {
|
|
22
12
|
return this._tab;
|
|
23
13
|
}
|
|
24
|
-
get actions() {
|
|
25
|
-
return this._actions;
|
|
26
|
-
}
|
|
27
14
|
init(params) {
|
|
28
15
|
this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
|
|
29
16
|
this.tab.init(params);
|
|
@@ -41,15 +28,17 @@ export class DefaultGroupPanelView {
|
|
|
41
28
|
this.tab.update(event);
|
|
42
29
|
}
|
|
43
30
|
toJSON() {
|
|
31
|
+
let tab = this.tab instanceof DefaultTab ? undefined : this.tab.toJSON();
|
|
32
|
+
if (tab && Object.keys(tab).length === 0) {
|
|
33
|
+
tab = undefined;
|
|
34
|
+
}
|
|
44
35
|
return {
|
|
45
36
|
content: this.content.toJSON(),
|
|
46
|
-
tab
|
|
37
|
+
tab,
|
|
47
38
|
};
|
|
48
39
|
}
|
|
49
40
|
dispose() {
|
|
50
|
-
var _a;
|
|
51
41
|
this.content.dispose();
|
|
52
42
|
this.tab.dispose();
|
|
53
|
-
(_a = this.actions) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
54
43
|
}
|
|
55
44
|
}
|
|
@@ -34,7 +34,7 @@ export interface SerializedDockview {
|
|
|
34
34
|
tabHeight?: number;
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent'>;
|
|
37
|
+
export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent' | 'defaultTabComponent' | 'createGroupControlElement'>;
|
|
38
38
|
export interface DockviewDropEvent extends GroupviewDropEvent {
|
|
39
39
|
api: DockviewApi;
|
|
40
40
|
group: GroupPanel;
|
|
@@ -12,7 +12,6 @@ import { DockviewApi } from '../api/component.api';
|
|
|
12
12
|
import { MouseEventKind } from '../groupview/tab';
|
|
13
13
|
import { Orientation } from '../splitview/core/splitview';
|
|
14
14
|
import { DefaultTab } from './components/tab/defaultTab';
|
|
15
|
-
import { GroupChangeKind2, } from '../groupview/groupview';
|
|
16
15
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
17
16
|
import { DefaultGroupPanelView } from './defaultGroupPanelView';
|
|
18
17
|
const nextGroupId = sequentialNumberGenerator();
|
|
@@ -426,22 +425,12 @@ export class DockviewComponent extends BaseGrid {
|
|
|
426
425
|
this.moveGroupOrPanel(view, groupId, itemId, target, index);
|
|
427
426
|
}), view.model.onDidDrop((event) => {
|
|
428
427
|
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
|
|
429
|
-
}), view.model.
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
break;
|
|
436
|
-
case GroupChangeKind2.REMOVE_PANEL:
|
|
437
|
-
if (event.panel) {
|
|
438
|
-
this._onDidRemovePanel.fire(event.panel);
|
|
439
|
-
}
|
|
440
|
-
break;
|
|
441
|
-
case GroupChangeKind2.PANEL_ACTIVE:
|
|
442
|
-
this._onDidActivePanelChange.fire(event.panel);
|
|
443
|
-
break;
|
|
444
|
-
}
|
|
428
|
+
}), view.model.onDidAddPanel((event) => {
|
|
429
|
+
this._onDidAddPanel.fire(event.panel);
|
|
430
|
+
}), view.model.onDidRemovePanel((event) => {
|
|
431
|
+
this._onDidRemovePanel.fire(event.panel);
|
|
432
|
+
}), view.model.onDidActivePanelChange((event) => {
|
|
433
|
+
this._onDidActivePanelChange.fire(event.panel);
|
|
445
434
|
}));
|
|
446
435
|
this._groups.set(view.id, { value: view, disposable });
|
|
447
436
|
}
|
|
@@ -456,7 +445,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
456
445
|
createPanel(options, group) {
|
|
457
446
|
const view = new DefaultGroupPanelView({
|
|
458
447
|
content: this.createContentComponent(options.id, options.component),
|
|
459
|
-
tab: this.createTabComponent(options.id, options.tabComponent),
|
|
448
|
+
tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
|
|
460
449
|
});
|
|
461
450
|
const panel = new DockviewGroupPanel(options.id, this, this._api, group);
|
|
462
451
|
panel.init({
|
|
@@ -7,6 +7,8 @@ import { GroupPanel } from '../groupview/groupviewPanel';
|
|
|
7
7
|
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
|
8
8
|
import { FrameworkFactory } from '../types';
|
|
9
9
|
import { DockviewDropTargets } from '../groupview/dnd';
|
|
10
|
+
import { PanelTransfer } from '../dnd/dataTransfer';
|
|
11
|
+
import { IGroupControlRenderer } from '../react/dockview/groupControlsRenderer';
|
|
10
12
|
export interface GroupPanelFrameworkComponentFactory {
|
|
11
13
|
content: FrameworkFactory<IContentRenderer>;
|
|
12
14
|
tab: FrameworkFactory<ITabRenderer>;
|
|
@@ -43,6 +45,7 @@ export interface DockviewDndOverlayEvent {
|
|
|
43
45
|
nativeEvent: DragEvent;
|
|
44
46
|
target: DockviewDropTargets;
|
|
45
47
|
group: GroupPanel;
|
|
48
|
+
getData: () => PanelTransfer | undefined;
|
|
46
49
|
}
|
|
47
50
|
export interface DockviewComponentOptions extends DockviewRenderFunctions {
|
|
48
51
|
watermarkComponent?: WatermarkConstructor;
|
|
@@ -51,7 +54,9 @@ export interface DockviewComponentOptions extends DockviewRenderFunctions {
|
|
|
51
54
|
tabHeight?: number;
|
|
52
55
|
orientation?: Orientation;
|
|
53
56
|
styles?: ISplitviewStyles;
|
|
57
|
+
defaultTabComponent?: string;
|
|
54
58
|
showDndOverlay?: (event: DockviewDndOverlayEvent) => boolean;
|
|
59
|
+
createGroupControlElement?: (group: GroupPanel) => IGroupControlRenderer;
|
|
55
60
|
}
|
|
56
61
|
export interface PanelOptions {
|
|
57
62
|
component: string;
|
|
@@ -9,11 +9,6 @@ import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
|
|
9
9
|
import { IDockviewPanel } from './groupPanel';
|
|
10
10
|
import { GroupPanel } from './groupviewPanel';
|
|
11
11
|
import { DockviewDropTargets } from './dnd';
|
|
12
|
-
export declare enum GroupChangeKind2 {
|
|
13
|
-
ADD_PANEL = "ADD_PANEL",
|
|
14
|
-
REMOVE_PANEL = "REMOVE_PANEL",
|
|
15
|
-
PANEL_ACTIVE = "PANEL_ACTIVE"
|
|
16
|
-
}
|
|
17
12
|
export interface DndService {
|
|
18
13
|
canDisplayOverlay(group: IGroupview, event: DragEvent, target: DockviewDropTargets): boolean;
|
|
19
14
|
onDrop(group: IGroupview, event: DragEvent, position: Position, index?: number): void;
|
|
@@ -49,14 +44,13 @@ export interface GroupPanelViewState extends CoreGroupOptions {
|
|
|
49
44
|
id: string;
|
|
50
45
|
}
|
|
51
46
|
export interface GroupviewChangeEvent {
|
|
52
|
-
readonly
|
|
53
|
-
readonly panel?: IDockviewPanel;
|
|
47
|
+
readonly panel: IDockviewPanel;
|
|
54
48
|
}
|
|
55
49
|
export interface GroupviewDropEvent {
|
|
56
|
-
nativeEvent: DragEvent;
|
|
57
|
-
position: Position;
|
|
50
|
+
readonly nativeEvent: DragEvent;
|
|
51
|
+
readonly position: Position;
|
|
52
|
+
readonly index?: number;
|
|
58
53
|
getData(): PanelTransfer | undefined;
|
|
59
|
-
index?: number;
|
|
60
54
|
}
|
|
61
55
|
export interface IHeader {
|
|
62
56
|
hidden: boolean;
|
|
@@ -70,7 +64,9 @@ export interface IGroupview extends IDisposable, IGridPanelView {
|
|
|
70
64
|
readonly header: IHeader;
|
|
71
65
|
readonly isContentFocused: boolean;
|
|
72
66
|
readonly onDidDrop: Event<GroupviewDropEvent>;
|
|
73
|
-
readonly
|
|
67
|
+
readonly onDidAddPanel: Event<GroupviewChangeEvent>;
|
|
68
|
+
readonly onDidRemovePanel: Event<GroupviewChangeEvent>;
|
|
69
|
+
readonly onDidActivePanelChange: Event<GroupviewChangeEvent>;
|
|
74
70
|
readonly onMove: Event<GroupMoveEvent>;
|
|
75
71
|
locked: boolean;
|
|
76
72
|
isPanelActive: (panel: IDockviewPanel) => boolean;
|
|
@@ -102,10 +98,11 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
102
98
|
private readonly tabsContainer;
|
|
103
99
|
private readonly contentContainer;
|
|
104
100
|
private readonly dropTarget;
|
|
105
|
-
private _activePanel
|
|
101
|
+
private _activePanel;
|
|
106
102
|
private watermark?;
|
|
107
103
|
private _isGroupActive;
|
|
108
104
|
private _locked;
|
|
105
|
+
private _control;
|
|
109
106
|
private mostRecentlyUsed;
|
|
110
107
|
private readonly _onDidChange;
|
|
111
108
|
readonly onDidChange: Event<IViewSize | undefined>;
|
|
@@ -114,10 +111,14 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
114
111
|
private _panels;
|
|
115
112
|
private readonly _onMove;
|
|
116
113
|
readonly onMove: Event<GroupMoveEvent>;
|
|
117
|
-
private readonly _onDidGroupChange;
|
|
118
|
-
readonly onDidGroupChange: Event<GroupviewChangeEvent>;
|
|
119
114
|
private readonly _onDidDrop;
|
|
120
115
|
readonly onDidDrop: Event<GroupviewDropEvent>;
|
|
116
|
+
private readonly _onDidAddPanel;
|
|
117
|
+
readonly onDidAddPanel: Event<GroupviewChangeEvent>;
|
|
118
|
+
private readonly _onDidRemovePanel;
|
|
119
|
+
readonly onDidRemovePanel: Event<GroupviewChangeEvent>;
|
|
120
|
+
private readonly _onDidActivePanelChange;
|
|
121
|
+
readonly onDidActivePanelChange: Event<GroupviewChangeEvent>;
|
|
121
122
|
get element(): HTMLElement;
|
|
122
123
|
get activePanel(): IDockviewPanel | undefined;
|
|
123
124
|
get locked(): boolean;
|
|
@@ -160,7 +161,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
160
161
|
closePanel(panel: IDockviewPanel): void;
|
|
161
162
|
private doClose;
|
|
162
163
|
isPanelActive(panel: IDockviewPanel): boolean;
|
|
163
|
-
updateActions(): void;
|
|
164
|
+
updateActions(element: HTMLElement | undefined): void;
|
|
164
165
|
setActive(isGroupActive: boolean, skipFocus?: boolean, force?: boolean): void;
|
|
165
166
|
layout(width: number, height: number): void;
|
|
166
167
|
private _removePanel;
|
|
@@ -7,12 +7,6 @@ import { CompositeDisposable } from '../lifecycle';
|
|
|
7
7
|
import { ContentContainer } from './panel/content';
|
|
8
8
|
import { TabsContainer } from './titlebar/tabsContainer';
|
|
9
9
|
import { DockviewDropTargets } from './dnd';
|
|
10
|
-
export var GroupChangeKind2;
|
|
11
|
-
(function (GroupChangeKind2) {
|
|
12
|
-
GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
|
|
13
|
-
GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
|
|
14
|
-
GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
|
|
15
|
-
})(GroupChangeKind2 || (GroupChangeKind2 = {}));
|
|
16
10
|
export class Groupview extends CompositeDisposable {
|
|
17
11
|
constructor(container, accessor, id, options, parent) {
|
|
18
12
|
super();
|
|
@@ -31,12 +25,15 @@ export class Groupview extends CompositeDisposable {
|
|
|
31
25
|
this._panels = [];
|
|
32
26
|
this._onMove = new Emitter();
|
|
33
27
|
this.onMove = this._onMove.event;
|
|
34
|
-
this._onDidGroupChange = new Emitter();
|
|
35
|
-
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
36
28
|
this._onDidDrop = new Emitter();
|
|
37
29
|
this.onDidDrop = this._onDidDrop.event;
|
|
30
|
+
this._onDidAddPanel = new Emitter();
|
|
31
|
+
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
32
|
+
this._onDidRemovePanel = new Emitter();
|
|
33
|
+
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
34
|
+
this._onDidActivePanelChange = new Emitter();
|
|
35
|
+
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
38
36
|
this.container.classList.add('groupview');
|
|
39
|
-
this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
|
|
40
37
|
this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
|
|
41
38
|
tabHeight: options.tabHeight,
|
|
42
39
|
});
|
|
@@ -48,7 +45,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
48
45
|
return false;
|
|
49
46
|
}
|
|
50
47
|
const data = getPanelData();
|
|
51
|
-
if (data) {
|
|
48
|
+
if (data && data.viewId === this.accessor.id) {
|
|
52
49
|
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
53
50
|
return !groupHasOnePanelAndIsActiveDragElement;
|
|
54
51
|
}
|
|
@@ -58,7 +55,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
58
55
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
59
56
|
this.header.hidden = !!options.hideHeader;
|
|
60
57
|
this.locked = !!options.locked;
|
|
61
|
-
this.addDisposables(this._onMove, this.
|
|
58
|
+
this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
|
|
62
59
|
this.handleDropEvent(event.event, Position.Center, event.index);
|
|
63
60
|
}), this.contentContainer.onDidFocus(() => {
|
|
64
61
|
this.accessor.doSetGroupActive(this.parent, true);
|
|
@@ -130,6 +127,15 @@ export class Groupview extends CompositeDisposable {
|
|
|
130
127
|
// correctly initialized
|
|
131
128
|
this.setActive(this.isActive, true, true);
|
|
132
129
|
this.updateContainer();
|
|
130
|
+
if (this.accessor.options.createGroupControlElement) {
|
|
131
|
+
this._control = this.accessor.options.createGroupControlElement(this.parent);
|
|
132
|
+
this.addDisposables(this._control);
|
|
133
|
+
this._control.init({
|
|
134
|
+
containerApi: new DockviewApi(this.accessor),
|
|
135
|
+
api: this.parent.api,
|
|
136
|
+
});
|
|
137
|
+
this.tabsContainer.setActionElement(this._control.element);
|
|
138
|
+
}
|
|
133
139
|
}
|
|
134
140
|
indexOf(panel) {
|
|
135
141
|
return this.tabsContainer.indexOf(panel.id);
|
|
@@ -260,14 +266,8 @@ export class Groupview extends CompositeDisposable {
|
|
|
260
266
|
isPanelActive(panel) {
|
|
261
267
|
return this._activePanel === panel;
|
|
262
268
|
}
|
|
263
|
-
updateActions() {
|
|
264
|
-
|
|
265
|
-
if (this.isActive && ((_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.actions)) {
|
|
266
|
-
this.tabsContainer.setActionElement(this._activePanel.view.actions.element);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
this.tabsContainer.setActionElement(undefined);
|
|
270
|
-
}
|
|
269
|
+
updateActions(element) {
|
|
270
|
+
this.tabsContainer.setActionElement(element);
|
|
271
271
|
}
|
|
272
272
|
setActive(isGroupActive, skipFocus = false, force = false) {
|
|
273
273
|
var _a, _b;
|
|
@@ -323,10 +323,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
323
323
|
if (this.mostRecentlyUsed.includes(panel)) {
|
|
324
324
|
this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
|
|
325
325
|
}
|
|
326
|
-
this.
|
|
327
|
-
kind: GroupChangeKind2.REMOVE_PANEL,
|
|
328
|
-
panel,
|
|
329
|
-
});
|
|
326
|
+
this._onDidRemovePanel.fire({ panel });
|
|
330
327
|
}
|
|
331
328
|
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
332
329
|
const existingPanel = this._panels.indexOf(panel);
|
|
@@ -343,10 +340,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
343
340
|
}
|
|
344
341
|
this.updateMru(panel);
|
|
345
342
|
this.panels.splice(index, 0, panel);
|
|
346
|
-
this.
|
|
347
|
-
kind: GroupChangeKind2.ADD_PANEL,
|
|
348
|
-
panel,
|
|
349
|
-
});
|
|
343
|
+
this._onDidAddPanel.fire({ panel });
|
|
350
344
|
}
|
|
351
345
|
doSetActivePanel(panel) {
|
|
352
346
|
this._activePanel = panel;
|
|
@@ -354,10 +348,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
354
348
|
this.tabsContainer.setActivePanel(panel);
|
|
355
349
|
panel.layout(this._width, this._height);
|
|
356
350
|
this.updateMru(panel);
|
|
357
|
-
this.
|
|
358
|
-
kind: GroupChangeKind2.PANEL_ACTIVE,
|
|
359
|
-
panel,
|
|
360
|
-
});
|
|
351
|
+
this._onDidActivePanelChange.fire({ panel });
|
|
361
352
|
}
|
|
362
353
|
}
|
|
363
354
|
updateMru(panel) {
|
|
@@ -367,7 +358,6 @@ export class Groupview extends CompositeDisposable {
|
|
|
367
358
|
this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
|
|
368
359
|
}
|
|
369
360
|
updateContainer() {
|
|
370
|
-
this.updateActions();
|
|
371
361
|
toggleClass(this.container, 'empty', this.isEmpty);
|
|
372
362
|
this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
|
|
373
363
|
if (this.isEmpty && !this.watermark) {
|
|
@@ -404,6 +394,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
404
394
|
nativeEvent: event,
|
|
405
395
|
target,
|
|
406
396
|
group: this.accessor.getPanel(this.id),
|
|
397
|
+
getData: getPanelData,
|
|
407
398
|
});
|
|
408
399
|
}
|
|
409
400
|
return false;
|
|
@@ -14,6 +14,7 @@ export class Tab extends CompositeDisposable {
|
|
|
14
14
|
constructor(panelId, accessor, group) {
|
|
15
15
|
super();
|
|
16
16
|
this.panelId = panelId;
|
|
17
|
+
this.accessor = accessor;
|
|
17
18
|
this.group = group;
|
|
18
19
|
this._onChanged = new Emitter();
|
|
19
20
|
this.onChanged = this._onChanged.event;
|
|
@@ -64,7 +65,7 @@ export class Tab extends CompositeDisposable {
|
|
|
64
65
|
validOverlays: 'none',
|
|
65
66
|
canDisplayOverlay: (event) => {
|
|
66
67
|
const data = getPanelData();
|
|
67
|
-
if (data) {
|
|
68
|
+
if (data && this.accessor.id === data.viewId) {
|
|
68
69
|
return this.panelId !== data.panelId;
|
|
69
70
|
}
|
|
70
71
|
return this.group.model.canDisplayOverlay(event, DockviewDropTargets.Tab);
|
|
@@ -33,7 +33,7 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
33
33
|
canDisplayOverlay: (event) => {
|
|
34
34
|
var _a;
|
|
35
35
|
const data = getPanelData();
|
|
36
|
-
if (data) {
|
|
36
|
+
if (data && this.accessor.id === data.viewId) {
|
|
37
37
|
// don't show the overlay if the tab being dragged is the last panel of this group
|
|
38
38
|
return ((_a = last(this.tabs)) === null || _a === void 0 ? void 0 : _a.value.panelId) !== data.panelId;
|
|
39
39
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IDisposable } from '../lifecycle';
|
|
2
1
|
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
|
3
2
|
import { DockviewPanelApi } from '../api/groupPanelApi';
|
|
4
3
|
import { PanelInitParameters, IPanel } from '../panel/types';
|
|
@@ -32,9 +31,6 @@ export interface ITabRenderer extends IPanel {
|
|
|
32
31
|
init(parameters: GroupPanelPartInitParameters): void;
|
|
33
32
|
updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
|
|
34
33
|
}
|
|
35
|
-
export interface IActionsRenderer extends IDisposable {
|
|
36
|
-
readonly element: HTMLElement;
|
|
37
|
-
}
|
|
38
34
|
export interface IContentRenderer extends IPanel {
|
|
39
35
|
readonly element: HTMLElement;
|
|
40
36
|
readonly actions?: HTMLElement;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from './dockview/dockviewComponent';
|
|
|
13
13
|
export * from './gridview/gridviewComponent';
|
|
14
14
|
export * from './splitview/splitviewComponent';
|
|
15
15
|
export * from './paneview/paneviewComponent';
|
|
16
|
+
export { PaneviewComponentOptions } from './paneview/options';
|
|
16
17
|
export * from './gridview/gridviewPanel';
|
|
17
18
|
export * from './splitview/splitviewPanel';
|
|
18
19
|
export * from './paneview/paneviewPanel';
|
|
@@ -3,6 +3,8 @@ import { CompositeDisposable } from '../lifecycle';
|
|
|
3
3
|
import { PanelUpdateEvent } from '../panel/types';
|
|
4
4
|
import { IPaneHeaderPart, PanePanelInitParameter } from './paneviewPanel';
|
|
5
5
|
export declare class DefaultHeader extends CompositeDisposable implements IPaneHeaderPart {
|
|
6
|
+
private readonly _expandedIcon;
|
|
7
|
+
private readonly _collapsedIcon;
|
|
6
8
|
private readonly disposable;
|
|
7
9
|
private readonly _element;
|
|
8
10
|
private readonly _content;
|
|
@@ -13,6 +15,7 @@ export declare class DefaultHeader extends CompositeDisposable implements IPaneH
|
|
|
13
15
|
init(params: PanePanelInitParameter & {
|
|
14
16
|
api: PaneviewPanelApiImpl;
|
|
15
17
|
}): void;
|
|
18
|
+
private updateIcon;
|
|
16
19
|
update(_params: PanelUpdateEvent): void;
|
|
17
20
|
dispose(): void;
|
|
18
21
|
}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { addDisposableListener } from '../events';
|
|
2
2
|
import { CompositeDisposable, MutableDisposable } from '../lifecycle';
|
|
3
3
|
import { toggleClass } from '../dom';
|
|
4
|
+
import { createChevronRightButton, createExpandMoreButton } from '../svg';
|
|
4
5
|
export class DefaultHeader extends CompositeDisposable {
|
|
5
6
|
constructor() {
|
|
6
7
|
super();
|
|
8
|
+
this._expandedIcon = createExpandMoreButton();
|
|
9
|
+
this._collapsedIcon = createChevronRightButton();
|
|
7
10
|
this.disposable = new MutableDisposable();
|
|
8
11
|
this.apiRef = { api: null };
|
|
9
12
|
this._element = document.createElement('div');
|
|
10
13
|
this.element.className = 'default-header';
|
|
11
14
|
this._content = document.createElement('span');
|
|
12
|
-
this._expander = document.createElement('
|
|
15
|
+
this._expander = document.createElement('div');
|
|
16
|
+
this._expander.className = 'dockview-pane-header-icon';
|
|
13
17
|
this.element.appendChild(this._expander);
|
|
14
18
|
this.element.appendChild(this._content);
|
|
15
19
|
this.addDisposables(addDisposableListener(this._element, 'click', () => {
|
|
@@ -23,12 +27,32 @@ export class DefaultHeader extends CompositeDisposable {
|
|
|
23
27
|
init(params) {
|
|
24
28
|
this.apiRef.api = params.api;
|
|
25
29
|
this._content.textContent = params.title;
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
toggleClass(this._expander, 'collapsed', !e.isExpanded);
|
|
30
|
+
this.updateIcon();
|
|
31
|
+
this.disposable.value = params.api.onDidExpansionChange(() => {
|
|
32
|
+
this.updateIcon();
|
|
30
33
|
});
|
|
31
34
|
}
|
|
35
|
+
updateIcon() {
|
|
36
|
+
var _a;
|
|
37
|
+
const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);
|
|
38
|
+
toggleClass(this._expander, 'collapsed', !isExpanded);
|
|
39
|
+
if (isExpanded) {
|
|
40
|
+
if (this._expander.contains(this._collapsedIcon)) {
|
|
41
|
+
this._collapsedIcon.remove();
|
|
42
|
+
}
|
|
43
|
+
if (!this._expander.contains(this._expandedIcon)) {
|
|
44
|
+
this._expander.appendChild(this._expandedIcon);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (this._expander.contains(this._expandedIcon)) {
|
|
49
|
+
this._expandedIcon.remove();
|
|
50
|
+
}
|
|
51
|
+
if (!this._expander.contains(this._collapsedIcon)) {
|
|
52
|
+
this._expander.appendChild(this._collapsedIcon);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
32
56
|
update(_params) {
|
|
33
57
|
//
|
|
34
58
|
}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { PaneTransfer } from '../dnd/dataTransfer';
|
|
2
2
|
import { DroptargetEvent } from '../dnd/droptarget';
|
|
3
3
|
import { Orientation } from '../splitview/core/splitview';
|
|
4
|
+
import { IPaneviewComponent } from './paneviewComponent';
|
|
4
5
|
import { IPaneviewPanel, PaneviewPanel } from './paneviewPanel';
|
|
5
6
|
export interface PaneviewDropEvent2 extends DroptargetEvent {
|
|
6
7
|
panel: IPaneviewPanel;
|
|
7
8
|
getData: () => PaneTransfer | undefined;
|
|
8
9
|
}
|
|
9
10
|
export declare abstract class DraggablePaneviewPanel extends PaneviewPanel {
|
|
11
|
+
private readonly accessor;
|
|
10
12
|
private handler;
|
|
11
13
|
private target;
|
|
12
14
|
private readonly _onDidDrop;
|
|
13
15
|
readonly onDidDrop: import("../events").Event<PaneviewDropEvent2>;
|
|
14
|
-
constructor(id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
|
|
16
|
+
constructor(accessor: IPaneviewComponent, id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
|
|
15
17
|
private initDragFeatures;
|
|
16
18
|
private onDrop;
|
|
17
19
|
}
|