dockview-core 4.0.1 → 4.2.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 (66) hide show
  1. package/dist/cjs/api/component.api.d.ts +3 -1
  2. package/dist/cjs/api/component.api.js +14 -0
  3. package/dist/cjs/dockview/components/popupService.js +1 -1
  4. package/dist/cjs/dockview/components/titlebar/tabs.js +9 -3
  5. package/dist/cjs/dockview/dockviewComponent.d.ts +16 -0
  6. package/dist/cjs/dockview/dockviewComponent.js +27 -10
  7. package/dist/cjs/dockview/options.d.ts +7 -0
  8. package/dist/cjs/dockview/options.js +1 -0
  9. package/dist/cjs/dom.d.ts +6 -4
  10. package/dist/cjs/dom.js +90 -49
  11. package/dist/cjs/events.d.ts +1 -1
  12. package/dist/cjs/events.js +1 -10
  13. package/dist/cjs/overlay/overlay.js +4 -4
  14. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +13 -2
  15. package/dist/cjs/paneview/draggablePaneviewPanel.js +14 -4
  16. package/dist/cjs/paneview/paneviewComponent.d.ts +5 -0
  17. package/dist/cjs/paneview/paneviewComponent.js +25 -3
  18. package/dist/cjs/paneview/paneviewPanel.d.ts +13 -4
  19. package/dist/cjs/paneview/paneviewPanel.js +9 -13
  20. package/dist/cjs/popoutWindow.js +2 -2
  21. package/dist/cjs/splitview/splitviewComponent.js +3 -0
  22. package/dist/dockview-core.amd.js +165 -66
  23. package/dist/dockview-core.amd.js.map +1 -1
  24. package/dist/dockview-core.amd.min.js +2 -2
  25. package/dist/dockview-core.amd.min.js.map +1 -1
  26. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  27. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  28. package/dist/dockview-core.amd.noStyle.js +164 -65
  29. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  30. package/dist/dockview-core.cjs.js +165 -66
  31. package/dist/dockview-core.cjs.js.map +1 -1
  32. package/dist/dockview-core.esm.js +165 -66
  33. package/dist/dockview-core.esm.js.map +1 -1
  34. package/dist/dockview-core.esm.min.js +2 -2
  35. package/dist/dockview-core.esm.min.js.map +1 -1
  36. package/dist/dockview-core.js +165 -66
  37. package/dist/dockview-core.js.map +1 -1
  38. package/dist/dockview-core.min.js +2 -2
  39. package/dist/dockview-core.min.js.map +1 -1
  40. package/dist/dockview-core.min.noStyle.js +2 -2
  41. package/dist/dockview-core.min.noStyle.js.map +1 -1
  42. package/dist/dockview-core.noStyle.js +164 -65
  43. package/dist/dockview-core.noStyle.js.map +1 -1
  44. package/dist/esm/api/component.api.d.ts +3 -1
  45. package/dist/esm/api/component.api.js +6 -0
  46. package/dist/esm/dockview/components/popupService.js +2 -2
  47. package/dist/esm/dockview/components/titlebar/tabs.js +9 -3
  48. package/dist/esm/dockview/dockviewComponent.d.ts +16 -0
  49. package/dist/esm/dockview/dockviewComponent.js +29 -12
  50. package/dist/esm/dockview/options.d.ts +7 -0
  51. package/dist/esm/dockview/options.js +1 -0
  52. package/dist/esm/dom.d.ts +6 -4
  53. package/dist/esm/dom.js +65 -16
  54. package/dist/esm/events.d.ts +1 -1
  55. package/dist/esm/events.js +0 -8
  56. package/dist/esm/overlay/overlay.js +5 -5
  57. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +13 -2
  58. package/dist/esm/paneview/draggablePaneviewPanel.js +14 -4
  59. package/dist/esm/paneview/paneviewComponent.d.ts +5 -0
  60. package/dist/esm/paneview/paneviewComponent.js +25 -3
  61. package/dist/esm/paneview/paneviewPanel.d.ts +13 -4
  62. package/dist/esm/paneview/paneviewPanel.js +9 -13
  63. package/dist/esm/popoutWindow.js +3 -3
  64. package/dist/esm/splitview/splitviewComponent.js +3 -0
  65. package/dist/styles/dockview.css +8 -2
  66. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 4.0.1
3
+ * @version 4.2.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -215,14 +215,6 @@ define(['exports'], (function (exports) { 'use strict';
215
215
  }
216
216
  Emitter.ENABLE_TRACKING = false;
217
217
  Emitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();
218
- function addDisposableWindowListener(element, type, listener, options) {
219
- element.addEventListener(type, listener, options);
220
- return {
221
- dispose: () => {
222
- element.removeEventListener(type, listener, options);
223
- },
224
- };
225
- }
226
218
  function addDisposableListener(element, type, listener, options) {
227
219
  element.addEventListener(type, listener, options);
228
220
  return {
@@ -401,9 +393,6 @@ define(['exports'], (function (exports) { 'use strict';
401
393
  }
402
394
  return false;
403
395
  }
404
- function getElementsByTagName(tag) {
405
- return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);
406
- }
407
396
  function trackFocus(element) {
408
397
  return new FocusTracker(element);
409
398
  }
@@ -450,14 +439,8 @@ define(['exports'], (function (exports) { 'use strict';
450
439
  }
451
440
  }
452
441
  };
453
- if (element instanceof HTMLElement) {
454
- this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));
455
- this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
456
- }
457
- else {
458
- this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));
459
- this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));
460
- }
442
+ this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));
443
+ this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
461
444
  }
462
445
  refreshState() {
463
446
  this._refreshStateHandler();
@@ -531,11 +514,30 @@ define(['exports'], (function (exports) { 'use strict';
531
514
  function addTestId(element, id) {
532
515
  element.setAttribute('data-testid', id);
533
516
  }
534
- function disableIframePointEvents() {
535
- const iframes = [
536
- ...getElementsByTagName('iframe'),
537
- ...getElementsByTagName('webview'),
538
- ];
517
+ /**
518
+ * Should be more efficient than element.querySelectorAll("*") since there
519
+ * is no need to store every element in-memory using this approach
520
+ */
521
+ function allTagsNamesInclusiveOfShadowDoms(tagNames) {
522
+ const iframes = [];
523
+ function findIframesInNode(node) {
524
+ if (node.nodeType === Node.ELEMENT_NODE) {
525
+ if (tagNames.includes(node.tagName)) {
526
+ iframes.push(node);
527
+ }
528
+ if (node.shadowRoot) {
529
+ findIframesInNode(node.shadowRoot);
530
+ }
531
+ for (const child of node.children) {
532
+ findIframesInNode(child);
533
+ }
534
+ }
535
+ }
536
+ findIframesInNode(document.documentElement);
537
+ return iframes;
538
+ }
539
+ function disableIframePointEvents(rootNode = document) {
540
+ const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);
539
541
  const original = new WeakMap(); // don't hold onto HTMLElement references longer than required
540
542
  for (const iframe of iframes) {
541
543
  original.set(iframe, iframe.style.pointerEvents);
@@ -587,6 +589,7 @@ define(['exports'], (function (exports) { 'use strict';
587
589
  }
588
590
  }
589
591
  }
592
+ const DEBOUCE_DELAY = 100;
590
593
  function isChildEntirelyVisibleWithinParent(child, parent) {
591
594
  //
592
595
  const childPosition = getDomNodePagePosition(child);
@@ -600,6 +603,41 @@ define(['exports'], (function (exports) { 'use strict';
600
603
  }
601
604
  return true;
602
605
  }
606
+ function onDidWindowMoveEnd(window) {
607
+ const emitter = new Emitter();
608
+ let previousScreenX = window.screenX;
609
+ let previousScreenY = window.screenY;
610
+ let timeout;
611
+ const checkMovement = () => {
612
+ if (window.closed) {
613
+ return;
614
+ }
615
+ const currentScreenX = window.screenX;
616
+ const currentScreenY = window.screenY;
617
+ if (currentScreenX !== previousScreenX ||
618
+ currentScreenY !== previousScreenY) {
619
+ clearTimeout(timeout);
620
+ timeout = setTimeout(() => {
621
+ emitter.fire();
622
+ }, DEBOUCE_DELAY);
623
+ previousScreenX = currentScreenX;
624
+ previousScreenY = currentScreenY;
625
+ }
626
+ requestAnimationFrame(checkMovement);
627
+ };
628
+ checkMovement();
629
+ return emitter;
630
+ }
631
+ function onDidWindowResizeEnd(element, cb) {
632
+ let resizeTimeout;
633
+ const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {
634
+ clearTimeout(resizeTimeout);
635
+ resizeTimeout = setTimeout(() => {
636
+ cb();
637
+ }, DEBOUCE_DELAY);
638
+ }));
639
+ return disposable;
640
+ }
603
641
 
604
642
  function tail(arr) {
605
643
  if (arr.length === 0) {
@@ -3539,6 +3577,12 @@ define(['exports'], (function (exports) { 'use strict';
3539
3577
  get onUnhandledDragOverEvent() {
3540
3578
  return this.component.onUnhandledDragOverEvent;
3541
3579
  }
3580
+ get onDidPopoutGroupSizeChange() {
3581
+ return this.component.onDidPopoutGroupSizeChange;
3582
+ }
3583
+ get onDidPopoutGroupPositionChange() {
3584
+ return this.component.onDidPopoutGroupPositionChange;
3585
+ }
3542
3586
  /**
3543
3587
  * All panel objects.
3544
3588
  */
@@ -4504,26 +4548,25 @@ define(['exports'], (function (exports) { 'use strict';
4504
4548
  this._headerVisible = value;
4505
4549
  this.header.style.display = value ? '' : 'none';
4506
4550
  }
4507
- constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {
4508
- super(id, component, new PaneviewPanelApiImpl(id, component));
4509
- this.headerComponent = headerComponent;
4551
+ constructor(options) {
4552
+ super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));
4510
4553
  this._onDidChangeExpansionState = new Emitter({ replay: true });
4511
4554
  this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;
4512
4555
  this._onDidChange = new Emitter();
4513
4556
  this.onDidChange = this._onDidChange.event;
4514
- this.headerSize = 22;
4515
4557
  this._orthogonalSize = 0;
4516
4558
  this._size = 0;
4517
- this._minimumBodySize = 100;
4518
- this._maximumBodySize = Number.POSITIVE_INFINITY;
4519
4559
  this._isExpanded = false;
4520
- this.expandedSize = 0;
4521
4560
  this.api.pane = this; // TODO cannot use 'this' before 'super'
4522
4561
  this.api.initialize(this);
4523
- this._isExpanded = isExpanded;
4524
- this._headerVisible = isHeaderVisible;
4562
+ this.headerSize = options.headerSize;
4563
+ this.headerComponent = options.headerComponent;
4564
+ this._minimumBodySize = options.minimumBodySize;
4565
+ this._maximumBodySize = options.maximumBodySize;
4566
+ this._isExpanded = options.isExpanded;
4567
+ this._headerVisible = options.isHeaderVisible;
4525
4568
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
4526
- this._orientation = orientation;
4569
+ this._orientation = options.orientation;
4527
4570
  this.element.classList.add('dv-pane');
4528
4571
  this.addDisposables(this.api.onWillVisibilityChange((event) => {
4529
4572
  const { isVisible } = event;
@@ -4590,9 +4633,6 @@ define(['exports'], (function (exports) { 'use strict';
4590
4633
  const [width, height] = this.orientation === exports.Orientation.HORIZONTAL
4591
4634
  ? [size, orthogonalSize]
4592
4635
  : [orthogonalSize, size];
4593
- if (this.isExpanded()) {
4594
- this.expandedSize = width;
4595
- }
4596
4636
  super.layout(width, height);
4597
4637
  }
4598
4638
  init(parameters) {
@@ -4649,15 +4689,25 @@ define(['exports'], (function (exports) { 'use strict';
4649
4689
  }
4650
4690
 
4651
4691
  class DraggablePaneviewPanel extends PaneviewPanel {
4652
- constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
4653
- super(id, component, headerComponent, orientation, isExpanded, true);
4654
- this.accessor = accessor;
4692
+ constructor(options) {
4693
+ super({
4694
+ id: options.id,
4695
+ component: options.component,
4696
+ headerComponent: options.headerComponent,
4697
+ orientation: options.orientation,
4698
+ isExpanded: options.isExpanded,
4699
+ isHeaderVisible: true,
4700
+ headerSize: options.headerSize,
4701
+ minimumBodySize: options.minimumBodySize,
4702
+ maximumBodySize: options.maximumBodySize,
4703
+ });
4655
4704
  this._onDidDrop = new Emitter();
4656
4705
  this.onDidDrop = this._onDidDrop.event;
4657
4706
  this._onUnhandledDragOverEvent = new Emitter();
4658
4707
  this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
4708
+ this.accessor = options.accessor;
4659
4709
  this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);
4660
- if (!disableDnd) {
4710
+ if (!options.disableDnd) {
4661
4711
  this.initDragFeatures();
4662
4712
  }
4663
4713
  }
@@ -5170,9 +5220,15 @@ define(['exports'], (function (exports) { 'use strict';
5170
5220
  this._tabsList = document.createElement('div');
5171
5221
  this._tabsList.className = 'dv-tabs-container dv-horizontal';
5172
5222
  this.showTabsOverflowControl = options.showTabsOverflowControl;
5173
- const scrollbar = new Scrollbar(this._tabsList);
5174
- this._element = scrollbar.element;
5175
- this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, scrollbar, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {
5223
+ if (accessor.options.scrollbars === 'native') {
5224
+ this._element = this._tabsList;
5225
+ }
5226
+ else {
5227
+ const scrollbar = new Scrollbar(this._tabsList);
5228
+ this._element = scrollbar.element;
5229
+ this.addDisposables(scrollbar);
5230
+ }
5231
+ this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {
5176
5232
  if (event.defaultPrevented) {
5177
5233
  return;
5178
5234
  }
@@ -5597,6 +5653,7 @@ define(['exports'], (function (exports) { 'use strict';
5597
5653
  dndEdges: undefined,
5598
5654
  theme: undefined,
5599
5655
  disableTabsOverflowList: undefined,
5656
+ scrollbars: undefined,
5600
5657
  };
5601
5658
  return Object.keys(properties);
5602
5659
  })();
@@ -7291,7 +7348,7 @@ define(['exports'], (function (exports) { 'use strict';
7291
7348
  dispose: () => {
7292
7349
  iframes.release();
7293
7350
  },
7294
- }, addDisposableWindowListener(window, 'pointermove', (e) => {
7351
+ }, addDisposableListener(window, 'pointermove', (e) => {
7295
7352
  const containerRect = this.options.container.getBoundingClientRect();
7296
7353
  const x = e.clientX - containerRect.left;
7297
7354
  const y = e.clientY - containerRect.top;
@@ -7328,7 +7385,7 @@ define(['exports'], (function (exports) { 'use strict';
7328
7385
  bounds.right = right;
7329
7386
  }
7330
7387
  this.setBounds(bounds);
7331
- }), addDisposableWindowListener(window, 'pointerup', () => {
7388
+ }), addDisposableListener(window, 'pointerup', () => {
7332
7389
  toggleClass(this._element, 'dv-resize-container-dragging', false);
7333
7390
  move.dispose();
7334
7391
  this._onDidChangeEnd.fire();
@@ -7373,7 +7430,7 @@ define(['exports'], (function (exports) { 'use strict';
7373
7430
  e.preventDefault();
7374
7431
  let startPosition = null;
7375
7432
  const iframes = disableIframePointEvents();
7376
- move.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointermove', (e) => {
7433
+ move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {
7377
7434
  const containerRect = this.options.container.getBoundingClientRect();
7378
7435
  const overlayRect = this._element.getBoundingClientRect();
7379
7436
  const y = e.clientY - containerRect.top;
@@ -7497,7 +7554,7 @@ define(['exports'], (function (exports) { 'use strict';
7497
7554
  dispose: () => {
7498
7555
  iframes.release();
7499
7556
  },
7500
- }, addDisposableWindowListener(window, 'pointerup', () => {
7557
+ }, addDisposableListener(window, 'pointerup', () => {
7501
7558
  move.dispose();
7502
7559
  this._onDidChangeEnd.fire();
7503
7560
  }));
@@ -7803,7 +7860,7 @@ define(['exports'], (function (exports) { 'use strict';
7803
7860
  this._window = { value: externalWindow, disposable };
7804
7861
  disposable.addDisposables(exports.DockviewDisposable.from(() => {
7805
7862
  externalWindow.close();
7806
- }), addDisposableWindowListener(window, 'beforeunload', () => {
7863
+ }), addDisposableListener(window, 'beforeunload', () => {
7807
7864
  /**
7808
7865
  * before the main window closes we should close this popup too
7809
7866
  * to be good citizens
@@ -7838,7 +7895,7 @@ define(['exports'], (function (exports) { 'use strict';
7838
7895
  * beforeunload must be registered after load for reasons I could not determine
7839
7896
  * otherwise the beforeunload event will not fire when the window is closed
7840
7897
  */
7841
- addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7898
+ addDisposableListener(externalWindow, 'beforeunload', () => {
7842
7899
  /**
7843
7900
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7844
7901
  */
@@ -7935,7 +7992,7 @@ define(['exports'], (function (exports) { 'use strict';
7935
7992
  wrapper.style.left = `${position.x - offsetX}px`;
7936
7993
  this._element.appendChild(wrapper);
7937
7994
  this._active = wrapper;
7938
- this._activeDisposable.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointerdown', (event) => {
7995
+ this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {
7939
7996
  var _a;
7940
7997
  const target = event.target;
7941
7998
  if (!(target instanceof HTMLElement)) {
@@ -8114,6 +8171,10 @@ define(['exports'], (function (exports) { 'use strict';
8114
8171
  this.onDidRemovePanel = this._onDidRemovePanel.event;
8115
8172
  this._onDidAddPanel = new Emitter();
8116
8173
  this.onDidAddPanel = this._onDidAddPanel.event;
8174
+ this._onDidPopoutGroupSizeChange = new Emitter();
8175
+ this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;
8176
+ this._onDidPopoutGroupPositionChange = new Emitter();
8177
+ this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;
8117
8178
  this._onDidLayoutFromJSON = new Emitter();
8118
8179
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
8119
8180
  this._onDidActivePanelChange = new Emitter();
@@ -8143,7 +8204,7 @@ define(['exports'], (function (exports) { 'use strict';
8143
8204
  if (options.debug) {
8144
8205
  this.addDisposables(new StrictEventsSequencing(this));
8145
8206
  }
8146
- 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.onDidViewVisibilityChangeMicroTaskQueue(() => {
8207
+ 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(() => {
8147
8208
  this.updateWatermark();
8148
8209
  }), this.onDidAdd((event) => {
8149
8210
  if (!this._moving) {
@@ -8164,7 +8225,7 @@ define(['exports'], (function (exports) { 'use strict';
8164
8225
  });
8165
8226
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
8166
8227
  this.updateWatermark();
8167
- }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
8228
+ }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {
8168
8229
  this._bufferOnDidLayoutChange.fire();
8169
8230
  }), exports.DockviewDisposable.from(() => {
8170
8231
  // iterate over a copy of the array since .dispose() mutates the original array
@@ -8425,13 +8486,26 @@ define(['exports'], (function (exports) { 'use strict';
8425
8486
  },
8426
8487
  },
8427
8488
  };
8428
- popoutWindowDisposable.addDisposables(
8489
+ const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);
8490
+ popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {
8491
+ this._onDidPopoutGroupSizeChange.fire({
8492
+ width: _window.window.innerWidth,
8493
+ height: _window.window.innerHeight,
8494
+ group,
8495
+ });
8496
+ }), _onDidWindowPositionChange.event(() => {
8497
+ this._onDidPopoutGroupPositionChange.fire({
8498
+ screenX: _window.window.screenX,
8499
+ screenY: _window.window.screenX,
8500
+ group,
8501
+ });
8502
+ }),
8429
8503
  /**
8430
8504
  * ResizeObserver seems slow here, I do not know why but we don't need it
8431
8505
  * since we can reply on the window resize event as we will occupy the full
8432
8506
  * window dimensions
8433
8507
  */
8434
- addDisposableWindowListener(_window.window, 'resize', () => {
8508
+ addDisposableListener(_window.window, 'resize', () => {
8435
8509
  group.layout(_window.window.innerWidth, _window.window.innerHeight);
8436
8510
  }), overlayRenderContainer, exports.DockviewDisposable.from(() => {
8437
8511
  if (this.isDisposed) {
@@ -8645,7 +8719,7 @@ define(['exports'], (function (exports) { 'use strict';
8645
8719
  }
8646
8720
  this.updateWatermark();
8647
8721
  }
8648
- orthogonalize(position) {
8722
+ orthogonalize(position, options) {
8649
8723
  switch (position) {
8650
8724
  case 'top':
8651
8725
  case 'bottom':
@@ -8668,10 +8742,10 @@ define(['exports'], (function (exports) { 'use strict';
8668
8742
  case 'top':
8669
8743
  case 'left':
8670
8744
  case 'center':
8671
- return this.createGroupAtLocation([0]); // insert into first position
8745
+ return this.createGroupAtLocation([0], undefined, options); // insert into first position
8672
8746
  case 'bottom':
8673
8747
  case 'right':
8674
- return this.createGroupAtLocation([this.gridview.length]); // insert into last position
8748
+ return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position
8675
8749
  default:
8676
8750
  throw new Error(`unsupported position ${position}`);
8677
8751
  }
@@ -9167,7 +9241,7 @@ define(['exports'], (function (exports) { 'use strict';
9167
9241
  }
9168
9242
  }
9169
9243
  else {
9170
- const group = this.orthogonalize(directionToPosition(options.direction));
9244
+ const group = this.orthogonalize(directionToPosition(options.direction), options);
9171
9245
  if (!options.skipSetActive) {
9172
9246
  this.doSetGroupAndPanelActive(group);
9173
9247
  }
@@ -9609,8 +9683,8 @@ define(['exports'], (function (exports) { 'use strict';
9609
9683
  });
9610
9684
  return panel;
9611
9685
  }
9612
- createGroupAtLocation(location, size) {
9613
- const group = this.createGroup();
9686
+ createGroupAtLocation(location, size, options) {
9687
+ const group = this.createGroup(options);
9614
9688
  this.doAddGroup(group, location, size);
9615
9689
  return group;
9616
9690
  }
@@ -9944,6 +10018,9 @@ define(['exports'], (function (exports) { 'use strict';
9944
10018
  return this._splitview;
9945
10019
  }
9946
10020
  set splitview(value) {
10021
+ if (this._splitview) {
10022
+ this._splitview.dispose();
10023
+ }
9947
10024
  this._splitview = value;
9948
10025
  this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
9949
10026
  this._onDidLayoutChange.fire(undefined);
@@ -10247,9 +10324,23 @@ define(['exports'], (function (exports) { 'use strict';
10247
10324
  }
10248
10325
 
10249
10326
  const nextLayoutId = sequentialNumberGenerator();
10327
+ const HEADER_SIZE = 22;
10328
+ const MINIMUM_BODY_SIZE = 0;
10329
+ const MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;
10250
10330
  class PaneFramework extends DraggablePaneviewPanel {
10251
10331
  constructor(options) {
10252
- super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
10332
+ super({
10333
+ accessor: options.accessor,
10334
+ id: options.id,
10335
+ component: options.component,
10336
+ headerComponent: options.headerComponent,
10337
+ orientation: options.orientation,
10338
+ isExpanded: options.isExpanded,
10339
+ disableDnd: options.disableDnd,
10340
+ headerSize: options.headerSize,
10341
+ minimumBodySize: options.minimumBodySize,
10342
+ maximumBodySize: options.maximumBodySize,
10343
+ });
10253
10344
  this.options = options;
10254
10345
  }
10255
10346
  getBodyComponent() {
@@ -10344,7 +10435,7 @@ define(['exports'], (function (exports) { 'use strict';
10344
10435
  this._options = Object.assign(Object.assign({}, this.options), options);
10345
10436
  }
10346
10437
  addPanel(options) {
10347
- var _a;
10438
+ var _a, _b;
10348
10439
  const body = this.options.createComponent({
10349
10440
  id: options.id,
10350
10441
  name: options.component,
@@ -10369,12 +10460,15 @@ define(['exports'], (function (exports) { 'use strict';
10369
10460
  isExpanded: !!options.isExpanded,
10370
10461
  disableDnd: !!this.options.disableDnd,
10371
10462
  accessor: this,
10463
+ headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
10464
+ minimumBodySize: MINIMUM_BODY_SIZE,
10465
+ maximumBodySize: MAXIMUM_BODY_SIZE,
10372
10466
  });
10373
10467
  this.doAddPanel(view);
10374
10468
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
10375
10469
  const index = typeof options.index === 'number' ? options.index : undefined;
10376
10470
  view.init({
10377
- params: (_a = options.params) !== null && _a !== void 0 ? _a : {},
10471
+ params: (_b = options.params) !== null && _b !== void 0 ? _b : {},
10378
10472
  minimumBodySize: options.minimumBodySize,
10379
10473
  maximumBodySize: options.maximumBodySize,
10380
10474
  isExpanded: options.isExpanded,
@@ -10419,6 +10513,7 @@ define(['exports'], (function (exports) { 'use strict';
10419
10513
  data: view.toJSON(),
10420
10514
  minimumSize: minimum(view.minimumBodySize),
10421
10515
  maximumSize: maximum(view.maximumBodySize),
10516
+ headerSize: view.headerSize,
10422
10517
  expanded: view.isExpanded(),
10423
10518
  };
10424
10519
  });
@@ -10439,6 +10534,7 @@ define(['exports'], (function (exports) { 'use strict';
10439
10534
  descriptor: {
10440
10535
  size,
10441
10536
  views: views.map((view) => {
10537
+ var _a, _b, _c;
10442
10538
  const data = view.data;
10443
10539
  const body = this.options.createComponent({
10444
10540
  id: data.id,
@@ -10465,6 +10561,9 @@ define(['exports'], (function (exports) { 'use strict';
10465
10561
  isExpanded: !!view.expanded,
10466
10562
  disableDnd: !!this.options.disableDnd,
10467
10563
  accessor: this,
10564
+ headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
10565
+ minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,
10566
+ maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,
10468
10567
  });
10469
10568
  this.doAddPanel(panel);
10470
10569
  queue.push(() => {