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.
Files changed (145) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +10 -1
  3. package/dist/cjs/api/dockviewGroupPanelApi.js +16 -0
  4. package/dist/cjs/dnd/backend.d.ts +70 -0
  5. package/dist/cjs/dnd/backend.js +171 -0
  6. package/dist/cjs/dnd/dropOverlay.d.ts +20 -0
  7. package/dist/cjs/dnd/dropOverlay.js +197 -0
  8. package/dist/cjs/dnd/droptarget.d.ts +20 -6
  9. package/dist/cjs/dnd/droptarget.js +14 -208
  10. package/dist/cjs/dnd/pointer/index.d.ts +11 -0
  11. package/dist/cjs/dnd/pointer/index.js +13 -0
  12. package/dist/cjs/dnd/pointer/longPress.d.ts +32 -0
  13. package/dist/cjs/dnd/pointer/longPress.js +151 -0
  14. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +60 -0
  15. package/dist/cjs/dnd/pointer/pointerDragController.js +241 -0
  16. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +61 -0
  17. package/dist/cjs/dnd/pointer/pointerDragSource.js +195 -0
  18. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +39 -0
  19. package/dist/cjs/dnd/pointer/pointerDropTarget.js +198 -0
  20. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +30 -0
  21. package/dist/cjs/dnd/pointer/pointerGhost.js +44 -0
  22. package/dist/cjs/dnd/pointer/types.d.ts +16 -0
  23. package/dist/cjs/dnd/pointer/types.js +2 -0
  24. package/dist/cjs/dockview/components/panel/content.d.ts +3 -1
  25. package/dist/cjs/dockview/components/panel/content.js +33 -16
  26. package/dist/cjs/dockview/components/popupService.js +34 -0
  27. package/dist/cjs/dockview/components/tab/tab.d.ts +11 -3
  28. package/dist/cjs/dockview/components/tab/tab.js +151 -117
  29. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +9 -2
  30. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +15 -6
  31. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +2 -2
  32. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +33 -5
  33. package/dist/cjs/dockview/components/titlebar/tabGroups.js +231 -40
  34. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +38 -1
  35. package/dist/cjs/dockview/components/titlebar/tabs.js +381 -253
  36. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +5 -3
  37. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +6 -2
  38. package/dist/cjs/dockview/components/titlebar/voidContainer.js +190 -22
  39. package/dist/cjs/dockview/contextMenu.js +19 -4
  40. package/dist/cjs/dockview/dndCapabilities.d.ts +19 -0
  41. package/dist/cjs/dockview/dndCapabilities.js +39 -0
  42. package/dist/cjs/dockview/dockviewComponent.d.ts +2 -0
  43. package/dist/cjs/dockview/dockviewComponent.js +241 -158
  44. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -5
  45. package/dist/cjs/dockview/dockviewGroupPanelModel.js +34 -11
  46. package/dist/cjs/dockview/dockviewPanel.js +5 -0
  47. package/dist/cjs/dockview/dockviewPanelModel.d.ts +2 -0
  48. package/dist/cjs/dockview/dockviewPanelModel.js +8 -0
  49. package/dist/cjs/dockview/events.d.ts +2 -1
  50. package/dist/cjs/dockview/events.js +1 -0
  51. package/dist/cjs/dockview/framework.d.ts +8 -0
  52. package/dist/cjs/dockview/options.d.ts +31 -5
  53. package/dist/cjs/dockview/options.js +3 -0
  54. package/dist/cjs/dom.d.ts +5 -1
  55. package/dist/cjs/dom.js +21 -5
  56. package/dist/cjs/index.d.ts +1 -1
  57. package/dist/cjs/overlay/overlay.d.ts +12 -0
  58. package/dist/cjs/overlay/overlay.js +84 -16
  59. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
  60. package/dist/cjs/paneview/draggablePaneviewPanel.js +27 -26
  61. package/dist/cjs/paneview/options.d.ts +4 -3
  62. package/dist/cjs/popoutWindow.d.ts +2 -0
  63. package/dist/cjs/popoutWindow.js +3 -1
  64. package/dist/dockview-core.js +2431 -937
  65. package/dist/dockview-core.min.js +2 -2
  66. package/dist/dockview-core.min.js.map +1 -1
  67. package/dist/dockview-core.min.noStyle.js +2 -2
  68. package/dist/dockview-core.min.noStyle.js.map +1 -1
  69. package/dist/dockview-core.noStyle.js +2430 -936
  70. package/dist/esm/api/dockviewGroupPanelApi.d.ts +10 -1
  71. package/dist/esm/api/dockviewGroupPanelApi.js +12 -0
  72. package/dist/esm/dnd/backend.d.ts +70 -0
  73. package/dist/esm/dnd/backend.js +148 -0
  74. package/dist/esm/dnd/dropOverlay.d.ts +20 -0
  75. package/dist/esm/dnd/dropOverlay.js +192 -0
  76. package/dist/esm/dnd/droptarget.d.ts +20 -6
  77. package/dist/esm/dnd/droptarget.js +16 -210
  78. package/dist/esm/dnd/pointer/index.d.ts +11 -0
  79. package/dist/esm/dnd/pointer/index.js +5 -0
  80. package/dist/esm/dnd/pointer/longPress.d.ts +32 -0
  81. package/dist/esm/dnd/pointer/longPress.js +127 -0
  82. package/dist/esm/dnd/pointer/pointerDragController.d.ts +60 -0
  83. package/dist/esm/dnd/pointer/pointerDragController.js +191 -0
  84. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +61 -0
  85. package/dist/esm/dnd/pointer/pointerDragSource.js +171 -0
  86. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +39 -0
  87. package/dist/esm/dnd/pointer/pointerDropTarget.js +168 -0
  88. package/dist/esm/dnd/pointer/pointerGhost.d.ts +30 -0
  89. package/dist/esm/dnd/pointer/pointerGhost.js +39 -0
  90. package/dist/esm/dnd/pointer/types.d.ts +16 -0
  91. package/dist/esm/dnd/pointer/types.js +1 -0
  92. package/dist/esm/dockview/components/panel/content.d.ts +3 -1
  93. package/dist/esm/dockview/components/panel/content.js +33 -16
  94. package/dist/esm/dockview/components/popupService.js +34 -0
  95. package/dist/esm/dockview/components/tab/tab.d.ts +11 -3
  96. package/dist/esm/dockview/components/tab/tab.js +139 -114
  97. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +9 -2
  98. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +15 -6
  99. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +2 -2
  100. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +33 -5
  101. package/dist/esm/dockview/components/titlebar/tabGroups.js +177 -12
  102. package/dist/esm/dockview/components/titlebar/tabs.d.ts +38 -1
  103. package/dist/esm/dockview/components/titlebar/tabs.js +360 -229
  104. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +5 -3
  105. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +6 -2
  106. package/dist/esm/dockview/components/titlebar/voidContainer.js +180 -26
  107. package/dist/esm/dockview/contextMenu.js +19 -4
  108. package/dist/esm/dockview/dndCapabilities.d.ts +19 -0
  109. package/dist/esm/dockview/dndCapabilities.js +36 -0
  110. package/dist/esm/dockview/dockviewComponent.d.ts +2 -0
  111. package/dist/esm/dockview/dockviewComponent.js +104 -41
  112. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -5
  113. package/dist/esm/dockview/dockviewGroupPanelModel.js +33 -11
  114. package/dist/esm/dockview/dockviewPanel.js +5 -0
  115. package/dist/esm/dockview/dockviewPanelModel.d.ts +2 -0
  116. package/dist/esm/dockview/dockviewPanelModel.js +8 -0
  117. package/dist/esm/dockview/events.d.ts +2 -1
  118. package/dist/esm/dockview/events.js +1 -0
  119. package/dist/esm/dockview/framework.d.ts +8 -0
  120. package/dist/esm/dockview/options.d.ts +31 -5
  121. package/dist/esm/dockview/options.js +3 -0
  122. package/dist/esm/dom.d.ts +5 -1
  123. package/dist/esm/dom.js +20 -5
  124. package/dist/esm/index.d.ts +1 -1
  125. package/dist/esm/overlay/overlay.d.ts +12 -0
  126. package/dist/esm/overlay/overlay.js +85 -17
  127. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
  128. package/dist/esm/paneview/draggablePaneviewPanel.js +26 -20
  129. package/dist/esm/paneview/options.d.ts +4 -3
  130. package/dist/esm/popoutWindow.d.ts +2 -0
  131. package/dist/esm/popoutWindow.js +3 -1
  132. package/dist/package/main.cjs.js +2430 -936
  133. package/dist/package/main.cjs.min.js +2 -2
  134. package/dist/package/main.esm.min.mjs +2 -2
  135. package/dist/package/main.esm.mjs +2430 -936
  136. package/dist/styles/dockview.css +117 -1
  137. package/package.json +3 -1
  138. package/dist/cjs/dnd/abstractDragHandler.d.ts +0 -14
  139. package/dist/cjs/dnd/abstractDragHandler.js +0 -86
  140. package/dist/cjs/dnd/groupDragHandler.d.ts +0 -12
  141. package/dist/cjs/dnd/groupDragHandler.js +0 -82
  142. package/dist/esm/dnd/abstractDragHandler.d.ts +0 -14
  143. package/dist/esm/dnd/abstractDragHandler.js +0 -63
  144. package/dist/esm/dnd/groupDragHandler.d.ts +0 -12
  145. package/dist/esm/dnd/groupDragHandler.js +0 -59
@@ -65,6 +65,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
65
65
  exports.DockviewComponent = void 0;
66
66
  var gridview_1 = require("../gridview/gridview");
67
67
  var droptarget_1 = require("../dnd/droptarget");
68
+ var backend_1 = require("../dnd/backend");
68
69
  var array_1 = require("../array");
69
70
  var dockviewPanel_1 = require("./dockviewPanel");
70
71
  var lifecycle_1 = require("../lifecycle");
@@ -121,7 +122,7 @@ function moveGroupWithoutDestroying(options) {
121
122
  var DockviewComponent = /** @class */ (function (_super) {
122
123
  __extends(DockviewComponent, _super);
123
124
  function DockviewComponent(container, options) {
124
- var _a, _b, _c, _d, _e, _f;
125
+ var _a, _b, _c, _d, _e, _f, _g;
125
126
  var _this = _super.call(this, container, {
126
127
  proportionalLayout: true,
127
128
  orientation: splitview_1.Orientation.HORIZONTAL,
@@ -185,6 +186,7 @@ var DockviewComponent = /** @class */ (function (_super) {
185
186
  _this._floatingGroups = [];
186
187
  _this._popoutGroups = [];
187
188
  _this._popoutRestorationPromise = Promise.resolve();
189
+ _this._popoutRestorationCleanups = new Set();
188
190
  _this._onDidRemoveGroup = new events_1.Emitter();
189
191
  _this.onDidRemoveGroup = _this._onDidRemoveGroup.event;
190
192
  _this._onDidAddGroup = new events_1.Emitter();
@@ -219,37 +221,51 @@ var DockviewComponent = /** @class */ (function (_super) {
219
221
  _this._floatingOverlayHost = document.createElement('div');
220
222
  _this._floatingOverlayHost.className = 'dv-floating-overlay-host';
221
223
  _this._shellManager.element.appendChild(_this._floatingOverlayHost);
222
- _this._rootDropTarget = new droptarget_1.Droptarget(_this.element, {
223
- className: 'dv-drop-target-edge',
224
- canDisplayOverlay: function (event, position) {
225
- var data = (0, dataTransfer_1.getPanelData)();
226
- if (data) {
227
- if (data.viewId !== _this.id) {
228
- return false;
229
- }
230
- if (position === 'center') {
231
- // center drop target is only allowed if there are no panels in the grid
232
- // floating panels are allowed
233
- return _this.gridview.length === 0;
234
- }
235
- return true;
236
- }
237
- if (position === 'center' && _this.gridview.length !== 0) {
238
- /**
239
- * for external events only show the four-corner drag overlays, disable
240
- * the center position so that external drag events can fall through to the group
241
- * and panel drop target handlers
242
- */
224
+ var rootCanDisplayOverlay = function (event, position) {
225
+ var data = (0, dataTransfer_1.getPanelData)();
226
+ if (data) {
227
+ if (data.viewId !== _this.id) {
243
228
  return false;
244
229
  }
245
- var firedEvent = new options_1.DockviewUnhandledDragOverEvent(event, 'edge', position, dataTransfer_1.getPanelData);
246
- _this._onUnhandledDragOverEvent.fire(firedEvent);
247
- return firedEvent.isAccepted;
248
- },
230
+ if (position === 'center') {
231
+ // center drop target is only allowed if there are no panels in the grid
232
+ // floating panels are allowed
233
+ return _this.gridview.length === 0;
234
+ }
235
+ return true;
236
+ }
237
+ if (position === 'center' && _this.gridview.length !== 0) {
238
+ /**
239
+ * for external events only show the four-corner drag overlays, disable
240
+ * the center position so that external drag events can fall through to the group
241
+ * and panel drop target handlers
242
+ */
243
+ return false;
244
+ }
245
+ var firedEvent = new options_1.DockviewUnhandledDragOverEvent(event, 'edge', position, dataTransfer_1.getPanelData);
246
+ _this._onUnhandledDragOverEvent.fire(firedEvent);
247
+ return firedEvent.isAccepted;
248
+ };
249
+ _this._rootDropTarget = backend_1.html5Backend.createDropTarget(_this.element, {
250
+ className: 'dv-drop-target-edge',
251
+ canDisplayOverlay: rootCanDisplayOverlay,
249
252
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
250
253
  overlayModel: (_f = options.rootOverlayModel) !== null && _f !== void 0 ? _f : DEFAULT_ROOT_OVERLAY_MODEL,
251
254
  getOverrideTarget: function () { var _a; return (_a = _this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
252
255
  });
256
+ _this._rootPointerDropTarget = backend_1.pointerBackend.createDropTarget(_this.element, {
257
+ className: 'dv-drop-target-edge',
258
+ canDisplayOverlay: rootCanDisplayOverlay,
259
+ acceptedTargetZones: [
260
+ 'top',
261
+ 'bottom',
262
+ 'left',
263
+ 'right',
264
+ 'center',
265
+ ],
266
+ overlayModel: (_g = options.rootOverlayModel) !== null && _g !== void 0 ? _g : DEFAULT_ROOT_OVERLAY_MODEL,
267
+ getOverrideTarget: function () { var _a; return (_a = _this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
268
+ });
253
269
  _this.updateDropTargetModel(options);
254
270
  (0, dom_1.toggleClass)(_this.gridview.element, 'dv-dockview', true);
255
271
  (0, dom_1.toggleClass)(_this.element, 'dv-debug', !!options.debug);
@@ -289,52 +305,70 @@ var DockviewComponent = /** @class */ (function (_super) {
289
305
  }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidAddGroup, _this.onDidRemove, _this.onDidRemoveGroup, _this.onDidMovePanel, _this.onDidActivePanelChange, _this.onDidPopoutGroupPositionChange, _this.onDidPopoutGroupSizeChange, _this.onDidCreateTabGroup, _this.onDidDestroyTabGroup, _this.onDidAddPanelToTabGroup, _this.onDidRemovePanelFromTabGroup, _this.onDidTabGroupChange, _this.onDidTabGroupCollapsedChange)(function () {
290
306
  _this._bufferOnDidLayoutChange.fire();
291
307
  }), lifecycle_1.Disposable.from(function () {
292
- var e_1, _a, e_2, _b, e_3, _c;
293
- var _d;
308
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
309
+ var _e;
294
310
  try {
295
- // iterate over a copy of the array since .dispose() mutates the original array
296
- for (var _e = __values(__spreadArray([], __read(_this._floatingGroups), false)), _f = _e.next(); !_f.done; _f = _e.next()) {
297
- var group = _f.value;
298
- group.dispose();
311
+ // Cancel any pending popout-restoration timers scheduled by
312
+ // fromJSON so they don't open new browser windows after
313
+ // dispose, and resolve their promises so callers awaiting
314
+ // popoutRestorationPromise don't hang. See issue #851.
315
+ for (var _f = __values(__spreadArray([], __read(_this._popoutRestorationCleanups), false)), _g = _f.next(); !_g.done; _g = _f.next()) {
316
+ var cleanup = _g.value;
317
+ cleanup();
299
318
  }
300
319
  }
301
320
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
302
321
  finally {
303
322
  try {
304
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
323
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
305
324
  }
306
325
  finally { if (e_1) throw e_1.error; }
307
326
  }
327
+ _this._popoutRestorationCleanups.clear();
308
328
  try {
309
329
  // iterate over a copy of the array since .dispose() mutates the original array
310
- for (var _g = __values(__spreadArray([], __read(_this._popoutGroups), false)), _h = _g.next(); !_h.done; _h = _g.next()) {
311
- var group = _h.value;
312
- group.disposable.dispose();
330
+ for (var _h = __values(__spreadArray([], __read(_this._floatingGroups), false)), _j = _h.next(); !_j.done; _j = _h.next()) {
331
+ var group = _j.value;
332
+ group.dispose();
313
333
  }
314
334
  }
315
335
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
316
336
  finally {
317
337
  try {
318
- if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
338
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
319
339
  }
320
340
  finally { if (e_2) throw e_2.error; }
321
341
  }
322
- (_d = _this._shellManager) === null || _d === void 0 ? void 0 : _d.dispose();
323
342
  try {
324
- for (var _j = __values(_this._edgeGroupDisposables.values()), _k = _j.next(); !_k.done; _k = _j.next()) {
325
- var d = _k.value;
326
- d.dispose();
343
+ // iterate over a copy of the array since .dispose() mutates the original array
344
+ for (var _k = __values(__spreadArray([], __read(_this._popoutGroups), false)), _l = _k.next(); !_l.done; _l = _k.next()) {
345
+ var group = _l.value;
346
+ group.disposable.dispose();
327
347
  }
328
348
  }
329
349
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
330
350
  finally {
331
351
  try {
332
- if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
352
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
333
353
  }
334
354
  finally { if (e_3) throw e_3.error; }
335
355
  }
356
+ (_e = _this._shellManager) === null || _e === void 0 ? void 0 : _e.dispose();
357
+ try {
358
+ for (var _m = __values(_this._edgeGroupDisposables.values()), _o = _m.next(); !_o.done; _o = _m.next()) {
359
+ var d = _o.value;
360
+ d.dispose();
361
+ }
362
+ }
363
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
364
+ finally {
365
+ try {
366
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
367
+ }
368
+ finally { if (e_4) throw e_4.error; }
369
+ }
336
370
  _this._edgeGroupDisposables.clear();
337
- }), _this._rootDropTarget, _this._rootDropTarget.onWillShowOverlay(function (event) {
371
+ }), _this._rootDropTarget, _this._rootPointerDropTarget, events_1.Event.any(_this._rootDropTarget.onWillShowOverlay, _this._rootPointerDropTarget.onWillShowOverlay)(function (event) {
338
372
  if (_this.gridview.length > 0 && event.position === 'center') {
339
373
  // option only available when no panels in primary grid
340
374
  return;
@@ -346,7 +380,7 @@ var DockviewComponent = /** @class */ (function (_super) {
346
380
  group: undefined,
347
381
  getData: dataTransfer_1.getPanelData,
348
382
  }));
349
- }), _this._rootDropTarget.onDrop(function (event) {
383
+ }), events_1.Event.any(_this._rootDropTarget.onDrop, _this._rootPointerDropTarget.onDrop)(function (event) {
350
384
  var _a;
351
385
  var willDropEvent = new dockviewGroupPanelModel_1.DockviewWillDropEvent({
352
386
  nativeEvent: event.nativeEvent,
@@ -384,7 +418,7 @@ var DockviewComponent = /** @class */ (function (_super) {
384
418
  getData: dataTransfer_1.getPanelData,
385
419
  }));
386
420
  }
387
- }), _this._rootDropTarget);
421
+ }));
388
422
  return _this;
389
423
  }
390
424
  Object.defineProperty(DockviewComponent.prototype, "orientation", {
@@ -509,7 +543,7 @@ var DockviewComponent = /** @class */ (function (_super) {
509
543
  };
510
544
  DockviewComponent.prototype.addPopoutGroup = function (itemToPopout, options) {
511
545
  var _this = this;
512
- var _a, _b, _c, _d, _e;
546
+ var _a, _b, _c, _d, _e, _f;
513
547
  if (itemToPopout instanceof dockviewGroupPanel_1.DockviewGroupPanel &&
514
548
  itemToPopout.model.location.type === 'edge') {
515
549
  // edge groups are permanent structural elements and cannot be popped out
@@ -544,6 +578,7 @@ var DockviewComponent = /** @class */ (function (_super) {
544
578
  height: box.height,
545
579
  onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
546
580
  onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
581
+ nonce: (_f = this.options) === null || _f === void 0 ? void 0 : _f.nonce,
547
582
  });
548
583
  var popoutWindowDisposable = new lifecycle_1.CompositeDisposable(_window, _window.onDidClose(function () {
549
584
  popoutWindowDisposable.dispose();
@@ -978,13 +1013,13 @@ var DockviewComponent = /** @class */ (function (_super) {
978
1013
  }
979
1014
  };
980
1015
  DockviewComponent.prototype.updateOptions = function (options) {
981
- var e_4, _a, e_5, _b, e_6, _c;
982
- var _d, _e, _f;
1016
+ var e_5, _a, e_6, _b, e_7, _c, e_8, _d;
1017
+ var _e, _f, _g, _h, _j;
983
1018
  _super.prototype.updateOptions.call(this, options);
984
1019
  if ('floatingGroupBounds' in options) {
985
1020
  try {
986
- for (var _g = __values(this._floatingGroups), _h = _g.next(); !_h.done; _h = _g.next()) {
987
- var group = _h.value;
1021
+ for (var _k = __values(this._floatingGroups), _l = _k.next(); !_l.done; _l = _k.next()) {
1022
+ var group = _l.value;
988
1023
  switch (options.floatingGroupBounds) {
989
1024
  case 'boundedWithinViewport':
990
1025
  group.overlay.minimumInViewportHeight = undefined;
@@ -998,26 +1033,29 @@ var DockviewComponent = /** @class */ (function (_super) {
998
1033
  break;
999
1034
  default:
1000
1035
  group.overlay.minimumInViewportHeight =
1001
- (_d = options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport;
1036
+ (_e = options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport;
1002
1037
  group.overlay.minimumInViewportWidth =
1003
- (_e = options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumWidthWithinViewport;
1038
+ (_f = options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumWidthWithinViewport;
1004
1039
  }
1005
1040
  group.overlay.setBounds();
1006
1041
  }
1007
1042
  }
1008
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
1043
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
1009
1044
  finally {
1010
1045
  try {
1011
- if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
1046
+ if (_l && !_l.done && (_a = _k.return)) _a.call(_k);
1012
1047
  }
1013
- finally { if (e_4) throw e_4.error; }
1048
+ finally { if (e_5) throw e_5.error; }
1014
1049
  }
1015
1050
  }
1016
1051
  this.updateDropTargetModel(options);
1017
1052
  var oldDisableDnd = this.options.disableDnd;
1053
+ var oldDndStrategy = this.options.dndStrategy;
1018
1054
  this._options = __assign(__assign({}, this.options), options);
1019
1055
  var newDisableDnd = this.options.disableDnd;
1020
- if (oldDisableDnd !== newDisableDnd) {
1056
+ var newDndStrategy = this.options.dndStrategy;
1057
+ if (oldDisableDnd !== newDisableDnd ||
1058
+ oldDndStrategy !== newDndStrategy) {
1021
1059
  this.updateDragAndDropState();
1022
1060
  }
1023
1061
  if ('theme' in options) {
@@ -1027,42 +1065,63 @@ var DockviewComponent = /** @class */ (function (_super) {
1027
1065
  'createLeftHeaderActionComponent' in options ||
1028
1066
  'createPrefixHeaderActionComponent' in options) {
1029
1067
  try {
1030
- for (var _j = __values(this.groups), _k = _j.next(); !_k.done; _k = _j.next()) {
1031
- var group = _k.value;
1068
+ for (var _m = __values(this.groups), _o = _m.next(); !_o.done; _o = _m.next()) {
1069
+ var group = _o.value;
1032
1070
  group.model.updateHeaderActions();
1033
1071
  }
1034
1072
  }
1035
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
1073
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
1036
1074
  finally {
1037
1075
  try {
1038
- if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
1076
+ if (_o && !_o.done && (_b = _m.return)) _b.call(_m);
1039
1077
  }
1040
- finally { if (e_5) throw e_5.error; }
1078
+ finally { if (e_6) throw e_6.error; }
1079
+ }
1080
+ }
1081
+ if ('createWatermarkComponent' in options) {
1082
+ if (this._watermark) {
1083
+ this._watermark.element.parentElement.remove();
1084
+ (_h = (_g = this._watermark).dispose) === null || _h === void 0 ? void 0 : _h.call(_g);
1085
+ this._watermark = null;
1086
+ }
1087
+ this.updateWatermark();
1088
+ try {
1089
+ for (var _p = __values(this.groups), _q = _p.next(); !_q.done; _q = _p.next()) {
1090
+ var group = _q.value;
1091
+ group.model.refreshWatermark();
1092
+ }
1093
+ }
1094
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
1095
+ finally {
1096
+ try {
1097
+ if (_q && !_q.done && (_c = _p.return)) _c.call(_p);
1098
+ }
1099
+ finally { if (e_7) throw e_7.error; }
1041
1100
  }
1042
1101
  }
1043
1102
  if ('tabGroupColors' in options || 'tabGroupAccent' in options) {
1044
- this._tabGroupColorPalette.setEntries((_f = this._options.tabGroupColors) !== null && _f !== void 0 ? _f : tabGroupAccent_1.DEFAULT_TAB_GROUP_COLORS);
1103
+ this._tabGroupColorPalette.setEntries((_j = this._options.tabGroupColors) !== null && _j !== void 0 ? _j : tabGroupAccent_1.DEFAULT_TAB_GROUP_COLORS);
1045
1104
  this._tabGroupColorPalette.enabled =
1046
1105
  this._options.tabGroupAccent !== 'off';
1047
1106
  try {
1048
- for (var _l = __values(this.groups), _m = _l.next(); !_m.done; _m = _l.next()) {
1049
- var group = _m.value;
1107
+ for (var _r = __values(this.groups), _s = _r.next(); !_s.done; _s = _r.next()) {
1108
+ var group = _s.value;
1050
1109
  group.model.refreshTabGroupAccent();
1051
1110
  }
1052
1111
  }
1053
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
1112
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
1054
1113
  finally {
1055
1114
  try {
1056
- if (_m && !_m.done && (_c = _l.return)) _c.call(_l);
1115
+ if (_s && !_s.done && (_d = _r.return)) _d.call(_r);
1057
1116
  }
1058
- finally { if (e_6) throw e_6.error; }
1117
+ finally { if (e_8) throw e_8.error; }
1059
1118
  }
1060
1119
  }
1061
1120
  this._onDidOptionsChange.fire();
1062
1121
  this._layoutFromShell(this.gridview.width, this.gridview.height);
1063
1122
  };
1064
1123
  DockviewComponent.prototype.layout = function (width, height, forceResize) {
1065
- var e_7, _a;
1124
+ var e_9, _a;
1066
1125
  if (this._shellManager && !this._inShellLayout) {
1067
1126
  this._shellManager.layout(width, height);
1068
1127
  }
@@ -1078,12 +1137,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1078
1137
  floating.overlay.setBounds();
1079
1138
  }
1080
1139
  }
1081
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
1140
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1082
1141
  finally {
1083
1142
  try {
1084
1143
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1085
1144
  }
1086
- finally { if (e_7) throw e_7.error; }
1145
+ finally { if (e_9) throw e_9.error; }
1087
1146
  }
1088
1147
  }
1089
1148
  };
@@ -1143,7 +1202,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1143
1202
  return this._shellManager.isEdgeGroupVisible(position);
1144
1203
  };
1145
1204
  DockviewComponent.prototype.removeEdgeGroup = function (position) {
1146
- var e_8, _a;
1205
+ var e_10, _a;
1147
1206
  var _b;
1148
1207
  var group = this._edgeGroups.get(position);
1149
1208
  if (!group) {
@@ -1159,12 +1218,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1159
1218
  });
1160
1219
  }
1161
1220
  }
1162
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
1221
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1163
1222
  finally {
1164
1223
  try {
1165
1224
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
1166
1225
  }
1167
- finally { if (e_8) throw e_8.error; }
1226
+ finally { if (e_10) throw e_10.error; }
1168
1227
  }
1169
1228
  // Dispose the auto-collapse listener
1170
1229
  (_b = this._edgeGroupDisposables.get(position)) === null || _b === void 0 ? void 0 : _b.dispose();
@@ -1178,7 +1237,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1178
1237
  this._onDidRemoveGroup.fire(group);
1179
1238
  };
1180
1239
  DockviewComponent.prototype.setEdgeGroupCollapsed = function (group, collapsed) {
1181
- var e_9, _a;
1240
+ var e_11, _a;
1182
1241
  try {
1183
1242
  for (var _b = __values(this._edgeGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
1184
1243
  var _d = __read(_c.value, 2), position = _d[0], edgeGroup = _d[1];
@@ -1198,16 +1257,16 @@ var DockviewComponent = /** @class */ (function (_super) {
1198
1257
  }
1199
1258
  }
1200
1259
  }
1201
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
1260
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
1202
1261
  finally {
1203
1262
  try {
1204
1263
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1205
1264
  }
1206
- finally { if (e_9) throw e_9.error; }
1265
+ finally { if (e_11) throw e_11.error; }
1207
1266
  }
1208
1267
  };
1209
1268
  DockviewComponent.prototype.isEdgeGroupCollapsed = function (group) {
1210
- var e_10, _a;
1269
+ var e_12, _a;
1211
1270
  try {
1212
1271
  for (var _b = __values(this._edgeGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
1213
1272
  var _d = __read(_c.value, 2), position = _d[0], edgeGroup = _d[1];
@@ -1216,17 +1275,17 @@ var DockviewComponent = /** @class */ (function (_super) {
1216
1275
  }
1217
1276
  }
1218
1277
  }
1219
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
1278
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
1220
1279
  finally {
1221
1280
  try {
1222
1281
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1223
1282
  }
1224
- finally { if (e_10) throw e_10.error; }
1283
+ finally { if (e_12) throw e_12.error; }
1225
1284
  }
1226
1285
  return false;
1227
1286
  };
1228
1287
  DockviewComponent.prototype.updateDragAndDropState = function () {
1229
- var e_11, _a;
1288
+ var e_13, _a;
1230
1289
  try {
1231
1290
  // Update draggable state for all tabs and void containers
1232
1291
  for (var _b = __values(this.groups), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -1234,12 +1293,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1234
1293
  group.model.updateDragAndDropState();
1235
1294
  }
1236
1295
  }
1237
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
1296
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
1238
1297
  finally {
1239
1298
  try {
1240
1299
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1241
1300
  }
1242
- finally { if (e_11) throw e_11.error; }
1301
+ finally { if (e_13) throw e_13.error; }
1243
1302
  }
1244
1303
  };
1245
1304
  DockviewComponent.prototype.focus = function () {
@@ -1300,7 +1359,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1300
1359
  * @returns A JSON respresentation of the layout
1301
1360
  */
1302
1361
  DockviewComponent.prototype.toJSON = function () {
1303
- var e_12, _a;
1362
+ var e_14, _a;
1304
1363
  var _b;
1305
1364
  var data = this.gridview.serialize();
1306
1365
  var panels = this.panels.reduce(function (collection, panel) {
@@ -1346,19 +1405,19 @@ var DockviewComponent = /** @class */ (function (_super) {
1346
1405
  }
1347
1406
  }
1348
1407
  }
1349
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
1408
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
1350
1409
  finally {
1351
1410
  try {
1352
1411
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
1353
1412
  }
1354
- finally { if (e_12) throw e_12.error; }
1413
+ finally { if (e_14) throw e_14.error; }
1355
1414
  }
1356
1415
  result.edgeGroups = shellSerialized;
1357
1416
  }
1358
1417
  return result;
1359
1418
  };
1360
1419
  DockviewComponent.prototype.fromJSON = function (data, options) {
1361
- var e_13, _a, e_14, _b, e_15, _c, e_16, _d, e_17, _e, e_18, _f, e_19, _g, e_20, _h, e_21, _j, e_22, _k;
1420
+ var e_15, _a, e_16, _b, e_17, _c, e_18, _d, e_19, _e, e_20, _f, e_21, _g, e_22, _h, e_23, _j, e_24, _k;
1362
1421
  var _this = this;
1363
1422
  var _l, _m, _o;
1364
1423
  var existingPanels = new Map();
@@ -1381,12 +1440,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1381
1440
  }
1382
1441
  }
1383
1442
  }
1384
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1443
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
1385
1444
  finally {
1386
1445
  try {
1387
1446
  if (_q && !_q.done && (_a = _p.return)) _a.call(_p);
1388
1447
  }
1389
- finally { if (e_13) throw e_13.error; }
1448
+ finally { if (e_15) throw e_15.error; }
1390
1449
  }
1391
1450
  this.movingLock(function () {
1392
1451
  Array.from(existingPanels.values()).forEach(function (panel) {
@@ -1417,7 +1476,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1417
1476
  var width = this.width;
1418
1477
  var height = this.height;
1419
1478
  var createGroupFromSerializedState_1 = function (data) {
1420
- var e_23, _a;
1479
+ var e_25, _a;
1421
1480
  var id = data.id, locked = data.locked, hideHeader = data.hideHeader, headerPosition = data.headerPosition, views = data.views, activeView = data.activeView;
1422
1481
  if (typeof id !== 'string') {
1423
1482
  throw new Error('dockview: group id must be of type string');
@@ -1455,12 +1514,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1455
1514
  _loop_1(child);
1456
1515
  }
1457
1516
  }
1458
- catch (e_23_1) { e_23 = { error: e_23_1 }; }
1517
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
1459
1518
  finally {
1460
1519
  try {
1461
1520
  if (views_2_1 && !views_2_1.done && (_a = views_2.return)) _a.call(views_2);
1462
1521
  }
1463
- finally { if (e_23) throw e_23.error; }
1522
+ finally { if (e_25) throw e_25.error; }
1464
1523
  }
1465
1524
  var _loop_2 = function (i) {
1466
1525
  var panel = createdPanels[i];
@@ -1523,12 +1582,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1523
1582
  }
1524
1583
  }
1525
1584
  }
1526
- catch (e_14_1) { e_14 = { error: e_14_1 }; }
1585
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
1527
1586
  finally {
1528
1587
  try {
1529
1588
  if (_s && !_s.done && (_b = _r.return)) _b.call(_r);
1530
1589
  }
1531
- finally { if (e_14) throw e_14.error; }
1590
+ finally { if (e_16) throw e_16.error; }
1532
1591
  }
1533
1592
  try {
1534
1593
  // Restore panel contents of edge groups
@@ -1540,7 +1599,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1540
1599
  var views = groupState.views, activeView = groupState.activeView;
1541
1600
  var createdPanels = [];
1542
1601
  try {
1543
- for (var views_1 = (e_16 = void 0, __values(views)), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
1602
+ for (var views_1 = (e_18 = void 0, __values(views)), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
1544
1603
  var panelId = views_1_1.value;
1545
1604
  if (panels[panelId]) {
1546
1605
  var panel = this._deserializer.fromJSON(panels[panelId], edgeGroup);
@@ -1548,12 +1607,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1548
1607
  }
1549
1608
  }
1550
1609
  }
1551
- catch (e_16_1) { e_16 = { error: e_16_1 }; }
1610
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
1552
1611
  finally {
1553
1612
  try {
1554
1613
  if (views_1_1 && !views_1_1.done && (_d = views_1.return)) _d.call(views_1);
1555
1614
  }
1556
- finally { if (e_16) throw e_16.error; }
1615
+ finally { if (e_18) throw e_18.error; }
1557
1616
  }
1558
1617
  for (var i = 0; i < createdPanels.length; i++) {
1559
1618
  var panel = createdPanels[i];
@@ -1575,12 +1634,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1575
1634
  }
1576
1635
  }
1577
1636
  }
1578
- catch (e_15_1) { e_15 = { error: e_15_1 }; }
1637
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
1579
1638
  finally {
1580
1639
  try {
1581
1640
  if (_u && !_u.done && (_c = _t.return)) _c.call(_t);
1582
1641
  }
1583
- finally { if (e_15) throw e_15.error; }
1642
+ finally { if (e_17) throw e_17.error; }
1584
1643
  }
1585
1644
  this._shellManager.fromJSON(data.edgeGroups);
1586
1645
  }
@@ -1599,12 +1658,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1599
1658
  });
1600
1659
  }
1601
1660
  }
1602
- catch (e_17_1) { e_17 = { error: e_17_1 }; }
1661
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
1603
1662
  finally {
1604
1663
  try {
1605
1664
  if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_e = serializedFloatingGroups_1.return)) _e.call(serializedFloatingGroups_1);
1606
1665
  }
1607
- finally { if (e_17) throw e_17.error; }
1666
+ finally { if (e_19) throw e_19.error; }
1608
1667
  }
1609
1668
  var serializedPopoutGroups = (_o = data.popoutGroups) !== null && _o !== void 0 ? _o : [];
1610
1669
  // Create a promise that resolves when all popout groups are created
@@ -1615,7 +1674,23 @@ var DockviewComponent = /** @class */ (function (_super) {
1615
1674
  var group = createGroupFromSerializedState_1(data);
1616
1675
  // Add a small delay for each popup after the first to avoid browser popup blocking
1617
1676
  var popoutPromise = new Promise(function (resolve) {
1618
- setTimeout(function () {
1677
+ var cleanup = function () {
1678
+ _this._popoutRestorationCleanups.delete(cleanup);
1679
+ clearTimeout(handle);
1680
+ resolve();
1681
+ };
1682
+ var handle = setTimeout(function () {
1683
+ _this._popoutRestorationCleanups.delete(cleanup);
1684
+ // Guard against the component being disposed before
1685
+ // this timer fires. Under React StrictMode the
1686
+ // component is mounted -> disposed -> remounted, and
1687
+ // without this guard the first instance's queued
1688
+ // restoration would open a second popout window.
1689
+ // See issue #851.
1690
+ if (_this.isDisposed) {
1691
+ resolve();
1692
+ return;
1693
+ }
1619
1694
  _this.addPopoutGroup(group, {
1620
1695
  position: position !== null && position !== void 0 ? position : undefined,
1621
1696
  overridePopoutGroup: gridReferenceGroup
@@ -1628,6 +1703,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1628
1703
  });
1629
1704
  resolve();
1630
1705
  }, index * constants_1.DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup
1706
+ _this._popoutRestorationCleanups.add(cleanup);
1631
1707
  });
1632
1708
  popoutPromises_1.push(popoutPromise);
1633
1709
  });
@@ -1639,12 +1715,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1639
1715
  floatingGroup.overlay.setBounds();
1640
1716
  }
1641
1717
  }
1642
- catch (e_18_1) { e_18 = { error: e_18_1 }; }
1718
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
1643
1719
  finally {
1644
1720
  try {
1645
1721
  if (_x && !_x.done && (_f = _w.return)) _f.call(_w);
1646
1722
  }
1647
- finally { if (e_18) throw e_18.error; }
1723
+ finally { if (e_20) throw e_20.error; }
1648
1724
  }
1649
1725
  if (typeof activeGroup === 'string') {
1650
1726
  var panel = this.getPanel(activeGroup);
@@ -1662,7 +1738,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1662
1738
  for (var _y = __values(this.groups), _z = _y.next(); !_z.done; _z = _y.next()) {
1663
1739
  var group = _z.value;
1664
1740
  try {
1665
- for (var _0 = (e_20 = void 0, __values(group.panels)), _1 = _0.next(); !_1.done; _1 = _0.next()) {
1741
+ for (var _0 = (e_22 = void 0, __values(group.panels)), _1 = _0.next(); !_1.done; _1 = _0.next()) {
1666
1742
  var panel = _1.value;
1667
1743
  this.removePanel(panel, {
1668
1744
  removeEmptyGroup: false,
@@ -1670,21 +1746,21 @@ var DockviewComponent = /** @class */ (function (_super) {
1670
1746
  });
1671
1747
  }
1672
1748
  }
1673
- catch (e_20_1) { e_20 = { error: e_20_1 }; }
1749
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
1674
1750
  finally {
1675
1751
  try {
1676
1752
  if (_1 && !_1.done && (_h = _0.return)) _h.call(_0);
1677
1753
  }
1678
- finally { if (e_20) throw e_20.error; }
1754
+ finally { if (e_22) throw e_22.error; }
1679
1755
  }
1680
1756
  }
1681
1757
  }
1682
- catch (e_19_1) { e_19 = { error: e_19_1 }; }
1758
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
1683
1759
  finally {
1684
1760
  try {
1685
1761
  if (_z && !_z.done && (_g = _y.return)) _g.call(_y);
1686
1762
  }
1687
- finally { if (e_19) throw e_19.error; }
1763
+ finally { if (e_21) throw e_21.error; }
1688
1764
  }
1689
1765
  try {
1690
1766
  /**
@@ -1698,12 +1774,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1698
1774
  this._onDidRemoveGroup.fire(group);
1699
1775
  }
1700
1776
  }
1701
- catch (e_21_1) { e_21 = { error: e_21_1 }; }
1777
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
1702
1778
  finally {
1703
1779
  try {
1704
1780
  if (_3 && !_3.done && (_j = _2.return)) _j.call(_2);
1705
1781
  }
1706
- finally { if (e_21) throw e_21.error; }
1782
+ finally { if (e_23) throw e_23.error; }
1707
1783
  }
1708
1784
  try {
1709
1785
  // iterate over a reassigned array since original array will be modified
@@ -1712,12 +1788,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1712
1788
  floatingGroup.dispose();
1713
1789
  }
1714
1790
  }
1715
- catch (e_22_1) { e_22 = { error: e_22_1 }; }
1791
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
1716
1792
  finally {
1717
1793
  try {
1718
1794
  if (_5 && !_5.done && (_k = _4.return)) _k.call(_4);
1719
1795
  }
1720
- finally { if (e_22) throw e_22.error; }
1796
+ finally { if (e_24) throw e_24.error; }
1721
1797
  }
1722
1798
  // fires clean-up events and clears the underlying HTML gridview.
1723
1799
  this.clear();
@@ -1734,7 +1810,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1734
1810
  this._onDidLayoutFromJSON.fire();
1735
1811
  };
1736
1812
  DockviewComponent.prototype.clear = function () {
1737
- var e_24, _a, e_25, _b;
1813
+ var e_26, _a, e_27, _b;
1738
1814
  var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
1739
1815
  var hasActiveGroup = !!this.activeGroup;
1740
1816
  try {
@@ -1744,17 +1820,17 @@ var DockviewComponent = /** @class */ (function (_super) {
1744
1820
  // Edge groups are structural - only clear their panels, not the group itself
1745
1821
  var panels = __spreadArray([], __read(group.panels), false);
1746
1822
  try {
1747
- for (var panels_1 = (e_25 = void 0, __values(panels)), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
1823
+ for (var panels_1 = (e_27 = void 0, __values(panels)), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
1748
1824
  var panel = panels_1_1.value;
1749
1825
  this.removePanel(panel, { removeEmptyGroup: false });
1750
1826
  }
1751
1827
  }
1752
- catch (e_25_1) { e_25 = { error: e_25_1 }; }
1828
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
1753
1829
  finally {
1754
1830
  try {
1755
1831
  if (panels_1_1 && !panels_1_1.done && (_b = panels_1.return)) _b.call(panels_1);
1756
1832
  }
1757
- finally { if (e_25) throw e_25.error; }
1833
+ finally { if (e_27) throw e_27.error; }
1758
1834
  }
1759
1835
  continue;
1760
1836
  }
@@ -1762,12 +1838,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1762
1838
  this.removeGroup(group, { skipActive: true });
1763
1839
  }
1764
1840
  }
1765
- catch (e_24_1) { e_24 = { error: e_24_1 }; }
1841
+ catch (e_26_1) { e_26 = { error: e_26_1 }; }
1766
1842
  finally {
1767
1843
  try {
1768
1844
  if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
1769
1845
  }
1770
- finally { if (e_24) throw e_24.error; }
1846
+ finally { if (e_26) throw e_26.error; }
1771
1847
  }
1772
1848
  if (hasActiveGroup) {
1773
1849
  this.doSetGroupAndPanelActive(undefined);
@@ -1775,7 +1851,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1775
1851
  this.gridview.clear();
1776
1852
  };
1777
1853
  DockviewComponent.prototype.closeAllGroups = function () {
1778
- var e_26, _a;
1854
+ var e_28, _a;
1779
1855
  try {
1780
1856
  for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
1781
1857
  var entry = _c.value;
@@ -1783,12 +1859,12 @@ var DockviewComponent = /** @class */ (function (_super) {
1783
1859
  group.value.model.closeAllPanels();
1784
1860
  }
1785
1861
  }
1786
- catch (e_26_1) { e_26 = { error: e_26_1 }; }
1862
+ catch (e_28_1) { e_28 = { error: e_28_1 }; }
1787
1863
  finally {
1788
1864
  try {
1789
1865
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1790
1866
  }
1791
- finally { if (e_26) throw e_26.error; }
1867
+ finally { if (e_28) throw e_28.error; }
1792
1868
  }
1793
1869
  };
1794
1870
  DockviewComponent.prototype.addPanel = function (options) {
@@ -2040,7 +2116,7 @@ var DockviewComponent = /** @class */ (function (_super) {
2040
2116
  this.doRemoveGroup(group, options);
2041
2117
  };
2042
2118
  DockviewComponent.prototype.doRemoveGroup = function (group, options) {
2043
- var e_27, _a;
2119
+ var e_29, _a;
2044
2120
  var _b;
2045
2121
  // Edge groups are permanent structural elements - never remove them from the layout
2046
2122
  if (__spreadArray([], __read(this._edgeGroups.values()), false).includes(group)) {
@@ -2057,12 +2133,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2057
2133
  });
2058
2134
  }
2059
2135
  }
2060
- catch (e_27_1) { e_27 = { error: e_27_1 }; }
2136
+ catch (e_29_1) { e_29 = { error: e_29_1 }; }
2061
2137
  finally {
2062
2138
  try {
2063
2139
  if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
2064
2140
  }
2065
- finally { if (e_27) throw e_27.error; }
2141
+ finally { if (e_29) throw e_29.error; }
2066
2142
  }
2067
2143
  }
2068
2144
  var activePanel = this.activePanel;
@@ -2256,8 +2332,11 @@ var DockviewComponent = /** @class */ (function (_super) {
2256
2332
  * the source group is a popout group with a single panel
2257
2333
  *
2258
2334
  * 1. remove the panel from the group without triggering any events
2259
- * 2. remove the popout group
2260
- * 3. create a new group at the requested location and add that panel
2335
+ * 2. remove the popout group — this may cascade-remove the empty
2336
+ * reference group it left behind in the main grid (see
2337
+ * doRemoveGroup for popout groups), which can shift grid indices
2338
+ * 3. recompute the target location now that the grid is stable
2339
+ * 4. create a new group at the recomputed location and add that panel
2261
2340
  */
2262
2341
  var popoutGroup_1 = this._popoutGroups.find(function (group) { return group.popoutGroup === sourceGroup; });
2263
2342
  var removedPanel_2 = this.movingLock(function () {
@@ -2267,7 +2346,8 @@ var DockviewComponent = /** @class */ (function (_super) {
2267
2346
  });
2268
2347
  });
2269
2348
  this.doRemoveGroup(sourceGroup, { skipActive: true });
2270
- var newGroup_1 = this.createGroupAtLocation(targetLocation);
2349
+ var updatedTargetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, (0, gridview_1.getGridLocation)(destinationGroup.element), destinationTarget);
2350
+ var newGroup_1 = this.createGroupAtLocation(updatedTargetLocation);
2271
2351
  this.movingLock(function () {
2272
2352
  return newGroup_1.model.openPanel(removedPanel_2, {
2273
2353
  skipSetActive: true,
@@ -2390,9 +2470,9 @@ var DockviewComponent = /** @class */ (function (_super) {
2390
2470
  return;
2391
2471
  }
2392
2472
  var addPanelsToGroup = function (targetGroup) {
2393
- var e_28, _a, e_29, _b;
2473
+ var e_30, _a, e_31, _b;
2394
2474
  _this.movingLock(function () {
2395
- var e_30, _a;
2475
+ var e_32, _a;
2396
2476
  try {
2397
2477
  for (var removedPanels_3 = __values(removedPanels), removedPanels_3_1 = removedPanels_3.next(); !removedPanels_3_1.done; removedPanels_3_1 = removedPanels_3.next()) {
2398
2478
  var panel = removedPanels_3_1.value;
@@ -2403,12 +2483,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2403
2483
  });
2404
2484
  }
2405
2485
  }
2406
- catch (e_30_1) { e_30 = { error: e_30_1 }; }
2486
+ catch (e_32_1) { e_32 = { error: e_32_1 }; }
2407
2487
  finally {
2408
2488
  try {
2409
2489
  if (removedPanels_3_1 && !removedPanels_3_1.done && (_a = removedPanels_3.return)) _a.call(removedPanels_3);
2410
2490
  }
2411
- finally { if (e_30) throw e_30.error; }
2491
+ finally { if (e_32) throw e_32.error; }
2412
2492
  }
2413
2493
  });
2414
2494
  // Recreate the tab group in the destination
@@ -2424,12 +2504,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2424
2504
  targetGroup.model.addPanelToTabGroup(newTabGroup.id, panel.id);
2425
2505
  }
2426
2506
  }
2427
- catch (e_28_1) { e_28 = { error: e_28_1 }; }
2507
+ catch (e_30_1) { e_30 = { error: e_30_1 }; }
2428
2508
  finally {
2429
2509
  try {
2430
2510
  if (removedPanels_1_1 && !removedPanels_1_1.done && (_a = removedPanels_1.return)) _a.call(removedPanels_1);
2431
2511
  }
2432
- finally { if (e_28) throw e_28.error; }
2512
+ finally { if (e_30) throw e_30.error; }
2433
2513
  }
2434
2514
  if (!options.skipSetActive) {
2435
2515
  _this.doSetGroupAndPanelActive(targetGroup);
@@ -2443,12 +2523,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2443
2523
  });
2444
2524
  }
2445
2525
  }
2446
- catch (e_29_1) { e_29 = { error: e_29_1 }; }
2526
+ catch (e_31_1) { e_31 = { error: e_31_1 }; }
2447
2527
  finally {
2448
2528
  try {
2449
2529
  if (removedPanels_2_1 && !removedPanels_2_1.done && (_b = removedPanels_2.return)) _b.call(removedPanels_2);
2450
2530
  }
2451
- finally { if (e_29) throw e_29.error; }
2531
+ finally { if (e_31) throw e_31.error; }
2452
2532
  }
2453
2533
  };
2454
2534
  var targetGroup;
@@ -2474,7 +2554,7 @@ var DockviewComponent = /** @class */ (function (_super) {
2474
2554
  addPanelsToGroup(targetGroup);
2475
2555
  };
2476
2556
  DockviewComponent.prototype.moveGroup = function (options) {
2477
- var e_31, _a, e_32, _b, e_33, _c, e_34, _d;
2557
+ var e_33, _a, e_34, _b, e_35, _c, e_36, _d;
2478
2558
  var _this = this;
2479
2559
  var from = options.from.group;
2480
2560
  var to = options.to.group;
@@ -2506,7 +2586,7 @@ var DockviewComponent = /** @class */ (function (_super) {
2506
2586
  this.doRemoveGroup(from, { skipActive: true });
2507
2587
  }
2508
2588
  this.movingLock(function () {
2509
- var e_35, _a;
2589
+ var e_37, _a;
2510
2590
  try {
2511
2591
  for (var panels_4 = __values(panels_3), panels_4_1 = panels_4.next(); !panels_4_1.done; panels_4_1 = panels_4.next()) {
2512
2592
  var panel = panels_4_1.value;
@@ -2516,12 +2596,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2516
2596
  });
2517
2597
  }
2518
2598
  }
2519
- catch (e_35_1) { e_35 = { error: e_35_1 }; }
2599
+ catch (e_37_1) { e_37 = { error: e_37_1 }; }
2520
2600
  finally {
2521
2601
  try {
2522
2602
  if (panels_4_1 && !panels_4_1.done && (_a = panels_4.return)) _a.call(panels_4);
2523
2603
  }
2524
- finally { if (e_35) throw e_35.error; }
2604
+ finally { if (e_37) throw e_37.error; }
2525
2605
  }
2526
2606
  });
2527
2607
  try {
@@ -2534,26 +2614,26 @@ var DockviewComponent = /** @class */ (function (_super) {
2534
2614
  componentParams: snapshot.componentParams,
2535
2615
  });
2536
2616
  try {
2537
- for (var _e = (e_32 = void 0, __values(snapshot.panelIds)), _f = _e.next(); !_f.done; _f = _e.next()) {
2617
+ for (var _e = (e_34 = void 0, __values(snapshot.panelIds)), _f = _e.next(); !_f.done; _f = _e.next()) {
2538
2618
  var panelId = _f.value;
2539
2619
  to.model.addPanelToTabGroup(newTabGroup.id, panelId);
2540
2620
  }
2541
2621
  }
2542
- catch (e_32_1) { e_32 = { error: e_32_1 }; }
2622
+ catch (e_34_1) { e_34 = { error: e_34_1 }; }
2543
2623
  finally {
2544
2624
  try {
2545
2625
  if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
2546
2626
  }
2547
- finally { if (e_32) throw e_32.error; }
2627
+ finally { if (e_34) throw e_34.error; }
2548
2628
  }
2549
2629
  }
2550
2630
  }
2551
- catch (e_31_1) { e_31 = { error: e_31_1 }; }
2631
+ catch (e_33_1) { e_33 = { error: e_33_1 }; }
2552
2632
  finally {
2553
2633
  try {
2554
2634
  if (tabGroupSnapshots_1_1 && !tabGroupSnapshots_1_1.done && (_a = tabGroupSnapshots_1.return)) _a.call(tabGroupSnapshots_1);
2555
2635
  }
2556
- finally { if (e_31) throw e_31.error; }
2636
+ finally { if (e_33) throw e_33.error; }
2557
2637
  }
2558
2638
  // Ensure group becomes active after move
2559
2639
  if (options.skipSetActive !== true) {
@@ -2596,7 +2676,7 @@ var DockviewComponent = /** @class */ (function (_super) {
2596
2676
  });
2597
2677
  source = this.createGroup();
2598
2678
  this.movingLock(function () {
2599
- var e_36, _a;
2679
+ var e_38, _a;
2600
2680
  try {
2601
2681
  for (var movedPanels_2 = __values(movedPanels_1), movedPanels_2_1 = movedPanels_2.next(); !movedPanels_2_1.done; movedPanels_2_1 = movedPanels_2.next()) {
2602
2682
  var panel = movedPanels_2_1.value;
@@ -2606,12 +2686,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2606
2686
  });
2607
2687
  }
2608
2688
  }
2609
- catch (e_36_1) { e_36 = { error: e_36_1 }; }
2689
+ catch (e_38_1) { e_38 = { error: e_38_1 }; }
2610
2690
  finally {
2611
2691
  try {
2612
2692
  if (movedPanels_2_1 && !movedPanels_2_1.done && (_a = movedPanels_2.return)) _a.call(movedPanels_2);
2613
2693
  }
2614
- finally { if (e_36) throw e_36.error; }
2694
+ finally { if (e_38) throw e_38.error; }
2615
2695
  }
2616
2696
  });
2617
2697
  try {
@@ -2624,26 +2704,26 @@ var DockviewComponent = /** @class */ (function (_super) {
2624
2704
  componentParams: snapshot.componentParams,
2625
2705
  });
2626
2706
  try {
2627
- for (var _g = (e_34 = void 0, __values(snapshot.panelIds)), _h = _g.next(); !_h.done; _h = _g.next()) {
2707
+ for (var _g = (e_36 = void 0, __values(snapshot.panelIds)), _h = _g.next(); !_h.done; _h = _g.next()) {
2628
2708
  var panelId = _h.value;
2629
2709
  source.model.addPanelToTabGroup(newTabGroup.id, panelId);
2630
2710
  }
2631
2711
  }
2632
- catch (e_34_1) { e_34 = { error: e_34_1 }; }
2712
+ catch (e_36_1) { e_36 = { error: e_36_1 }; }
2633
2713
  finally {
2634
2714
  try {
2635
2715
  if (_h && !_h.done && (_d = _g.return)) _d.call(_g);
2636
2716
  }
2637
- finally { if (e_34) throw e_34.error; }
2717
+ finally { if (e_36) throw e_36.error; }
2638
2718
  }
2639
2719
  }
2640
2720
  }
2641
- catch (e_33_1) { e_33 = { error: e_33_1 }; }
2721
+ catch (e_35_1) { e_35 = { error: e_35_1 }; }
2642
2722
  finally {
2643
2723
  try {
2644
2724
  if (tabGroupSnapshots_2_1 && !tabGroupSnapshots_2_1.done && (_c = tabGroupSnapshots_2.return)) _c.call(tabGroupSnapshots_2);
2645
2725
  }
2646
- finally { if (e_33) throw e_33.error; }
2726
+ finally { if (e_35) throw e_35.error; }
2647
2727
  }
2648
2728
  }
2649
2729
  else {
@@ -2931,15 +3011,18 @@ var DockviewComponent = /** @class */ (function (_super) {
2931
3011
  };
2932
3012
  DockviewComponent.prototype.updateDropTargetModel = function (options) {
2933
3013
  if ('dndEdges' in options) {
2934
- this._rootDropTarget.disabled =
2935
- typeof options.dndEdges === 'boolean' &&
2936
- options.dndEdges === false;
3014
+ var disabled = typeof options.dndEdges === 'boolean' &&
3015
+ options.dndEdges === false;
3016
+ this._rootDropTarget.disabled = disabled;
3017
+ this._rootPointerDropTarget.disabled = disabled;
2937
3018
  if (typeof options.dndEdges === 'object' &&
2938
3019
  options.dndEdges !== null) {
2939
3020
  this._rootDropTarget.setOverlayModel(options.dndEdges);
3021
+ this._rootPointerDropTarget.setOverlayModel(options.dndEdges);
2940
3022
  }
2941
3023
  else {
2942
3024
  this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
3025
+ this._rootPointerDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
2943
3026
  }
2944
3027
  }
2945
3028
  if ('rootOverlayModel' in options) {
@@ -2947,7 +3030,7 @@ var DockviewComponent = /** @class */ (function (_super) {
2947
3030
  }
2948
3031
  };
2949
3032
  DockviewComponent.prototype.updateTheme = function () {
2950
- var e_37, _a;
3033
+ var e_39, _a;
2951
3034
  var _b, _c, _d, _e, _f, _g, _h, _j, _k;
2952
3035
  var theme = (_b = this._options.theme) !== null && _b !== void 0 ? _b : theme_1.themeAbyss;
2953
3036
  // Apply the theme class only to the shell so edge groups and the
@@ -2988,12 +3071,12 @@ var DockviewComponent = /** @class */ (function (_super) {
2988
3071
  group.model.updateTabGroups();
2989
3072
  }
2990
3073
  }
2991
- catch (e_37_1) { e_37 = { error: e_37_1 }; }
3074
+ catch (e_39_1) { e_39 = { error: e_39_1 }; }
2992
3075
  finally {
2993
3076
  try {
2994
3077
  if (_m && !_m.done && (_a = _l.return)) _a.call(_l);
2995
3078
  }
2996
- finally { if (e_37) throw e_37.error; }
3079
+ finally { if (e_39) throw e_39.error; }
2997
3080
  }
2998
3081
  };
2999
3082
  return DockviewComponent;