dockview-core 4.3.1 → 4.4.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 +1 -0
- package/dist/cjs/api/component.api.js +7 -0
- package/dist/cjs/dockview/components/tab/tab.d.ts +1 -0
- package/dist/cjs/dockview/components/tab/tab.js +4 -1
- package/dist/cjs/dockview/components/titlebar/tabs.d.ts +1 -0
- package/dist/cjs/dockview/components/titlebar/tabs.js +16 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +2 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +4 -0
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +1 -0
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +4 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +4 -0
- package/dist/cjs/dockview/dockviewComponent.js +81 -42
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -8
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +3 -0
- package/dist/dockview-core.amd.js +61 -14
- 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 +61 -14
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +61 -14
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +61 -14
- 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 +61 -14
- 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 +61 -14
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +1 -0
- package/dist/esm/api/component.api.js +3 -0
- package/dist/esm/dockview/components/tab/tab.d.ts +1 -0
- package/dist/esm/dockview/components/tab/tab.js +4 -1
- package/dist/esm/dockview/components/titlebar/tabs.d.ts +1 -0
- package/dist/esm/dockview/components/titlebar/tabs.js +5 -0
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +2 -0
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +4 -0
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +1 -0
- package/dist/esm/dockview/components/titlebar/voidContainer.js +4 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +4 -0
- package/dist/esm/dockview/dockviewComponent.js +37 -11
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -8
- package/dist/esm/dockview/dockviewGroupPanelModel.js +3 -0
- package/package.json +1 -1
|
@@ -419,6 +419,7 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
|
|
|
419
419
|
get onUnhandledDragOverEvent(): Event<DockviewDndOverlayEvent>;
|
|
420
420
|
get onDidPopoutGroupSizeChange(): Event<PopoutGroupChangeSizeEvent>;
|
|
421
421
|
get onDidPopoutGroupPositionChange(): Event<PopoutGroupChangePositionEvent>;
|
|
422
|
+
get onDidOpenPopoutWindowFail(): Event<void>;
|
|
422
423
|
/**
|
|
423
424
|
* All panel objects.
|
|
424
425
|
*/
|
|
@@ -574,6 +574,9 @@ export class DockviewApi {
|
|
|
574
574
|
get onDidPopoutGroupPositionChange() {
|
|
575
575
|
return this.component.onDidPopoutGroupPositionChange;
|
|
576
576
|
}
|
|
577
|
+
get onDidOpenPopoutWindowFail() {
|
|
578
|
+
return this.component.onDidOpenPopoutWindowFail;
|
|
579
|
+
}
|
|
577
580
|
/**
|
|
578
581
|
* All panel objects.
|
|
579
582
|
*/
|
|
@@ -23,5 +23,6 @@ export declare class Tab extends CompositeDisposable {
|
|
|
23
23
|
constructor(panel: IDockviewPanel, accessor: DockviewComponent, group: DockviewGroupPanel);
|
|
24
24
|
setActive(isActive: boolean): void;
|
|
25
25
|
setContent(part: ITabRenderer): void;
|
|
26
|
+
updateDragAndDropState(): void;
|
|
26
27
|
dispose(): void;
|
|
27
28
|
}
|
|
@@ -41,7 +41,7 @@ export class Tab extends CompositeDisposable {
|
|
|
41
41
|
this._element = document.createElement('div');
|
|
42
42
|
this._element.className = 'dv-tab';
|
|
43
43
|
this._element.tabIndex = 0;
|
|
44
|
-
this._element.draggable =
|
|
44
|
+
this._element.draggable = !this.accessor.options.disableDnd;
|
|
45
45
|
toggleClass(this.element, 'dv-inactive-tab', true);
|
|
46
46
|
const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
|
|
47
47
|
this.dropTarget = new Droptarget(this._element, {
|
|
@@ -89,6 +89,9 @@ export class Tab extends CompositeDisposable {
|
|
|
89
89
|
this.content = part;
|
|
90
90
|
this._element.appendChild(this.content.element);
|
|
91
91
|
}
|
|
92
|
+
updateDragAndDropState() {
|
|
93
|
+
this._element.draggable = !this.accessor.options.disableDnd;
|
|
94
|
+
}
|
|
92
95
|
dispose() {
|
|
93
96
|
super.dispose();
|
|
94
97
|
}
|
|
@@ -186,4 +186,9 @@ export class Tabs extends CompositeDisposable {
|
|
|
186
186
|
.map((x) => x.value.panel.id);
|
|
187
187
|
this._onOverflowTabsChange.fire({ tabs, reset: options.reset });
|
|
188
188
|
}
|
|
189
|
+
updateDragAndDropState() {
|
|
190
|
+
for (const tab of this._tabs) {
|
|
191
|
+
tab.value.updateDragAndDropState();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
189
194
|
}
|
|
@@ -38,6 +38,7 @@ export interface ITabsContainer extends IDisposable {
|
|
|
38
38
|
setPrefixActionsElement(element: HTMLElement | undefined): void;
|
|
39
39
|
show(): void;
|
|
40
40
|
hide(): void;
|
|
41
|
+
updateDragAndDropState(): void;
|
|
41
42
|
}
|
|
42
43
|
export declare class TabsContainer extends CompositeDisposable implements ITabsContainer {
|
|
43
44
|
private readonly accessor;
|
|
@@ -82,4 +83,5 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
|
|
|
82
83
|
closePanel(panel: IDockviewPanel): void;
|
|
83
84
|
private updateClassnames;
|
|
84
85
|
private toggleDropdown;
|
|
86
|
+
updateDragAndDropState(): void;
|
|
85
87
|
}
|
|
@@ -17,7 +17,7 @@ export class VoidContainer extends CompositeDisposable {
|
|
|
17
17
|
this.onDragStart = this._onDragStart.event;
|
|
18
18
|
this._element = document.createElement('div');
|
|
19
19
|
this._element.className = 'dv-void-container';
|
|
20
|
-
this._element.draggable =
|
|
20
|
+
this._element.draggable = !this.accessor.options.disableDnd;
|
|
21
21
|
this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {
|
|
22
22
|
this.accessor.doSetGroupActive(this.group);
|
|
23
23
|
}));
|
|
@@ -40,4 +40,7 @@ export class VoidContainer extends CompositeDisposable {
|
|
|
40
40
|
this._onDrop.fire(event);
|
|
41
41
|
}), this.dropTarget);
|
|
42
42
|
}
|
|
43
|
+
updateDragAndDropState() {
|
|
44
|
+
this._element.draggable = !this.accessor.options.disableDnd;
|
|
45
|
+
}
|
|
43
46
|
}
|
|
@@ -140,6 +140,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
|
|
|
140
140
|
readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChanged>;
|
|
141
141
|
readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
|
|
142
142
|
readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
|
|
143
|
+
readonly onDidOpenPopoutWindowFail: Event<void>;
|
|
143
144
|
readonly options: DockviewComponentOptions;
|
|
144
145
|
updateOptions(options: DockviewOptions): void;
|
|
145
146
|
moveGroupOrPanel(options: MoveGroupOrPanelOptions): void;
|
|
@@ -202,6 +203,8 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
202
203
|
readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
|
|
203
204
|
private readonly _onDidPopoutGroupPositionChange;
|
|
204
205
|
readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
|
|
206
|
+
private readonly _onDidOpenPopoutWindowFail;
|
|
207
|
+
readonly onDidOpenPopoutWindowFail: Event<void>;
|
|
205
208
|
private readonly _onDidLayoutFromJSON;
|
|
206
209
|
readonly onDidLayoutFromJSON: Event<void>;
|
|
207
210
|
private readonly _onDidActivePanelChange;
|
|
@@ -236,6 +239,7 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
236
239
|
private orthogonalize;
|
|
237
240
|
updateOptions(options: Partial<DockviewComponentOptions>): void;
|
|
238
241
|
layout(width: number, height: number, forceResize?: boolean | undefined): void;
|
|
242
|
+
private updateDragAndDropState;
|
|
239
243
|
focus(): void;
|
|
240
244
|
getGroupPanel(id: string): IDockviewPanel | undefined;
|
|
241
245
|
setActivePanel(panel: IDockviewPanel): void;
|
|
@@ -109,6 +109,8 @@ export class DockviewComponent extends BaseGrid {
|
|
|
109
109
|
this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;
|
|
110
110
|
this._onDidPopoutGroupPositionChange = new Emitter();
|
|
111
111
|
this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;
|
|
112
|
+
this._onDidOpenPopoutWindowFail = new Emitter();
|
|
113
|
+
this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;
|
|
112
114
|
this._onDidLayoutFromJSON = new Emitter();
|
|
113
115
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
114
116
|
this._onDidActivePanelChange = new Emitter({ replay: true });
|
|
@@ -173,7 +175,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
173
175
|
if (options.debug) {
|
|
174
176
|
this.addDisposables(new StrictEventsSequencing(this));
|
|
175
177
|
}
|
|
176
|
-
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(() => {
|
|
178
|
+
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._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
177
179
|
this.updateWatermark();
|
|
178
180
|
}), this.onDidAdd((event) => {
|
|
179
181
|
if (!this._moving) {
|
|
@@ -319,13 +321,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
319
321
|
if (_window.isDisposed) {
|
|
320
322
|
return false;
|
|
321
323
|
}
|
|
322
|
-
if (popoutContainer === null) {
|
|
323
|
-
popoutWindowDisposable.dispose();
|
|
324
|
-
return false;
|
|
325
|
-
}
|
|
326
|
-
const gready = document.createElement('div');
|
|
327
|
-
gready.className = 'dv-overlay-render-container';
|
|
328
|
-
const overlayRenderContainer = new OverlayRenderContainer(gready, this);
|
|
329
324
|
const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)
|
|
330
325
|
? options.referenceGroup
|
|
331
326
|
: itemToPopout instanceof DockviewPanel
|
|
@@ -333,7 +328,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
333
328
|
: itemToPopout;
|
|
334
329
|
const referenceLocation = itemToPopout.api.location.type;
|
|
335
330
|
/**
|
|
336
|
-
* The group that is being added doesn't already exist within the DOM, the most likely
|
|
331
|
+
* The group that is being added doesn't already exist within the DOM, the most likely occurrence
|
|
337
332
|
* of this case is when being called from the `fromJSON(...)` method
|
|
338
333
|
*/
|
|
339
334
|
const isGroupAddedToDom = referenceGroup.element.parentElement !== null;
|
|
@@ -346,8 +341,28 @@ export class DockviewComponent extends BaseGrid {
|
|
|
346
341
|
}
|
|
347
342
|
else {
|
|
348
343
|
group = this.createGroup({ id: groupId });
|
|
349
|
-
|
|
344
|
+
if (popoutContainer) {
|
|
345
|
+
this._onDidAddGroup.fire(group);
|
|
346
|
+
}
|
|
350
347
|
}
|
|
348
|
+
if (popoutContainer === null) {
|
|
349
|
+
console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');
|
|
350
|
+
popoutWindowDisposable.dispose();
|
|
351
|
+
this._onDidOpenPopoutWindowFail.fire();
|
|
352
|
+
// if the popout window was blocked, we need to move the group back to the reference group
|
|
353
|
+
// and set it to visible
|
|
354
|
+
this.movingLock(() => moveGroupWithoutDestroying({
|
|
355
|
+
from: group,
|
|
356
|
+
to: referenceGroup,
|
|
357
|
+
}));
|
|
358
|
+
if (!referenceGroup.api.isVisible) {
|
|
359
|
+
referenceGroup.api.setVisible(true);
|
|
360
|
+
}
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
const gready = document.createElement('div');
|
|
364
|
+
gready.className = 'dv-overlay-render-container';
|
|
365
|
+
const overlayRenderContainer = new OverlayRenderContainer(gready, this);
|
|
351
366
|
group.model.renderContainer = overlayRenderContainer;
|
|
352
367
|
group.layout(_window.window.innerWidth, _window.window.innerHeight);
|
|
353
368
|
let floatingBox;
|
|
@@ -504,7 +519,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
504
519
|
return true;
|
|
505
520
|
})
|
|
506
521
|
.catch((err) => {
|
|
507
|
-
console.error('dockview: failed to create popout
|
|
522
|
+
console.error('dockview: failed to create popout.', err);
|
|
508
523
|
return false;
|
|
509
524
|
});
|
|
510
525
|
}
|
|
@@ -713,7 +728,12 @@ export class DockviewComponent extends BaseGrid {
|
|
|
713
728
|
}
|
|
714
729
|
}
|
|
715
730
|
this.updateDropTargetModel(options);
|
|
731
|
+
const oldDisableDnd = this.options.disableDnd;
|
|
716
732
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
733
|
+
const newDisableDnd = this.options.disableDnd;
|
|
734
|
+
if (oldDisableDnd !== newDisableDnd) {
|
|
735
|
+
this.updateDragAndDropState();
|
|
736
|
+
}
|
|
717
737
|
if ('theme' in options) {
|
|
718
738
|
this.updateTheme();
|
|
719
739
|
}
|
|
@@ -728,6 +748,12 @@ export class DockviewComponent extends BaseGrid {
|
|
|
728
748
|
}
|
|
729
749
|
}
|
|
730
750
|
}
|
|
751
|
+
updateDragAndDropState() {
|
|
752
|
+
// Update draggable state for all tabs and void containers
|
|
753
|
+
for (const group of this.groups) {
|
|
754
|
+
group.model.updateDragAndDropState();
|
|
755
|
+
}
|
|
756
|
+
}
|
|
731
757
|
focus() {
|
|
732
758
|
var _a;
|
|
733
759
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
@@ -123,9 +123,16 @@ export type DockviewGroupLocation = {
|
|
|
123
123
|
getWindow: () => Window;
|
|
124
124
|
popoutUrl?: string;
|
|
125
125
|
};
|
|
126
|
+
export interface WillShowOverlayLocationEventOptions {
|
|
127
|
+
readonly kind: DockviewGroupDropLocation;
|
|
128
|
+
readonly panel: IDockviewPanel | undefined;
|
|
129
|
+
readonly api: DockviewApi;
|
|
130
|
+
readonly group: DockviewGroupPanel | undefined;
|
|
131
|
+
getData: () => PanelTransfer | undefined;
|
|
132
|
+
}
|
|
126
133
|
export declare class WillShowOverlayLocationEvent implements IDockviewEvent {
|
|
127
134
|
private readonly event;
|
|
128
|
-
|
|
135
|
+
readonly options: WillShowOverlayLocationEventOptions;
|
|
129
136
|
get kind(): DockviewGroupDropLocation;
|
|
130
137
|
get nativeEvent(): DragEvent;
|
|
131
138
|
get position(): Position;
|
|
@@ -135,13 +142,7 @@ export declare class WillShowOverlayLocationEvent implements IDockviewEvent {
|
|
|
135
142
|
get group(): DockviewGroupPanel | undefined;
|
|
136
143
|
preventDefault(): void;
|
|
137
144
|
getData(): PanelTransfer | undefined;
|
|
138
|
-
constructor(event: WillShowOverlayEvent, options:
|
|
139
|
-
kind: DockviewGroupDropLocation;
|
|
140
|
-
panel: IDockviewPanel | undefined;
|
|
141
|
-
api: DockviewApi;
|
|
142
|
-
group: DockviewGroupPanel | undefined;
|
|
143
|
-
getData: () => PanelTransfer | undefined;
|
|
144
|
-
});
|
|
145
|
+
constructor(event: WillShowOverlayEvent, options: WillShowOverlayLocationEventOptions);
|
|
145
146
|
}
|
|
146
147
|
export declare class DockviewGroupPanelModel extends CompositeDisposable implements IDockviewGroupPanelModel {
|
|
147
148
|
private readonly container;
|
|
@@ -252,6 +253,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
252
253
|
private updateContainer;
|
|
253
254
|
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
254
255
|
private handleDropEvent;
|
|
256
|
+
updateDragAndDropState(): void;
|
|
255
257
|
dispose(): void;
|
|
256
258
|
}
|
|
257
259
|
export {};
|