dockview-core 6.2.2 → 6.4.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 -0
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +10 -1
- package/dist/cjs/api/dockviewGroupPanelApi.js +16 -0
- package/dist/cjs/dnd/backend.d.ts +70 -0
- package/dist/cjs/dnd/backend.js +171 -0
- package/dist/cjs/dnd/dropOverlay.d.ts +20 -0
- package/dist/cjs/dnd/dropOverlay.js +197 -0
- package/dist/cjs/dnd/droptarget.d.ts +20 -6
- package/dist/cjs/dnd/droptarget.js +14 -208
- package/dist/cjs/dnd/pointer/index.d.ts +11 -0
- package/dist/cjs/dnd/pointer/index.js +13 -0
- package/dist/cjs/dnd/pointer/longPress.d.ts +32 -0
- package/dist/cjs/dnd/pointer/longPress.js +151 -0
- package/dist/cjs/dnd/pointer/pointerDragController.d.ts +60 -0
- package/dist/cjs/dnd/pointer/pointerDragController.js +241 -0
- package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +61 -0
- package/dist/cjs/dnd/pointer/pointerDragSource.js +195 -0
- package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +39 -0
- package/dist/cjs/dnd/pointer/pointerDropTarget.js +198 -0
- package/dist/cjs/dnd/pointer/pointerGhost.d.ts +30 -0
- package/dist/cjs/dnd/pointer/pointerGhost.js +44 -0
- package/dist/cjs/dnd/pointer/types.d.ts +16 -0
- package/dist/cjs/dnd/pointer/types.js +2 -0
- package/dist/cjs/dockview/components/panel/content.d.ts +3 -1
- package/dist/cjs/dockview/components/panel/content.js +33 -16
- package/dist/cjs/dockview/components/popupService.js +34 -0
- package/dist/cjs/dockview/components/tab/tab.d.ts +11 -3
- package/dist/cjs/dockview/components/tab/tab.js +151 -117
- package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +9 -2
- package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +15 -6
- package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +2 -2
- package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +33 -5
- package/dist/cjs/dockview/components/titlebar/tabGroups.js +231 -40
- package/dist/cjs/dockview/components/titlebar/tabs.d.ts +38 -1
- package/dist/cjs/dockview/components/titlebar/tabs.js +381 -253
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +5 -3
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +6 -2
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +190 -22
- package/dist/cjs/dockview/contextMenu.js +19 -4
- package/dist/cjs/dockview/dndCapabilities.d.ts +19 -0
- package/dist/cjs/dockview/dndCapabilities.js +39 -0
- package/dist/cjs/dockview/dockviewComponent.d.ts +2 -0
- package/dist/cjs/dockview/dockviewComponent.js +241 -158
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -5
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +34 -11
- package/dist/cjs/dockview/dockviewPanel.js +5 -0
- package/dist/cjs/dockview/dockviewPanelModel.d.ts +2 -0
- package/dist/cjs/dockview/dockviewPanelModel.js +8 -0
- package/dist/cjs/dockview/events.d.ts +2 -1
- package/dist/cjs/dockview/events.js +1 -0
- package/dist/cjs/dockview/framework.d.ts +8 -0
- package/dist/cjs/dockview/options.d.ts +31 -5
- package/dist/cjs/dockview/options.js +3 -0
- package/dist/cjs/dom.d.ts +5 -1
- package/dist/cjs/dom.js +21 -5
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/overlay/overlay.d.ts +12 -0
- package/dist/cjs/overlay/overlay.js +84 -16
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js +27 -26
- package/dist/cjs/paneview/options.d.ts +4 -3
- package/dist/cjs/popoutWindow.d.ts +2 -0
- package/dist/cjs/popoutWindow.js +3 -1
- package/dist/dockview-core.js +2431 -937
- 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 +2430 -936
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +10 -1
- package/dist/esm/api/dockviewGroupPanelApi.js +12 -0
- package/dist/esm/dnd/backend.d.ts +70 -0
- package/dist/esm/dnd/backend.js +148 -0
- package/dist/esm/dnd/dropOverlay.d.ts +20 -0
- package/dist/esm/dnd/dropOverlay.js +192 -0
- package/dist/esm/dnd/droptarget.d.ts +20 -6
- package/dist/esm/dnd/droptarget.js +16 -210
- package/dist/esm/dnd/pointer/index.d.ts +11 -0
- package/dist/esm/dnd/pointer/index.js +5 -0
- package/dist/esm/dnd/pointer/longPress.d.ts +32 -0
- package/dist/esm/dnd/pointer/longPress.js +127 -0
- package/dist/esm/dnd/pointer/pointerDragController.d.ts +60 -0
- package/dist/esm/dnd/pointer/pointerDragController.js +191 -0
- package/dist/esm/dnd/pointer/pointerDragSource.d.ts +61 -0
- package/dist/esm/dnd/pointer/pointerDragSource.js +171 -0
- package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +39 -0
- package/dist/esm/dnd/pointer/pointerDropTarget.js +168 -0
- package/dist/esm/dnd/pointer/pointerGhost.d.ts +30 -0
- package/dist/esm/dnd/pointer/pointerGhost.js +39 -0
- package/dist/esm/dnd/pointer/types.d.ts +16 -0
- package/dist/esm/dnd/pointer/types.js +1 -0
- package/dist/esm/dockview/components/panel/content.d.ts +3 -1
- package/dist/esm/dockview/components/panel/content.js +33 -16
- package/dist/esm/dockview/components/popupService.js +34 -0
- package/dist/esm/dockview/components/tab/tab.d.ts +11 -3
- package/dist/esm/dockview/components/tab/tab.js +139 -114
- package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +9 -2
- package/dist/esm/dockview/components/titlebar/tabGroupChip.js +15 -6
- package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +2 -2
- package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +33 -5
- package/dist/esm/dockview/components/titlebar/tabGroups.js +177 -12
- package/dist/esm/dockview/components/titlebar/tabs.d.ts +38 -1
- package/dist/esm/dockview/components/titlebar/tabs.js +360 -229
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +5 -3
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +6 -2
- package/dist/esm/dockview/components/titlebar/voidContainer.js +180 -26
- package/dist/esm/dockview/contextMenu.js +19 -4
- package/dist/esm/dockview/dndCapabilities.d.ts +19 -0
- package/dist/esm/dockview/dndCapabilities.js +36 -0
- package/dist/esm/dockview/dockviewComponent.d.ts +2 -0
- package/dist/esm/dockview/dockviewComponent.js +104 -41
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -5
- package/dist/esm/dockview/dockviewGroupPanelModel.js +33 -11
- package/dist/esm/dockview/dockviewPanel.js +5 -0
- package/dist/esm/dockview/dockviewPanelModel.d.ts +2 -0
- package/dist/esm/dockview/dockviewPanelModel.js +8 -0
- package/dist/esm/dockview/events.d.ts +2 -1
- package/dist/esm/dockview/events.js +1 -0
- package/dist/esm/dockview/framework.d.ts +8 -0
- package/dist/esm/dockview/options.d.ts +31 -5
- package/dist/esm/dockview/options.js +3 -0
- package/dist/esm/dom.d.ts +5 -1
- package/dist/esm/dom.js +20 -5
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/overlay/overlay.d.ts +12 -0
- package/dist/esm/overlay/overlay.js +85 -17
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js +26 -20
- package/dist/esm/paneview/options.d.ts +4 -3
- package/dist/esm/popoutWindow.d.ts +2 -0
- package/dist/esm/popoutWindow.js +3 -1
- package/dist/package/main.cjs.js +2430 -936
- package/dist/package/main.cjs.min.js +2 -2
- package/dist/package/main.esm.min.mjs +2 -2
- package/dist/package/main.esm.mjs +2430 -936
- package/dist/styles/dockview.css +117 -1
- package/package.json +3 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +0 -14
- package/dist/cjs/dnd/abstractDragHandler.js +0 -86
- package/dist/cjs/dnd/groupDragHandler.d.ts +0 -12
- package/dist/cjs/dnd/groupDragHandler.js +0 -82
- package/dist/esm/dnd/abstractDragHandler.d.ts +0 -14
- package/dist/esm/dnd/abstractDragHandler.js +0 -63
- package/dist/esm/dnd/groupDragHandler.d.ts +0 -12
- package/dist/esm/dnd/groupDragHandler.js +0 -59
|
@@ -52,13 +52,17 @@ export interface CreateTabGroupOptions extends TabGroupOptions {
|
|
|
52
52
|
}
|
|
53
53
|
export declare class DockviewDidDropEvent extends DockviewEvent {
|
|
54
54
|
private readonly options;
|
|
55
|
-
|
|
55
|
+
/**
|
|
56
|
+
* `PointerEvent` for touch drags has no `dataTransfer`; use
|
|
57
|
+
* `getData()` for the dockview payload regardless of input method.
|
|
58
|
+
*/
|
|
59
|
+
get nativeEvent(): DragEvent | PointerEvent;
|
|
56
60
|
get position(): Position;
|
|
57
61
|
get panel(): IDockviewPanel | undefined;
|
|
58
62
|
get group(): DockviewGroupPanel | undefined;
|
|
59
63
|
get api(): DockviewApi;
|
|
60
64
|
constructor(options: {
|
|
61
|
-
readonly nativeEvent: DragEvent;
|
|
65
|
+
readonly nativeEvent: DragEvent | PointerEvent;
|
|
62
66
|
readonly position: Position;
|
|
63
67
|
readonly panel?: IDockviewPanel;
|
|
64
68
|
getData(): PanelTransfer | undefined;
|
|
@@ -71,7 +75,7 @@ export declare class DockviewWillDropEvent extends DockviewDidDropEvent {
|
|
|
71
75
|
private readonly _kind;
|
|
72
76
|
get kind(): DockviewGroupDropLocation;
|
|
73
77
|
constructor(options: {
|
|
74
|
-
readonly nativeEvent: DragEvent;
|
|
78
|
+
readonly nativeEvent: DragEvent | PointerEvent;
|
|
75
79
|
readonly position: Position;
|
|
76
80
|
readonly panel?: IDockviewPanel;
|
|
77
81
|
getData(): PanelTransfer | undefined;
|
|
@@ -122,7 +126,7 @@ export interface IDockviewGroupPanelModel extends IPanel {
|
|
|
122
126
|
panel?: IDockviewPanel;
|
|
123
127
|
suppressRoll?: boolean;
|
|
124
128
|
}): void;
|
|
125
|
-
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
129
|
+
canDisplayOverlay(event: DragEvent | PointerEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
126
130
|
}
|
|
127
131
|
export type DockviewGroupLocation = {
|
|
128
132
|
type: 'grid';
|
|
@@ -272,6 +276,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
272
276
|
getTabGroups(): readonly ITabGroup[];
|
|
273
277
|
updateTabGroups(): void;
|
|
274
278
|
refreshTabGroupAccent(): void;
|
|
279
|
+
refreshWatermark(): void;
|
|
275
280
|
getTabGroupForPanel(panelId: string): ITabGroup | undefined;
|
|
276
281
|
private _findTabGroupForPanel;
|
|
277
282
|
private _removeTabGroupInternal;
|
|
@@ -323,7 +328,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
323
328
|
private doSetActivePanel;
|
|
324
329
|
private updateMru;
|
|
325
330
|
private updateContainer;
|
|
326
|
-
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
331
|
+
canDisplayOverlay(event: DragEvent | PointerEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
327
332
|
private handleDropEvent;
|
|
328
333
|
updateDragAndDropState(): void;
|
|
329
334
|
dispose(): void;
|
|
@@ -70,6 +70,10 @@ var DockviewDidDropEvent = /** @class */ (function (_super) {
|
|
|
70
70
|
return _this;
|
|
71
71
|
}
|
|
72
72
|
Object.defineProperty(DockviewDidDropEvent.prototype, "nativeEvent", {
|
|
73
|
+
/**
|
|
74
|
+
* `PointerEvent` for touch drags has no `dataTransfer`; use
|
|
75
|
+
* `getData()` for the dockview payload regardless of input method.
|
|
76
|
+
*/
|
|
73
77
|
get: function () {
|
|
74
78
|
return this.options.nativeEvent;
|
|
75
79
|
},
|
|
@@ -261,6 +265,8 @@ var DockviewGroupPanelModel = /** @class */ (function (_super) {
|
|
|
261
265
|
// noop
|
|
262
266
|
}), _this.contentContainer.dropTarget.onDrop(function (event) {
|
|
263
267
|
_this.handleDropEvent('content', event.nativeEvent, event.position);
|
|
268
|
+
}), _this.contentContainer.pointerDropTarget.onDrop(function (event) {
|
|
269
|
+
_this.handleDropEvent('content', event.nativeEvent, event.position);
|
|
264
270
|
}), _this.tabsContainer.onWillShowOverlay(function (event) {
|
|
265
271
|
_this._onWillShowOverlay.fire(event);
|
|
266
272
|
}), _this.contentContainer.dropTarget.onWillShowOverlay(function (event) {
|
|
@@ -271,6 +277,14 @@ var DockviewGroupPanelModel = /** @class */ (function (_super) {
|
|
|
271
277
|
group: _this.groupPanel,
|
|
272
278
|
getData: dataTransfer_1.getPanelData,
|
|
273
279
|
}));
|
|
280
|
+
}), _this.contentContainer.pointerDropTarget.onWillShowOverlay(function (event) {
|
|
281
|
+
_this._onWillShowOverlay.fire(new events_2.DockviewWillShowOverlayLocationEvent(event, {
|
|
282
|
+
kind: 'content',
|
|
283
|
+
panel: _this.activePanel,
|
|
284
|
+
api: _this._api,
|
|
285
|
+
group: _this.groupPanel,
|
|
286
|
+
getData: dataTransfer_1.getPanelData,
|
|
287
|
+
}));
|
|
274
288
|
}), _this._onMove, _this._onDidChange, _this._onDidDrop, _this._onWillDrop, _this._onDidAddPanel, _this._onDidRemovePanel, _this._onDidActivePanelChange, _this._onUnhandledDragOverEvent, _this._onDidPanelTitleChange, _this._onDidPanelParametersChange, _this._onDidCreateTabGroup, _this._onDidDestroyTabGroup, _this._onDidAddPanelToTabGroup, _this._onDidRemovePanelFromTabGroup, _this._onDidTabGroupChange, _this._onDidTabGroupCollapsedChange, _this._onDidCreateTabGroup.event(function () {
|
|
275
289
|
_this._scheduleTabGroupUpdate();
|
|
276
290
|
}), _this._onDidDestroyTabGroup.event(function () {
|
|
@@ -402,33 +416,33 @@ var DockviewGroupPanelModel = /** @class */ (function (_super) {
|
|
|
402
416
|
return this._location;
|
|
403
417
|
},
|
|
404
418
|
set: function (value) {
|
|
419
|
+
var _this = this;
|
|
405
420
|
this._location = value;
|
|
406
421
|
(0, dom_1.toggleClass)(this.container, 'dv-groupview-floating', false);
|
|
407
422
|
(0, dom_1.toggleClass)(this.container, 'dv-groupview-popout', false);
|
|
408
423
|
(0, dom_1.toggleClass)(this.container, 'dv-groupview-edge', false);
|
|
424
|
+
// Mouse and touch drop targets must agree on accepted zones.
|
|
425
|
+
var applyZones = function (zones) {
|
|
426
|
+
_this.contentContainer.dropTarget.setTargetZones(zones);
|
|
427
|
+
_this.contentContainer.pointerDropTarget.setTargetZones(zones);
|
|
428
|
+
};
|
|
409
429
|
switch (value.type) {
|
|
410
430
|
case 'grid':
|
|
411
|
-
|
|
412
|
-
'top',
|
|
413
|
-
'bottom',
|
|
414
|
-
'left',
|
|
415
|
-
'right',
|
|
416
|
-
'center',
|
|
417
|
-
]);
|
|
431
|
+
applyZones(['top', 'bottom', 'left', 'right', 'center']);
|
|
418
432
|
break;
|
|
419
433
|
case 'floating':
|
|
420
|
-
|
|
421
|
-
|
|
434
|
+
applyZones(['center']);
|
|
435
|
+
applyZones(value
|
|
422
436
|
? ['center']
|
|
423
437
|
: ['top', 'bottom', 'left', 'right', 'center']);
|
|
424
438
|
(0, dom_1.toggleClass)(this.container, 'dv-groupview-floating', true);
|
|
425
439
|
break;
|
|
426
440
|
case 'popout':
|
|
427
|
-
|
|
441
|
+
applyZones(['center']);
|
|
428
442
|
(0, dom_1.toggleClass)(this.container, 'dv-groupview-popout', true);
|
|
429
443
|
break;
|
|
430
444
|
case 'edge':
|
|
431
|
-
|
|
445
|
+
applyZones(['center']);
|
|
432
446
|
(0, dom_1.toggleClass)(this.container, 'dv-groupview-edge', true);
|
|
433
447
|
break;
|
|
434
448
|
}
|
|
@@ -721,6 +735,15 @@ var DockviewGroupPanelModel = /** @class */ (function (_super) {
|
|
|
721
735
|
DockviewGroupPanelModel.prototype.refreshTabGroupAccent = function () {
|
|
722
736
|
this.tabsContainer.refreshTabGroupAccent();
|
|
723
737
|
};
|
|
738
|
+
DockviewGroupPanelModel.prototype.refreshWatermark = function () {
|
|
739
|
+
var _a, _b;
|
|
740
|
+
if (this.watermark) {
|
|
741
|
+
this.watermark.element.remove();
|
|
742
|
+
(_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
743
|
+
this.watermark = undefined;
|
|
744
|
+
}
|
|
745
|
+
this.updateContainer();
|
|
746
|
+
};
|
|
724
747
|
DockviewGroupPanelModel.prototype.getTabGroupForPanel = function (panelId) {
|
|
725
748
|
return this._findTabGroupForPanel(panelId);
|
|
726
749
|
};
|
|
@@ -159,6 +159,11 @@ var DockviewPanel = /** @class */ (function (_super) {
|
|
|
159
159
|
var didTitleChange = title !== this.title;
|
|
160
160
|
if (didTitleChange) {
|
|
161
161
|
this._title = title;
|
|
162
|
+
// keep the view-model's cached init params in sync so that tab
|
|
163
|
+
// renderers constructed lazily (e.g. the header overflow
|
|
164
|
+
// dropdown via createTabRenderer) see the updated title
|
|
165
|
+
// (#914).
|
|
166
|
+
this.view.setTitle(title);
|
|
162
167
|
this.api._onDidTitleChange.fire({ title: title });
|
|
163
168
|
}
|
|
164
169
|
};
|
|
@@ -12,6 +12,7 @@ export interface IDockviewPanelModel extends IDisposable {
|
|
|
12
12
|
layout(width: number, height: number): void;
|
|
13
13
|
init(params: GroupPanelPartInitParameters): void;
|
|
14
14
|
createTabRenderer(tabLocation: TabLocation): ITabRenderer;
|
|
15
|
+
setTitle(title: string): void;
|
|
15
16
|
}
|
|
16
17
|
export declare class DockviewPanelModel implements IDockviewPanelModel {
|
|
17
18
|
private readonly accessor;
|
|
@@ -27,6 +28,7 @@ export declare class DockviewPanelModel implements IDockviewPanelModel {
|
|
|
27
28
|
constructor(accessor: IDockviewComponent, id: string, contentComponent: string, tabComponent?: string | undefined);
|
|
28
29
|
createTabRenderer(tabLocation: TabLocation): ITabRenderer;
|
|
29
30
|
init(params: GroupPanelPartInitParameters): void;
|
|
31
|
+
setTitle(title: string): void;
|
|
30
32
|
layout(width: number, height: number): void;
|
|
31
33
|
update(event: PanelUpdateEvent): void;
|
|
32
34
|
dispose(): void;
|
|
@@ -52,6 +52,14 @@ var DockviewPanelModel = /** @class */ (function () {
|
|
|
52
52
|
this.content.init(params);
|
|
53
53
|
this.tab.init(__assign(__assign({}, params), { tabLocation: 'header' }));
|
|
54
54
|
};
|
|
55
|
+
DockviewPanelModel.prototype.setTitle = function (title) {
|
|
56
|
+
// keep the cached init params in sync so that tab renderers created
|
|
57
|
+
// lazily after the title changes (e.g. for the header overflow
|
|
58
|
+
// dropdown) see the current title rather than the stale original.
|
|
59
|
+
if (this._params) {
|
|
60
|
+
this._params.title = title;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
55
63
|
DockviewPanelModel.prototype.layout = function (width, height) {
|
|
56
64
|
var _a, _b;
|
|
57
65
|
(_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);
|
|
@@ -25,7 +25,8 @@ export declare class DockviewWillShowOverlayLocationEvent implements IDockviewEv
|
|
|
25
25
|
private readonly event;
|
|
26
26
|
readonly options: DockviewWillShowOverlayLocationEventOptions;
|
|
27
27
|
get kind(): DockviewGroupDropLocation;
|
|
28
|
-
|
|
28
|
+
/** Narrow with `instanceof DragEvent` before reading `dataTransfer`. */
|
|
29
|
+
get nativeEvent(): DragEvent | PointerEvent;
|
|
29
30
|
get position(): Position;
|
|
30
31
|
get defaultPrevented(): boolean;
|
|
31
32
|
get panel(): IDockviewPanel | undefined;
|
|
@@ -14,6 +14,7 @@ var DockviewWillShowOverlayLocationEvent = /** @class */ (function () {
|
|
|
14
14
|
configurable: true
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(DockviewWillShowOverlayLocationEvent.prototype, "nativeEvent", {
|
|
17
|
+
/** Narrow with `instanceof DragEvent` before reading `dataTransfer`. */
|
|
17
18
|
get: function () {
|
|
18
19
|
return this.event.nativeEvent;
|
|
19
20
|
},
|
|
@@ -55,3 +55,11 @@ export interface ITabGroupChipRenderer {
|
|
|
55
55
|
}): void;
|
|
56
56
|
dispose(): void;
|
|
57
57
|
}
|
|
58
|
+
export interface IGroupDragGhostRenderer {
|
|
59
|
+
readonly element: HTMLElement;
|
|
60
|
+
init(params: {
|
|
61
|
+
group: IDockviewGroupPanel;
|
|
62
|
+
api: DockviewApi;
|
|
63
|
+
}): void;
|
|
64
|
+
dispose?(): void;
|
|
65
|
+
}
|
|
@@ -11,12 +11,14 @@ import { GroupOptions } from './dockviewGroupPanelModel';
|
|
|
11
11
|
import { DockviewGroupDropLocation } from './events';
|
|
12
12
|
import { IDockviewPanel } from './dockviewPanel';
|
|
13
13
|
import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
|
|
14
|
-
import { IGroupHeaderProps, ITabGroupChipRenderer } from './framework';
|
|
14
|
+
import { IGroupDragGhostRenderer, IGroupHeaderProps, ITabGroupChipRenderer } from './framework';
|
|
15
15
|
import { FloatingGroupOptions } from './dockviewComponent';
|
|
16
16
|
import { Contraints } from '../gridview/gridviewPanel';
|
|
17
17
|
import { AcceptableEvent, IAcceptableEvent } from '../events';
|
|
18
18
|
import { DockviewTheme } from './theme';
|
|
19
19
|
import { ITabGroup } from './tabGroup';
|
|
20
|
+
import { CspNonceProvider } from '../dom';
|
|
21
|
+
export { CspNonceProvider };
|
|
20
22
|
import { DockviewTabGroupColorEntry } from './tabGroupAccent';
|
|
21
23
|
export interface IHeaderActionsRenderer extends IDisposable {
|
|
22
24
|
readonly element: HTMLElement;
|
|
@@ -75,6 +77,7 @@ export interface ViewFactoryData {
|
|
|
75
77
|
}
|
|
76
78
|
export type DockviewHeaderPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
77
79
|
export type DockviewHeaderDirection = 'horizontal' | 'vertical';
|
|
80
|
+
export type DockviewDndStrategy = 'auto' | 'pointer' | 'html5';
|
|
78
81
|
export interface DockviewOptions {
|
|
79
82
|
/**
|
|
80
83
|
* Disable the auto-resizing which is controlled through a `ResizeObserver`.
|
|
@@ -89,6 +92,7 @@ export interface DockviewOptions {
|
|
|
89
92
|
minimumWidthWithinViewport?: number;
|
|
90
93
|
};
|
|
91
94
|
popoutUrl?: string;
|
|
95
|
+
nonce?: CspNonceProvider;
|
|
92
96
|
defaultRenderer?: DockviewPanelRenderer;
|
|
93
97
|
defaultHeaderPosition?: DockviewHeaderPosition;
|
|
94
98
|
debug?: boolean;
|
|
@@ -98,6 +102,19 @@ export interface DockviewOptions {
|
|
|
98
102
|
* */
|
|
99
103
|
rootOverlayModel?: DroptargetOverlayModel;
|
|
100
104
|
disableDnd?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Selects which drag-and-drop implementation is active.
|
|
107
|
+
*
|
|
108
|
+
* - `'auto'` (default): HTML5 drag-and-drop drives mouse drags; pointer
|
|
109
|
+
* events drive touch and pen drags. Matches the historical behaviour.
|
|
110
|
+
* - `'pointer'`: pointer events drive every input type. Useful in
|
|
111
|
+
* environments where HTML5 drag-and-drop is unreliable (some Linux
|
|
112
|
+
* browsers, certain Safari versions, embedded webviews). Cross-window
|
|
113
|
+
* HTML5 drag and the HTML5 native drag image are not available in this
|
|
114
|
+
* mode.
|
|
115
|
+
* - `'html5'`: HTML5 drag-and-drop only — disables touch / pen drag.
|
|
116
|
+
*/
|
|
117
|
+
dndStrategy?: DockviewDndStrategy;
|
|
101
118
|
locked?: boolean;
|
|
102
119
|
className?: string;
|
|
103
120
|
/**
|
|
@@ -140,6 +157,15 @@ export interface DockviewOptions {
|
|
|
140
157
|
* If not provided, the default chip renderer is used.
|
|
141
158
|
*/
|
|
142
159
|
createTabGroupChipComponent?: (tabGroup: ITabGroup) => ITabGroupChipRenderer;
|
|
160
|
+
/**
|
|
161
|
+
* Factory to create the custom ghost element shown while dragging a
|
|
162
|
+
* group of panels (the small floating chip that follows the cursor).
|
|
163
|
+
*
|
|
164
|
+
* If not provided, a default ghost rendering `"Multiple Panels (N)"`
|
|
165
|
+
* is used. Supplying a factory replaces the entire default ghost,
|
|
166
|
+
* enabling i18n / custom visuals.
|
|
167
|
+
*/
|
|
168
|
+
createGroupDragGhostComponent?: (group: DockviewGroupPanel) => IGroupDragGhostRenderer;
|
|
143
169
|
/**
|
|
144
170
|
* Replace the built-in tab group color palette with a user-defined list.
|
|
145
171
|
*
|
|
@@ -165,19 +191,20 @@ export interface DockviewOptions {
|
|
|
165
191
|
}
|
|
166
192
|
export type TabAnimation = 'smooth' | 'default';
|
|
167
193
|
export interface DockviewDndOverlayEvent extends IAcceptableEvent {
|
|
168
|
-
|
|
194
|
+
/** Narrow with `instanceof DragEvent` before reading `dataTransfer`. */
|
|
195
|
+
nativeEvent: DragEvent | PointerEvent;
|
|
169
196
|
target: DockviewGroupDropLocation;
|
|
170
197
|
position: Position;
|
|
171
198
|
group?: DockviewGroupPanel;
|
|
172
199
|
getData: () => PanelTransfer | undefined;
|
|
173
200
|
}
|
|
174
201
|
export declare class DockviewUnhandledDragOverEvent extends AcceptableEvent implements DockviewDndOverlayEvent {
|
|
175
|
-
readonly nativeEvent: DragEvent;
|
|
202
|
+
readonly nativeEvent: DragEvent | PointerEvent;
|
|
176
203
|
readonly target: DockviewGroupDropLocation;
|
|
177
204
|
readonly position: Position;
|
|
178
205
|
readonly getData: () => PanelTransfer | undefined;
|
|
179
206
|
readonly group?: DockviewGroupPanel | undefined;
|
|
180
|
-
constructor(nativeEvent: DragEvent, target: DockviewGroupDropLocation, position: Position, getData: () => PanelTransfer | undefined, group?: DockviewGroupPanel | undefined);
|
|
207
|
+
constructor(nativeEvent: DragEvent | PointerEvent, target: DockviewGroupDropLocation, position: Position, getData: () => PanelTransfer | undefined, group?: DockviewGroupPanel | undefined);
|
|
181
208
|
}
|
|
182
209
|
export declare const PROPERTY_KEYS_DOCKVIEW: (keyof DockviewOptions)[];
|
|
183
210
|
export interface CreateComponentOptions {
|
|
@@ -292,4 +319,3 @@ export interface MovementOptions extends MovementOptions2 {
|
|
|
292
319
|
includePanel?: boolean;
|
|
293
320
|
group?: DockviewGroupPanel;
|
|
294
321
|
}
|
|
295
|
-
export {};
|
|
@@ -47,12 +47,14 @@ exports.PROPERTY_KEYS_DOCKVIEW = (function () {
|
|
|
47
47
|
disableFloatingGroups: undefined,
|
|
48
48
|
floatingGroupBounds: undefined,
|
|
49
49
|
popoutUrl: undefined,
|
|
50
|
+
nonce: undefined,
|
|
50
51
|
defaultRenderer: undefined,
|
|
51
52
|
defaultHeaderPosition: undefined,
|
|
52
53
|
debug: undefined,
|
|
53
54
|
rootOverlayModel: undefined,
|
|
54
55
|
locked: undefined,
|
|
55
56
|
disableDnd: undefined,
|
|
57
|
+
dndStrategy: undefined,
|
|
56
58
|
className: undefined,
|
|
57
59
|
noPanelsOverlay: undefined,
|
|
58
60
|
dndEdges: undefined,
|
|
@@ -62,6 +64,7 @@ exports.PROPERTY_KEYS_DOCKVIEW = (function () {
|
|
|
62
64
|
getTabContextMenuItems: undefined,
|
|
63
65
|
getTabGroupChipContextMenuItems: undefined,
|
|
64
66
|
createTabGroupChipComponent: undefined,
|
|
67
|
+
createGroupDragGhostComponent: undefined,
|
|
65
68
|
tabGroupColors: undefined,
|
|
66
69
|
tabGroupAccent: undefined,
|
|
67
70
|
};
|
package/dist/cjs/dom.d.ts
CHANGED
|
@@ -24,7 +24,11 @@ export interface IFocusTracker extends IDisposable {
|
|
|
24
24
|
export declare function trackFocus(element: HTMLElement): IFocusTracker;
|
|
25
25
|
export declare function quasiPreventDefault(event: Event): void;
|
|
26
26
|
export declare function quasiDefaultPrevented(event: Event): boolean;
|
|
27
|
-
export
|
|
27
|
+
export type CspNonceProvider = string | ((targetDocument: Document) => string | undefined);
|
|
28
|
+
export interface AddStylesOptions {
|
|
29
|
+
nonce?: CspNonceProvider;
|
|
30
|
+
}
|
|
31
|
+
export declare function addStyles(document: Document, styleSheetList: StyleSheetList, options?: AddStylesOptions): void;
|
|
28
32
|
export declare function getDomNodePagePosition(domNode: Element): {
|
|
29
33
|
left: number;
|
|
30
34
|
top: number;
|
package/dist/cjs/dom.js
CHANGED
|
@@ -218,9 +218,12 @@ function quasiPreventDefault(event) {
|
|
|
218
218
|
function quasiDefaultPrevented(event) {
|
|
219
219
|
return event[QUASI_PREVENT_DEFAULT_KEY];
|
|
220
220
|
}
|
|
221
|
-
function addStyles(document, styleSheetList) {
|
|
221
|
+
function addStyles(document, styleSheetList, options) {
|
|
222
222
|
var e_3, _a, e_4, _b;
|
|
223
|
+
if (options === void 0) { options = {}; }
|
|
223
224
|
var styleSheets = Array.from(styleSheetList);
|
|
225
|
+
var nonce = options.nonce;
|
|
226
|
+
var resolvedNonce = typeof nonce === 'function' ? nonce(document) : nonce;
|
|
224
227
|
try {
|
|
225
228
|
for (var styleSheets_1 = __values(styleSheets), styleSheets_1_1 = styleSheets_1.next(); !styleSheets_1_1.done; styleSheets_1_1 = styleSheets_1.next()) {
|
|
226
229
|
var styleSheet = styleSheets_1_1.value;
|
|
@@ -230,6 +233,10 @@ function addStyles(document, styleSheetList) {
|
|
|
230
233
|
link.type = styleSheet.type;
|
|
231
234
|
link.rel = 'stylesheet';
|
|
232
235
|
document.head.appendChild(link);
|
|
236
|
+
// The <link> will load and apply its rules in the target
|
|
237
|
+
// document. Reading cssRules here would duplicate them
|
|
238
|
+
// (and throws for cross-origin sheets).
|
|
239
|
+
continue;
|
|
233
240
|
}
|
|
234
241
|
var cssTexts = [];
|
|
235
242
|
try {
|
|
@@ -240,12 +247,16 @@ function addStyles(document, styleSheetList) {
|
|
|
240
247
|
catch (err) {
|
|
241
248
|
console.warn('dockview: failed to access stylesheet rules due to security restrictions', err);
|
|
242
249
|
}
|
|
250
|
+
var fragment = document.createDocumentFragment();
|
|
243
251
|
try {
|
|
244
252
|
for (var cssTexts_1 = (e_4 = void 0, __values(cssTexts)), cssTexts_1_1 = cssTexts_1.next(); !cssTexts_1_1.done; cssTexts_1_1 = cssTexts_1.next()) {
|
|
245
253
|
var rule = cssTexts_1_1.value;
|
|
246
254
|
var style = document.createElement('style');
|
|
255
|
+
if (resolvedNonce) {
|
|
256
|
+
style.setAttribute('nonce', resolvedNonce);
|
|
257
|
+
}
|
|
247
258
|
style.appendChild(document.createTextNode(rule));
|
|
248
|
-
|
|
259
|
+
fragment.appendChild(style);
|
|
249
260
|
}
|
|
250
261
|
}
|
|
251
262
|
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
@@ -255,6 +266,7 @@ function addStyles(document, styleSheetList) {
|
|
|
255
266
|
}
|
|
256
267
|
finally { if (e_4) throw e_4.error; }
|
|
257
268
|
}
|
|
269
|
+
document.head.appendChild(fragment);
|
|
258
270
|
}
|
|
259
271
|
}
|
|
260
272
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
@@ -301,7 +313,7 @@ function addTestId(element, id) {
|
|
|
301
313
|
* Should be more efficient than element.querySelectorAll("*") since there
|
|
302
314
|
* is no need to store every element in-memory using this approach
|
|
303
315
|
*/
|
|
304
|
-
function allTagsNamesInclusiveOfShadowDoms(tagNames) {
|
|
316
|
+
function allTagsNamesInclusiveOfShadowDoms(tagNames, rootNode) {
|
|
305
317
|
var iframes = [];
|
|
306
318
|
function findIframesInNode(node) {
|
|
307
319
|
var e_5, _a;
|
|
@@ -327,13 +339,17 @@ function allTagsNamesInclusiveOfShadowDoms(tagNames) {
|
|
|
327
339
|
}
|
|
328
340
|
}
|
|
329
341
|
}
|
|
330
|
-
|
|
342
|
+
// Document → walk from its root element. Element → walk from itself.
|
|
343
|
+
var startEl = rootNode instanceof Document
|
|
344
|
+
? rootNode.documentElement
|
|
345
|
+
: rootNode;
|
|
346
|
+
findIframesInNode(startEl);
|
|
331
347
|
return iframes;
|
|
332
348
|
}
|
|
333
349
|
function disableIframePointEvents(rootNode) {
|
|
334
350
|
var e_6, _a;
|
|
335
351
|
if (rootNode === void 0) { rootNode = document; }
|
|
336
|
-
var iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);
|
|
352
|
+
var iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW'], rootNode);
|
|
337
353
|
var original = new WeakMap(); // don't hold onto HTMLElement references longer than required
|
|
338
354
|
try {
|
|
339
355
|
for (var iframes_1 = __values(iframes), iframes_1_1 = iframes_1.next(); !iframes_1_1.done; iframes_1_1 = iframes_1.next()) {
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export { DockviewWillShowOverlayLocationEvent, DockviewTabGroupChangeEvent, Dock
|
|
|
21
21
|
export { TabDragEvent, GroupDragEvent, } from './dockview/components/titlebar/tabsContainer';
|
|
22
22
|
export * from './dockview/types';
|
|
23
23
|
export * from './dockview/dockviewGroupPanel';
|
|
24
|
-
export { IGroupPanelBaseProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IDockviewHeaderActionsProps, IGroupHeaderProps, IWatermarkPanelProps, DockviewReadyEvent, ITabGroupChipRenderer, } from './dockview/framework';
|
|
24
|
+
export { IGroupPanelBaseProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IDockviewHeaderActionsProps, IGroupHeaderProps, IWatermarkPanelProps, DockviewReadyEvent, ITabGroupChipRenderer, IGroupDragGhostRenderer, } from './dockview/framework';
|
|
25
25
|
export * from './dockview/options';
|
|
26
26
|
export * from './dockview/theme';
|
|
27
27
|
export * from './dockview/dockviewPanel';
|
|
@@ -8,6 +8,11 @@ export declare class Overlay extends CompositeDisposable {
|
|
|
8
8
|
readonly onDidChange: Event<void>;
|
|
9
9
|
private readonly _onDidChangeEnd;
|
|
10
10
|
readonly onDidChangeEnd: Event<void>;
|
|
11
|
+
private readonly _onDidStartMoving;
|
|
12
|
+
/** Fires once per drag, the first time the float actually moves. */
|
|
13
|
+
readonly onDidStartMoving: Event<void>;
|
|
14
|
+
private readonly _dragMove;
|
|
15
|
+
private _dragCancelled;
|
|
11
16
|
private static readonly MINIMUM_HEIGHT;
|
|
12
17
|
private static readonly MINIMUM_WIDTH;
|
|
13
18
|
private verticalAlignment;
|
|
@@ -27,6 +32,13 @@ export declare class Overlay extends CompositeDisposable {
|
|
|
27
32
|
bringToFront(): void;
|
|
28
33
|
setBounds(bounds?: Partial<AnchoredBox>): void;
|
|
29
34
|
toJSON(): AnchoredBox;
|
|
35
|
+
/**
|
|
36
|
+
* Abort an in-flight move-the-float drag. Used by the void container
|
|
37
|
+
* when a redock long-press fires after the move started, so the ghost
|
|
38
|
+
* gesture wins without the float continuing to follow the finger.
|
|
39
|
+
* Does not emit `onDidChangeEnd` because no change is being committed.
|
|
40
|
+
*/
|
|
41
|
+
cancelPendingDrag(): void;
|
|
30
42
|
setupDrag(dragTarget: HTMLElement, options?: {
|
|
31
43
|
inDragMode: boolean;
|
|
32
44
|
}): void;
|
|
@@ -90,7 +90,12 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
90
90
|
_this.onDidChange = _this._onDidChange.event;
|
|
91
91
|
_this._onDidChangeEnd = new events_1.Emitter();
|
|
92
92
|
_this.onDidChangeEnd = _this._onDidChangeEnd.event;
|
|
93
|
-
_this.
|
|
93
|
+
_this._onDidStartMoving = new events_1.Emitter();
|
|
94
|
+
/** Fires once per drag, the first time the float actually moves. */
|
|
95
|
+
_this.onDidStartMoving = _this._onDidStartMoving.event;
|
|
96
|
+
_this._dragMove = new lifecycle_1.MutableDisposable();
|
|
97
|
+
_this._dragCancelled = false;
|
|
98
|
+
_this.addDisposables(_this._onDidChange, _this._onDidChangeEnd, _this._onDidStartMoving, _this._dragMove);
|
|
94
99
|
_this._element.className = 'dv-resize-container';
|
|
95
100
|
_this._isVisible = true;
|
|
96
101
|
_this.setupResize('top');
|
|
@@ -229,18 +234,62 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
229
234
|
result.height = element.height;
|
|
230
235
|
return result;
|
|
231
236
|
};
|
|
237
|
+
/**
|
|
238
|
+
* Abort an in-flight move-the-float drag. Used by the void container
|
|
239
|
+
* when a redock long-press fires after the move started, so the ghost
|
|
240
|
+
* gesture wins without the float continuing to follow the finger.
|
|
241
|
+
* Does not emit `onDidChangeEnd` because no change is being committed.
|
|
242
|
+
*/
|
|
243
|
+
Overlay.prototype.cancelPendingDrag = function () {
|
|
244
|
+
if (!this._dragMove.value) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this._dragCancelled = true;
|
|
248
|
+
(0, dom_1.toggleClass)(this._element, 'dv-resize-container-dragging', false);
|
|
249
|
+
this._dragMove.value = lifecycle_1.Disposable.NONE;
|
|
250
|
+
};
|
|
232
251
|
Overlay.prototype.setupDrag = function (dragTarget, options) {
|
|
233
252
|
var _this = this;
|
|
234
253
|
if (options === void 0) { options = { inDragMode: false }; }
|
|
235
|
-
var
|
|
236
|
-
var track = function () {
|
|
254
|
+
var track = function (captureTarget, pointerId) {
|
|
237
255
|
var offset = null;
|
|
256
|
+
var hasMoved = false;
|
|
257
|
+
_this._dragCancelled = false;
|
|
238
258
|
var iframes = (0, dom_1.disableIframePointEvents)();
|
|
239
|
-
|
|
259
|
+
if (captureTarget &&
|
|
260
|
+
typeof pointerId === 'number' &&
|
|
261
|
+
typeof captureTarget.setPointerCapture === 'function') {
|
|
262
|
+
try {
|
|
263
|
+
captureTarget.setPointerCapture(pointerId);
|
|
264
|
+
}
|
|
265
|
+
catch (_a) {
|
|
266
|
+
// ignore – non-fatal if the browser refuses capture
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
var end = function () {
|
|
270
|
+
(0, dom_1.toggleClass)(_this._element, 'dv-resize-container-dragging', false);
|
|
271
|
+
_this._dragMove.value = lifecycle_1.Disposable.NONE;
|
|
272
|
+
_this._onDidChangeEnd.fire();
|
|
273
|
+
};
|
|
274
|
+
_this._dragMove.value = new lifecycle_1.CompositeDisposable({
|
|
240
275
|
dispose: function () {
|
|
241
276
|
iframes.release();
|
|
277
|
+
if (captureTarget &&
|
|
278
|
+
typeof pointerId === 'number' &&
|
|
279
|
+
typeof captureTarget.releasePointerCapture ===
|
|
280
|
+
'function') {
|
|
281
|
+
try {
|
|
282
|
+
captureTarget.releasePointerCapture(pointerId);
|
|
283
|
+
}
|
|
284
|
+
catch (_a) {
|
|
285
|
+
// ignore – pointer may already be released
|
|
286
|
+
}
|
|
287
|
+
}
|
|
242
288
|
},
|
|
243
289
|
}, (0, events_1.addDisposableListener)(window, 'pointermove', function (e) {
|
|
290
|
+
if (_this._dragCancelled) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
244
293
|
var containerRect = _this.options.container.getBoundingClientRect();
|
|
245
294
|
var x = e.clientX - containerRect.left;
|
|
246
295
|
var y = e.clientY - containerRect.top;
|
|
@@ -277,13 +326,13 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
277
326
|
bounds.right = right;
|
|
278
327
|
}
|
|
279
328
|
_this.setBounds(bounds);
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}));
|
|
329
|
+
if (!hasMoved) {
|
|
330
|
+
hasMoved = true;
|
|
331
|
+
_this._onDidStartMoving.fire();
|
|
332
|
+
}
|
|
333
|
+
}), (0, events_1.addDisposableListener)(window, 'pointerup', end), (0, events_1.addDisposableListener)(window, 'pointercancel', end));
|
|
285
334
|
};
|
|
286
|
-
this.addDisposables(
|
|
335
|
+
this.addDisposables((0, events_1.addDisposableListener)(dragTarget, 'pointerdown', function (event) {
|
|
287
336
|
if (event.defaultPrevented) {
|
|
288
337
|
event.preventDefault();
|
|
289
338
|
return;
|
|
@@ -293,7 +342,7 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
293
342
|
if ((0, dom_1.quasiDefaultPrevented)(event)) {
|
|
294
343
|
return;
|
|
295
344
|
}
|
|
296
|
-
track();
|
|
345
|
+
track(dragTarget, event.pointerId);
|
|
297
346
|
}), (0, events_1.addDisposableListener)(this.options.content, 'pointerdown', function (event) {
|
|
298
347
|
if (event.defaultPrevented) {
|
|
299
348
|
return;
|
|
@@ -304,7 +353,7 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
304
353
|
return;
|
|
305
354
|
}
|
|
306
355
|
if (event.shiftKey) {
|
|
307
|
-
track();
|
|
356
|
+
track(_this.options.content, event.pointerId);
|
|
308
357
|
}
|
|
309
358
|
}), (0, events_1.addDisposableListener)(this.options.content, 'pointerdown', function () {
|
|
310
359
|
arialLevelTracker.push(_this._element);
|
|
@@ -323,6 +372,19 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
323
372
|
e.preventDefault();
|
|
324
373
|
var startPosition = null;
|
|
325
374
|
var iframes = (0, dom_1.disableIframePointEvents)();
|
|
375
|
+
var pointerId = e.pointerId;
|
|
376
|
+
if (typeof resizeHandleElement.setPointerCapture === 'function') {
|
|
377
|
+
try {
|
|
378
|
+
resizeHandleElement.setPointerCapture(pointerId);
|
|
379
|
+
}
|
|
380
|
+
catch (_a) {
|
|
381
|
+
// ignore – non-fatal if the browser refuses capture
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
var end = function () {
|
|
385
|
+
move.dispose();
|
|
386
|
+
_this._onDidChangeEnd.fire();
|
|
387
|
+
};
|
|
326
388
|
move.value = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableListener)(window, 'pointermove', function (e) {
|
|
327
389
|
var containerRect = _this.options.container.getBoundingClientRect();
|
|
328
390
|
var overlayRect = _this._element.getBoundingClientRect();
|
|
@@ -457,11 +519,17 @@ var Overlay = /** @class */ (function (_super) {
|
|
|
457
519
|
}), {
|
|
458
520
|
dispose: function () {
|
|
459
521
|
iframes.release();
|
|
522
|
+
if (typeof resizeHandleElement.releasePointerCapture ===
|
|
523
|
+
'function') {
|
|
524
|
+
try {
|
|
525
|
+
resizeHandleElement.releasePointerCapture(pointerId);
|
|
526
|
+
}
|
|
527
|
+
catch (_a) {
|
|
528
|
+
// ignore – pointer may already be released
|
|
529
|
+
}
|
|
530
|
+
}
|
|
460
531
|
},
|
|
461
|
-
}, (0, events_1.addDisposableListener)(window, 'pointerup',
|
|
462
|
-
move.dispose();
|
|
463
|
-
_this._onDidChangeEnd.fire();
|
|
464
|
-
}));
|
|
532
|
+
}, (0, events_1.addDisposableListener)(window, 'pointerup', end), (0, events_1.addDisposableListener)(window, 'pointercancel', end));
|
|
465
533
|
}));
|
|
466
534
|
};
|
|
467
535
|
Overlay.prototype.getMinimumWidth = function (width) {
|
|
@@ -12,8 +12,10 @@ export interface PaneviewDidDropEvent extends DroptargetEvent {
|
|
|
12
12
|
api: PaneviewApi;
|
|
13
13
|
}
|
|
14
14
|
export declare abstract class DraggablePaneviewPanel extends PaneviewPanel {
|
|
15
|
-
private
|
|
15
|
+
private html5DragSource;
|
|
16
|
+
private pointerDragSource;
|
|
16
17
|
private target;
|
|
18
|
+
private pointerTarget;
|
|
17
19
|
private readonly _onDidDrop;
|
|
18
20
|
readonly onDidDrop: Event<PaneviewDidDropEvent>;
|
|
19
21
|
private readonly _onUnhandledDragOverEvent;
|