dockview-core 4.0.1 → 4.1.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 (59) 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/dockviewComponent.d.ts +16 -0
  5. package/dist/cjs/dockview/dockviewComponent.js +27 -10
  6. package/dist/cjs/dom.d.ts +6 -4
  7. package/dist/cjs/dom.js +90 -49
  8. package/dist/cjs/events.d.ts +1 -1
  9. package/dist/cjs/events.js +1 -10
  10. package/dist/cjs/overlay/overlay.js +4 -4
  11. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +13 -2
  12. package/dist/cjs/paneview/draggablePaneviewPanel.js +14 -4
  13. package/dist/cjs/paneview/paneviewComponent.d.ts +5 -0
  14. package/dist/cjs/paneview/paneviewComponent.js +25 -3
  15. package/dist/cjs/paneview/paneviewPanel.d.ts +13 -4
  16. package/dist/cjs/paneview/paneviewPanel.js +9 -13
  17. package/dist/cjs/popoutWindow.js +2 -2
  18. package/dist/cjs/splitview/splitviewComponent.js +3 -0
  19. package/dist/dockview-core.amd.js +154 -62
  20. package/dist/dockview-core.amd.js.map +1 -1
  21. package/dist/dockview-core.amd.min.js +2 -2
  22. package/dist/dockview-core.amd.min.js.map +1 -1
  23. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  24. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  25. package/dist/dockview-core.amd.noStyle.js +154 -62
  26. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  27. package/dist/dockview-core.cjs.js +154 -62
  28. package/dist/dockview-core.cjs.js.map +1 -1
  29. package/dist/dockview-core.esm.js +154 -62
  30. package/dist/dockview-core.esm.js.map +1 -1
  31. package/dist/dockview-core.esm.min.js +2 -2
  32. package/dist/dockview-core.esm.min.js.map +1 -1
  33. package/dist/dockview-core.js +154 -62
  34. package/dist/dockview-core.js.map +1 -1
  35. package/dist/dockview-core.min.js +2 -2
  36. package/dist/dockview-core.min.js.map +1 -1
  37. package/dist/dockview-core.min.noStyle.js +2 -2
  38. package/dist/dockview-core.min.noStyle.js.map +1 -1
  39. package/dist/dockview-core.noStyle.js +154 -62
  40. package/dist/dockview-core.noStyle.js.map +1 -1
  41. package/dist/esm/api/component.api.d.ts +3 -1
  42. package/dist/esm/api/component.api.js +6 -0
  43. package/dist/esm/dockview/components/popupService.js +2 -2
  44. package/dist/esm/dockview/dockviewComponent.d.ts +16 -0
  45. package/dist/esm/dockview/dockviewComponent.js +29 -12
  46. package/dist/esm/dom.d.ts +6 -4
  47. package/dist/esm/dom.js +65 -16
  48. package/dist/esm/events.d.ts +1 -1
  49. package/dist/esm/events.js +0 -8
  50. package/dist/esm/overlay/overlay.js +5 -5
  51. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +13 -2
  52. package/dist/esm/paneview/draggablePaneviewPanel.js +14 -4
  53. package/dist/esm/paneview/paneviewComponent.d.ts +5 -0
  54. package/dist/esm/paneview/paneviewComponent.js +25 -3
  55. package/dist/esm/paneview/paneviewPanel.d.ts +13 -4
  56. package/dist/esm/paneview/paneviewPanel.js +9 -13
  57. package/dist/esm/popoutWindow.js +3 -3
  58. package/dist/esm/splitview/splitviewComponent.js +3 -0
  59. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 4.0.1
3
+ * @version 4.1.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -245,14 +245,6 @@ class Emitter {
245
245
  }
246
246
  Emitter.ENABLE_TRACKING = false;
247
247
  Emitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();
248
- function addDisposableWindowListener(element, type, listener, options) {
249
- element.addEventListener(type, listener, options);
250
- return {
251
- dispose: () => {
252
- element.removeEventListener(type, listener, options);
253
- },
254
- };
255
- }
256
248
  function addDisposableListener(element, type, listener, options) {
257
249
  element.addEventListener(type, listener, options);
258
250
  return {
@@ -431,9 +423,6 @@ function isAncestor(testChild, testAncestor) {
431
423
  }
432
424
  return false;
433
425
  }
434
- function getElementsByTagName(tag) {
435
- return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);
436
- }
437
426
  function trackFocus(element) {
438
427
  return new FocusTracker(element);
439
428
  }
@@ -480,14 +469,8 @@ class FocusTracker extends CompositeDisposable {
480
469
  }
481
470
  }
482
471
  };
483
- if (element instanceof HTMLElement) {
484
- this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));
485
- this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
486
- }
487
- else {
488
- this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));
489
- this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));
490
- }
472
+ this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));
473
+ this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
491
474
  }
492
475
  refreshState() {
493
476
  this._refreshStateHandler();
@@ -561,11 +544,30 @@ function isInDocument(element) {
561
544
  function addTestId(element, id) {
562
545
  element.setAttribute('data-testid', id);
563
546
  }
564
- function disableIframePointEvents() {
565
- const iframes = [
566
- ...getElementsByTagName('iframe'),
567
- ...getElementsByTagName('webview'),
568
- ];
547
+ /**
548
+ * Should be more efficient than element.querySelectorAll("*") since there
549
+ * is no need to store every element in-memory using this approach
550
+ */
551
+ function allTagsNamesInclusiveOfShadowDoms(tagNames) {
552
+ const iframes = [];
553
+ function findIframesInNode(node) {
554
+ if (node.nodeType === Node.ELEMENT_NODE) {
555
+ if (tagNames.includes(node.tagName)) {
556
+ iframes.push(node);
557
+ }
558
+ if (node.shadowRoot) {
559
+ findIframesInNode(node.shadowRoot);
560
+ }
561
+ for (const child of node.children) {
562
+ findIframesInNode(child);
563
+ }
564
+ }
565
+ }
566
+ findIframesInNode(document.documentElement);
567
+ return iframes;
568
+ }
569
+ function disableIframePointEvents(rootNode = document) {
570
+ const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);
569
571
  const original = new WeakMap(); // don't hold onto HTMLElement references longer than required
570
572
  for (const iframe of iframes) {
571
573
  original.set(iframe, iframe.style.pointerEvents);
@@ -617,6 +619,7 @@ class Classnames {
617
619
  }
618
620
  }
619
621
  }
622
+ const DEBOUCE_DELAY = 100;
620
623
  function isChildEntirelyVisibleWithinParent(child, parent) {
621
624
  //
622
625
  const childPosition = getDomNodePagePosition(child);
@@ -630,6 +633,41 @@ function isChildEntirelyVisibleWithinParent(child, parent) {
630
633
  }
631
634
  return true;
632
635
  }
636
+ function onDidWindowMoveEnd(window) {
637
+ const emitter = new Emitter();
638
+ let previousScreenX = window.screenX;
639
+ let previousScreenY = window.screenY;
640
+ let timeout;
641
+ const checkMovement = () => {
642
+ if (window.closed) {
643
+ return;
644
+ }
645
+ const currentScreenX = window.screenX;
646
+ const currentScreenY = window.screenY;
647
+ if (currentScreenX !== previousScreenX ||
648
+ currentScreenY !== previousScreenY) {
649
+ clearTimeout(timeout);
650
+ timeout = setTimeout(() => {
651
+ emitter.fire();
652
+ }, DEBOUCE_DELAY);
653
+ previousScreenX = currentScreenX;
654
+ previousScreenY = currentScreenY;
655
+ }
656
+ requestAnimationFrame(checkMovement);
657
+ };
658
+ checkMovement();
659
+ return emitter;
660
+ }
661
+ function onDidWindowResizeEnd(element, cb) {
662
+ let resizeTimeout;
663
+ const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {
664
+ clearTimeout(resizeTimeout);
665
+ resizeTimeout = setTimeout(() => {
666
+ cb();
667
+ }, DEBOUCE_DELAY);
668
+ }));
669
+ return disposable;
670
+ }
633
671
 
634
672
  function tail(arr) {
635
673
  if (arr.length === 0) {
@@ -3569,6 +3607,12 @@ class DockviewApi {
3569
3607
  get onUnhandledDragOverEvent() {
3570
3608
  return this.component.onUnhandledDragOverEvent;
3571
3609
  }
3610
+ get onDidPopoutGroupSizeChange() {
3611
+ return this.component.onDidPopoutGroupSizeChange;
3612
+ }
3613
+ get onDidPopoutGroupPositionChange() {
3614
+ return this.component.onDidPopoutGroupPositionChange;
3615
+ }
3572
3616
  /**
3573
3617
  * All panel objects.
3574
3618
  */
@@ -4534,26 +4578,25 @@ class PaneviewPanel extends BasePanelView {
4534
4578
  this._headerVisible = value;
4535
4579
  this.header.style.display = value ? '' : 'none';
4536
4580
  }
4537
- constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {
4538
- super(id, component, new PaneviewPanelApiImpl(id, component));
4539
- this.headerComponent = headerComponent;
4581
+ constructor(options) {
4582
+ super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));
4540
4583
  this._onDidChangeExpansionState = new Emitter({ replay: true });
4541
4584
  this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;
4542
4585
  this._onDidChange = new Emitter();
4543
4586
  this.onDidChange = this._onDidChange.event;
4544
- this.headerSize = 22;
4545
4587
  this._orthogonalSize = 0;
4546
4588
  this._size = 0;
4547
- this._minimumBodySize = 100;
4548
- this._maximumBodySize = Number.POSITIVE_INFINITY;
4549
4589
  this._isExpanded = false;
4550
- this.expandedSize = 0;
4551
4590
  this.api.pane = this; // TODO cannot use 'this' before 'super'
4552
4591
  this.api.initialize(this);
4553
- this._isExpanded = isExpanded;
4554
- this._headerVisible = isHeaderVisible;
4592
+ this.headerSize = options.headerSize;
4593
+ this.headerComponent = options.headerComponent;
4594
+ this._minimumBodySize = options.minimumBodySize;
4595
+ this._maximumBodySize = options.maximumBodySize;
4596
+ this._isExpanded = options.isExpanded;
4597
+ this._headerVisible = options.isHeaderVisible;
4555
4598
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
4556
- this._orientation = orientation;
4599
+ this._orientation = options.orientation;
4557
4600
  this.element.classList.add('dv-pane');
4558
4601
  this.addDisposables(this.api.onWillVisibilityChange((event) => {
4559
4602
  const { isVisible } = event;
@@ -4620,9 +4663,6 @@ class PaneviewPanel extends BasePanelView {
4620
4663
  const [width, height] = this.orientation === exports.Orientation.HORIZONTAL
4621
4664
  ? [size, orthogonalSize]
4622
4665
  : [orthogonalSize, size];
4623
- if (this.isExpanded()) {
4624
- this.expandedSize = width;
4625
- }
4626
4666
  super.layout(width, height);
4627
4667
  }
4628
4668
  init(parameters) {
@@ -4679,15 +4719,25 @@ class PaneviewPanel extends BasePanelView {
4679
4719
  }
4680
4720
 
4681
4721
  class DraggablePaneviewPanel extends PaneviewPanel {
4682
- constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
4683
- super(id, component, headerComponent, orientation, isExpanded, true);
4684
- this.accessor = accessor;
4722
+ constructor(options) {
4723
+ super({
4724
+ id: options.id,
4725
+ component: options.component,
4726
+ headerComponent: options.headerComponent,
4727
+ orientation: options.orientation,
4728
+ isExpanded: options.isExpanded,
4729
+ isHeaderVisible: true,
4730
+ headerSize: options.headerSize,
4731
+ minimumBodySize: options.minimumBodySize,
4732
+ maximumBodySize: options.maximumBodySize,
4733
+ });
4685
4734
  this._onDidDrop = new Emitter();
4686
4735
  this.onDidDrop = this._onDidDrop.event;
4687
4736
  this._onUnhandledDragOverEvent = new Emitter();
4688
4737
  this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
4738
+ this.accessor = options.accessor;
4689
4739
  this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);
4690
- if (!disableDnd) {
4740
+ if (!options.disableDnd) {
4691
4741
  this.initDragFeatures();
4692
4742
  }
4693
4743
  }
@@ -7321,7 +7371,7 @@ class Overlay extends CompositeDisposable {
7321
7371
  dispose: () => {
7322
7372
  iframes.release();
7323
7373
  },
7324
- }, addDisposableWindowListener(window, 'pointermove', (e) => {
7374
+ }, addDisposableListener(window, 'pointermove', (e) => {
7325
7375
  const containerRect = this.options.container.getBoundingClientRect();
7326
7376
  const x = e.clientX - containerRect.left;
7327
7377
  const y = e.clientY - containerRect.top;
@@ -7358,7 +7408,7 @@ class Overlay extends CompositeDisposable {
7358
7408
  bounds.right = right;
7359
7409
  }
7360
7410
  this.setBounds(bounds);
7361
- }), addDisposableWindowListener(window, 'pointerup', () => {
7411
+ }), addDisposableListener(window, 'pointerup', () => {
7362
7412
  toggleClass(this._element, 'dv-resize-container-dragging', false);
7363
7413
  move.dispose();
7364
7414
  this._onDidChangeEnd.fire();
@@ -7403,7 +7453,7 @@ class Overlay extends CompositeDisposable {
7403
7453
  e.preventDefault();
7404
7454
  let startPosition = null;
7405
7455
  const iframes = disableIframePointEvents();
7406
- move.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointermove', (e) => {
7456
+ move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {
7407
7457
  const containerRect = this.options.container.getBoundingClientRect();
7408
7458
  const overlayRect = this._element.getBoundingClientRect();
7409
7459
  const y = e.clientY - containerRect.top;
@@ -7527,7 +7577,7 @@ class Overlay extends CompositeDisposable {
7527
7577
  dispose: () => {
7528
7578
  iframes.release();
7529
7579
  },
7530
- }, addDisposableWindowListener(window, 'pointerup', () => {
7580
+ }, addDisposableListener(window, 'pointerup', () => {
7531
7581
  move.dispose();
7532
7582
  this._onDidChangeEnd.fire();
7533
7583
  }));
@@ -7833,7 +7883,7 @@ class PopoutWindow extends CompositeDisposable {
7833
7883
  this._window = { value: externalWindow, disposable };
7834
7884
  disposable.addDisposables(exports.DockviewDisposable.from(() => {
7835
7885
  externalWindow.close();
7836
- }), addDisposableWindowListener(window, 'beforeunload', () => {
7886
+ }), addDisposableListener(window, 'beforeunload', () => {
7837
7887
  /**
7838
7888
  * before the main window closes we should close this popup too
7839
7889
  * to be good citizens
@@ -7868,7 +7918,7 @@ class PopoutWindow extends CompositeDisposable {
7868
7918
  * beforeunload must be registered after load for reasons I could not determine
7869
7919
  * otherwise the beforeunload event will not fire when the window is closed
7870
7920
  */
7871
- addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7921
+ addDisposableListener(externalWindow, 'beforeunload', () => {
7872
7922
  /**
7873
7923
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7874
7924
  */
@@ -7965,7 +8015,7 @@ class PopupService extends CompositeDisposable {
7965
8015
  wrapper.style.left = `${position.x - offsetX}px`;
7966
8016
  this._element.appendChild(wrapper);
7967
8017
  this._active = wrapper;
7968
- this._activeDisposable.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointerdown', (event) => {
8018
+ this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {
7969
8019
  var _a;
7970
8020
  const target = event.target;
7971
8021
  if (!(target instanceof HTMLElement)) {
@@ -8144,6 +8194,10 @@ class DockviewComponent extends BaseGrid {
8144
8194
  this.onDidRemovePanel = this._onDidRemovePanel.event;
8145
8195
  this._onDidAddPanel = new Emitter();
8146
8196
  this.onDidAddPanel = this._onDidAddPanel.event;
8197
+ this._onDidPopoutGroupSizeChange = new Emitter();
8198
+ this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;
8199
+ this._onDidPopoutGroupPositionChange = new Emitter();
8200
+ this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;
8147
8201
  this._onDidLayoutFromJSON = new Emitter();
8148
8202
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
8149
8203
  this._onDidActivePanelChange = new Emitter();
@@ -8173,7 +8227,7 @@ class DockviewComponent extends BaseGrid {
8173
8227
  if (options.debug) {
8174
8228
  this.addDisposables(new StrictEventsSequencing(this));
8175
8229
  }
8176
- 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(() => {
8230
+ 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(() => {
8177
8231
  this.updateWatermark();
8178
8232
  }), this.onDidAdd((event) => {
8179
8233
  if (!this._moving) {
@@ -8194,7 +8248,7 @@ class DockviewComponent extends BaseGrid {
8194
8248
  });
8195
8249
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
8196
8250
  this.updateWatermark();
8197
- }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
8251
+ }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {
8198
8252
  this._bufferOnDidLayoutChange.fire();
8199
8253
  }), exports.DockviewDisposable.from(() => {
8200
8254
  // iterate over a copy of the array since .dispose() mutates the original array
@@ -8455,13 +8509,26 @@ class DockviewComponent extends BaseGrid {
8455
8509
  },
8456
8510
  },
8457
8511
  };
8458
- popoutWindowDisposable.addDisposables(
8512
+ const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);
8513
+ popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {
8514
+ this._onDidPopoutGroupSizeChange.fire({
8515
+ width: _window.window.innerWidth,
8516
+ height: _window.window.innerHeight,
8517
+ group,
8518
+ });
8519
+ }), _onDidWindowPositionChange.event(() => {
8520
+ this._onDidPopoutGroupPositionChange.fire({
8521
+ screenX: _window.window.screenX,
8522
+ screenY: _window.window.screenX,
8523
+ group,
8524
+ });
8525
+ }),
8459
8526
  /**
8460
8527
  * ResizeObserver seems slow here, I do not know why but we don't need it
8461
8528
  * since we can reply on the window resize event as we will occupy the full
8462
8529
  * window dimensions
8463
8530
  */
8464
- addDisposableWindowListener(_window.window, 'resize', () => {
8531
+ addDisposableListener(_window.window, 'resize', () => {
8465
8532
  group.layout(_window.window.innerWidth, _window.window.innerHeight);
8466
8533
  }), overlayRenderContainer, exports.DockviewDisposable.from(() => {
8467
8534
  if (this.isDisposed) {
@@ -8675,7 +8742,7 @@ class DockviewComponent extends BaseGrid {
8675
8742
  }
8676
8743
  this.updateWatermark();
8677
8744
  }
8678
- orthogonalize(position) {
8745
+ orthogonalize(position, options) {
8679
8746
  switch (position) {
8680
8747
  case 'top':
8681
8748
  case 'bottom':
@@ -8698,10 +8765,10 @@ class DockviewComponent extends BaseGrid {
8698
8765
  case 'top':
8699
8766
  case 'left':
8700
8767
  case 'center':
8701
- return this.createGroupAtLocation([0]); // insert into first position
8768
+ return this.createGroupAtLocation([0], undefined, options); // insert into first position
8702
8769
  case 'bottom':
8703
8770
  case 'right':
8704
- return this.createGroupAtLocation([this.gridview.length]); // insert into last position
8771
+ return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position
8705
8772
  default:
8706
8773
  throw new Error(`unsupported position ${position}`);
8707
8774
  }
@@ -9197,7 +9264,7 @@ class DockviewComponent extends BaseGrid {
9197
9264
  }
9198
9265
  }
9199
9266
  else {
9200
- const group = this.orthogonalize(directionToPosition(options.direction));
9267
+ const group = this.orthogonalize(directionToPosition(options.direction), options);
9201
9268
  if (!options.skipSetActive) {
9202
9269
  this.doSetGroupAndPanelActive(group);
9203
9270
  }
@@ -9639,8 +9706,8 @@ class DockviewComponent extends BaseGrid {
9639
9706
  });
9640
9707
  return panel;
9641
9708
  }
9642
- createGroupAtLocation(location, size) {
9643
- const group = this.createGroup();
9709
+ createGroupAtLocation(location, size, options) {
9710
+ const group = this.createGroup(options);
9644
9711
  this.doAddGroup(group, location, size);
9645
9712
  return group;
9646
9713
  }
@@ -9974,6 +10041,9 @@ class SplitviewComponent extends Resizable {
9974
10041
  return this._splitview;
9975
10042
  }
9976
10043
  set splitview(value) {
10044
+ if (this._splitview) {
10045
+ this._splitview.dispose();
10046
+ }
9977
10047
  this._splitview = value;
9978
10048
  this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
9979
10049
  this._onDidLayoutChange.fire(undefined);
@@ -10277,9 +10347,23 @@ class DefaultHeader extends CompositeDisposable {
10277
10347
  }
10278
10348
 
10279
10349
  const nextLayoutId = sequentialNumberGenerator();
10350
+ const HEADER_SIZE = 22;
10351
+ const MINIMUM_BODY_SIZE = 0;
10352
+ const MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;
10280
10353
  class PaneFramework extends DraggablePaneviewPanel {
10281
10354
  constructor(options) {
10282
- super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
10355
+ super({
10356
+ accessor: options.accessor,
10357
+ id: options.id,
10358
+ component: options.component,
10359
+ headerComponent: options.headerComponent,
10360
+ orientation: options.orientation,
10361
+ isExpanded: options.isExpanded,
10362
+ disableDnd: options.disableDnd,
10363
+ headerSize: options.headerSize,
10364
+ minimumBodySize: options.minimumBodySize,
10365
+ maximumBodySize: options.maximumBodySize,
10366
+ });
10283
10367
  this.options = options;
10284
10368
  }
10285
10369
  getBodyComponent() {
@@ -10374,7 +10458,7 @@ class PaneviewComponent extends Resizable {
10374
10458
  this._options = Object.assign(Object.assign({}, this.options), options);
10375
10459
  }
10376
10460
  addPanel(options) {
10377
- var _a;
10461
+ var _a, _b;
10378
10462
  const body = this.options.createComponent({
10379
10463
  id: options.id,
10380
10464
  name: options.component,
@@ -10399,12 +10483,15 @@ class PaneviewComponent extends Resizable {
10399
10483
  isExpanded: !!options.isExpanded,
10400
10484
  disableDnd: !!this.options.disableDnd,
10401
10485
  accessor: this,
10486
+ headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
10487
+ minimumBodySize: MINIMUM_BODY_SIZE,
10488
+ maximumBodySize: MAXIMUM_BODY_SIZE,
10402
10489
  });
10403
10490
  this.doAddPanel(view);
10404
10491
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
10405
10492
  const index = typeof options.index === 'number' ? options.index : undefined;
10406
10493
  view.init({
10407
- params: (_a = options.params) !== null && _a !== void 0 ? _a : {},
10494
+ params: (_b = options.params) !== null && _b !== void 0 ? _b : {},
10408
10495
  minimumBodySize: options.minimumBodySize,
10409
10496
  maximumBodySize: options.maximumBodySize,
10410
10497
  isExpanded: options.isExpanded,
@@ -10449,6 +10536,7 @@ class PaneviewComponent extends Resizable {
10449
10536
  data: view.toJSON(),
10450
10537
  minimumSize: minimum(view.minimumBodySize),
10451
10538
  maximumSize: maximum(view.maximumBodySize),
10539
+ headerSize: view.headerSize,
10452
10540
  expanded: view.isExpanded(),
10453
10541
  };
10454
10542
  });
@@ -10469,6 +10557,7 @@ class PaneviewComponent extends Resizable {
10469
10557
  descriptor: {
10470
10558
  size,
10471
10559
  views: views.map((view) => {
10560
+ var _a, _b, _c;
10472
10561
  const data = view.data;
10473
10562
  const body = this.options.createComponent({
10474
10563
  id: data.id,
@@ -10495,6 +10584,9 @@ class PaneviewComponent extends Resizable {
10495
10584
  isExpanded: !!view.expanded,
10496
10585
  disableDnd: !!this.options.disableDnd,
10497
10586
  accessor: this,
10587
+ headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
10588
+ minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,
10589
+ maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,
10498
10590
  });
10499
10591
  this.doAddPanel(panel);
10500
10592
  queue.push(() => {