dockview-core 4.12.0 → 4.13.1
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 +2 -2
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +3 -1
- package/dist/cjs/api/dockviewGroupPanelApi.js +24 -1
- package/dist/cjs/dockview/components/titlebar/tabs.d.ts +2 -2
- package/dist/cjs/dockview/components/titlebar/tabs.js +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +3 -3
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +5 -3
- package/dist/cjs/dockview/dockviewComponent.js +21 -5
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +2 -2
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +1 -1
- package/dist/cjs/dockview/events.d.ts +4 -4
- package/dist/cjs/dockview/events.js +14 -14
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +7 -2
- package/dist/cjs/overlay/overlay.js +25 -14
- package/dist/cjs/splitview/splitview.js +2 -0
- package/dist/dockview-core.amd.js +66 -25
- 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 +66 -25
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +66 -25
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +66 -26
- 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 +66 -25
- 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 +66 -25
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +2 -2
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +3 -1
- package/dist/esm/api/dockviewGroupPanelApi.js +13 -1
- package/dist/esm/dockview/components/titlebar/tabs.d.ts +2 -2
- package/dist/esm/dockview/components/titlebar/tabs.js +2 -2
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +3 -3
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +2 -2
- package/dist/esm/dockview/dockviewComponent.d.ts +5 -3
- package/dist/esm/dockview/dockviewComponent.js +21 -6
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +2 -2
- package/dist/esm/dockview/dockviewGroupPanelModel.js +2 -2
- package/dist/esm/dockview/events.d.ts +4 -4
- package/dist/esm/dockview/events.js +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/overlay/overlay.js +26 -15
- package/dist/esm/splitview/splitview.js +2 -0
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ import { PaneviewDidDropEvent } from '../paneview/draggablePaneviewPanel';
|
|
|
16
16
|
import { GroupDragEvent, TabDragEvent } from '../dockview/components/titlebar/tabsContainer';
|
|
17
17
|
import { Box } from '../types';
|
|
18
18
|
import { DockviewDidDropEvent, DockviewWillDropEvent } from '../dockview/dockviewGroupPanelModel';
|
|
19
|
-
import {
|
|
19
|
+
import { DockviewWillShowOverlayLocationEvent } from '../dockview/events';
|
|
20
20
|
import { PaneviewComponentOptions, PaneviewDndOverlayEvent } from '../paneview/options';
|
|
21
21
|
import { SplitviewComponentOptions } from '../splitview/options';
|
|
22
22
|
import { GridviewComponentOptions } from '../gridview/options';
|
|
@@ -403,7 +403,7 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
|
|
|
403
403
|
* Calling `event.preventDefault()` will prevent the overlay being shown and prevent
|
|
404
404
|
* the any subsequent drop event.
|
|
405
405
|
*/
|
|
406
|
-
get onWillShowOverlay(): Event<
|
|
406
|
+
get onWillShowOverlay(): Event<DockviewWillShowOverlayLocationEvent>;
|
|
407
407
|
/**
|
|
408
408
|
* Invoked before a group is dragged.
|
|
409
409
|
*
|
|
@@ -3,7 +3,7 @@ import { DockviewComponent } from '../dockview/dockviewComponent';
|
|
|
3
3
|
import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
|
|
4
4
|
import { DockviewGroupChangeEvent, DockviewGroupLocation } from '../dockview/dockviewGroupPanelModel';
|
|
5
5
|
import { Emitter, Event } from '../events';
|
|
6
|
-
import { GridviewPanelApi, GridviewPanelApiImpl } from './gridviewPanelApi';
|
|
6
|
+
import { GridviewPanelApi, GridviewPanelApiImpl, SizeEvent } from './gridviewPanelApi';
|
|
7
7
|
export interface DockviewGroupMoveParams {
|
|
8
8
|
group?: DockviewGroupPanel;
|
|
9
9
|
position?: Position;
|
|
@@ -36,12 +36,14 @@ export interface DockviewGroupPanelFloatingChangeEvent {
|
|
|
36
36
|
export declare class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
37
37
|
private readonly accessor;
|
|
38
38
|
private _group;
|
|
39
|
+
private _pendingSize;
|
|
39
40
|
readonly _onDidLocationChange: Emitter<DockviewGroupPanelFloatingChangeEvent>;
|
|
40
41
|
readonly onDidLocationChange: Event<DockviewGroupPanelFloatingChangeEvent>;
|
|
41
42
|
readonly _onDidActivePanelChange: Emitter<DockviewGroupChangeEvent>;
|
|
42
43
|
readonly onDidActivePanelChange: Event<DockviewGroupChangeEvent>;
|
|
43
44
|
get location(): DockviewGroupLocation;
|
|
44
45
|
constructor(id: string, accessor: DockviewComponent);
|
|
46
|
+
setSize(event: SizeEvent): void;
|
|
45
47
|
close(): void;
|
|
46
48
|
getWindow(): Window;
|
|
47
49
|
moveTo(options: DockviewGroupMoveParams): void;
|
|
@@ -16,7 +16,19 @@ export class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
16
16
|
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
17
17
|
this._onDidActivePanelChange = new Emitter();
|
|
18
18
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
19
|
-
this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange)
|
|
19
|
+
this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange, this._onDidVisibilityChange.event((event) => {
|
|
20
|
+
// When becoming visible, apply any pending size change
|
|
21
|
+
if (event.isVisible && this._pendingSize) {
|
|
22
|
+
super.setSize(this._pendingSize);
|
|
23
|
+
this._pendingSize = undefined;
|
|
24
|
+
}
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
setSize(event) {
|
|
28
|
+
// Always store the requested size
|
|
29
|
+
this._pendingSize = Object.assign({}, event);
|
|
30
|
+
// Apply the size change immediately
|
|
31
|
+
super.setSize(event);
|
|
20
32
|
}
|
|
21
33
|
close() {
|
|
22
34
|
if (!this._group) {
|
|
@@ -2,7 +2,7 @@ import { Event } from '../../../events';
|
|
|
2
2
|
import { CompositeDisposable } from '../../../lifecycle';
|
|
3
3
|
import { DockviewComponent } from '../../dockviewComponent';
|
|
4
4
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
|
5
|
-
import {
|
|
5
|
+
import { DockviewWillShowOverlayLocationEvent } from '../../events';
|
|
6
6
|
import { IDockviewPanel } from '../../dockviewPanel';
|
|
7
7
|
import { Tab } from '../tab/tab';
|
|
8
8
|
import { TabDragEvent, TabDropIndexEvent } from './tabsContainer';
|
|
@@ -20,7 +20,7 @@ export declare class Tabs extends CompositeDisposable {
|
|
|
20
20
|
private readonly _onDrop;
|
|
21
21
|
readonly onDrop: Event<TabDropIndexEvent>;
|
|
22
22
|
private readonly _onWillShowOverlay;
|
|
23
|
-
readonly onWillShowOverlay: Event<
|
|
23
|
+
readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
|
|
24
24
|
private readonly _onOverflowTabsChange;
|
|
25
25
|
readonly onOverflowTabsChange: Event<{
|
|
26
26
|
tabs: string[];
|
|
@@ -3,7 +3,7 @@ import { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../
|
|
|
3
3
|
import { addDisposableListener, Emitter } from '../../../events';
|
|
4
4
|
import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';
|
|
5
5
|
import { Scrollbar } from '../../../scrollbar';
|
|
6
|
-
import {
|
|
6
|
+
import { DockviewWillShowOverlayLocationEvent } from '../../events';
|
|
7
7
|
import { Tab } from '../tab/tab';
|
|
8
8
|
export class Tabs extends CompositeDisposable {
|
|
9
9
|
get showTabsOverflowControl() {
|
|
@@ -145,7 +145,7 @@ export class Tabs extends CompositeDisposable {
|
|
|
145
145
|
index: this._tabs.findIndex((x) => x.value === tab),
|
|
146
146
|
});
|
|
147
147
|
}), tab.onWillShowOverlay((event) => {
|
|
148
|
-
this._onWillShowOverlay.fire(new
|
|
148
|
+
this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
|
|
149
149
|
kind: 'tab',
|
|
150
150
|
panel: this.group.activePanel,
|
|
151
151
|
api: this.accessor.api,
|
|
@@ -4,7 +4,7 @@ import { Tab } from '../tab/tab';
|
|
|
4
4
|
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
|
|
5
5
|
import { IDockviewPanel } from '../../dockviewPanel';
|
|
6
6
|
import { DockviewComponent } from '../../dockviewComponent';
|
|
7
|
-
import {
|
|
7
|
+
import { DockviewWillShowOverlayLocationEvent } from '../../events';
|
|
8
8
|
export interface TabDropIndexEvent {
|
|
9
9
|
readonly event: DragEvent;
|
|
10
10
|
readonly index: number;
|
|
@@ -24,7 +24,7 @@ export interface ITabsContainer extends IDisposable {
|
|
|
24
24
|
readonly onDrop: Event<TabDropIndexEvent>;
|
|
25
25
|
readonly onTabDragStart: Event<TabDragEvent>;
|
|
26
26
|
readonly onGroupDragStart: Event<GroupDragEvent>;
|
|
27
|
-
readonly onWillShowOverlay: Event<
|
|
27
|
+
readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
|
|
28
28
|
hidden: boolean;
|
|
29
29
|
delete(id: string): void;
|
|
30
30
|
indexOf(id: string): number;
|
|
@@ -62,7 +62,7 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
|
|
|
62
62
|
private readonly _onGroupDragStart;
|
|
63
63
|
readonly onGroupDragStart: Event<GroupDragEvent>;
|
|
64
64
|
private readonly _onWillShowOverlay;
|
|
65
|
-
readonly onWillShowOverlay: Event<
|
|
65
|
+
readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
|
|
66
66
|
get panels(): string[];
|
|
67
67
|
get size(): number;
|
|
68
68
|
get hidden(): boolean;
|
|
@@ -2,7 +2,7 @@ import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../li
|
|
|
2
2
|
import { addDisposableListener, Emitter } from '../../../events';
|
|
3
3
|
import { VoidContainer } from './voidContainer';
|
|
4
4
|
import { findRelativeZIndexParent, toggleClass } from '../../../dom';
|
|
5
|
-
import {
|
|
5
|
+
import { DockviewWillShowOverlayLocationEvent } from '../../events';
|
|
6
6
|
import { getPanelData } from '../../../dnd/dataTransfer';
|
|
7
7
|
import { Tabs } from './tabs';
|
|
8
8
|
import { createDropdownElementHandle, } from './tabOverflowControl';
|
|
@@ -74,7 +74,7 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
74
74
|
index: this.tabs.size,
|
|
75
75
|
});
|
|
76
76
|
}), this.voidContainer.onWillShowOverlay((event) => {
|
|
77
|
-
this._onWillShowOverlay.fire(new
|
|
77
|
+
this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
|
|
78
78
|
kind: 'header_space',
|
|
79
79
|
panel: this.group.activePanel,
|
|
80
80
|
api: this.accessor.api,
|
|
@@ -8,7 +8,7 @@ import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
|
|
|
8
8
|
import { DockviewApi } from '../api/component.api';
|
|
9
9
|
import { Orientation } from '../splitview/splitview';
|
|
10
10
|
import { GroupOptions, GroupPanelViewState, DockviewDidDropEvent, DockviewWillDropEvent } from './dockviewGroupPanelModel';
|
|
11
|
-
import {
|
|
11
|
+
import { DockviewWillShowOverlayLocationEvent } from './events';
|
|
12
12
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
13
13
|
import { Parameters } from '../panel/types';
|
|
14
14
|
import { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';
|
|
@@ -129,7 +129,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
|
|
|
129
129
|
readonly orientation: Orientation;
|
|
130
130
|
readonly onDidDrop: Event<DockviewDidDropEvent>;
|
|
131
131
|
readonly onWillDrop: Event<DockviewWillDropEvent>;
|
|
132
|
-
readonly onWillShowOverlay: Event<
|
|
132
|
+
readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
|
|
133
133
|
readonly onDidRemovePanel: Event<IDockviewPanel>;
|
|
134
134
|
readonly onDidAddPanel: Event<IDockviewPanel>;
|
|
135
135
|
readonly onDidLayoutFromJSON: Event<void>;
|
|
@@ -199,7 +199,7 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
199
199
|
private readonly _onWillDrop;
|
|
200
200
|
readonly onWillDrop: Event<DockviewWillDropEvent>;
|
|
201
201
|
private readonly _onWillShowOverlay;
|
|
202
|
-
readonly onWillShowOverlay: Event<
|
|
202
|
+
readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
|
|
203
203
|
private readonly _onUnhandledDragOverEvent;
|
|
204
204
|
readonly onUnhandledDragOverEvent: Event<DockviewDndOverlayEvent>;
|
|
205
205
|
private readonly _onDidRemovePanel;
|
|
@@ -292,6 +292,8 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
292
292
|
skipPopoutReturn?: boolean;
|
|
293
293
|
} | undefined): DockviewGroupPanel;
|
|
294
294
|
private _moving;
|
|
295
|
+
private _updatePositionsFrameId;
|
|
296
|
+
private debouncedUpdateAllPositions;
|
|
295
297
|
movingLock<T>(func: () => T): T;
|
|
296
298
|
moveGroupOrPanel(options: MoveGroupOrPanelOptions): void;
|
|
297
299
|
moveGroup(options: MoveGroupOptions): void;
|
|
@@ -12,7 +12,7 @@ import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
|
|
|
12
12
|
import { DockviewApi } from '../api/component.api';
|
|
13
13
|
import { Orientation } from '../splitview/splitview';
|
|
14
14
|
import { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';
|
|
15
|
-
import {
|
|
15
|
+
import { DockviewWillShowOverlayLocationEvent } from './events';
|
|
16
16
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
17
17
|
import { DockviewPanelModel } from './dockviewPanelModel';
|
|
18
18
|
import { getPanelData } from '../dnd/dataTransfer';
|
|
@@ -184,7 +184,14 @@ export class DockviewComponent extends BaseGrid {
|
|
|
184
184
|
if (options.debug) {
|
|
185
185
|
this.addDisposables(new StrictEventsSequencing(this));
|
|
186
186
|
}
|
|
187
|
-
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.
|
|
187
|
+
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._onDidMovePanel.event(() => {
|
|
188
|
+
/**
|
|
189
|
+
* Update overlay positions after DOM layout completes to prevent 0×0 dimensions.
|
|
190
|
+
* With defaultRenderer="always" this results in panel content not showing after move operations.
|
|
191
|
+
* Debounced to avoid multiple calls when moving groups with multiple panels.
|
|
192
|
+
*/
|
|
193
|
+
this.debouncedUpdateAllPositions();
|
|
194
|
+
}), this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
188
195
|
this.updateWatermark();
|
|
189
196
|
}), this.onDidAdd((event) => {
|
|
190
197
|
if (!this._moving) {
|
|
@@ -221,7 +228,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
221
228
|
// option only available when no panels in primary grid
|
|
222
229
|
return;
|
|
223
230
|
}
|
|
224
|
-
this._onWillShowOverlay.fire(new
|
|
231
|
+
this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
|
|
225
232
|
kind: 'edge',
|
|
226
233
|
panel: undefined,
|
|
227
234
|
api: this._api,
|
|
@@ -1052,9 +1059,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1052
1059
|
}
|
|
1053
1060
|
this.updateWatermark();
|
|
1054
1061
|
// Force position updates for always visible panels after DOM layout is complete
|
|
1055
|
-
|
|
1056
|
-
this.overlayRenderContainer.updateAllPositions();
|
|
1057
|
-
});
|
|
1062
|
+
this.debouncedUpdateAllPositions();
|
|
1058
1063
|
this._onDidLayoutFromJSON.fire();
|
|
1059
1064
|
}
|
|
1060
1065
|
clear() {
|
|
@@ -1390,6 +1395,15 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1390
1395
|
}
|
|
1391
1396
|
return re;
|
|
1392
1397
|
}
|
|
1398
|
+
debouncedUpdateAllPositions() {
|
|
1399
|
+
if (this._updatePositionsFrameId !== undefined) {
|
|
1400
|
+
cancelAnimationFrame(this._updatePositionsFrameId);
|
|
1401
|
+
}
|
|
1402
|
+
this._updatePositionsFrameId = requestAnimationFrame(() => {
|
|
1403
|
+
this._updatePositionsFrameId = undefined;
|
|
1404
|
+
this.overlayRenderContainer.updateAllPositions();
|
|
1405
|
+
});
|
|
1406
|
+
}
|
|
1393
1407
|
movingLock(func) {
|
|
1394
1408
|
const isMoving = this._moving;
|
|
1395
1409
|
try {
|
|
@@ -1700,6 +1714,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1700
1714
|
from.panels.forEach((panel) => {
|
|
1701
1715
|
this._onDidMovePanel.fire({ panel, from });
|
|
1702
1716
|
});
|
|
1717
|
+
this.debouncedUpdateAllPositions();
|
|
1703
1718
|
// Ensure group becomes active after move
|
|
1704
1719
|
if (options.skipSetActive === false) {
|
|
1705
1720
|
// Only activate when explicitly requested (skipSetActive: false)
|
|
@@ -3,7 +3,7 @@ import { PanelTransfer } from '../dnd/dataTransfer';
|
|
|
3
3
|
import { Position } from '../dnd/droptarget';
|
|
4
4
|
import { DockviewComponent } from './dockviewComponent';
|
|
5
5
|
import { DockviewEvent, Event } from '../events';
|
|
6
|
-
import { DockviewGroupDropLocation,
|
|
6
|
+
import { DockviewGroupDropLocation, DockviewWillShowOverlayLocationEvent } from './events';
|
|
7
7
|
import { IViewSize } from '../gridview/gridview';
|
|
8
8
|
import { CompositeDisposable } from '../lifecycle';
|
|
9
9
|
import { IPanel, PanelInitParameters, PanelUpdateEvent, Parameters } from '../panel/types';
|
|
@@ -155,7 +155,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
155
155
|
private readonly _onWillDrop;
|
|
156
156
|
readonly onWillDrop: Event<DockviewWillDropEvent>;
|
|
157
157
|
private readonly _onWillShowOverlay;
|
|
158
|
-
readonly onWillShowOverlay: Event<
|
|
158
|
+
readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
|
|
159
159
|
private readonly _onTabDragStart;
|
|
160
160
|
readonly onTabDragStart: Event<TabDragEvent>;
|
|
161
161
|
private readonly _onGroupDragStart;
|
|
@@ -2,7 +2,7 @@ import { DockviewApi } from '../api/component.api';
|
|
|
2
2
|
import { getPanelData } from '../dnd/dataTransfer';
|
|
3
3
|
import { isAncestor, toggleClass } from '../dom';
|
|
4
4
|
import { addDisposableListener, DockviewEvent, Emitter, } from '../events';
|
|
5
|
-
import {
|
|
5
|
+
import { DockviewWillShowOverlayLocationEvent } from './events';
|
|
6
6
|
import { CompositeDisposable } from '../lifecycle';
|
|
7
7
|
import { ContentContainer, } from './components/panel/content';
|
|
8
8
|
import { TabsContainer, } from './components/titlebar/tabsContainer';
|
|
@@ -177,7 +177,7 @@ export class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
177
177
|
}), this.tabsContainer.onWillShowOverlay((event) => {
|
|
178
178
|
this._onWillShowOverlay.fire(event);
|
|
179
179
|
}), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
|
|
180
|
-
this._onWillShowOverlay.fire(new
|
|
180
|
+
this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
|
|
181
181
|
kind: 'content',
|
|
182
182
|
panel: this.activePanel,
|
|
183
183
|
api: this._api,
|
|
@@ -5,16 +5,16 @@ import { IDockviewPanel } from './dockviewPanel';
|
|
|
5
5
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
6
6
|
import { IDockviewEvent } from '../events';
|
|
7
7
|
export type DockviewGroupDropLocation = 'tab' | 'header_space' | 'content' | 'edge';
|
|
8
|
-
export interface
|
|
8
|
+
export interface DockviewWillShowOverlayLocationEventOptions {
|
|
9
9
|
readonly kind: DockviewGroupDropLocation;
|
|
10
10
|
readonly panel: IDockviewPanel | undefined;
|
|
11
11
|
readonly api: DockviewApi;
|
|
12
12
|
readonly group: DockviewGroupPanel | undefined;
|
|
13
13
|
getData: () => PanelTransfer | undefined;
|
|
14
14
|
}
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class DockviewWillShowOverlayLocationEvent implements IDockviewEvent {
|
|
16
16
|
private readonly event;
|
|
17
|
-
readonly options:
|
|
17
|
+
readonly options: DockviewWillShowOverlayLocationEventOptions;
|
|
18
18
|
get kind(): DockviewGroupDropLocation;
|
|
19
19
|
get nativeEvent(): DragEvent;
|
|
20
20
|
get position(): Position;
|
|
@@ -24,5 +24,5 @@ export declare class WillShowOverlayLocationEvent implements IDockviewEvent {
|
|
|
24
24
|
get group(): DockviewGroupPanel | undefined;
|
|
25
25
|
preventDefault(): void;
|
|
26
26
|
getData(): PanelTransfer | undefined;
|
|
27
|
-
constructor(event: WillShowOverlayEvent, options:
|
|
27
|
+
constructor(event: WillShowOverlayEvent, options: DockviewWillShowOverlayLocationEventOptions);
|
|
28
28
|
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -16,7 +16,8 @@ export * from './gridview/baseComponentGridview';
|
|
|
16
16
|
export { DraggablePaneviewPanel, PaneviewDidDropEvent as PaneviewDropEvent, } from './paneview/draggablePaneviewPanel';
|
|
17
17
|
export * from './dockview/components/panel/content';
|
|
18
18
|
export * from './dockview/components/tab/tab';
|
|
19
|
-
export
|
|
19
|
+
export { DockviewGroupPanelModel, DockviewDidDropEvent, DockviewWillDropEvent, DockviewGroupChangeEvent, } from './dockview/dockviewGroupPanelModel';
|
|
20
|
+
export { DockviewWillShowOverlayLocationEvent } from './dockview/events';
|
|
20
21
|
export { TabDragEvent, GroupDragEvent, } from './dockview/components/titlebar/tabsContainer';
|
|
21
22
|
export * from './dockview/types';
|
|
22
23
|
export * from './dockview/dockviewGroupPanel';
|
package/dist/esm/index.js
CHANGED
|
@@ -16,7 +16,8 @@ export * from './gridview/baseComponentGridview';
|
|
|
16
16
|
export { DraggablePaneviewPanel, } from './paneview/draggablePaneviewPanel';
|
|
17
17
|
export * from './dockview/components/panel/content';
|
|
18
18
|
export * from './dockview/components/tab/tab';
|
|
19
|
-
export
|
|
19
|
+
export { DockviewGroupPanelModel, DockviewDidDropEvent, DockviewWillDropEvent, } from './dockview/dockviewGroupPanelModel';
|
|
20
|
+
export { DockviewWillShowOverlayLocationEvent } from './dockview/events';
|
|
20
21
|
export * from './dockview/types';
|
|
21
22
|
export * from './dockview/dockviewGroupPanel';
|
|
22
23
|
export * from './dockview/options';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';
|
|
2
|
-
import { Emitter, addDisposableListener
|
|
2
|
+
import { Emitter, addDisposableListener } from '../events';
|
|
3
3
|
import { CompositeDisposable, MutableDisposable } from '../lifecycle';
|
|
4
4
|
import { clamp } from '../math';
|
|
5
5
|
class AriaLevelTracker {
|
|
@@ -267,13 +267,16 @@ export class Overlay extends CompositeDisposable {
|
|
|
267
267
|
let right = undefined;
|
|
268
268
|
let width = undefined;
|
|
269
269
|
const moveTop = () => {
|
|
270
|
-
|
|
270
|
+
// When dragging top handle, constrain top position to prevent oversizing
|
|
271
|
+
const maxTop = startPosition.originalY +
|
|
271
272
|
startPosition.originalHeight >
|
|
272
273
|
containerRect.height
|
|
273
|
-
?
|
|
274
|
+
? Math.max(0, containerRect.height -
|
|
275
|
+
Overlay.MINIMUM_HEIGHT)
|
|
274
276
|
: Math.max(0, startPosition.originalY +
|
|
275
277
|
startPosition.originalHeight -
|
|
276
|
-
Overlay.MINIMUM_HEIGHT)
|
|
278
|
+
Overlay.MINIMUM_HEIGHT);
|
|
279
|
+
top = clamp(y, 0, maxTop);
|
|
277
280
|
height =
|
|
278
281
|
startPosition.originalY +
|
|
279
282
|
startPosition.originalHeight -
|
|
@@ -284,22 +287,27 @@ export class Overlay extends CompositeDisposable {
|
|
|
284
287
|
top =
|
|
285
288
|
startPosition.originalY -
|
|
286
289
|
startPosition.originalHeight;
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
+
// When dragging bottom handle, constrain height to container height
|
|
291
|
+
const minHeight = top < 0 &&
|
|
292
|
+
typeof this.options.minimumInViewportHeight ===
|
|
293
|
+
'number'
|
|
290
294
|
? -top +
|
|
291
295
|
this.options.minimumInViewportHeight
|
|
292
|
-
: Overlay.MINIMUM_HEIGHT
|
|
296
|
+
: Overlay.MINIMUM_HEIGHT;
|
|
297
|
+
const maxHeight = containerRect.height - Math.max(0, top);
|
|
298
|
+
height = clamp(y - top, minHeight, maxHeight);
|
|
293
299
|
bottom = containerRect.height - top - height;
|
|
294
300
|
};
|
|
295
301
|
const moveLeft = () => {
|
|
296
|
-
|
|
302
|
+
const maxLeft = startPosition.originalX +
|
|
297
303
|
startPosition.originalWidth >
|
|
298
304
|
containerRect.width
|
|
299
|
-
?
|
|
305
|
+
? Math.max(0, containerRect.width -
|
|
306
|
+
Overlay.MINIMUM_WIDTH) // Prevent extending beyong right edge
|
|
300
307
|
: Math.max(0, startPosition.originalX +
|
|
301
308
|
startPosition.originalWidth -
|
|
302
|
-
Overlay.MINIMUM_WIDTH)
|
|
309
|
+
Overlay.MINIMUM_WIDTH);
|
|
310
|
+
left = clamp(x, 0, maxLeft); // min is 0 (Not -Infinity) to prevent dragging beyond left edge
|
|
303
311
|
width =
|
|
304
312
|
startPosition.originalX +
|
|
305
313
|
startPosition.originalWidth -
|
|
@@ -310,12 +318,15 @@ export class Overlay extends CompositeDisposable {
|
|
|
310
318
|
left =
|
|
311
319
|
startPosition.originalX -
|
|
312
320
|
startPosition.originalWidth;
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
321
|
+
// When dragging right handle, constrain width to container width
|
|
322
|
+
const minWidth = left < 0 &&
|
|
323
|
+
typeof this.options.minimumInViewportWidth ===
|
|
324
|
+
'number'
|
|
316
325
|
? -left +
|
|
317
326
|
this.options.minimumInViewportWidth
|
|
318
|
-
: Overlay.MINIMUM_WIDTH
|
|
327
|
+
: Overlay.MINIMUM_WIDTH;
|
|
328
|
+
const maxWidth = containerRect.width - Math.max(0, left);
|
|
329
|
+
width = clamp(x - left, minWidth, maxWidth);
|
|
319
330
|
right = containerRect.width - left - width;
|
|
320
331
|
};
|
|
321
332
|
switch (direction) {
|
|
@@ -427,11 +427,13 @@ export class Splitview {
|
|
|
427
427
|
document.removeEventListener('pointermove', onPointerMove);
|
|
428
428
|
document.removeEventListener('pointerup', end);
|
|
429
429
|
document.removeEventListener('pointercancel', end);
|
|
430
|
+
document.removeEventListener('contextmenu', end);
|
|
430
431
|
this._onDidSashEnd.fire(undefined);
|
|
431
432
|
};
|
|
432
433
|
document.addEventListener('pointermove', onPointerMove);
|
|
433
434
|
document.addEventListener('pointerup', end);
|
|
434
435
|
document.addEventListener('pointercancel', end);
|
|
436
|
+
document.addEventListener('contextmenu', end);
|
|
435
437
|
};
|
|
436
438
|
sash.addEventListener('pointerdown', onPointerStart);
|
|
437
439
|
const sashItem = {
|