dockview 1.4.1 → 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 +4 -195
- package/dist/cjs/api/component.api.d.ts +8 -3
- package/dist/cjs/api/component.api.js +16 -4
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +1 -2
- 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/deserializer.d.ts +0 -12
- package/dist/cjs/dockview/deserializer.js +0 -52
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +6 -8
- package/dist/cjs/dockview/dockviewComponent.js +84 -58
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +11 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +4 -2
- package/dist/cjs/gridview/baseComponentGridview.js +1 -1
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +1 -0
- package/dist/cjs/gridview/gridviewComponent.js +26 -18
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/groupview/groupview.d.ts +20 -18
- package/dist/cjs/groupview/groupview.js +44 -41
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/groupviewPanel.d.ts +2 -2
- package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
- package/dist/cjs/groupview/tab.d.ts +1 -0
- package/dist/cjs/groupview/tab.js +3 -1
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +3 -5
- package/dist/cjs/groupview/titlebar/tabsContainer.js +3 -5
- 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 +2 -0
- package/dist/cjs/index.js +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 +32 -6
- 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 +14 -1
- package/dist/cjs/paneview/paneviewComponent.js +32 -17
- 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 +5 -3
- 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/splitview/splitviewComponent.d.ts +2 -0
- package/dist/cjs/splitview/splitviewComponent.js +20 -17
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- 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 +454 -204
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.noStyle.js +453 -203
- package/dist/dockview.cjs.js +454 -204
- package/dist/dockview.esm.js +449 -198
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.js +454 -204
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.noStyle.js +453 -203
- package/dist/esm/api/component.api.d.ts +8 -3
- package/dist/esm/api/component.api.js +16 -4
- package/dist/esm/dnd/droptarget.d.ts +1 -2
- 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/deserializer.d.ts +0 -12
- package/dist/esm/dockview/deserializer.js +1 -27
- package/dist/esm/dockview/dockviewComponent.d.ts +6 -8
- package/dist/esm/dockview/dockviewComponent.js +56 -41
- package/dist/esm/dockview/options.d.ts +11 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts +4 -2
- package/dist/esm/gridview/baseComponentGridview.js +1 -1
- package/dist/esm/gridview/gridviewComponent.d.ts +1 -0
- package/dist/esm/gridview/gridviewComponent.js +15 -7
- package/dist/esm/groupview/groupview.d.ts +20 -18
- package/dist/esm/groupview/groupview.js +42 -40
- package/dist/esm/groupview/groupviewPanel.d.ts +2 -2
- package/dist/esm/groupview/tab.d.ts +1 -0
- package/dist/esm/groupview/tab.js +3 -1
- package/dist/esm/groupview/titlebar/tabsContainer.d.ts +3 -5
- package/dist/esm/groupview/titlebar/tabsContainer.js +3 -5
- package/dist/esm/groupview/types.d.ts +0 -4
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +3 -0
- package/dist/esm/paneview/defaultPaneviewHeader.js +32 -6
- 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 +14 -1
- package/dist/esm/paneview/paneviewComponent.js +17 -6
- 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 +5 -3
- 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/splitview/splitviewComponent.d.ts +2 -0
- package/dist/esm/splitview/splitviewComponent.js +9 -6
- package/dist/esm/svg.d.ts +3 -0
- package/dist/esm/svg.js +31 -0
- package/dist/styles/dockview.css +158 -40
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FrameworkFactory } from '../types';
|
|
2
|
+
import { PaneviewDndOverlayEvent } from './paneviewComponent';
|
|
2
3
|
import { IPaneBodyPart, IPaneHeaderPart, PaneviewPanel } from './paneviewPanel';
|
|
3
4
|
export interface PaneviewComponentOptions {
|
|
4
5
|
components?: {
|
|
@@ -22,4 +23,5 @@ export interface PaneviewComponentOptions {
|
|
|
22
23
|
body: FrameworkFactory<IPaneBodyPart>;
|
|
23
24
|
};
|
|
24
25
|
disableDnd?: boolean;
|
|
26
|
+
showDndOverlay?: (event: PaneviewDndOverlayEvent) => boolean;
|
|
25
27
|
}
|
|
@@ -5,6 +5,12 @@ import { PaneviewComponentOptions } from './options';
|
|
|
5
5
|
import { Paneview } from './paneview';
|
|
6
6
|
import { IPaneBodyPart, IPaneHeaderPart, PaneviewPanel, IPaneviewPanel } from './paneviewPanel';
|
|
7
7
|
import { DraggablePaneviewPanel, PaneviewDropEvent2 } from './draggablePaneviewPanel';
|
|
8
|
+
import { PaneTransfer } from '../dnd/dataTransfer';
|
|
9
|
+
export interface PaneviewDndOverlayEvent {
|
|
10
|
+
nativeEvent: DragEvent;
|
|
11
|
+
panel: IPaneviewPanel;
|
|
12
|
+
getData: () => PaneTransfer | undefined;
|
|
13
|
+
}
|
|
8
14
|
export interface SerializedPaneviewPanel {
|
|
9
15
|
snap?: boolean;
|
|
10
16
|
priority?: LayoutPriority;
|
|
@@ -37,6 +43,7 @@ export declare class PaneFramework extends DraggablePaneviewPanel {
|
|
|
37
43
|
orientation: Orientation;
|
|
38
44
|
isExpanded: boolean;
|
|
39
45
|
disableDnd: boolean;
|
|
46
|
+
accessor: IPaneviewComponent;
|
|
40
47
|
});
|
|
41
48
|
getBodyComponent(): IPaneBodyPart;
|
|
42
49
|
getHeaderComponent(): IPaneHeaderPart;
|
|
@@ -56,11 +63,13 @@ export interface AddPaneviewComponentOptions {
|
|
|
56
63
|
size?: number;
|
|
57
64
|
}
|
|
58
65
|
export interface IPaneviewComponent extends IDisposable {
|
|
66
|
+
readonly id: string;
|
|
59
67
|
readonly width: number;
|
|
60
68
|
readonly height: number;
|
|
61
69
|
readonly minimumSize: number;
|
|
62
70
|
readonly maximumSize: number;
|
|
63
71
|
readonly panels: IPaneviewPanel[];
|
|
72
|
+
readonly options: PaneviewComponentOptions;
|
|
64
73
|
readonly onDidAddView: Event<PaneviewPanel>;
|
|
65
74
|
readonly onDidRemoveView: Event<PaneviewPanel>;
|
|
66
75
|
readonly onDidDrop: Event<PaneviewDropEvent2>;
|
|
@@ -75,9 +84,12 @@ export interface IPaneviewComponent extends IDisposable {
|
|
|
75
84
|
getPanel(id: string): IPaneviewPanel | undefined;
|
|
76
85
|
movePanel(from: number, to: number): void;
|
|
77
86
|
updateOptions(options: Partial<PaneviewComponentOptions>): void;
|
|
87
|
+
clear(): void;
|
|
78
88
|
}
|
|
79
89
|
export declare class PaneviewComponent extends CompositeDisposable implements IPaneviewComponent {
|
|
80
90
|
private element;
|
|
91
|
+
private readonly _id;
|
|
92
|
+
private _options;
|
|
81
93
|
private _disposable;
|
|
82
94
|
private _viewDisposables;
|
|
83
95
|
private _paneview;
|
|
@@ -91,6 +103,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
|
|
|
91
103
|
readonly onDidAddView: Event<PaneviewPanel>;
|
|
92
104
|
private readonly _onDidRemoveView;
|
|
93
105
|
readonly onDidRemoveView: Event<PaneviewPanel>;
|
|
106
|
+
get id(): string;
|
|
94
107
|
get panels(): PaneviewPanel[];
|
|
95
108
|
set paneview(value: Paneview);
|
|
96
109
|
get paneview(): Paneview;
|
|
@@ -98,7 +111,6 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
|
|
|
98
111
|
get maximumSize(): number;
|
|
99
112
|
get height(): number;
|
|
100
113
|
get width(): number;
|
|
101
|
-
private _options;
|
|
102
114
|
get options(): PaneviewComponentOptions;
|
|
103
115
|
constructor(element: HTMLElement, options: PaneviewComponentOptions);
|
|
104
116
|
focus(): void;
|
|
@@ -110,6 +122,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
|
|
|
110
122
|
layout(width: number, height: number): void;
|
|
111
123
|
toJSON(): SerializedPaneview;
|
|
112
124
|
fromJSON(serializedPaneview: SerializedPaneview): void;
|
|
125
|
+
clear(): void;
|
|
113
126
|
private doAddPanel;
|
|
114
127
|
private doRemovePanel;
|
|
115
128
|
dispose(): void;
|
|
@@ -6,9 +6,11 @@ import { Orientation, Sizing, } from '../splitview/core/splitview';
|
|
|
6
6
|
import { Paneview } from './paneview';
|
|
7
7
|
import { DraggablePaneviewPanel, } from './draggablePaneviewPanel';
|
|
8
8
|
import { DefaultHeader } from './defaultPaneviewHeader';
|
|
9
|
+
import { sequentialNumberGenerator } from '../math';
|
|
10
|
+
const nextLayoutId = sequentialNumberGenerator();
|
|
9
11
|
export class PaneFramework extends DraggablePaneviewPanel {
|
|
10
12
|
constructor(options) {
|
|
11
|
-
super(options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
|
|
13
|
+
super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
|
|
12
14
|
this.options = options;
|
|
13
15
|
}
|
|
14
16
|
getBodyComponent() {
|
|
@@ -22,6 +24,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
22
24
|
constructor(element, options) {
|
|
23
25
|
super();
|
|
24
26
|
this.element = element;
|
|
27
|
+
this._id = nextLayoutId.next();
|
|
25
28
|
this._disposable = new MutableDisposable();
|
|
26
29
|
this._viewDisposables = new Map();
|
|
27
30
|
this._onDidLayoutfromJSON = new Emitter();
|
|
@@ -48,6 +51,9 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
48
51
|
});
|
|
49
52
|
this.addDisposables(this._disposable);
|
|
50
53
|
}
|
|
54
|
+
get id() {
|
|
55
|
+
return this._id;
|
|
56
|
+
}
|
|
51
57
|
get panels() {
|
|
52
58
|
return this.paneview.getPanes();
|
|
53
59
|
}
|
|
@@ -112,6 +118,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
112
118
|
orientation: Orientation.VERTICAL,
|
|
113
119
|
isExpanded: !!options.isExpanded,
|
|
114
120
|
disableDnd: !!this.options.disableDnd,
|
|
121
|
+
accessor: this,
|
|
115
122
|
});
|
|
116
123
|
this.doAddPanel(view);
|
|
117
124
|
const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
|
|
@@ -170,13 +177,9 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
170
177
|
};
|
|
171
178
|
}
|
|
172
179
|
fromJSON(serializedPaneview) {
|
|
180
|
+
this.clear();
|
|
173
181
|
const { views, size } = serializedPaneview;
|
|
174
182
|
const queue = [];
|
|
175
|
-
for (const [_, value] of this._viewDisposables.entries()) {
|
|
176
|
-
value.dispose();
|
|
177
|
-
}
|
|
178
|
-
this._viewDisposables.clear();
|
|
179
|
-
this.paneview.dispose();
|
|
180
183
|
this.paneview = new Paneview(this.element, {
|
|
181
184
|
orientation: Orientation.VERTICAL,
|
|
182
185
|
descriptor: {
|
|
@@ -210,6 +213,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
210
213
|
orientation: Orientation.VERTICAL,
|
|
211
214
|
isExpanded: !!view.expanded,
|
|
212
215
|
disableDnd: !!this.options.disableDnd,
|
|
216
|
+
accessor: this,
|
|
213
217
|
});
|
|
214
218
|
this.doAddPanel(panel);
|
|
215
219
|
queue.push(() => {
|
|
@@ -235,6 +239,13 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
235
239
|
queue.forEach((f) => f());
|
|
236
240
|
this._onDidLayoutfromJSON.fire();
|
|
237
241
|
}
|
|
242
|
+
clear() {
|
|
243
|
+
for (const [_, value] of this._viewDisposables.entries()) {
|
|
244
|
+
value.dispose();
|
|
245
|
+
}
|
|
246
|
+
this._viewDisposables.clear();
|
|
247
|
+
this.paneview.dispose();
|
|
248
|
+
}
|
|
238
249
|
doAddPanel(panel) {
|
|
239
250
|
const disposable = panel.onDidDrop((event) => {
|
|
240
251
|
this._onDidDrop.fire(event);
|
|
@@ -8,17 +8,25 @@ export class ReactPanelDeserialzier {
|
|
|
8
8
|
this.layout = layout;
|
|
9
9
|
}
|
|
10
10
|
fromJSON(panelData, group) {
|
|
11
|
-
var _a, _b, _c;
|
|
11
|
+
var _a, _b, _c, _d;
|
|
12
12
|
const panelId = panelData.id;
|
|
13
13
|
const params = panelData.params;
|
|
14
14
|
const title = panelData.title;
|
|
15
15
|
const suppressClosable = panelData.suppressClosable;
|
|
16
16
|
const viewData = panelData.view;
|
|
17
|
+
let tab;
|
|
18
|
+
if ((_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id) {
|
|
19
|
+
tab = createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_b = this.layout.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());
|
|
20
|
+
}
|
|
21
|
+
else if (this.layout.options.defaultTabComponent) {
|
|
22
|
+
tab = createComponent(this.layout.options.defaultTabComponent, this.layout.options.defaultTabComponent, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab, () => new DefaultTab());
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
tab = new DefaultTab();
|
|
26
|
+
}
|
|
17
27
|
const view = new DefaultGroupPanelView({
|
|
18
|
-
content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (
|
|
19
|
-
tab
|
|
20
|
-
? createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab)
|
|
21
|
-
: new DefaultTab(),
|
|
28
|
+
content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (_d = this.layout.options.frameworkComponentFactory) === null || _d === void 0 ? void 0 : _d.content),
|
|
29
|
+
tab,
|
|
22
30
|
});
|
|
23
31
|
const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout), group);
|
|
24
32
|
panel.init({
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IDockviewPanelHeaderProps } from './dockview';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare type IDockviewDefaultTabProps = IDockviewPanelHeaderProps & React.DOMAttributes<HTMLDivElement>;
|
|
4
|
+
export declare const DockviewDefaultTab: React.FunctionComponent<IDockviewDefaultTabProps>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
import { CloseButton } from '../svg';
|
|
14
|
+
export const DockviewDefaultTab = (_a) => {
|
|
15
|
+
var { api, containerApi: _containerApi, params: _params } = _a, rest = __rest(_a, ["api", "containerApi", "params"]);
|
|
16
|
+
const onClose = React.useCallback((event) => {
|
|
17
|
+
event.stopPropagation();
|
|
18
|
+
api.close();
|
|
19
|
+
}, [api]);
|
|
20
|
+
const onClick = React.useCallback((event) => {
|
|
21
|
+
api.setActive();
|
|
22
|
+
if (rest.onClick) {
|
|
23
|
+
rest.onClick(event);
|
|
24
|
+
}
|
|
25
|
+
}, [api, rest.onClick]);
|
|
26
|
+
const iconClassname = React.useMemo(() => {
|
|
27
|
+
const cn = ['dockview-react-tab-action'];
|
|
28
|
+
return cn.join(',');
|
|
29
|
+
}, [api.suppressClosable]);
|
|
30
|
+
return (React.createElement("div", Object.assign({}, rest, { onClick: onClick, className: "dockview-react-tab" }),
|
|
31
|
+
React.createElement("span", { className: "dockview-react-tab-title" }, api.title),
|
|
32
|
+
React.createElement("div", { className: iconClassname, onClick: onClose },
|
|
33
|
+
React.createElement(CloseButton, null))));
|
|
34
|
+
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DockviewDropEvent } from '../../dockview/dockviewComponent';
|
|
3
|
-
import { TabContextMenuEvent } from '../../dockview/options';
|
|
3
|
+
import { DockviewDndOverlayEvent, TabContextMenuEvent } from '../../dockview/options';
|
|
4
4
|
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
|
5
5
|
import { DockviewApi } from '../../api/component.api';
|
|
6
6
|
import { IWatermarkPanelProps } from './reactWatermarkPart';
|
|
7
7
|
import { PanelCollection, PanelParameters } from '../types';
|
|
8
|
-
import {
|
|
8
|
+
import { IDockviewGroupControlProps } from './groupControlsRenderer';
|
|
9
9
|
export interface IGroupPanelBaseProps<T extends {} = Record<string, any>> extends PanelParameters<T> {
|
|
10
10
|
api: DockviewPanelApi;
|
|
11
11
|
containerApi: DockviewApi;
|
|
@@ -25,9 +25,11 @@ export interface IDockviewReactProps {
|
|
|
25
25
|
tabHeight?: number;
|
|
26
26
|
onTabContextMenu?: (event: TabContextMenuEvent) => void;
|
|
27
27
|
onDidDrop?: (event: DockviewDropEvent) => void;
|
|
28
|
-
showDndOverlay?: (event:
|
|
28
|
+
showDndOverlay?: (event: DockviewDndOverlayEvent) => boolean;
|
|
29
29
|
hideBorders?: boolean;
|
|
30
30
|
className?: string;
|
|
31
31
|
disableAutoResizing?: boolean;
|
|
32
|
+
defaultTabComponent?: React.FunctionComponent<IDockviewPanelHeaderProps>;
|
|
33
|
+
groupControlComponent?: React.FunctionComponent<IDockviewGroupControlProps>;
|
|
32
34
|
}
|
|
33
35
|
export declare const DockviewReact: React.ForwardRefExoticComponent<IDockviewReactProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -7,6 +7,15 @@ import { usePortalsLifecycle } from '../react';
|
|
|
7
7
|
import { DockviewApi } from '../../api/component.api';
|
|
8
8
|
import { ReactWatermarkPart } from './reactWatermarkPart';
|
|
9
9
|
import { watchElementResize } from '../../dom';
|
|
10
|
+
import { ReactGroupControlsRendererPart, } from './groupControlsRenderer';
|
|
11
|
+
import { DEFAULT_TAB_IDENTIFIER } from '../../dockview/components/tab/defaultTab';
|
|
12
|
+
function createGroupControlElement(component, store) {
|
|
13
|
+
return component
|
|
14
|
+
? (groupPanel) => {
|
|
15
|
+
return new ReactGroupControlsRendererPart(component, store, groupPanel);
|
|
16
|
+
}
|
|
17
|
+
: undefined;
|
|
18
|
+
}
|
|
10
19
|
export const DockviewReact = React.forwardRef((props, ref) => {
|
|
11
20
|
const domRef = React.useRef(null);
|
|
12
21
|
const dockviewRef = React.useRef();
|
|
@@ -56,12 +65,15 @@ export const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
56
65
|
const dockview = new DockviewComponent(element, {
|
|
57
66
|
frameworkComponentFactory: factory,
|
|
58
67
|
frameworkComponents: props.components,
|
|
59
|
-
frameworkTabComponents: props.tabComponents,
|
|
68
|
+
frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
|
|
60
69
|
tabHeight: props.tabHeight,
|
|
61
70
|
watermarkFrameworkComponent: props.watermarkComponent,
|
|
71
|
+
defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
|
|
62
72
|
styles: props.hideBorders
|
|
63
73
|
? { separatorBorder: 'transparent' }
|
|
64
74
|
: undefined,
|
|
75
|
+
showDndOverlay: props.showDndOverlay,
|
|
76
|
+
createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
|
|
65
77
|
});
|
|
66
78
|
(_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
|
|
67
79
|
dockview.deserializer = new ReactPanelDeserialzier(dockview);
|
|
@@ -138,6 +150,23 @@ export const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
138
150
|
disposable.dispose();
|
|
139
151
|
};
|
|
140
152
|
}, [props.onTabContextMenu]);
|
|
153
|
+
React.useEffect(() => {
|
|
154
|
+
if (!dockviewRef.current) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
dockviewRef.current.updateOptions({
|
|
158
|
+
defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
|
|
159
|
+
frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
|
|
160
|
+
});
|
|
161
|
+
}, [props.defaultTabComponent]);
|
|
162
|
+
React.useEffect(() => {
|
|
163
|
+
if (!dockviewRef.current) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
dockviewRef.current.updateOptions({
|
|
167
|
+
createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
|
|
168
|
+
});
|
|
169
|
+
}, [props.groupControlComponent]);
|
|
141
170
|
return (React.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
|
|
142
171
|
});
|
|
143
172
|
DockviewReact.displayName = 'DockviewComponent';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactPart, ReactPortalStore } from '../react';
|
|
3
|
+
import { PanelUpdateEvent } from '../../panel/types';
|
|
4
|
+
import { GroupPanel, GroupviewPanelApi } from '../../groupview/groupviewPanel';
|
|
5
|
+
import { DockviewApi } from '../../api/component.api';
|
|
6
|
+
import { IDisposable } from '../../lifecycle';
|
|
7
|
+
import { IDockviewPanel } from '../../groupview/groupPanel';
|
|
8
|
+
export interface IDockviewGroupControlProps {
|
|
9
|
+
api: GroupviewPanelApi;
|
|
10
|
+
containerApi: DockviewApi;
|
|
11
|
+
panels: IDockviewPanel[];
|
|
12
|
+
activePanel: IDockviewPanel | undefined;
|
|
13
|
+
isGroupActive: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface IGroupControlRenderer extends IDisposable {
|
|
16
|
+
readonly element: HTMLElement;
|
|
17
|
+
init(params: {
|
|
18
|
+
containerApi: DockviewApi;
|
|
19
|
+
api: GroupviewPanelApi;
|
|
20
|
+
}): void;
|
|
21
|
+
}
|
|
22
|
+
export declare class ReactGroupControlsRendererPart {
|
|
23
|
+
private readonly component;
|
|
24
|
+
private readonly reactPortalStore;
|
|
25
|
+
private readonly _group;
|
|
26
|
+
private mutableDisposable;
|
|
27
|
+
private _element;
|
|
28
|
+
private _part?;
|
|
29
|
+
get element(): HTMLElement;
|
|
30
|
+
get part(): ReactPart<IDockviewGroupControlProps> | undefined;
|
|
31
|
+
get group(): GroupPanel;
|
|
32
|
+
constructor(component: React.FunctionComponent<IDockviewGroupControlProps>, reactPortalStore: ReactPortalStore, _group: GroupPanel);
|
|
33
|
+
focus(): void;
|
|
34
|
+
init(parameters: {
|
|
35
|
+
containerApi: DockviewApi;
|
|
36
|
+
api: GroupviewPanelApi;
|
|
37
|
+
}): void;
|
|
38
|
+
update(event: PanelUpdateEvent): void;
|
|
39
|
+
dispose(): void;
|
|
40
|
+
private updatePanels;
|
|
41
|
+
private updateActivePanel;
|
|
42
|
+
private updateGroupActive;
|
|
43
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ReactPart } from '../react';
|
|
2
|
+
import { CompositeDisposable, MutableDisposable, } from '../../lifecycle';
|
|
3
|
+
export class ReactGroupControlsRendererPart {
|
|
4
|
+
constructor(component, reactPortalStore, _group) {
|
|
5
|
+
this.component = component;
|
|
6
|
+
this.reactPortalStore = reactPortalStore;
|
|
7
|
+
this._group = _group;
|
|
8
|
+
this.mutableDisposable = new MutableDisposable();
|
|
9
|
+
this._element = document.createElement('div');
|
|
10
|
+
this._element.className = 'dockview-react-part';
|
|
11
|
+
}
|
|
12
|
+
get element() {
|
|
13
|
+
return this._element;
|
|
14
|
+
}
|
|
15
|
+
get part() {
|
|
16
|
+
return this._part;
|
|
17
|
+
}
|
|
18
|
+
get group() {
|
|
19
|
+
return this._group;
|
|
20
|
+
}
|
|
21
|
+
focus() {
|
|
22
|
+
// TODO
|
|
23
|
+
}
|
|
24
|
+
init(parameters) {
|
|
25
|
+
this.mutableDisposable.value = new CompositeDisposable(this._group.model.onDidAddPanel(() => {
|
|
26
|
+
this.updatePanels();
|
|
27
|
+
}), this._group.model.onDidRemovePanel(() => {
|
|
28
|
+
this.updatePanels();
|
|
29
|
+
}), this._group.model.onDidActivePanelChange(() => {
|
|
30
|
+
this.updateActivePanel();
|
|
31
|
+
}), parameters.api.onDidActiveChange(() => {
|
|
32
|
+
this.updateGroupActive();
|
|
33
|
+
}));
|
|
34
|
+
this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {
|
|
35
|
+
api: parameters.api,
|
|
36
|
+
containerApi: parameters.containerApi,
|
|
37
|
+
panels: this._group.model.panels,
|
|
38
|
+
activePanel: this._group.model.activePanel,
|
|
39
|
+
isGroupActive: this._group.api.isActive,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
update(event) {
|
|
43
|
+
var _a;
|
|
44
|
+
(_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);
|
|
45
|
+
}
|
|
46
|
+
dispose() {
|
|
47
|
+
var _a;
|
|
48
|
+
this.mutableDisposable.dispose();
|
|
49
|
+
(_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
50
|
+
}
|
|
51
|
+
updatePanels() {
|
|
52
|
+
this.update({ params: { panels: this._group.model.panels } });
|
|
53
|
+
}
|
|
54
|
+
updateActivePanel() {
|
|
55
|
+
this.update({
|
|
56
|
+
params: {
|
|
57
|
+
activePanel: this._group.model.activePanel,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
updateGroupActive() {
|
|
62
|
+
this.update({
|
|
63
|
+
params: {
|
|
64
|
+
isGroupActive: this._group.api.isActive,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1,37 +1,22 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { IContentRenderer, GroupPanelContentPartInitParameters
|
|
2
|
+
import { IContentRenderer, GroupPanelContentPartInitParameters } from '../../groupview/types';
|
|
3
3
|
import { ReactPortalStore } from '../react';
|
|
4
4
|
import { IDockviewPanelProps } from '../dockview/dockview';
|
|
5
5
|
import { PanelUpdateEvent } from '../../panel/types';
|
|
6
|
-
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
|
7
|
-
import { DockviewApi } from '../../api/component.api';
|
|
8
6
|
import { GroupPanel } from '../../groupview/groupviewPanel';
|
|
9
7
|
import { Event } from '../../events';
|
|
10
|
-
export interface IGroupPanelActionbarProps {
|
|
11
|
-
api: DockviewPanelApi;
|
|
12
|
-
containerApi: DockviewApi;
|
|
13
|
-
}
|
|
14
|
-
export interface ReactContentPartContext {
|
|
15
|
-
api: DockviewPanelApi;
|
|
16
|
-
containerApi: DockviewApi;
|
|
17
|
-
actionsPortalElement: HTMLElement;
|
|
18
|
-
tabPortalElement: ITabRenderer;
|
|
19
|
-
}
|
|
20
8
|
export declare class ReactPanelContentPart implements IContentRenderer {
|
|
21
9
|
readonly id: string;
|
|
22
10
|
private readonly component;
|
|
23
11
|
private readonly reactPortalStore;
|
|
24
12
|
private _element;
|
|
25
13
|
private part?;
|
|
26
|
-
private _actionsElement;
|
|
27
|
-
private actionsPart?;
|
|
28
14
|
private _group;
|
|
29
15
|
private readonly _onDidFocus;
|
|
30
16
|
readonly onDidFocus: Event<void>;
|
|
31
17
|
private readonly _onDidBlur;
|
|
32
18
|
readonly onDidBlur: Event<void>;
|
|
33
19
|
get element(): HTMLElement;
|
|
34
|
-
get actions(): HTMLElement;
|
|
35
20
|
constructor(id: string, component: React.FunctionComponent<IDockviewPanelProps>, reactPortalStore: ReactPortalStore);
|
|
36
21
|
focus(): void;
|
|
37
22
|
init(parameters: GroupPanelContentPartInitParameters): void;
|
|
@@ -11,30 +11,19 @@ export class ReactPanelContentPart {
|
|
|
11
11
|
this.onDidBlur = this._onDidBlur.event;
|
|
12
12
|
this._element = document.createElement('div');
|
|
13
13
|
this._element.className = 'dockview-react-part';
|
|
14
|
-
this._actionsElement = document.createElement('div');
|
|
15
|
-
this._actionsElement.className = 'dockview-react-part';
|
|
16
14
|
}
|
|
17
15
|
get element() {
|
|
18
16
|
return this._element;
|
|
19
17
|
}
|
|
20
|
-
get actions() {
|
|
21
|
-
return this._actionsElement;
|
|
22
|
-
}
|
|
23
18
|
focus() {
|
|
24
19
|
// TODO
|
|
25
20
|
}
|
|
26
21
|
init(parameters) {
|
|
27
|
-
const context = {
|
|
28
|
-
api: parameters.api,
|
|
29
|
-
containerApi: parameters.containerApi,
|
|
30
|
-
actionsPortalElement: this._actionsElement,
|
|
31
|
-
tabPortalElement: parameters.tab,
|
|
32
|
-
};
|
|
33
22
|
this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {
|
|
34
23
|
params: parameters.params,
|
|
35
24
|
api: parameters.api,
|
|
36
25
|
containerApi: parameters.containerApi,
|
|
37
|
-
}
|
|
26
|
+
});
|
|
38
27
|
}
|
|
39
28
|
toJSON() {
|
|
40
29
|
return {
|
|
@@ -52,10 +41,9 @@ export class ReactPanelContentPart {
|
|
|
52
41
|
// noop
|
|
53
42
|
}
|
|
54
43
|
dispose() {
|
|
55
|
-
var _a
|
|
44
|
+
var _a;
|
|
56
45
|
this._onDidFocus.dispose();
|
|
57
46
|
this._onDidBlur.dispose();
|
|
58
47
|
(_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
59
|
-
(_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
60
48
|
}
|
|
61
49
|
}
|
|
@@ -16,6 +16,8 @@ export declare class ReactPanelHeaderPart implements ITabRenderer {
|
|
|
16
16
|
init(parameters: GroupPanelPartInitParameters): void;
|
|
17
17
|
update(event: PanelUpdateEvent): void;
|
|
18
18
|
toJSON(): {
|
|
19
|
+
id?: undefined;
|
|
20
|
+
} | {
|
|
19
21
|
id: string;
|
|
20
22
|
};
|
|
21
23
|
layout(_width: number, _height: number): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReactPart } from '../react';
|
|
2
|
+
import { DEFAULT_TAB_IDENTIFIER } from '../../dockview/components/tab/defaultTab';
|
|
2
3
|
export class ReactPanelHeaderPart {
|
|
3
4
|
constructor(id, component, reactPortalStore) {
|
|
4
5
|
this.id = id;
|
|
@@ -25,6 +26,9 @@ export class ReactPanelHeaderPart {
|
|
|
25
26
|
(_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
|
|
26
27
|
}
|
|
27
28
|
toJSON() {
|
|
29
|
+
if (this.id === DEFAULT_TAB_IDENTIFIER) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
28
32
|
return {
|
|
29
33
|
id: this.id,
|
|
30
34
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export * from './dockview/dockview';
|
|
2
|
+
export * from './dockview/defaultTab';
|
|
2
3
|
export * from './splitview/splitview';
|
|
3
4
|
export * from './gridview/gridview';
|
|
4
|
-
export
|
|
5
|
-
export * from './dockview/reactHeaderPart';
|
|
5
|
+
export { IDockviewGroupControlProps } from './dockview/groupControlsRenderer';
|
|
6
6
|
export { IWatermarkPanelProps } from './dockview/reactWatermarkPart';
|
|
7
7
|
export * from './paneview/paneview';
|
|
8
8
|
export * from './types';
|
package/dist/esm/react/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
export * from './dockview/dockview';
|
|
2
|
+
export * from './dockview/defaultTab';
|
|
2
3
|
export * from './splitview/splitview';
|
|
3
4
|
export * from './gridview/gridview';
|
|
4
|
-
export * from './dockview/reactContentPart';
|
|
5
|
-
export * from './dockview/reactHeaderPart';
|
|
6
5
|
export * from './paneview/paneview';
|
|
7
6
|
export * from './types';
|
|
8
7
|
export * from './react';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PaneviewPanelApi } from '../../api/paneviewPanelApi';
|
|
3
|
+
import { PaneviewDndOverlayEvent } from '../../paneview/paneviewComponent';
|
|
3
4
|
import { PaneviewApi } from '../../api/component.api';
|
|
4
5
|
import { PanelCollection, PanelParameters } from '../types';
|
|
5
6
|
import { PaneviewDropEvent2 } from '../../paneview/draggablePaneviewPanel';
|
|
@@ -23,6 +24,7 @@ export interface IPaneviewReactProps {
|
|
|
23
24
|
className?: string;
|
|
24
25
|
disableAutoResizing?: boolean;
|
|
25
26
|
disableDnd?: boolean;
|
|
27
|
+
showDndOverlay?: (event: PaneviewDndOverlayEvent) => boolean;
|
|
26
28
|
onDidDrop?(event: PaneviewDropEvent): void;
|
|
27
29
|
}
|
|
28
30
|
export declare const PaneviewReact: React.ForwardRefExoticComponent<IPaneviewReactProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -42,6 +42,7 @@ export const PaneviewReact = React.forwardRef((props, ref) => {
|
|
|
42
42
|
createComponent,
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
|
+
showDndOverlay: props.showDndOverlay,
|
|
45
46
|
});
|
|
46
47
|
const api = new PaneviewApi(paneview);
|
|
47
48
|
const { clientWidth, clientHeight } = domRef.current;
|
|
@@ -86,6 +87,14 @@ export const PaneviewReact = React.forwardRef((props, ref) => {
|
|
|
86
87
|
disposable.dispose();
|
|
87
88
|
};
|
|
88
89
|
}, [props.onDidDrop]);
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
if (!paneviewRef.current) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
paneviewRef.current.updateOptions({
|
|
95
|
+
showDndOverlay: props.showDndOverlay,
|
|
96
|
+
});
|
|
97
|
+
}, [props.showDndOverlay]);
|
|
89
98
|
return (React.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
|
|
90
99
|
});
|
|
91
100
|
PaneviewReact.displayName = 'PaneviewComponent';
|
|
@@ -11,6 +11,7 @@ export declare class ReactPart<P extends object, C extends object = {}> implemen
|
|
|
11
11
|
private readonly component;
|
|
12
12
|
private readonly parameters;
|
|
13
13
|
private readonly context?;
|
|
14
|
+
private _initialProps;
|
|
14
15
|
private componentInstance?;
|
|
15
16
|
private ref?;
|
|
16
17
|
private disposed;
|
package/dist/esm/react/react.js
CHANGED
|
@@ -41,15 +41,21 @@ export class ReactPart {
|
|
|
41
41
|
this.component = component;
|
|
42
42
|
this.parameters = parameters;
|
|
43
43
|
this.context = context;
|
|
44
|
+
this._initialProps = {};
|
|
44
45
|
this.disposed = false;
|
|
45
46
|
this.createPortal();
|
|
46
47
|
}
|
|
47
48
|
update(props) {
|
|
48
|
-
var _a;
|
|
49
49
|
if (this.disposed) {
|
|
50
50
|
throw new Error('invalid operation: resource is already disposed');
|
|
51
51
|
}
|
|
52
|
-
(
|
|
52
|
+
if (!this.componentInstance) {
|
|
53
|
+
// if the component is yet to be mounted store the props
|
|
54
|
+
this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.componentInstance.update(props);
|
|
58
|
+
}
|
|
53
59
|
}
|
|
54
60
|
createPortal() {
|
|
55
61
|
if (this.disposed) {
|
|
@@ -69,6 +75,10 @@ export class ReactPart {
|
|
|
69
75
|
componentProps: this.parameters,
|
|
70
76
|
ref: (element) => {
|
|
71
77
|
this.componentInstance = element;
|
|
78
|
+
if (Object.keys(this._initialProps).length > 0) {
|
|
79
|
+
this.componentInstance.update(this._initialProps);
|
|
80
|
+
this._initialProps = {}; // don't keep a reference to the users object once no longer required
|
|
81
|
+
}
|
|
72
82
|
},
|
|
73
83
|
});
|
|
74
84
|
const node = this.context
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export const CloseButton = () => (React.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "dockview-svg" },
|
|
3
|
+
React.createElement("path", { d: "M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z" })));
|
|
4
|
+
export const ExpandMore = () => {
|
|
5
|
+
return (React.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 15", "aria-hidden": 'false', focusable: false, className: "dockview-svg" },
|
|
6
|
+
React.createElement("path", { d: "M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z" })));
|
|
7
|
+
};
|