dockview 1.0.0 → 1.0.3

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 (93) hide show
  1. package/dist/cjs/api/component.api.d.ts +8 -2
  2. package/dist/cjs/api/component.api.js +56 -0
  3. package/dist/cjs/api/component.api.js.map +1 -1
  4. package/dist/cjs/dnd/droptarget.d.ts +1 -5
  5. package/dist/cjs/dnd/droptarget.js +1 -1
  6. package/dist/cjs/dnd/droptarget.js.map +1 -1
  7. package/dist/cjs/dockview/defaultGroupPanelView.js +3 -1
  8. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  9. package/dist/cjs/events.d.ts +7 -0
  10. package/dist/cjs/events.js +22 -1
  11. package/dist/cjs/events.js.map +1 -1
  12. package/dist/cjs/gridview/baseComponentGridview.js +6 -13
  13. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  14. package/dist/cjs/gridview/gridview.js +0 -1
  15. package/dist/cjs/gridview/gridview.js.map +1 -1
  16. package/dist/cjs/gridview/gridviewComponent.d.ts +2 -2
  17. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  18. package/dist/cjs/groupview/groupview.js +2 -2
  19. package/dist/cjs/groupview/groupview.js.map +1 -1
  20. package/dist/cjs/groupview/titlebar/tabsContainer.js +2 -2
  21. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  22. package/dist/cjs/index.d.ts +0 -1
  23. package/dist/cjs/index.js +0 -1
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/paneview/draggablePaneviewPanel.js +1 -1
  26. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  27. package/dist/cjs/paneview/paneview.d.ts +1 -1
  28. package/dist/cjs/paneview/paneview.js +1 -4
  29. package/dist/cjs/paneview/paneview.js.map +1 -1
  30. package/dist/cjs/paneview/paneviewComponent.d.ts +6 -2
  31. package/dist/cjs/paneview/paneviewComponent.js +10 -16
  32. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  33. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -1
  34. package/dist/cjs/paneview/paneviewPanel.js +13 -1
  35. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  36. package/dist/cjs/react/dockview/dockview.js +16 -0
  37. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  38. package/dist/cjs/react/gridview/gridview.js +8 -0
  39. package/dist/cjs/react/gridview/gridview.js.map +1 -1
  40. package/dist/cjs/react/paneview/paneview.js +8 -4
  41. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  42. package/dist/cjs/react/splitview/splitview.js +8 -0
  43. package/dist/cjs/react/splitview/splitview.js.map +1 -1
  44. package/dist/cjs/splitview/core/splitview.js +1 -1
  45. package/dist/cjs/splitview/core/splitview.js.map +1 -1
  46. package/dist/cjs/splitview/splitviewComponent.d.ts +11 -5
  47. package/dist/cjs/splitview/splitviewComponent.js +10 -0
  48. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  49. package/dist/dockview.amd.js +128 -60
  50. package/dist/dockview.amd.min.js +3 -3
  51. package/dist/dockview.amd.min.noStyle.js +3 -3
  52. package/dist/dockview.amd.noStyle.js +128 -60
  53. package/dist/dockview.cjs.js +128 -60
  54. package/dist/dockview.esm.js +128 -61
  55. package/dist/dockview.esm.min.js +3 -3
  56. package/dist/dockview.js +128 -60
  57. package/dist/dockview.min.js +3 -3
  58. package/dist/dockview.min.noStyle.js +3 -3
  59. package/dist/dockview.noStyle.js +128 -60
  60. package/dist/esm/api/component.api.d.ts +8 -2
  61. package/dist/esm/api/component.api.js +24 -0
  62. package/dist/esm/dnd/droptarget.d.ts +1 -5
  63. package/dist/esm/dnd/droptarget.js +1 -1
  64. package/dist/esm/dockview/defaultGroupPanelView.js +3 -1
  65. package/dist/esm/events.d.ts +7 -0
  66. package/dist/esm/events.js +18 -0
  67. package/dist/esm/gridview/baseComponentGridview.js +7 -14
  68. package/dist/esm/gridview/gridview.js +0 -1
  69. package/dist/esm/gridview/gridviewComponent.d.ts +2 -2
  70. package/dist/esm/groupview/groupview.js +2 -2
  71. package/dist/esm/groupview/titlebar/tabsContainer.js +2 -2
  72. package/dist/esm/index.d.ts +0 -1
  73. package/dist/esm/index.js +0 -1
  74. package/dist/esm/paneview/draggablePaneviewPanel.js +1 -1
  75. package/dist/esm/paneview/paneview.d.ts +1 -1
  76. package/dist/esm/paneview/paneview.js +1 -4
  77. package/dist/esm/paneview/paneviewComponent.d.ts +6 -2
  78. package/dist/esm/paneview/paneviewComponent.js +10 -8
  79. package/dist/esm/paneview/paneviewPanel.d.ts +5 -1
  80. package/dist/esm/paneview/paneviewPanel.js +9 -1
  81. package/dist/esm/react/dockview/dockview.js +16 -0
  82. package/dist/esm/react/gridview/gridview.js +8 -0
  83. package/dist/esm/react/paneview/paneview.js +8 -4
  84. package/dist/esm/react/splitview/splitview.js +8 -0
  85. package/dist/esm/splitview/core/splitview.js +1 -1
  86. package/dist/esm/splitview/splitviewComponent.d.ts +11 -5
  87. package/dist/esm/splitview/splitviewComponent.js +9 -1
  88. package/package.json +7 -7
  89. package/dist/cjs/footnote.d.ts +0 -1
  90. package/dist/cjs/footnote.js +0 -20
  91. package/dist/cjs/footnote.js.map +0 -1
  92. package/dist/esm/footnote.d.ts +0 -1
  93. package/dist/esm/footnote.js +0 -19
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview
3
- * @version 1.0.0
3
+ * @version 1.0.3
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -31,25 +31,6 @@
31
31
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
32
  var ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);
33
33
 
34
- function runFootnote() {
35
- var _a, _b;
36
- const DOCKVIEW_SUPPRESS_WATERMARK = 'DOCKVIEW_WATERMARK_SUPPRESSED';
37
- const isTest = ((_b = (_a = window.process) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.NODE_ENV) === 'test';
38
- if (isTest) {
39
- return; // don't spam people tests
40
- }
41
- const isSuppressed = !!window[DOCKVIEW_SUPPRESS_WATERMARK];
42
- if (!isSuppressed) {
43
- console.log([
44
- 'dockview: https://github.com/mathuo/dockview for examples and documentation',
45
- 'dockview: https://www.npmjs.com/package/dockview',
46
- `dockview: To suppress this message set window.${DOCKVIEW_SUPPRESS_WATERMARK}=1 before importing the dockview package`,
47
- '',
48
- ].join('\n'));
49
- }
50
- }
51
- runFootnote();
52
-
53
34
  exports.Event = void 0;
54
35
  (function (Event) {
55
36
  Event.any = (...children) => {
@@ -120,6 +101,24 @@
120
101
  element.removeEventListener(type, listener);
121
102
  },
122
103
  };
104
+ }
105
+ class TickDelayedEvent {
106
+ constructor() {
107
+ this._onFired = new Emitter();
108
+ this.onEvent = this._onFired.event;
109
+ }
110
+ fire() {
111
+ if (this.timer) {
112
+ clearTimeout(this.timer);
113
+ }
114
+ this.timer = setTimeout(() => {
115
+ this._onFired.fire();
116
+ clearTimeout(this.timer);
117
+ });
118
+ }
119
+ dispose() {
120
+ this._onFired.dispose();
121
+ }
123
122
  }
124
123
 
125
124
  exports.Disposable = void 0;
@@ -302,6 +301,12 @@
302
301
  get onDidLayoutChange() {
303
302
  return this.component.onDidLayoutChange;
304
303
  }
304
+ get onDidAddView() {
305
+ return this.component.onDidAddView;
306
+ }
307
+ get onDidRemoveView() {
308
+ return this.component.onDidRemoveView;
309
+ }
305
310
  get orientation() {
306
311
  return this.component.orientation;
307
312
  }
@@ -364,6 +369,23 @@
364
369
  get onDidLayoutChange() {
365
370
  return this.component.onDidLayoutChange;
366
371
  }
372
+ get onDidAddView() {
373
+ return this.component.onDidAddView;
374
+ }
375
+ get onDidRemoveView() {
376
+ return this.component.onDidRemoveView;
377
+ }
378
+ get onDidDrop() {
379
+ const emitter = new Emitter();
380
+ const disposable = this.component.onDidDrop((e) => {
381
+ emitter.fire(Object.assign(Object.assign({}, e), { api: this }));
382
+ });
383
+ emitter.dispose = () => {
384
+ disposable.dispose();
385
+ emitter.dispose();
386
+ };
387
+ return emitter.event;
388
+ }
367
389
  getPanels() {
368
390
  return this.component.getPanels();
369
391
  }
@@ -886,7 +908,7 @@
886
908
  this._onDidAddView = new Emitter();
887
909
  this.onDidAddView = this._onDidAddView.event;
888
910
  this._onDidRemoveView = new Emitter();
889
- this.onDidRemoveView = this._onDidAddView.event;
911
+ this.onDidRemoveView = this._onDidRemoveView.event;
890
912
  this._startSnappingEnabled = true;
891
913
  this._endSnappingEnabled = true;
892
914
  this.resize = (index, delta, sizes = this.views.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {
@@ -1528,9 +1550,9 @@
1528
1550
  var _a;
1529
1551
  super();
1530
1552
  this.paneItems = [];
1553
+ this.skipAnimation = false;
1531
1554
  this._onDidChange = new Emitter();
1532
1555
  this.onDidChange = this._onDidChange.event;
1533
- this.skipAnimation = false;
1534
1556
  this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.VERTICAL;
1535
1557
  this.element = document.createElement('div');
1536
1558
  this.element.className = 'pane-container';
@@ -1630,9 +1652,6 @@
1630
1652
  }
1631
1653
  }
1632
1654
  layout(size, orthogonalSize) {
1633
- // for (const paneItem of this.paneItems) {
1634
- // paneItem.pane.orthogonalSize = orthogonalSize;
1635
- // }
1636
1655
  this.splitview.layout(size, orthogonalSize);
1637
1656
  }
1638
1657
  setupAnimation() {
@@ -1816,7 +1835,7 @@
1816
1835
  const state = this._state;
1817
1836
  this.removeDropTarget();
1818
1837
  if (state) {
1819
- this._onDrop.fire({ position: state, event: e });
1838
+ this._onDrop.fire({ position: state, nativeEvent: e });
1820
1839
  }
1821
1840
  },
1822
1841
  }));
@@ -2479,7 +2498,6 @@
2479
2498
  }
2480
2499
  parent.removeChild(index, sizing);
2481
2500
  if (parent.children.length === 0) {
2482
- // throw new Error('Invalid grid state');
2483
2501
  return node.view;
2484
2502
  }
2485
2503
  if (parent.children.length > 1) {
@@ -2780,7 +2798,7 @@
2780
2798
  });
2781
2799
  this.addDisposables(this.voidDropTarget.onDrop((event) => {
2782
2800
  this._onDrop.fire({
2783
- event: event.event,
2801
+ event: event.nativeEvent,
2784
2802
  index: this.tabs.length,
2785
2803
  });
2786
2804
  }), this.voidDropTarget, addDisposableListener(this.tabContainer, 'mousedown', (event) => {
@@ -2902,7 +2920,7 @@
2902
2920
  }
2903
2921
  }), tabToAdd.onDrop((event) => {
2904
2922
  this._onDrop.fire({
2905
- event: event.event,
2923
+ event: event.nativeEvent,
2906
2924
  index: this.tabs.findIndex((x) => x.value === tabToAdd),
2907
2925
  });
2908
2926
  }));
@@ -2978,9 +2996,9 @@
2978
2996
  }), this.contentContainer.onDidFocus(() => {
2979
2997
  this.accessor.doSetGroupActive(this.parent, true);
2980
2998
  }), this.contentContainer.onDidBlur(() => {
2981
- // this._activePanel?.api._ondid
2999
+ // noop
2982
3000
  }), this.dropTarget.onDrop((event) => {
2983
- this.handleDropEvent(event.event, event.position);
3001
+ this.handleDropEvent(event.nativeEvent, event.position);
2984
3002
  }));
2985
3003
  }
2986
3004
  get element() {
@@ -3398,11 +3416,8 @@
3398
3416
  this._onGridEvent.fire({ kind: exports.GroupChangeKind.LAYOUT });
3399
3417
  }));
3400
3418
  this.addDisposables((() => {
3401
- /**
3402
- * TODO Fix this relatively ugly 'merge and delay'
3403
- */
3404
- let timer;
3405
- return this.onGridEvent((event) => {
3419
+ const tickDelayedEvent = new TickDelayedEvent();
3420
+ return new CompositeDisposable(this.onGridEvent((event) => {
3406
3421
  if ([
3407
3422
  exports.GroupChangeKind.ADD_GROUP,
3408
3423
  exports.GroupChangeKind.REMOVE_GROUP,
@@ -3412,15 +3427,11 @@
3412
3427
  exports.GroupChangeKind.PANEL_ACTIVE,
3413
3428
  exports.GroupChangeKind.LAYOUT,
3414
3429
  ].includes(event.kind)) {
3415
- if (timer) {
3416
- clearTimeout(timer);
3417
- }
3418
- timer = setTimeout(() => {
3419
- this._onDidLayoutChange.fire();
3420
- clearTimeout(timer);
3421
- });
3430
+ tickDelayedEvent.fire();
3422
3431
  }
3423
- });
3432
+ }), tickDelayedEvent.onEvent(() => {
3433
+ this._onDidLayoutChange.fire();
3434
+ }), tickDelayedEvent);
3424
3435
  })());
3425
3436
  }
3426
3437
  get id() {
@@ -4426,7 +4437,9 @@
4426
4437
  this.tab.init(params);
4427
4438
  }
4428
4439
  updateParentGroup(group, isPanelVisible) {
4429
- // TODO
4440
+ var _a;
4441
+ this._content.updateParentGroup(group, isPanelVisible);
4442
+ (_a = this._tab) === null || _a === void 0 ? void 0 : _a.updateParentGroup(group, isPanelVisible);
4430
4443
  }
4431
4444
  layout(width, height) {
4432
4445
  this.content.layout(width, height);
@@ -5196,6 +5209,10 @@
5196
5209
  this.element = element;
5197
5210
  this._disposable = new MutableDisposable();
5198
5211
  this.panels = new Map();
5212
+ this._onDidAddView = new Emitter();
5213
+ this.onDidAddView = this._onDidAddView.event;
5214
+ this._onDidRemoveView = new Emitter();
5215
+ this.onDidRemoveView = this._onDidRemoveView.event;
5199
5216
  this._onDidLayoutChange = new Emitter();
5200
5217
  this.onDidLayoutChange = this._onDidLayoutChange.event;
5201
5218
  this._options = options;
@@ -5221,7 +5238,7 @@
5221
5238
  this._splitview = value;
5222
5239
  this._disposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
5223
5240
  this._onDidLayoutChange.fire(undefined);
5224
- }));
5241
+ }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));
5225
5242
  }
5226
5243
  get minimumSize() {
5227
5244
  return this.splitview.minimumSize;
@@ -5395,6 +5412,10 @@
5395
5412
  });
5396
5413
  panel.orientation = orientation;
5397
5414
  this.doAddView(panel);
5415
+ setTimeout(() => {
5416
+ // the original onDidAddView events are missed since they are fired before we can subcribe to them
5417
+ this._onDidAddView.fire(panel);
5418
+ }, 0);
5398
5419
  return { size: view.size, view: panel };
5399
5420
  }),
5400
5421
  },
@@ -5513,7 +5534,7 @@
5513
5534
  }
5514
5535
 
5515
5536
  class PaneviewPanel extends BasePanelView {
5516
- constructor(id, component, headerComponent, orientation, isExpanded) {
5537
+ constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {
5517
5538
  super(id, component, new PaneviewPanelApiImpl(id));
5518
5539
  this.headerComponent = headerComponent;
5519
5540
  this._onDidChangeExpansionState = new Emitter({ replay: true });
@@ -5529,6 +5550,7 @@
5529
5550
  this.expandedSize = 0;
5530
5551
  this.api.pane = this; // TODO cannot use 'this' before 'super'
5531
5552
  this._isExpanded = isExpanded;
5553
+ this._headerVisible = isHeaderVisible;
5532
5554
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
5533
5555
  this._orientation = orientation;
5534
5556
  this.element.classList.add('pane');
@@ -5596,6 +5618,13 @@
5596
5618
  this._maximumBodySize =
5597
5619
  typeof value === 'number' ? value : Number.POSITIVE_INFINITY;
5598
5620
  }
5621
+ get headerVisible() {
5622
+ return this._headerVisible;
5623
+ }
5624
+ set headerVisible(value) {
5625
+ this._headerVisible = value;
5626
+ this.header.style.display = value ? '' : 'none';
5627
+ }
5599
5628
  setVisible(isVisible) {
5600
5629
  this.api._onDidVisibilityChange.fire({ isVisible });
5601
5630
  }
@@ -5693,7 +5722,7 @@
5693
5722
 
5694
5723
  class DraggablePaneviewPanel extends PaneviewPanel {
5695
5724
  constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
5696
- super(id, component, headerComponent, orientation, isExpanded);
5725
+ super(id, component, headerComponent, orientation, isExpanded, true);
5697
5726
  this._onDidDrop = new Emitter();
5698
5727
  this.onDidDrop = this._onDidDrop.event;
5699
5728
  if (!disableDnd) {
@@ -5816,6 +5845,10 @@
5816
5845
  this.onDidLayoutChange = this._onDidLayoutChange.event;
5817
5846
  this._onDidDrop = new Emitter();
5818
5847
  this.onDidDrop = this._onDidDrop.event;
5848
+ this._onDidAddView = new Emitter();
5849
+ this.onDidAddView = this._onDidAddView.event;
5850
+ this._onDidRemoveView = new Emitter();
5851
+ this.onDidRemoveView = this._onDidRemoveView.event;
5819
5852
  this._options = options;
5820
5853
  if (!options.components) {
5821
5854
  options.components = {};
@@ -5829,17 +5862,11 @@
5829
5862
  });
5830
5863
  this.addDisposables(this._disposable);
5831
5864
  }
5832
- get onDidAddView() {
5833
- return this._paneview.onDidAddView;
5834
- }
5835
- get onDidRemoveView() {
5836
- return this._paneview.onDidRemoveView;
5837
- }
5838
5865
  set paneview(value) {
5839
5866
  this._paneview = value;
5840
- this._disposable.value = new CompositeDisposable(this.paneview.onDidChange(() => {
5867
+ this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {
5841
5868
  this._onDidLayoutChange.fire(undefined);
5842
- }));
5869
+ }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));
5843
5870
  }
5844
5871
  get paneview() {
5845
5872
  return this._paneview;
@@ -6019,6 +6046,10 @@
6019
6046
  });
6020
6047
  panel.orientation = this.paneview.orientation;
6021
6048
  });
6049
+ setTimeout(() => {
6050
+ // the original onDidAddView events are missed since they are fired before we can subcribe to them
6051
+ this._onDidAddView.fire(panel);
6052
+ }, 0);
6022
6053
  return { size: view.size, view: panel };
6023
6054
  }),
6024
6055
  },
@@ -6524,6 +6555,22 @@
6524
6555
  dockview.dispose();
6525
6556
  };
6526
6557
  }, []);
6558
+ React__namespace.useEffect(() => {
6559
+ if (!dockviewRef.current) {
6560
+ return;
6561
+ }
6562
+ dockviewRef.current.updateOptions({
6563
+ frameworkComponents: props.components,
6564
+ });
6565
+ }, [props.components]);
6566
+ React__namespace.useEffect(() => {
6567
+ if (!dockviewRef.current) {
6568
+ return;
6569
+ }
6570
+ dockviewRef.current.updateOptions({
6571
+ frameworkTabComponents: props.tabComponents,
6572
+ });
6573
+ }, [props.tabComponents]);
6527
6574
  React__namespace.useEffect(() => {
6528
6575
  if (!props.onTabContextMenu || !dockviewRef.current) {
6529
6576
  return () => {
@@ -6658,6 +6705,14 @@
6658
6705
  splitview.dispose();
6659
6706
  };
6660
6707
  }, []);
6708
+ React__namespace.useEffect(() => {
6709
+ if (!splitviewRef.current) {
6710
+ return;
6711
+ }
6712
+ splitviewRef.current.updateOptions({
6713
+ frameworkComponents: props.components,
6714
+ });
6715
+ }, [props.components]);
6661
6716
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6662
6717
  });
6663
6718
  SplitviewReact.displayName = 'SplitviewComponent';
@@ -6728,6 +6783,14 @@
6728
6783
  gridview.dispose();
6729
6784
  };
6730
6785
  }, []);
6786
+ React__namespace.useEffect(() => {
6787
+ if (!gridviewRef.current) {
6788
+ return;
6789
+ }
6790
+ gridviewRef.current.updateOptions({
6791
+ frameworkComponents: props.components,
6792
+ });
6793
+ }, [props.components]);
6731
6794
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6732
6795
  });
6733
6796
  GridviewReact.displayName = 'GridviewComponent';
@@ -6818,14 +6881,18 @@
6818
6881
  };
6819
6882
  }, []);
6820
6883
  React__namespace.useEffect(() => {
6821
- var _a;
6822
- (_a = paneviewRef.current) === null || _a === void 0 ? void 0 : _a.updateOptions({
6884
+ if (!paneviewRef.current) {
6885
+ return;
6886
+ }
6887
+ paneviewRef.current.updateOptions({
6823
6888
  frameworkComponents: props.components,
6824
6889
  });
6825
6890
  }, [props.components]);
6826
6891
  React__namespace.useEffect(() => {
6827
- var _a;
6828
- (_a = paneviewRef.current) === null || _a === void 0 ? void 0 : _a.updateOptions({
6892
+ if (!paneviewRef.current) {
6893
+ return;
6894
+ }
6895
+ paneviewRef.current.updateOptions({
6829
6896
  headerframeworkComponents: props.headerComponents,
6830
6897
  });
6831
6898
  }, [props.headerComponents]);
@@ -6884,6 +6951,7 @@
6884
6951
  exports.SplitviewPanel = SplitviewPanel;
6885
6952
  exports.SplitviewReact = SplitviewReact;
6886
6953
  exports.Tab = Tab$1;
6954
+ exports.TickDelayedEvent = TickDelayedEvent;
6887
6955
  exports.addDisposableListener = addDisposableListener;
6888
6956
  exports.addDisposableWindowListener = addDisposableWindowListener;
6889
6957
  exports.extractData = extractData;
@@ -5,13 +5,14 @@ import { AddComponentOptions, IGridviewComponent, SerializedGridview } from '../
5
5
  import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
6
6
  import { IGroupPanel } from '../groupview/groupPanel';
7
7
  import { AddPaneviewCompponentOptions, SerializedPaneview, IPaneviewComponent } from '../paneview/paneviewComponent';
8
- import { IPaneviewPanel } from '../paneview/paneviewPanel';
8
+ import { IPaneviewPanel, PaneviewPanel } from '../paneview/paneviewPanel';
9
9
  import { AddSplitviewComponentOptions, ISplitviewComponent, SerializedSplitview, SplitviewComponentUpdateOptions } from '../splitview/splitviewComponent';
10
- import { Orientation, Sizing } from '../splitview/core/splitview';
10
+ import { IView, Orientation, Sizing } from '../splitview/core/splitview';
11
11
  import { ISplitviewPanel } from '../splitview/splitviewPanel';
12
12
  import { GroupviewPanel } from '../groupview/groupviewPanel';
13
13
  import { Event } from '../events';
14
14
  import { IDisposable } from '../lifecycle';
15
+ import { PaneviewDropEvent } from '../react';
15
16
  export interface CommonApi {
16
17
  readonly height: number;
17
18
  readonly width: number;
@@ -28,6 +29,8 @@ export declare class SplitviewApi implements CommonApi {
28
29
  get width(): number;
29
30
  get length(): number;
30
31
  get onDidLayoutChange(): Event<void>;
32
+ get onDidAddView(): Event<IView>;
33
+ get onDidRemoveView(): Event<IView>;
31
34
  get orientation(): Orientation;
32
35
  constructor(component: ISplitviewComponent);
33
36
  updateOptions(options: SplitviewComponentUpdateOptions): void;
@@ -51,6 +54,9 @@ export declare class PaneviewApi implements CommonApi {
51
54
  get minimumSize(): number;
52
55
  get maximumSize(): number;
53
56
  get onDidLayoutChange(): Event<void>;
57
+ get onDidAddView(): Event<PaneviewPanel>;
58
+ get onDidRemoveView(): Event<PaneviewPanel>;
59
+ get onDidDrop(): Event<PaneviewDropEvent>;
54
60
  constructor(component: IPaneviewComponent);
55
61
  getPanels(): IPaneviewPanel[];
56
62
  removePanel(panel: IPaneviewPanel): void;
@@ -1,3 +1,4 @@
1
+ import { Emitter } from '../events';
1
2
  export class SplitviewApi {
2
3
  constructor(component) {
3
4
  this.component = component;
@@ -20,6 +21,12 @@ export class SplitviewApi {
20
21
  get onDidLayoutChange() {
21
22
  return this.component.onDidLayoutChange;
22
23
  }
24
+ get onDidAddView() {
25
+ return this.component.onDidAddView;
26
+ }
27
+ get onDidRemoveView() {
28
+ return this.component.onDidRemoveView;
29
+ }
23
30
  get orientation() {
24
31
  return this.component.orientation;
25
32
  }
@@ -82,6 +89,23 @@ export class PaneviewApi {
82
89
  get onDidLayoutChange() {
83
90
  return this.component.onDidLayoutChange;
84
91
  }
92
+ get onDidAddView() {
93
+ return this.component.onDidAddView;
94
+ }
95
+ get onDidRemoveView() {
96
+ return this.component.onDidRemoveView;
97
+ }
98
+ get onDidDrop() {
99
+ const emitter = new Emitter();
100
+ const disposable = this.component.onDidDrop((e) => {
101
+ emitter.fire(Object.assign(Object.assign({}, e), { api: this }));
102
+ });
103
+ emitter.dispose = () => {
104
+ disposable.dispose();
105
+ emitter.dispose();
106
+ };
107
+ return emitter.event;
108
+ }
85
109
  getPanels() {
86
110
  return this.component.getPanels();
87
111
  }
@@ -1,9 +1,5 @@
1
1
  import { Event } from '../events';
2
2
  import { CompositeDisposable } from '../lifecycle';
3
- export interface DroptargetEvent {
4
- position: Position;
5
- event: DragEvent;
6
- }
7
3
  export declare enum Position {
8
4
  Top = "Top",
9
5
  Left = "Left",
@@ -13,7 +9,7 @@ export declare enum Position {
13
9
  }
14
10
  export interface DroptargetEvent {
15
11
  position: Position;
16
- event: DragEvent;
12
+ nativeEvent: DragEvent;
17
13
  }
18
14
  export declare type DropTargetDirections = 'vertical' | 'horizontal' | 'all' | 'none';
19
15
  export declare type CanDisplayOverlay = boolean | ((dragEvent: DragEvent) => boolean);
@@ -114,7 +114,7 @@ export class Droptarget extends CompositeDisposable {
114
114
  const state = this._state;
115
115
  this.removeDropTarget();
116
116
  if (state) {
117
- this._onDrop.fire({ position: state, event: e });
117
+ this._onDrop.fire({ position: state, nativeEvent: e });
118
118
  }
119
119
  },
120
120
  }));
@@ -29,7 +29,9 @@ export class DefaultGroupPanelView {
29
29
  this.tab.init(params);
30
30
  }
31
31
  updateParentGroup(group, isPanelVisible) {
32
- // TODO
32
+ var _a;
33
+ this._content.updateParentGroup(group, isPanelVisible);
34
+ (_a = this._tab) === null || _a === void 0 ? void 0 : _a.updateParentGroup(group, isPanelVisible);
33
35
  }
34
36
  layout(width, height) {
35
37
  this.content.layout(width, height);
@@ -21,3 +21,10 @@ export declare class Emitter<T> implements IDisposable {
21
21
  }
22
22
  export declare function addDisposableWindowListener<K extends keyof WindowEventMap>(element: Window, type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): IDisposable;
23
23
  export declare function addDisposableListener<K extends keyof HTMLElementEventMap>(element: HTMLElement, type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): IDisposable;
24
+ export declare class TickDelayedEvent implements IDisposable {
25
+ private timer;
26
+ private readonly _onFired;
27
+ readonly onEvent: Event<void>;
28
+ fire(): void;
29
+ dispose(): void;
30
+ }
@@ -69,3 +69,21 @@ export function addDisposableListener(element, type, listener, options) {
69
69
  },
70
70
  };
71
71
  }
72
+ export class TickDelayedEvent {
73
+ constructor() {
74
+ this._onFired = new Emitter();
75
+ this.onEvent = this._onFired.event;
76
+ }
77
+ fire() {
78
+ if (this.timer) {
79
+ clearTimeout(this.timer);
80
+ }
81
+ this.timer = setTimeout(() => {
82
+ this._onFired.fire();
83
+ clearTimeout(this.timer);
84
+ });
85
+ }
86
+ dispose() {
87
+ this._onFired.dispose();
88
+ }
89
+ }
@@ -1,4 +1,4 @@
1
- import { Emitter } from '../events';
1
+ import { Emitter, TickDelayedEvent } from '../events';
2
2
  import { getGridLocation, Gridview } from './gridview';
3
3
  import { Position } from '../dnd/droptarget';
4
4
  import { CompositeDisposable } from '../lifecycle';
@@ -52,11 +52,8 @@ export class BaseGrid extends CompositeDisposable {
52
52
  this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
53
53
  }));
54
54
  this.addDisposables((() => {
55
- /**
56
- * TODO Fix this relatively ugly 'merge and delay'
57
- */
58
- let timer;
59
- return this.onGridEvent((event) => {
55
+ const tickDelayedEvent = new TickDelayedEvent();
56
+ return new CompositeDisposable(this.onGridEvent((event) => {
60
57
  if ([
61
58
  GroupChangeKind.ADD_GROUP,
62
59
  GroupChangeKind.REMOVE_GROUP,
@@ -66,15 +63,11 @@ export class BaseGrid extends CompositeDisposable {
66
63
  GroupChangeKind.PANEL_ACTIVE,
67
64
  GroupChangeKind.LAYOUT,
68
65
  ].includes(event.kind)) {
69
- if (timer) {
70
- clearTimeout(timer);
71
- }
72
- timer = setTimeout(() => {
73
- this._onDidLayoutChange.fire();
74
- clearTimeout(timer);
75
- });
66
+ tickDelayedEvent.fire();
76
67
  }
77
- });
68
+ }), tickDelayedEvent.onEvent(() => {
69
+ this._onDidLayoutChange.fire();
70
+ }), tickDelayedEvent);
78
71
  })());
79
72
  }
80
73
  get id() {
@@ -329,7 +329,6 @@ export class Gridview {
329
329
  }
330
330
  parent.removeChild(index, sizing);
331
331
  if (parent.children.length === 0) {
332
- // throw new Error('Invalid grid state');
333
332
  return node.view;
334
333
  }
335
334
  if (parent.children.length > 1) {
@@ -37,7 +37,7 @@ export interface IGridPanelComponentView extends IGridPanelView {
37
37
  export declare type GridviewComponentUpdateOptions = Pick<GridviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>;
38
38
  export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
39
39
  readonly orientation: Orientation;
40
- updateOptions(options: GridviewComponentUpdateOptions): void;
40
+ updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
41
41
  addPanel(options: AddComponentOptions): void;
42
42
  removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
43
43
  toggleVisibility(panel: IGridviewPanel): void;
@@ -61,7 +61,7 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
61
61
  get deserializer(): IPanelDeserializer | undefined;
62
62
  set deserializer(value: IPanelDeserializer | undefined);
63
63
  constructor(element: HTMLElement, options: GridviewComponentOptions);
64
- updateOptions(options: GridviewComponentUpdateOptions): void;
64
+ updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
65
65
  removePanel(panel: GridviewPanel): void;
66
66
  /**
67
67
  * Serialize the current state of the layout
@@ -72,9 +72,9 @@ export class Groupview extends CompositeDisposable {
72
72
  }), this.contentContainer.onDidFocus(() => {
73
73
  this.accessor.doSetGroupActive(this.parent, true);
74
74
  }), this.contentContainer.onDidBlur(() => {
75
- // this._activePanel?.api._ondid
75
+ // noop
76
76
  }), this.dropTarget.onDrop((event) => {
77
- this.handleDropEvent(event.event, event.position);
77
+ this.handleDropEvent(event.nativeEvent, event.position);
78
78
  }));
79
79
  }
80
80
  get element() {
@@ -42,7 +42,7 @@ export class TabsContainer extends CompositeDisposable {
42
42
  });
43
43
  this.addDisposables(this.voidDropTarget.onDrop((event) => {
44
44
  this._onDrop.fire({
45
- event: event.event,
45
+ event: event.nativeEvent,
46
46
  index: this.tabs.length,
47
47
  });
48
48
  }), this.voidDropTarget, addDisposableListener(this.tabContainer, 'mousedown', (event) => {
@@ -164,7 +164,7 @@ export class TabsContainer extends CompositeDisposable {
164
164
  }
165
165
  }), tabToAdd.onDrop((event) => {
166
166
  this._onDrop.fire({
167
- event: event.event,
167
+ event: event.nativeEvent,
168
168
  index: this.tabs.findIndex((x) => x.value === tabToAdd),
169
169
  });
170
170
  }));
@@ -1,4 +1,3 @@
1
- import './footnote';
2
1
  export * from './events';
3
2
  export * from './lifecycle';
4
3
  export * from './dnd/dataTransfer';
package/dist/esm/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import './footnote';
2
1
  export * from './events';
3
2
  export * from './lifecycle';
4
3
  export * from './dnd/dataTransfer';