dockview-core 4.0.1 → 4.1.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/dist/cjs/api/component.api.d.ts +3 -1
- package/dist/cjs/api/component.api.js +14 -0
- package/dist/cjs/dockview/components/popupService.js +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +16 -0
- package/dist/cjs/dockview/dockviewComponent.js +27 -10
- package/dist/cjs/dom.d.ts +6 -4
- package/dist/cjs/dom.js +90 -49
- package/dist/cjs/events.d.ts +1 -1
- package/dist/cjs/events.js +1 -10
- package/dist/cjs/overlay/overlay.js +4 -4
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +13 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +14 -4
- package/dist/cjs/paneview/paneviewComponent.d.ts +5 -0
- package/dist/cjs/paneview/paneviewComponent.js +25 -3
- package/dist/cjs/paneview/paneviewPanel.d.ts +13 -4
- package/dist/cjs/paneview/paneviewPanel.js +9 -13
- package/dist/cjs/popoutWindow.js +2 -2
- package/dist/cjs/splitview/splitviewComponent.js +3 -0
- package/dist/dockview-core.amd.js +154 -62
- package/dist/dockview-core.amd.js.map +1 -1
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.js.map +1 -1
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-core.amd.noStyle.js +154 -62
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +154 -62
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +154 -62
- package/dist/dockview-core.esm.js.map +1 -1
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.esm.min.js.map +1 -1
- package/dist/dockview-core.js +154 -62
- package/dist/dockview-core.js.map +1 -1
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +154 -62
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +3 -1
- package/dist/esm/api/component.api.js +6 -0
- package/dist/esm/dockview/components/popupService.js +2 -2
- package/dist/esm/dockview/dockviewComponent.d.ts +16 -0
- package/dist/esm/dockview/dockviewComponent.js +29 -12
- package/dist/esm/dom.d.ts +6 -4
- package/dist/esm/dom.js +65 -16
- package/dist/esm/events.d.ts +1 -1
- package/dist/esm/events.js +0 -8
- package/dist/esm/overlay/overlay.js +5 -5
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +13 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +14 -4
- package/dist/esm/paneview/paneviewComponent.d.ts +5 -0
- package/dist/esm/paneview/paneviewComponent.js +25 -3
- package/dist/esm/paneview/paneviewPanel.d.ts +13 -4
- package/dist/esm/paneview/paneviewPanel.js +9 -13
- package/dist/esm/popoutWindow.js +3 -3
- package/dist/esm/splitview/splitviewComponent.js +3 -0
- package/package.json +1 -1
|
@@ -65,10 +65,24 @@ var math_1 = require("../math");
|
|
|
65
65
|
var resizable_1 = require("../resizable");
|
|
66
66
|
var dom_1 = require("../dom");
|
|
67
67
|
var nextLayoutId = (0, math_1.sequentialNumberGenerator)();
|
|
68
|
+
var HEADER_SIZE = 22;
|
|
69
|
+
var MINIMUM_BODY_SIZE = 0;
|
|
70
|
+
var MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;
|
|
68
71
|
var PaneFramework = /** @class */ (function (_super) {
|
|
69
72
|
__extends(PaneFramework, _super);
|
|
70
73
|
function PaneFramework(options) {
|
|
71
|
-
var _this = _super.call(this,
|
|
74
|
+
var _this = _super.call(this, {
|
|
75
|
+
accessor: options.accessor,
|
|
76
|
+
id: options.id,
|
|
77
|
+
component: options.component,
|
|
78
|
+
headerComponent: options.headerComponent,
|
|
79
|
+
orientation: options.orientation,
|
|
80
|
+
isExpanded: options.isExpanded,
|
|
81
|
+
disableDnd: options.disableDnd,
|
|
82
|
+
headerSize: options.headerSize,
|
|
83
|
+
minimumBodySize: options.minimumBodySize,
|
|
84
|
+
maximumBodySize: options.maximumBodySize,
|
|
85
|
+
}) || this;
|
|
72
86
|
_this.options = options;
|
|
73
87
|
return _this;
|
|
74
88
|
}
|
|
@@ -201,7 +215,7 @@ var PaneviewComponent = /** @class */ (function (_super) {
|
|
|
201
215
|
this._options = __assign(__assign({}, this.options), options);
|
|
202
216
|
};
|
|
203
217
|
PaneviewComponent.prototype.addPanel = function (options) {
|
|
204
|
-
var _a;
|
|
218
|
+
var _a, _b;
|
|
205
219
|
var body = this.options.createComponent({
|
|
206
220
|
id: options.id,
|
|
207
221
|
name: options.component,
|
|
@@ -226,12 +240,15 @@ var PaneviewComponent = /** @class */ (function (_super) {
|
|
|
226
240
|
isExpanded: !!options.isExpanded,
|
|
227
241
|
disableDnd: !!this.options.disableDnd,
|
|
228
242
|
accessor: this,
|
|
243
|
+
headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
|
|
244
|
+
minimumBodySize: MINIMUM_BODY_SIZE,
|
|
245
|
+
maximumBodySize: MAXIMUM_BODY_SIZE,
|
|
229
246
|
});
|
|
230
247
|
this.doAddPanel(view);
|
|
231
248
|
var size = typeof options.size === 'number' ? options.size : splitview_1.Sizing.Distribute;
|
|
232
249
|
var index = typeof options.index === 'number' ? options.index : undefined;
|
|
233
250
|
view.init({
|
|
234
|
-
params: (
|
|
251
|
+
params: (_b = options.params) !== null && _b !== void 0 ? _b : {},
|
|
235
252
|
minimumBodySize: options.minimumBodySize,
|
|
236
253
|
maximumBodySize: options.maximumBodySize,
|
|
237
254
|
isExpanded: options.isExpanded,
|
|
@@ -279,6 +296,7 @@ var PaneviewComponent = /** @class */ (function (_super) {
|
|
|
279
296
|
data: view.toJSON(),
|
|
280
297
|
minimumSize: minimum(view.minimumBodySize),
|
|
281
298
|
maximumSize: maximum(view.maximumBodySize),
|
|
299
|
+
headerSize: view.headerSize,
|
|
282
300
|
expanded: view.isExpanded(),
|
|
283
301
|
};
|
|
284
302
|
});
|
|
@@ -300,6 +318,7 @@ var PaneviewComponent = /** @class */ (function (_super) {
|
|
|
300
318
|
descriptor: {
|
|
301
319
|
size: size,
|
|
302
320
|
views: views.map(function (view) {
|
|
321
|
+
var _a, _b, _c;
|
|
303
322
|
var data = view.data;
|
|
304
323
|
var body = _this.options.createComponent({
|
|
305
324
|
id: data.id,
|
|
@@ -326,6 +345,9 @@ var PaneviewComponent = /** @class */ (function (_super) {
|
|
|
326
345
|
isExpanded: !!view.expanded,
|
|
327
346
|
disableDnd: !!_this.options.disableDnd,
|
|
328
347
|
accessor: _this,
|
|
348
|
+
headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
|
|
349
|
+
minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,
|
|
350
|
+
maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,
|
|
329
351
|
});
|
|
330
352
|
_this.doAddPanel(panel);
|
|
331
353
|
queue.push(function () {
|
|
@@ -39,7 +39,6 @@ export interface IPaneviewPanel extends BasePanelViewExported<PaneviewPanelApiIm
|
|
|
39
39
|
headerVisible: boolean;
|
|
40
40
|
}
|
|
41
41
|
export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelApiImpl> implements IPaneview, IPaneviewPanel {
|
|
42
|
-
private readonly headerComponent;
|
|
43
42
|
private readonly _onDidChangeExpansionState;
|
|
44
43
|
onDidChangeExpansionState: Event<boolean>;
|
|
45
44
|
private readonly _onDidChange;
|
|
@@ -47,7 +46,6 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
|
|
|
47
46
|
size?: number;
|
|
48
47
|
orthogonalSize?: number;
|
|
49
48
|
}>;
|
|
50
|
-
private readonly headerSize;
|
|
51
49
|
private _orthogonalSize;
|
|
52
50
|
private _size;
|
|
53
51
|
private _minimumBodySize;
|
|
@@ -57,10 +55,11 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
|
|
|
57
55
|
protected body?: HTMLElement;
|
|
58
56
|
private bodyPart?;
|
|
59
57
|
private headerPart?;
|
|
60
|
-
private expandedSize;
|
|
61
58
|
private animationTimer;
|
|
62
59
|
private _orientation;
|
|
63
60
|
private _headerVisible;
|
|
61
|
+
readonly headerSize: number;
|
|
62
|
+
readonly headerComponent: string | undefined;
|
|
64
63
|
set orientation(value: Orientation);
|
|
65
64
|
get orientation(): Orientation;
|
|
66
65
|
get minimumSize(): number;
|
|
@@ -74,7 +73,17 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
|
|
|
74
73
|
set maximumBodySize(value: number);
|
|
75
74
|
get headerVisible(): boolean;
|
|
76
75
|
set headerVisible(value: boolean);
|
|
77
|
-
constructor(
|
|
76
|
+
constructor(options: {
|
|
77
|
+
id: string;
|
|
78
|
+
component: string;
|
|
79
|
+
headerComponent: string | undefined;
|
|
80
|
+
orientation: Orientation;
|
|
81
|
+
isExpanded: boolean;
|
|
82
|
+
isHeaderVisible: boolean;
|
|
83
|
+
headerSize: number;
|
|
84
|
+
minimumBodySize: number;
|
|
85
|
+
maximumBodySize: number;
|
|
86
|
+
});
|
|
78
87
|
setVisible(isVisible: boolean): void;
|
|
79
88
|
setActive(isActive: boolean): void;
|
|
80
89
|
isExpanded(): boolean;
|
|
@@ -50,26 +50,25 @@ var basePanelView_1 = require("../gridview/basePanelView");
|
|
|
50
50
|
var splitview_1 = require("../splitview/splitview");
|
|
51
51
|
var PaneviewPanel = /** @class */ (function (_super) {
|
|
52
52
|
__extends(PaneviewPanel, _super);
|
|
53
|
-
function PaneviewPanel(
|
|
54
|
-
var _this = _super.call(this, id, component, new paneviewPanelApi_1.PaneviewPanelApiImpl(id, component)) || this;
|
|
55
|
-
_this.headerComponent = headerComponent;
|
|
53
|
+
function PaneviewPanel(options) {
|
|
54
|
+
var _this = _super.call(this, options.id, options.component, new paneviewPanelApi_1.PaneviewPanelApiImpl(options.id, options.component)) || this;
|
|
56
55
|
_this._onDidChangeExpansionState = new events_1.Emitter({ replay: true });
|
|
57
56
|
_this.onDidChangeExpansionState = _this._onDidChangeExpansionState.event;
|
|
58
57
|
_this._onDidChange = new events_1.Emitter();
|
|
59
58
|
_this.onDidChange = _this._onDidChange.event;
|
|
60
|
-
_this.headerSize = 22;
|
|
61
59
|
_this._orthogonalSize = 0;
|
|
62
60
|
_this._size = 0;
|
|
63
|
-
_this._minimumBodySize = 100;
|
|
64
|
-
_this._maximumBodySize = Number.POSITIVE_INFINITY;
|
|
65
61
|
_this._isExpanded = false;
|
|
66
|
-
_this.expandedSize = 0;
|
|
67
62
|
_this.api.pane = _this; // TODO cannot use 'this' before 'super'
|
|
68
63
|
_this.api.initialize(_this);
|
|
69
|
-
_this.
|
|
70
|
-
_this.
|
|
64
|
+
_this.headerSize = options.headerSize;
|
|
65
|
+
_this.headerComponent = options.headerComponent;
|
|
66
|
+
_this._minimumBodySize = options.minimumBodySize;
|
|
67
|
+
_this._maximumBodySize = options.maximumBodySize;
|
|
68
|
+
_this._isExpanded = options.isExpanded;
|
|
69
|
+
_this._headerVisible = options.isHeaderVisible;
|
|
71
70
|
_this._onDidChangeExpansionState.fire(_this.isExpanded()); // initialize value
|
|
72
|
-
_this._orientation = orientation;
|
|
71
|
+
_this._orientation = options.orientation;
|
|
73
72
|
_this.element.classList.add('dv-pane');
|
|
74
73
|
_this.addDisposables(_this.api.onWillVisibilityChange(function (event) {
|
|
75
74
|
var isVisible = event.isVisible;
|
|
@@ -217,9 +216,6 @@ var PaneviewPanel = /** @class */ (function (_super) {
|
|
|
217
216
|
var _a = __read(this.orientation === splitview_1.Orientation.HORIZONTAL
|
|
218
217
|
? [size, orthogonalSize]
|
|
219
218
|
: [orthogonalSize, size], 2), width = _a[0], height = _a[1];
|
|
220
|
-
if (this.isExpanded()) {
|
|
221
|
-
this.expandedSize = width;
|
|
222
|
-
}
|
|
223
219
|
_super.prototype.layout.call(this, width, height);
|
|
224
220
|
};
|
|
225
221
|
PaneviewPanel.prototype.init = function (parameters) {
|
package/dist/cjs/popoutWindow.js
CHANGED
|
@@ -153,7 +153,7 @@ var PopoutWindow = /** @class */ (function (_super) {
|
|
|
153
153
|
this._window = { value: externalWindow, disposable: disposable };
|
|
154
154
|
disposable.addDisposables(lifecycle_1.Disposable.from(function () {
|
|
155
155
|
externalWindow.close();
|
|
156
|
-
}), (0, events_1.
|
|
156
|
+
}), (0, events_1.addDisposableListener)(window, 'beforeunload', function () {
|
|
157
157
|
/**
|
|
158
158
|
* before the main window closes we should close this popup too
|
|
159
159
|
* to be good citizens
|
|
@@ -188,7 +188,7 @@ var PopoutWindow = /** @class */ (function (_super) {
|
|
|
188
188
|
* beforeunload must be registered after load for reasons I could not determine
|
|
189
189
|
* otherwise the beforeunload event will not fire when the window is closed
|
|
190
190
|
*/
|
|
191
|
-
(0, events_1.
|
|
191
|
+
(0, events_1.addDisposableListener)(externalWindow, 'beforeunload', function () {
|
|
192
192
|
/**
|
|
193
193
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
194
194
|
*/
|
|
@@ -122,6 +122,9 @@ var SplitviewComponent = /** @class */ (function (_super) {
|
|
|
122
122
|
},
|
|
123
123
|
set: function (value) {
|
|
124
124
|
var _this = this;
|
|
125
|
+
if (this._splitview) {
|
|
126
|
+
this._splitview.dispose();
|
|
127
|
+
}
|
|
125
128
|
this._splitview = value;
|
|
126
129
|
this._splitviewChangeDisposable.value = new lifecycle_1.CompositeDisposable(this._splitview.onDidSashEnd(function () {
|
|
127
130
|
_this._onDidLayoutChange.fire(undefined);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 4.0
|
|
3
|
+
* @version 4.1.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -245,14 +245,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
245
245
|
}
|
|
246
246
|
Emitter.ENABLE_TRACKING = false;
|
|
247
247
|
Emitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();
|
|
248
|
-
function addDisposableWindowListener(element, type, listener, options) {
|
|
249
|
-
element.addEventListener(type, listener, options);
|
|
250
|
-
return {
|
|
251
|
-
dispose: () => {
|
|
252
|
-
element.removeEventListener(type, listener, options);
|
|
253
|
-
},
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
248
|
function addDisposableListener(element, type, listener, options) {
|
|
257
249
|
element.addEventListener(type, listener, options);
|
|
258
250
|
return {
|
|
@@ -431,9 +423,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
431
423
|
}
|
|
432
424
|
return false;
|
|
433
425
|
}
|
|
434
|
-
function getElementsByTagName(tag) {
|
|
435
|
-
return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);
|
|
436
|
-
}
|
|
437
426
|
function trackFocus(element) {
|
|
438
427
|
return new FocusTracker(element);
|
|
439
428
|
}
|
|
@@ -480,14 +469,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
480
469
|
}
|
|
481
470
|
}
|
|
482
471
|
};
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
|
|
486
|
-
}
|
|
487
|
-
else {
|
|
488
|
-
this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));
|
|
489
|
-
this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));
|
|
490
|
-
}
|
|
472
|
+
this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));
|
|
473
|
+
this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
|
|
491
474
|
}
|
|
492
475
|
refreshState() {
|
|
493
476
|
this._refreshStateHandler();
|
|
@@ -561,11 +544,30 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
561
544
|
function addTestId(element, id) {
|
|
562
545
|
element.setAttribute('data-testid', id);
|
|
563
546
|
}
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
547
|
+
/**
|
|
548
|
+
* Should be more efficient than element.querySelectorAll("*") since there
|
|
549
|
+
* is no need to store every element in-memory using this approach
|
|
550
|
+
*/
|
|
551
|
+
function allTagsNamesInclusiveOfShadowDoms(tagNames) {
|
|
552
|
+
const iframes = [];
|
|
553
|
+
function findIframesInNode(node) {
|
|
554
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
555
|
+
if (tagNames.includes(node.tagName)) {
|
|
556
|
+
iframes.push(node);
|
|
557
|
+
}
|
|
558
|
+
if (node.shadowRoot) {
|
|
559
|
+
findIframesInNode(node.shadowRoot);
|
|
560
|
+
}
|
|
561
|
+
for (const child of node.children) {
|
|
562
|
+
findIframesInNode(child);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
findIframesInNode(document.documentElement);
|
|
567
|
+
return iframes;
|
|
568
|
+
}
|
|
569
|
+
function disableIframePointEvents(rootNode = document) {
|
|
570
|
+
const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);
|
|
569
571
|
const original = new WeakMap(); // don't hold onto HTMLElement references longer than required
|
|
570
572
|
for (const iframe of iframes) {
|
|
571
573
|
original.set(iframe, iframe.style.pointerEvents);
|
|
@@ -617,6 +619,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
617
619
|
}
|
|
618
620
|
}
|
|
619
621
|
}
|
|
622
|
+
const DEBOUCE_DELAY = 100;
|
|
620
623
|
function isChildEntirelyVisibleWithinParent(child, parent) {
|
|
621
624
|
//
|
|
622
625
|
const childPosition = getDomNodePagePosition(child);
|
|
@@ -630,6 +633,41 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
630
633
|
}
|
|
631
634
|
return true;
|
|
632
635
|
}
|
|
636
|
+
function onDidWindowMoveEnd(window) {
|
|
637
|
+
const emitter = new Emitter();
|
|
638
|
+
let previousScreenX = window.screenX;
|
|
639
|
+
let previousScreenY = window.screenY;
|
|
640
|
+
let timeout;
|
|
641
|
+
const checkMovement = () => {
|
|
642
|
+
if (window.closed) {
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
const currentScreenX = window.screenX;
|
|
646
|
+
const currentScreenY = window.screenY;
|
|
647
|
+
if (currentScreenX !== previousScreenX ||
|
|
648
|
+
currentScreenY !== previousScreenY) {
|
|
649
|
+
clearTimeout(timeout);
|
|
650
|
+
timeout = setTimeout(() => {
|
|
651
|
+
emitter.fire();
|
|
652
|
+
}, DEBOUCE_DELAY);
|
|
653
|
+
previousScreenX = currentScreenX;
|
|
654
|
+
previousScreenY = currentScreenY;
|
|
655
|
+
}
|
|
656
|
+
requestAnimationFrame(checkMovement);
|
|
657
|
+
};
|
|
658
|
+
checkMovement();
|
|
659
|
+
return emitter;
|
|
660
|
+
}
|
|
661
|
+
function onDidWindowResizeEnd(element, cb) {
|
|
662
|
+
let resizeTimeout;
|
|
663
|
+
const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {
|
|
664
|
+
clearTimeout(resizeTimeout);
|
|
665
|
+
resizeTimeout = setTimeout(() => {
|
|
666
|
+
cb();
|
|
667
|
+
}, DEBOUCE_DELAY);
|
|
668
|
+
}));
|
|
669
|
+
return disposable;
|
|
670
|
+
}
|
|
633
671
|
|
|
634
672
|
function tail(arr) {
|
|
635
673
|
if (arr.length === 0) {
|
|
@@ -3569,6 +3607,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3569
3607
|
get onUnhandledDragOverEvent() {
|
|
3570
3608
|
return this.component.onUnhandledDragOverEvent;
|
|
3571
3609
|
}
|
|
3610
|
+
get onDidPopoutGroupSizeChange() {
|
|
3611
|
+
return this.component.onDidPopoutGroupSizeChange;
|
|
3612
|
+
}
|
|
3613
|
+
get onDidPopoutGroupPositionChange() {
|
|
3614
|
+
return this.component.onDidPopoutGroupPositionChange;
|
|
3615
|
+
}
|
|
3572
3616
|
/**
|
|
3573
3617
|
* All panel objects.
|
|
3574
3618
|
*/
|
|
@@ -4534,26 +4578,25 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4534
4578
|
this._headerVisible = value;
|
|
4535
4579
|
this.header.style.display = value ? '' : 'none';
|
|
4536
4580
|
}
|
|
4537
|
-
constructor(
|
|
4538
|
-
super(id, component, new PaneviewPanelApiImpl(id, component));
|
|
4539
|
-
this.headerComponent = headerComponent;
|
|
4581
|
+
constructor(options) {
|
|
4582
|
+
super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));
|
|
4540
4583
|
this._onDidChangeExpansionState = new Emitter({ replay: true });
|
|
4541
4584
|
this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;
|
|
4542
4585
|
this._onDidChange = new Emitter();
|
|
4543
4586
|
this.onDidChange = this._onDidChange.event;
|
|
4544
|
-
this.headerSize = 22;
|
|
4545
4587
|
this._orthogonalSize = 0;
|
|
4546
4588
|
this._size = 0;
|
|
4547
|
-
this._minimumBodySize = 100;
|
|
4548
|
-
this._maximumBodySize = Number.POSITIVE_INFINITY;
|
|
4549
4589
|
this._isExpanded = false;
|
|
4550
|
-
this.expandedSize = 0;
|
|
4551
4590
|
this.api.pane = this; // TODO cannot use 'this' before 'super'
|
|
4552
4591
|
this.api.initialize(this);
|
|
4553
|
-
this.
|
|
4554
|
-
this.
|
|
4592
|
+
this.headerSize = options.headerSize;
|
|
4593
|
+
this.headerComponent = options.headerComponent;
|
|
4594
|
+
this._minimumBodySize = options.minimumBodySize;
|
|
4595
|
+
this._maximumBodySize = options.maximumBodySize;
|
|
4596
|
+
this._isExpanded = options.isExpanded;
|
|
4597
|
+
this._headerVisible = options.isHeaderVisible;
|
|
4555
4598
|
this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
|
|
4556
|
-
this._orientation = orientation;
|
|
4599
|
+
this._orientation = options.orientation;
|
|
4557
4600
|
this.element.classList.add('dv-pane');
|
|
4558
4601
|
this.addDisposables(this.api.onWillVisibilityChange((event) => {
|
|
4559
4602
|
const { isVisible } = event;
|
|
@@ -4620,9 +4663,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4620
4663
|
const [width, height] = this.orientation === exports.Orientation.HORIZONTAL
|
|
4621
4664
|
? [size, orthogonalSize]
|
|
4622
4665
|
: [orthogonalSize, size];
|
|
4623
|
-
if (this.isExpanded()) {
|
|
4624
|
-
this.expandedSize = width;
|
|
4625
|
-
}
|
|
4626
4666
|
super.layout(width, height);
|
|
4627
4667
|
}
|
|
4628
4668
|
init(parameters) {
|
|
@@ -4679,15 +4719,25 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4679
4719
|
}
|
|
4680
4720
|
|
|
4681
4721
|
class DraggablePaneviewPanel extends PaneviewPanel {
|
|
4682
|
-
constructor(
|
|
4683
|
-
super(
|
|
4684
|
-
|
|
4722
|
+
constructor(options) {
|
|
4723
|
+
super({
|
|
4724
|
+
id: options.id,
|
|
4725
|
+
component: options.component,
|
|
4726
|
+
headerComponent: options.headerComponent,
|
|
4727
|
+
orientation: options.orientation,
|
|
4728
|
+
isExpanded: options.isExpanded,
|
|
4729
|
+
isHeaderVisible: true,
|
|
4730
|
+
headerSize: options.headerSize,
|
|
4731
|
+
minimumBodySize: options.minimumBodySize,
|
|
4732
|
+
maximumBodySize: options.maximumBodySize,
|
|
4733
|
+
});
|
|
4685
4734
|
this._onDidDrop = new Emitter();
|
|
4686
4735
|
this.onDidDrop = this._onDidDrop.event;
|
|
4687
4736
|
this._onUnhandledDragOverEvent = new Emitter();
|
|
4688
4737
|
this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
|
|
4738
|
+
this.accessor = options.accessor;
|
|
4689
4739
|
this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);
|
|
4690
|
-
if (!disableDnd) {
|
|
4740
|
+
if (!options.disableDnd) {
|
|
4691
4741
|
this.initDragFeatures();
|
|
4692
4742
|
}
|
|
4693
4743
|
}
|
|
@@ -7321,7 +7371,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7321
7371
|
dispose: () => {
|
|
7322
7372
|
iframes.release();
|
|
7323
7373
|
},
|
|
7324
|
-
},
|
|
7374
|
+
}, addDisposableListener(window, 'pointermove', (e) => {
|
|
7325
7375
|
const containerRect = this.options.container.getBoundingClientRect();
|
|
7326
7376
|
const x = e.clientX - containerRect.left;
|
|
7327
7377
|
const y = e.clientY - containerRect.top;
|
|
@@ -7358,7 +7408,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7358
7408
|
bounds.right = right;
|
|
7359
7409
|
}
|
|
7360
7410
|
this.setBounds(bounds);
|
|
7361
|
-
}),
|
|
7411
|
+
}), addDisposableListener(window, 'pointerup', () => {
|
|
7362
7412
|
toggleClass(this._element, 'dv-resize-container-dragging', false);
|
|
7363
7413
|
move.dispose();
|
|
7364
7414
|
this._onDidChangeEnd.fire();
|
|
@@ -7403,7 +7453,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7403
7453
|
e.preventDefault();
|
|
7404
7454
|
let startPosition = null;
|
|
7405
7455
|
const iframes = disableIframePointEvents();
|
|
7406
|
-
move.value = new CompositeDisposable(
|
|
7456
|
+
move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {
|
|
7407
7457
|
const containerRect = this.options.container.getBoundingClientRect();
|
|
7408
7458
|
const overlayRect = this._element.getBoundingClientRect();
|
|
7409
7459
|
const y = e.clientY - containerRect.top;
|
|
@@ -7527,7 +7577,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7527
7577
|
dispose: () => {
|
|
7528
7578
|
iframes.release();
|
|
7529
7579
|
},
|
|
7530
|
-
},
|
|
7580
|
+
}, addDisposableListener(window, 'pointerup', () => {
|
|
7531
7581
|
move.dispose();
|
|
7532
7582
|
this._onDidChangeEnd.fire();
|
|
7533
7583
|
}));
|
|
@@ -7833,7 +7883,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7833
7883
|
this._window = { value: externalWindow, disposable };
|
|
7834
7884
|
disposable.addDisposables(exports.DockviewDisposable.from(() => {
|
|
7835
7885
|
externalWindow.close();
|
|
7836
|
-
}),
|
|
7886
|
+
}), addDisposableListener(window, 'beforeunload', () => {
|
|
7837
7887
|
/**
|
|
7838
7888
|
* before the main window closes we should close this popup too
|
|
7839
7889
|
* to be good citizens
|
|
@@ -7868,7 +7918,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7868
7918
|
* beforeunload must be registered after load for reasons I could not determine
|
|
7869
7919
|
* otherwise the beforeunload event will not fire when the window is closed
|
|
7870
7920
|
*/
|
|
7871
|
-
|
|
7921
|
+
addDisposableListener(externalWindow, 'beforeunload', () => {
|
|
7872
7922
|
/**
|
|
7873
7923
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
7874
7924
|
*/
|
|
@@ -7965,7 +8015,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7965
8015
|
wrapper.style.left = `${position.x - offsetX}px`;
|
|
7966
8016
|
this._element.appendChild(wrapper);
|
|
7967
8017
|
this._active = wrapper;
|
|
7968
|
-
this._activeDisposable.value = new CompositeDisposable(
|
|
8018
|
+
this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {
|
|
7969
8019
|
var _a;
|
|
7970
8020
|
const target = event.target;
|
|
7971
8021
|
if (!(target instanceof HTMLElement)) {
|
|
@@ -8144,6 +8194,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8144
8194
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
8145
8195
|
this._onDidAddPanel = new Emitter();
|
|
8146
8196
|
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
8197
|
+
this._onDidPopoutGroupSizeChange = new Emitter();
|
|
8198
|
+
this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;
|
|
8199
|
+
this._onDidPopoutGroupPositionChange = new Emitter();
|
|
8200
|
+
this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;
|
|
8147
8201
|
this._onDidLayoutFromJSON = new Emitter();
|
|
8148
8202
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
8149
8203
|
this._onDidActivePanelChange = new Emitter();
|
|
@@ -8173,7 +8227,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8173
8227
|
if (options.debug) {
|
|
8174
8228
|
this.addDisposables(new StrictEventsSequencing(this));
|
|
8175
8229
|
}
|
|
8176
|
-
this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
8230
|
+
this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
8177
8231
|
this.updateWatermark();
|
|
8178
8232
|
}), this.onDidAdd((event) => {
|
|
8179
8233
|
if (!this._moving) {
|
|
@@ -8194,7 +8248,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8194
8248
|
});
|
|
8195
8249
|
}), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
|
|
8196
8250
|
this.updateWatermark();
|
|
8197
|
-
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
|
|
8251
|
+
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {
|
|
8198
8252
|
this._bufferOnDidLayoutChange.fire();
|
|
8199
8253
|
}), exports.DockviewDisposable.from(() => {
|
|
8200
8254
|
// iterate over a copy of the array since .dispose() mutates the original array
|
|
@@ -8455,13 +8509,26 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8455
8509
|
},
|
|
8456
8510
|
},
|
|
8457
8511
|
};
|
|
8458
|
-
|
|
8512
|
+
const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);
|
|
8513
|
+
popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {
|
|
8514
|
+
this._onDidPopoutGroupSizeChange.fire({
|
|
8515
|
+
width: _window.window.innerWidth,
|
|
8516
|
+
height: _window.window.innerHeight,
|
|
8517
|
+
group,
|
|
8518
|
+
});
|
|
8519
|
+
}), _onDidWindowPositionChange.event(() => {
|
|
8520
|
+
this._onDidPopoutGroupPositionChange.fire({
|
|
8521
|
+
screenX: _window.window.screenX,
|
|
8522
|
+
screenY: _window.window.screenX,
|
|
8523
|
+
group,
|
|
8524
|
+
});
|
|
8525
|
+
}),
|
|
8459
8526
|
/**
|
|
8460
8527
|
* ResizeObserver seems slow here, I do not know why but we don't need it
|
|
8461
8528
|
* since we can reply on the window resize event as we will occupy the full
|
|
8462
8529
|
* window dimensions
|
|
8463
8530
|
*/
|
|
8464
|
-
|
|
8531
|
+
addDisposableListener(_window.window, 'resize', () => {
|
|
8465
8532
|
group.layout(_window.window.innerWidth, _window.window.innerHeight);
|
|
8466
8533
|
}), overlayRenderContainer, exports.DockviewDisposable.from(() => {
|
|
8467
8534
|
if (this.isDisposed) {
|
|
@@ -8675,7 +8742,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8675
8742
|
}
|
|
8676
8743
|
this.updateWatermark();
|
|
8677
8744
|
}
|
|
8678
|
-
orthogonalize(position) {
|
|
8745
|
+
orthogonalize(position, options) {
|
|
8679
8746
|
switch (position) {
|
|
8680
8747
|
case 'top':
|
|
8681
8748
|
case 'bottom':
|
|
@@ -8698,10 +8765,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8698
8765
|
case 'top':
|
|
8699
8766
|
case 'left':
|
|
8700
8767
|
case 'center':
|
|
8701
|
-
return this.createGroupAtLocation([0]); // insert into first position
|
|
8768
|
+
return this.createGroupAtLocation([0], undefined, options); // insert into first position
|
|
8702
8769
|
case 'bottom':
|
|
8703
8770
|
case 'right':
|
|
8704
|
-
return this.createGroupAtLocation([this.gridview.length]); // insert into last position
|
|
8771
|
+
return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position
|
|
8705
8772
|
default:
|
|
8706
8773
|
throw new Error(`unsupported position ${position}`);
|
|
8707
8774
|
}
|
|
@@ -9197,7 +9264,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
9197
9264
|
}
|
|
9198
9265
|
}
|
|
9199
9266
|
else {
|
|
9200
|
-
const group = this.orthogonalize(directionToPosition(options.direction));
|
|
9267
|
+
const group = this.orthogonalize(directionToPosition(options.direction), options);
|
|
9201
9268
|
if (!options.skipSetActive) {
|
|
9202
9269
|
this.doSetGroupAndPanelActive(group);
|
|
9203
9270
|
}
|
|
@@ -9639,8 +9706,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
9639
9706
|
});
|
|
9640
9707
|
return panel;
|
|
9641
9708
|
}
|
|
9642
|
-
createGroupAtLocation(location, size) {
|
|
9643
|
-
const group = this.createGroup();
|
|
9709
|
+
createGroupAtLocation(location, size, options) {
|
|
9710
|
+
const group = this.createGroup(options);
|
|
9644
9711
|
this.doAddGroup(group, location, size);
|
|
9645
9712
|
return group;
|
|
9646
9713
|
}
|
|
@@ -9974,6 +10041,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
9974
10041
|
return this._splitview;
|
|
9975
10042
|
}
|
|
9976
10043
|
set splitview(value) {
|
|
10044
|
+
if (this._splitview) {
|
|
10045
|
+
this._splitview.dispose();
|
|
10046
|
+
}
|
|
9977
10047
|
this._splitview = value;
|
|
9978
10048
|
this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
|
|
9979
10049
|
this._onDidLayoutChange.fire(undefined);
|
|
@@ -10277,9 +10347,23 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
10277
10347
|
}
|
|
10278
10348
|
|
|
10279
10349
|
const nextLayoutId = sequentialNumberGenerator();
|
|
10350
|
+
const HEADER_SIZE = 22;
|
|
10351
|
+
const MINIMUM_BODY_SIZE = 0;
|
|
10352
|
+
const MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;
|
|
10280
10353
|
class PaneFramework extends DraggablePaneviewPanel {
|
|
10281
10354
|
constructor(options) {
|
|
10282
|
-
super(
|
|
10355
|
+
super({
|
|
10356
|
+
accessor: options.accessor,
|
|
10357
|
+
id: options.id,
|
|
10358
|
+
component: options.component,
|
|
10359
|
+
headerComponent: options.headerComponent,
|
|
10360
|
+
orientation: options.orientation,
|
|
10361
|
+
isExpanded: options.isExpanded,
|
|
10362
|
+
disableDnd: options.disableDnd,
|
|
10363
|
+
headerSize: options.headerSize,
|
|
10364
|
+
minimumBodySize: options.minimumBodySize,
|
|
10365
|
+
maximumBodySize: options.maximumBodySize,
|
|
10366
|
+
});
|
|
10283
10367
|
this.options = options;
|
|
10284
10368
|
}
|
|
10285
10369
|
getBodyComponent() {
|
|
@@ -10374,7 +10458,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
10374
10458
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
10375
10459
|
}
|
|
10376
10460
|
addPanel(options) {
|
|
10377
|
-
var _a;
|
|
10461
|
+
var _a, _b;
|
|
10378
10462
|
const body = this.options.createComponent({
|
|
10379
10463
|
id: options.id,
|
|
10380
10464
|
name: options.component,
|
|
@@ -10399,12 +10483,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
10399
10483
|
isExpanded: !!options.isExpanded,
|
|
10400
10484
|
disableDnd: !!this.options.disableDnd,
|
|
10401
10485
|
accessor: this,
|
|
10486
|
+
headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
|
|
10487
|
+
minimumBodySize: MINIMUM_BODY_SIZE,
|
|
10488
|
+
maximumBodySize: MAXIMUM_BODY_SIZE,
|
|
10402
10489
|
});
|
|
10403
10490
|
this.doAddPanel(view);
|
|
10404
10491
|
const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
|
|
10405
10492
|
const index = typeof options.index === 'number' ? options.index : undefined;
|
|
10406
10493
|
view.init({
|
|
10407
|
-
params: (
|
|
10494
|
+
params: (_b = options.params) !== null && _b !== void 0 ? _b : {},
|
|
10408
10495
|
minimumBodySize: options.minimumBodySize,
|
|
10409
10496
|
maximumBodySize: options.maximumBodySize,
|
|
10410
10497
|
isExpanded: options.isExpanded,
|
|
@@ -10449,6 +10536,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
10449
10536
|
data: view.toJSON(),
|
|
10450
10537
|
minimumSize: minimum(view.minimumBodySize),
|
|
10451
10538
|
maximumSize: maximum(view.maximumBodySize),
|
|
10539
|
+
headerSize: view.headerSize,
|
|
10452
10540
|
expanded: view.isExpanded(),
|
|
10453
10541
|
};
|
|
10454
10542
|
});
|
|
@@ -10469,6 +10557,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
10469
10557
|
descriptor: {
|
|
10470
10558
|
size,
|
|
10471
10559
|
views: views.map((view) => {
|
|
10560
|
+
var _a, _b, _c;
|
|
10472
10561
|
const data = view.data;
|
|
10473
10562
|
const body = this.options.createComponent({
|
|
10474
10563
|
id: data.id,
|
|
@@ -10495,6 +10584,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
10495
10584
|
isExpanded: !!view.expanded,
|
|
10496
10585
|
disableDnd: !!this.options.disableDnd,
|
|
10497
10586
|
accessor: this,
|
|
10587
|
+
headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
|
|
10588
|
+
minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,
|
|
10589
|
+
maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,
|
|
10498
10590
|
});
|
|
10499
10591
|
this.doAddPanel(panel);
|
|
10500
10592
|
queue.push(() => {
|