dockview-core 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +4 -0
  2. package/dist/cjs/api/dockviewGroupPanelApi.js +4 -3
  3. package/dist/cjs/api/dockviewPanelApi.js +1 -0
  4. package/dist/cjs/dockview/components/tab/tab.d.ts +1 -0
  5. package/dist/cjs/dockview/components/tab/tab.js +4 -1
  6. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +1 -0
  7. package/dist/cjs/dockview/components/titlebar/tabs.js +16 -0
  8. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +2 -0
  9. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +4 -0
  10. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +1 -0
  11. package/dist/cjs/dockview/components/titlebar/voidContainer.js +4 -1
  12. package/dist/cjs/dockview/dockviewComponent.d.ts +3 -0
  13. package/dist/cjs/dockview/dockviewComponent.js +142 -37
  14. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -8
  15. package/dist/cjs/dockview/dockviewGroupPanelModel.js +3 -0
  16. package/dist/dockview-core.amd.js +131 -15
  17. package/dist/dockview-core.amd.js.map +1 -1
  18. package/dist/dockview-core.amd.min.js +2 -2
  19. package/dist/dockview-core.amd.min.js.map +1 -1
  20. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  21. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  22. package/dist/dockview-core.amd.noStyle.js +131 -15
  23. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  24. package/dist/dockview-core.cjs.js +131 -15
  25. package/dist/dockview-core.cjs.js.map +1 -1
  26. package/dist/dockview-core.esm.js +131 -15
  27. package/dist/dockview-core.esm.js.map +1 -1
  28. package/dist/dockview-core.esm.min.js +2 -2
  29. package/dist/dockview-core.esm.min.js.map +1 -1
  30. package/dist/dockview-core.js +131 -15
  31. package/dist/dockview-core.js.map +1 -1
  32. package/dist/dockview-core.min.js +2 -2
  33. package/dist/dockview-core.min.js.map +1 -1
  34. package/dist/dockview-core.min.noStyle.js +2 -2
  35. package/dist/dockview-core.min.noStyle.js.map +1 -1
  36. package/dist/dockview-core.noStyle.js +131 -15
  37. package/dist/dockview-core.noStyle.js.map +1 -1
  38. package/dist/esm/api/dockviewGroupPanelApi.d.ts +4 -0
  39. package/dist/esm/api/dockviewGroupPanelApi.js +4 -3
  40. package/dist/esm/api/dockviewPanelApi.js +1 -0
  41. package/dist/esm/dockview/components/tab/tab.d.ts +1 -0
  42. package/dist/esm/dockview/components/tab/tab.js +4 -1
  43. package/dist/esm/dockview/components/titlebar/tabs.d.ts +1 -0
  44. package/dist/esm/dockview/components/titlebar/tabs.js +5 -0
  45. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +2 -0
  46. package/dist/esm/dockview/components/titlebar/tabsContainer.js +4 -0
  47. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +1 -0
  48. package/dist/esm/dockview/components/titlebar/voidContainer.js +4 -1
  49. package/dist/esm/dockview/dockviewComponent.d.ts +3 -0
  50. package/dist/esm/dockview/dockviewComponent.js +105 -9
  51. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -8
  52. package/dist/esm/dockview/dockviewGroupPanelModel.js +3 -0
  53. package/package.json +1 -1
@@ -11,6 +11,10 @@ export interface DockviewGroupMoveParams {
11
11
  * The index to place the panel within a group, only applicable if the placement is within an existing group
12
12
  */
13
13
  index?: number;
14
+ /**
15
+ * Whether to skip setting the group as active after moving
16
+ */
17
+ skipSetActive?: boolean;
14
18
  }
15
19
  export interface DockviewGroupPanelApi extends GridviewPanelApi {
16
20
  readonly onDidLocationChange: Event<DockviewGroupPanelFloatingChangeEvent>;
@@ -54,23 +54,24 @@ var DockviewGroupPanelApiImpl = /** @class */ (function (_super) {
54
54
  : window;
55
55
  };
56
56
  DockviewGroupPanelApiImpl.prototype.moveTo = function (options) {
57
- var _a, _b, _c;
57
+ var _a, _b, _c, _d;
58
58
  if (!this._group) {
59
59
  throw new Error(NOT_INITIALIZED_MESSAGE);
60
60
  }
61
61
  var group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
62
62
  direction: (0, droptarget_1.positionToDirection)((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
63
- skipSetActive: true,
63
+ skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,
64
64
  });
65
65
  this.accessor.moveGroupOrPanel({
66
66
  from: { groupId: this._group.id },
67
67
  to: {
68
68
  group: group,
69
69
  position: options.group
70
- ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
70
+ ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'
71
71
  : 'center',
72
72
  index: options.index,
73
73
  },
74
+ skipSetActive: options.skipSetActive,
74
75
  });
75
76
  };
76
77
  DockviewGroupPanelApiImpl.prototype.maximize = function () {
@@ -110,6 +110,7 @@ var DockviewPanelApiImpl = /** @class */ (function (_super) {
110
110
  : 'center',
111
111
  index: options.index,
112
112
  },
113
+ skipSetActive: options.skipSetActive,
113
114
  });
114
115
  };
115
116
  DockviewPanelApiImpl.prototype.setTitle = function (title) {
@@ -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
  }
@@ -61,7 +61,7 @@ var Tab = /** @class */ (function (_super) {
61
61
  _this._element = document.createElement('div');
62
62
  _this._element.className = 'dv-tab';
63
63
  _this._element.tabIndex = 0;
64
- _this._element.draggable = true;
64
+ _this._element.draggable = !_this.accessor.options.disableDnd;
65
65
  (0, dom_1.toggleClass)(_this.element, 'dv-inactive-tab', true);
66
66
  var dragHandler = new TabDragHandler(_this._element, _this.accessor, _this.group, _this.panel);
67
67
  _this.dropTarget = new droptarget_1.Droptarget(_this._element, {
@@ -119,6 +119,9 @@ var Tab = /** @class */ (function (_super) {
119
119
  this.content = part;
120
120
  this._element.appendChild(this.content.element);
121
121
  };
122
+ Tab.prototype.updateDragAndDropState = function () {
123
+ this._element.draggable = !this.accessor.options.disableDnd;
124
+ };
122
125
  Tab.prototype.dispose = function () {
123
126
  _super.prototype.dispose.call(this);
124
127
  };
@@ -42,4 +42,5 @@ export declare class Tabs extends CompositeDisposable {
42
42
  delete(id: string): void;
43
43
  private addTab;
44
44
  private toggleDropdown;
45
+ updateDragAndDropState(): void;
45
46
  }
@@ -289,6 +289,22 @@ var Tabs = /** @class */ (function (_super) {
289
289
  .map(function (x) { return x.value.panel.id; });
290
290
  this._onOverflowTabsChange.fire({ tabs: tabs, reset: options.reset });
291
291
  };
292
+ Tabs.prototype.updateDragAndDropState = function () {
293
+ var e_3, _a;
294
+ try {
295
+ for (var _b = __values(this._tabs), _c = _b.next(); !_c.done; _c = _b.next()) {
296
+ var tab = _c.value;
297
+ tab.value.updateDragAndDropState();
298
+ }
299
+ }
300
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
301
+ finally {
302
+ try {
303
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
304
+ }
305
+ finally { if (e_3) throw e_3.error; }
306
+ }
307
+ };
292
308
  return Tabs;
293
309
  }(lifecycle_1.CompositeDisposable));
294
310
  exports.Tabs = Tabs;
@@ -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
  }
@@ -297,6 +297,10 @@ var TabsContainer = /** @class */ (function (_super) {
297
297
  });
298
298
  }));
299
299
  };
300
+ TabsContainer.prototype.updateDragAndDropState = function () {
301
+ this.tabs.updateDragAndDropState();
302
+ this.voidContainer.updateDragAndDropState();
303
+ };
300
304
  return TabsContainer;
301
305
  }(lifecycle_1.CompositeDisposable));
302
306
  exports.TabsContainer = TabsContainer;
@@ -15,4 +15,5 @@ export declare class VoidContainer extends CompositeDisposable {
15
15
  readonly onWillShowOverlay: Event<WillShowOverlayEvent>;
16
16
  get element(): HTMLElement;
17
17
  constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
18
+ updateDragAndDropState(): void;
18
19
  }
@@ -33,7 +33,7 @@ var VoidContainer = /** @class */ (function (_super) {
33
33
  _this.onDragStart = _this._onDragStart.event;
34
34
  _this._element = document.createElement('div');
35
35
  _this._element.className = 'dv-void-container';
36
- _this._element.draggable = true;
36
+ _this._element.draggable = !_this.accessor.options.disableDnd;
37
37
  _this.addDisposables(_this._onDrop, _this._onDragStart, (0, events_1.addDisposableListener)(_this._element, 'pointerdown', function () {
38
38
  _this.accessor.doSetGroupActive(_this.group);
39
39
  }));
@@ -64,6 +64,9 @@ var VoidContainer = /** @class */ (function (_super) {
64
64
  enumerable: false,
65
65
  configurable: true
66
66
  });
67
+ VoidContainer.prototype.updateDragAndDropState = function () {
68
+ this._element.draggable = !this.accessor.options.disableDnd;
69
+ };
67
70
  return VoidContainer;
68
71
  }(lifecycle_1.CompositeDisposable));
69
72
  exports.VoidContainer = VoidContainer;
@@ -80,6 +80,7 @@ type MoveGroupOptions = {
80
80
  group: DockviewGroupPanel;
81
81
  position: Position;
82
82
  };
83
+ skipSetActive?: boolean;
83
84
  };
84
85
  type MoveGroupOrPanelOptions = {
85
86
  from: {
@@ -91,6 +92,7 @@ type MoveGroupOrPanelOptions = {
91
92
  position: Position;
92
93
  index?: number;
93
94
  };
95
+ skipSetActive?: boolean;
94
96
  };
95
97
  export interface FloatingGroupOptions {
96
98
  x?: number;
@@ -239,6 +241,7 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
239
241
  private orthogonalize;
240
242
  updateOptions(options: Partial<DockviewComponentOptions>): void;
241
243
  layout(width: number, height: number, forceResize?: boolean | undefined): void;
244
+ private updateDragAndDropState;
242
245
  focus(): void;
243
246
  getGroupPanel(id: string): IDockviewPanel | undefined;
244
247
  setActivePanel(panel: IDockviewPanel): void;
@@ -875,7 +875,12 @@ var DockviewComponent = /** @class */ (function (_super) {
875
875
  }
876
876
  }
877
877
  this.updateDropTargetModel(options);
878
+ var oldDisableDnd = this.options.disableDnd;
878
879
  this._options = __assign(__assign({}, this.options), options);
880
+ var newDisableDnd = this.options.disableDnd;
881
+ if (oldDisableDnd !== newDisableDnd) {
882
+ this.updateDragAndDropState();
883
+ }
879
884
  if ('theme' in options) {
880
885
  this.updateTheme();
881
886
  }
@@ -901,6 +906,23 @@ var DockviewComponent = /** @class */ (function (_super) {
901
906
  }
902
907
  }
903
908
  };
909
+ DockviewComponent.prototype.updateDragAndDropState = function () {
910
+ var e_5, _a;
911
+ try {
912
+ // Update draggable state for all tabs and void containers
913
+ for (var _b = __values(this.groups), _c = _b.next(); !_c.done; _c = _b.next()) {
914
+ var group = _c.value;
915
+ group.model.updateDragAndDropState();
916
+ }
917
+ }
918
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
919
+ finally {
920
+ try {
921
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
922
+ }
923
+ finally { if (e_5) throw e_5.error; }
924
+ }
925
+ };
904
926
  DockviewComponent.prototype.focus = function () {
905
927
  var _a;
906
928
  (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
@@ -995,7 +1017,7 @@ var DockviewComponent = /** @class */ (function (_super) {
995
1017
  return result;
996
1018
  };
997
1019
  DockviewComponent.prototype.fromJSON = function (data) {
998
- var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e, e_10, _f, e_11, _g;
1020
+ var e_6, _a, e_7, _b, e_8, _c, e_9, _d, e_10, _e, e_11, _f, e_12, _g;
999
1021
  var _this = this;
1000
1022
  var _h, _j;
1001
1023
  this.clear();
@@ -1011,7 +1033,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1011
1033
  var width = this.width;
1012
1034
  var height = this.height;
1013
1035
  var createGroupFromSerializedState_1 = function (data) {
1014
- var e_12, _a;
1036
+ var e_13, _a;
1015
1037
  var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
1016
1038
  if (typeof id !== 'string') {
1017
1039
  throw new Error('group id must be of type string');
@@ -1035,12 +1057,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1035
1057
  createdPanels.push(panel);
1036
1058
  }
1037
1059
  }
1038
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
1060
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
1039
1061
  finally {
1040
1062
  try {
1041
1063
  if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
1042
1064
  }
1043
- finally { if (e_12) throw e_12.error; }
1065
+ finally { if (e_13) throw e_13.error; }
1044
1066
  }
1045
1067
  for (var i = 0; i < views.length; i++) {
1046
1068
  var panel = createdPanels[i];
@@ -1079,12 +1101,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1079
1101
  });
1080
1102
  }
1081
1103
  }
1082
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
1104
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
1083
1105
  finally {
1084
1106
  try {
1085
1107
  if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
1086
1108
  }
1087
- finally { if (e_5) throw e_5.error; }
1109
+ finally { if (e_6) throw e_6.error; }
1088
1110
  }
1089
1111
  var serializedPopoutGroups = (_j = data.popoutGroups) !== null && _j !== void 0 ? _j : [];
1090
1112
  try {
@@ -1102,12 +1124,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1102
1124
  });
1103
1125
  }
1104
1126
  }
1105
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
1127
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
1106
1128
  finally {
1107
1129
  try {
1108
1130
  if (serializedPopoutGroups_1_1 && !serializedPopoutGroups_1_1.done && (_b = serializedPopoutGroups_1.return)) _b.call(serializedPopoutGroups_1);
1109
1131
  }
1110
- finally { if (e_6) throw e_6.error; }
1132
+ finally { if (e_7) throw e_7.error; }
1111
1133
  }
1112
1134
  try {
1113
1135
  for (var _k = __values(this._floatingGroups), _l = _k.next(); !_l.done; _l = _k.next()) {
@@ -1115,12 +1137,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1115
1137
  floatingGroup.overlay.setBounds();
1116
1138
  }
1117
1139
  }
1118
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
1140
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
1119
1141
  finally {
1120
1142
  try {
1121
1143
  if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
1122
1144
  }
1123
- finally { if (e_7) throw e_7.error; }
1145
+ finally { if (e_8) throw e_8.error; }
1124
1146
  }
1125
1147
  if (typeof activeGroup === 'string') {
1126
1148
  var panel = this.getPanel(activeGroup);
@@ -1138,7 +1160,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1138
1160
  for (var _m = __values(this.groups), _o = _m.next(); !_o.done; _o = _m.next()) {
1139
1161
  var group = _o.value;
1140
1162
  try {
1141
- for (var _p = (e_9 = void 0, __values(group.panels)), _q = _p.next(); !_q.done; _q = _p.next()) {
1163
+ for (var _p = (e_10 = void 0, __values(group.panels)), _q = _p.next(); !_q.done; _q = _p.next()) {
1142
1164
  var panel = _q.value;
1143
1165
  this.removePanel(panel, {
1144
1166
  removeEmptyGroup: false,
@@ -1146,21 +1168,21 @@ var DockviewComponent = /** @class */ (function (_super) {
1146
1168
  });
1147
1169
  }
1148
1170
  }
1149
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
1171
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1150
1172
  finally {
1151
1173
  try {
1152
1174
  if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
1153
1175
  }
1154
- finally { if (e_9) throw e_9.error; }
1176
+ finally { if (e_10) throw e_10.error; }
1155
1177
  }
1156
1178
  }
1157
1179
  }
1158
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
1180
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1159
1181
  finally {
1160
1182
  try {
1161
1183
  if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
1162
1184
  }
1163
- finally { if (e_8) throw e_8.error; }
1185
+ finally { if (e_9) throw e_9.error; }
1164
1186
  }
1165
1187
  try {
1166
1188
  /**
@@ -1174,12 +1196,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1174
1196
  this._onDidRemoveGroup.fire(group);
1175
1197
  }
1176
1198
  }
1177
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
1199
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
1178
1200
  finally {
1179
1201
  try {
1180
1202
  if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
1181
1203
  }
1182
- finally { if (e_10) throw e_10.error; }
1204
+ finally { if (e_11) throw e_11.error; }
1183
1205
  }
1184
1206
  try {
1185
1207
  // iterate over a reassigned array since original array will be modified
@@ -1188,12 +1210,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1188
1210
  floatingGroup.dispose();
1189
1211
  }
1190
1212
  }
1191
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
1213
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
1192
1214
  finally {
1193
1215
  try {
1194
1216
  if (_u && !_u.done && (_g = _t.return)) _g.call(_t);
1195
1217
  }
1196
- finally { if (e_11) throw e_11.error; }
1218
+ finally { if (e_12) throw e_12.error; }
1197
1219
  }
1198
1220
  // fires clean-up events and clears the underlying HTML gridview.
1199
1221
  this.clear();
@@ -1208,7 +1230,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1208
1230
  this._onDidLayoutFromJSON.fire();
1209
1231
  };
1210
1232
  DockviewComponent.prototype.clear = function () {
1211
- var e_13, _a;
1233
+ var e_14, _a;
1212
1234
  var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
1213
1235
  var hasActiveGroup = !!this.activeGroup;
1214
1236
  try {
@@ -1218,12 +1240,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1218
1240
  this.removeGroup(group, { skipActive: true });
1219
1241
  }
1220
1242
  }
1221
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1243
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
1222
1244
  finally {
1223
1245
  try {
1224
1246
  if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
1225
1247
  }
1226
- finally { if (e_13) throw e_13.error; }
1248
+ finally { if (e_14) throw e_14.error; }
1227
1249
  }
1228
1250
  if (hasActiveGroup) {
1229
1251
  this.doSetGroupAndPanelActive(undefined);
@@ -1231,7 +1253,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1231
1253
  this.gridview.clear();
1232
1254
  };
1233
1255
  DockviewComponent.prototype.closeAllGroups = function () {
1234
- var e_14, _a;
1256
+ var e_15, _a;
1235
1257
  try {
1236
1258
  for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
1237
1259
  var entry = _c.value;
@@ -1239,12 +1261,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1239
1261
  group.value.model.closeAllPanels();
1240
1262
  }
1241
1263
  }
1242
- catch (e_14_1) { e_14 = { error: e_14_1 }; }
1264
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
1243
1265
  finally {
1244
1266
  try {
1245
1267
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1246
1268
  }
1247
- finally { if (e_14) throw e_14.error; }
1269
+ finally { if (e_15) throw e_15.error; }
1248
1270
  }
1249
1271
  };
1250
1272
  DockviewComponent.prototype.addPanel = function (options) {
@@ -1495,7 +1517,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1495
1517
  this.doRemoveGroup(group, options);
1496
1518
  };
1497
1519
  DockviewComponent.prototype.doRemoveGroup = function (group, options) {
1498
- var e_15, _a;
1520
+ var e_16, _a;
1499
1521
  var _b;
1500
1522
  var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
1501
1523
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -1508,12 +1530,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1508
1530
  });
1509
1531
  }
1510
1532
  }
1511
- catch (e_15_1) { e_15 = { error: e_15_1 }; }
1533
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
1512
1534
  finally {
1513
1535
  try {
1514
1536
  if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
1515
1537
  }
1516
- finally { if (e_15) throw e_15.error; }
1538
+ finally { if (e_16) throw e_16.error; }
1517
1539
  }
1518
1540
  }
1519
1541
  var activePanel = this.activePanel;
@@ -1608,6 +1630,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1608
1630
  group: destinationGroup,
1609
1631
  position: destinationTarget,
1610
1632
  },
1633
+ skipSetActive: options.skipSetActive,
1611
1634
  });
1612
1635
  return;
1613
1636
  }
@@ -1629,12 +1652,16 @@ var DockviewComponent = /** @class */ (function (_super) {
1629
1652
  this.doRemoveGroup(sourceGroup, { skipActive: true });
1630
1653
  }
1631
1654
  this.movingLock(function () {
1655
+ var _a;
1632
1656
  return destinationGroup.model.openPanel(removedPanel_1, {
1633
1657
  index: destinationIndex,
1658
+ skipSetActive: (_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false,
1634
1659
  skipSetGroupActive: true,
1635
1660
  });
1636
1661
  });
1637
- this.doSetGroupAndPanelActive(destinationGroup);
1662
+ if (!options.skipSetActive) {
1663
+ this.doSetGroupAndPanelActive(destinationGroup);
1664
+ }
1638
1665
  this._onDidMovePanel.fire({
1639
1666
  panel: removedPanel_1,
1640
1667
  from: sourceGroup,
@@ -1747,7 +1774,8 @@ var DockviewComponent = /** @class */ (function (_super) {
1747
1774
  var to = options.to.group;
1748
1775
  var target = options.to.position;
1749
1776
  if (target === 'center') {
1750
- var activePanel_1 = from.activePanel;
1777
+ var activePanel = from.activePanel;
1778
+ var targetActivePanel = to.activePanel;
1751
1779
  var panels_2 = this.movingLock(function () {
1752
1780
  return __spreadArray([], __read(from.panels), false).map(function (p) {
1753
1781
  return from.model.removePanel(p.id, {
@@ -1759,25 +1787,36 @@ var DockviewComponent = /** @class */ (function (_super) {
1759
1787
  this.doRemoveGroup(from, { skipActive: true });
1760
1788
  }
1761
1789
  this.movingLock(function () {
1762
- var e_16, _a;
1790
+ var e_17, _a;
1763
1791
  try {
1764
1792
  for (var panels_3 = __values(panels_2), panels_3_1 = panels_3.next(); !panels_3_1.done; panels_3_1 = panels_3.next()) {
1765
1793
  var panel = panels_3_1.value;
1766
1794
  to.model.openPanel(panel, {
1767
- skipSetActive: panel !== activePanel_1,
1795
+ skipSetActive: true, // Always skip setting panels active during move
1768
1796
  skipSetGroupActive: true,
1769
1797
  });
1770
1798
  }
1771
1799
  }
1772
- catch (e_16_1) { e_16 = { error: e_16_1 }; }
1800
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
1773
1801
  finally {
1774
1802
  try {
1775
1803
  if (panels_3_1 && !panels_3_1.done && (_a = panels_3.return)) _a.call(panels_3);
1776
1804
  }
1777
- finally { if (e_16) throw e_16.error; }
1805
+ finally { if (e_17) throw e_17.error; }
1778
1806
  }
1779
1807
  });
1780
- this.doSetGroupAndPanelActive(to);
1808
+ if (!options.skipSetActive) {
1809
+ // Make the moved panel (from the source group) active
1810
+ if (activePanel) {
1811
+ this.doSetGroupAndPanelActive(to);
1812
+ }
1813
+ }
1814
+ else if (targetActivePanel) {
1815
+ // Ensure the target group's original active panel remains active
1816
+ to.model.openPanel(targetActivePanel, {
1817
+ skipSetGroupActive: true
1818
+ });
1819
+ }
1781
1820
  }
1782
1821
  else {
1783
1822
  switch (from.api.location.type) {
@@ -1797,12 +1836,39 @@ var DockviewComponent = /** @class */ (function (_super) {
1797
1836
  if (!selectedPopoutGroup) {
1798
1837
  throw new Error('failed to find popout group');
1799
1838
  }
1800
- selectedPopoutGroup.disposable.dispose();
1839
+ // Remove from popout groups list to prevent automatic restoration
1840
+ var index = this._popoutGroups.indexOf(selectedPopoutGroup);
1841
+ if (index >= 0) {
1842
+ this._popoutGroups.splice(index, 1);
1843
+ }
1844
+ // Clean up the reference group (ghost) if it exists and is hidden
1845
+ if (selectedPopoutGroup.referenceGroup) {
1846
+ var referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);
1847
+ if (referenceGroup && !referenceGroup.api.isVisible) {
1848
+ this.doRemoveGroup(referenceGroup, { skipActive: true });
1849
+ }
1850
+ }
1851
+ // Manually dispose the window without triggering restoration
1852
+ selectedPopoutGroup.window.dispose();
1853
+ // Update group's location and containers for target
1854
+ if (to.api.location.type === 'grid') {
1855
+ from.model.renderContainer = this.overlayRenderContainer;
1856
+ from.model.dropTargetContainer = this.rootDropTargetContainer;
1857
+ from.model.location = { type: 'grid' };
1858
+ }
1859
+ else if (to.api.location.type === 'floating') {
1860
+ from.model.renderContainer = this.overlayRenderContainer;
1861
+ from.model.dropTargetContainer = this.rootDropTargetContainer;
1862
+ from.model.location = { type: 'floating' };
1863
+ }
1864
+ break;
1801
1865
  }
1802
1866
  }
1803
- if (from.api.location.type !== 'popout') {
1867
+ // For moves to grid locations
1868
+ if (to.api.location.type === 'grid') {
1804
1869
  var referenceLocation = (0, gridview_1.getGridLocation)(to.element);
1805
1870
  var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
1871
+ // Add to grid for all moves targeting grid location
1806
1872
  var size = void 0;
1807
1873
  switch (this.gridview.orientation) {
1808
1874
  case splitview_1.Orientation.VERTICAL:
@@ -1820,10 +1886,49 @@ var DockviewComponent = /** @class */ (function (_super) {
1820
1886
  }
1821
1887
  this.gridview.addView(from, size, dropLocation);
1822
1888
  }
1889
+ else if (to.api.location.type === 'floating') {
1890
+ // For moves to floating locations, add as floating group
1891
+ // Get the position/size from the target floating group
1892
+ var targetFloatingGroup = this._floatingGroups.find(function (x) { return x.group === to; });
1893
+ if (targetFloatingGroup) {
1894
+ var box = targetFloatingGroup.overlay.toJSON();
1895
+ // Calculate position based on available properties
1896
+ var left = void 0, top_1;
1897
+ if ('left' in box) {
1898
+ left = box.left + 50;
1899
+ }
1900
+ else if ('right' in box) {
1901
+ left = Math.max(0, box.right - box.width - 50);
1902
+ }
1903
+ else {
1904
+ left = 50; // Default fallback
1905
+ }
1906
+ if ('top' in box) {
1907
+ top_1 = box.top + 50;
1908
+ }
1909
+ else if ('bottom' in box) {
1910
+ top_1 = Math.max(0, box.bottom - box.height - 50);
1911
+ }
1912
+ else {
1913
+ top_1 = 50; // Default fallback
1914
+ }
1915
+ this.addFloatingGroup(from, {
1916
+ height: box.height,
1917
+ width: box.width,
1918
+ position: {
1919
+ left: left,
1920
+ top: top_1,
1921
+ },
1922
+ });
1923
+ }
1924
+ }
1823
1925
  }
1824
1926
  from.panels.forEach(function (panel) {
1825
1927
  _this._onDidMovePanel.fire({ panel: panel, from: from });
1826
1928
  });
1929
+ if (!options.skipSetActive) {
1930
+ this.doSetGroupAndPanelActive(from);
1931
+ }
1827
1932
  };
1828
1933
  DockviewComponent.prototype.doSetGroupActive = function (group) {
1829
1934
  _super.prototype.doSetGroupActive.call(this, group);
@@ -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
- private readonly options;
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 {};
@@ -842,6 +842,9 @@ var DockviewGroupPanelModel = /** @class */ (function (_super) {
842
842
  }));
843
843
  }
844
844
  };
845
+ DockviewGroupPanelModel.prototype.updateDragAndDropState = function () {
846
+ this.tabsContainer.updateDragAndDropState();
847
+ };
845
848
  DockviewGroupPanelModel.prototype.dispose = function () {
846
849
  var e_2, _a;
847
850
  var _b, _c, _d;