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,4 +1,4 @@
1
- import { DockviewMaximizedGroupChanged, FloatingGroupOptions, IDockviewComponent, MovePanelEvent, SerializedDockview } from '../dockview/dockviewComponent';
1
+ import { DockviewMaximizedGroupChanged, FloatingGroupOptions, IDockviewComponent, MovePanelEvent, PopoutGroupChangePositionEvent, PopoutGroupChangeSizeEvent, SerializedDockview } from '../dockview/dockviewComponent';
2
2
  import { AddGroupOptions, AddPanelOptions, DockviewComponentOptions, DockviewDndOverlayEvent, MovementOptions } from '../dockview/options';
3
3
  import { Parameters } from '../panel/types';
4
4
  import { Direction } from '../gridview/baseComponentGridview';
@@ -417,6 +417,8 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
417
417
  */
418
418
  get onWillDragPanel(): Event<TabDragEvent>;
419
419
  get onUnhandledDragOverEvent(): Event<DockviewDndOverlayEvent>;
420
+ get onDidPopoutGroupSizeChange(): Event<PopoutGroupChangeSizeEvent>;
421
+ get onDidPopoutGroupPositionChange(): Event<PopoutGroupChangePositionEvent>;
420
422
  /**
421
423
  * All panel objects.
422
424
  */
@@ -817,6 +817,20 @@ var DockviewApi = /** @class */ (function () {
817
817
  enumerable: false,
818
818
  configurable: true
819
819
  });
820
+ Object.defineProperty(DockviewApi.prototype, "onDidPopoutGroupSizeChange", {
821
+ get: function () {
822
+ return this.component.onDidPopoutGroupSizeChange;
823
+ },
824
+ enumerable: false,
825
+ configurable: true
826
+ });
827
+ Object.defineProperty(DockviewApi.prototype, "onDidPopoutGroupPositionChange", {
828
+ get: function () {
829
+ return this.component.onDidPopoutGroupPositionChange;
830
+ },
831
+ enumerable: false,
832
+ configurable: true
833
+ });
820
834
  Object.defineProperty(DockviewApi.prototype, "panels", {
821
835
  /**
822
836
  * All panel objects.
@@ -48,7 +48,7 @@ var PopupService = /** @class */ (function (_super) {
48
48
  wrapper.style.left = "".concat(position.x - offsetX, "px");
49
49
  this._element.appendChild(wrapper);
50
50
  this._active = wrapper;
51
- this._activeDisposable.value = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableWindowListener)(window, 'pointerdown', function (event) {
51
+ this._activeDisposable.value = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableListener)(window, 'pointerdown', function (event) {
52
52
  var _a;
53
53
  var target = event.target;
54
54
  if (!(target instanceof HTMLElement)) {
@@ -80,9 +80,15 @@ var Tabs = /** @class */ (function (_super) {
80
80
  _this._tabsList = document.createElement('div');
81
81
  _this._tabsList.className = 'dv-tabs-container dv-horizontal';
82
82
  _this.showTabsOverflowControl = options.showTabsOverflowControl;
83
- var scrollbar = new scrollbar_1.Scrollbar(_this._tabsList);
84
- _this._element = scrollbar.element;
85
- _this.addDisposables(_this._onOverflowTabsChange, _this._observerDisposable, scrollbar, _this._onWillShowOverlay, _this._onDrop, _this._onTabDragStart, (0, events_1.addDisposableListener)(_this.element, 'pointerdown', function (event) {
83
+ if (accessor.options.scrollbars === 'native') {
84
+ _this._element = _this._tabsList;
85
+ }
86
+ else {
87
+ var scrollbar = new scrollbar_1.Scrollbar(_this._tabsList);
88
+ _this._element = scrollbar.element;
89
+ _this.addDisposables(scrollbar);
90
+ }
91
+ _this.addDisposables(_this._onOverflowTabsChange, _this._observerDisposable, _this._onWillShowOverlay, _this._onDrop, _this._onTabDragStart, (0, events_1.addDisposableListener)(_this.element, 'pointerdown', function (event) {
86
92
  if (event.defaultPrevented) {
87
93
  return;
88
94
  }
@@ -107,6 +107,16 @@ export interface DockviewMaximizedGroupChanged {
107
107
  group: DockviewGroupPanel;
108
108
  isMaximized: boolean;
109
109
  }
110
+ export interface PopoutGroupChangeSizeEvent {
111
+ width: number;
112
+ height: number;
113
+ group: DockviewGroupPanel;
114
+ }
115
+ export interface PopoutGroupChangePositionEvent {
116
+ screenX: number;
117
+ screenY: number;
118
+ group: DockviewGroupPanel;
119
+ }
110
120
  export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
111
121
  readonly activePanel: IDockviewPanel | undefined;
112
122
  readonly totalPanels: number;
@@ -127,6 +137,8 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
127
137
  readonly onUnhandledDragOverEvent: Event<DockviewDndOverlayEvent>;
128
138
  readonly onDidMovePanel: Event<MovePanelEvent>;
129
139
  readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChanged>;
140
+ readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
141
+ readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
130
142
  readonly options: DockviewComponentOptions;
131
143
  updateOptions(options: DockviewOptions): void;
132
144
  moveGroupOrPanel(options: MoveGroupOrPanelOptions): void;
@@ -185,6 +197,10 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
185
197
  readonly onDidRemovePanel: Event<IDockviewPanel>;
186
198
  private readonly _onDidAddPanel;
187
199
  readonly onDidAddPanel: Event<IDockviewPanel>;
200
+ private readonly _onDidPopoutGroupSizeChange;
201
+ readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
202
+ private readonly _onDidPopoutGroupPositionChange;
203
+ readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
188
204
  private readonly _onDidLayoutFromJSON;
189
205
  readonly onDidLayoutFromJSON: Event<void>;
190
206
  private readonly _onDidActivePanelChange;
@@ -142,6 +142,10 @@ var DockviewComponent = /** @class */ (function (_super) {
142
142
  _this.onDidRemovePanel = _this._onDidRemovePanel.event;
143
143
  _this._onDidAddPanel = new events_1.Emitter();
144
144
  _this.onDidAddPanel = _this._onDidAddPanel.event;
145
+ _this._onDidPopoutGroupSizeChange = new events_1.Emitter();
146
+ _this.onDidPopoutGroupSizeChange = _this._onDidPopoutGroupSizeChange.event;
147
+ _this._onDidPopoutGroupPositionChange = new events_1.Emitter();
148
+ _this.onDidPopoutGroupPositionChange = _this._onDidPopoutGroupPositionChange.event;
145
149
  _this._onDidLayoutFromJSON = new events_1.Emitter();
146
150
  _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
147
151
  _this._onDidActivePanelChange = new events_1.Emitter();
@@ -171,7 +175,7 @@ var DockviewComponent = /** @class */ (function (_super) {
171
175
  if (options.debug) {
172
176
  _this.addDisposables(new strictEventsSequencing_1.StrictEventsSequencing(_this));
173
177
  }
174
- _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(function () {
178
+ _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(function () {
175
179
  _this.updateWatermark();
176
180
  }), _this.onDidAdd(function (event) {
177
181
  if (!_this._moving) {
@@ -192,7 +196,7 @@ var DockviewComponent = /** @class */ (function (_super) {
192
196
  });
193
197
  }), events_1.Event.any(_this.onDidAdd, _this.onDidRemove)(function () {
194
198
  _this.updateWatermark();
195
- }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidAddGroup, _this.onDidRemove, _this.onDidMovePanel, _this.onDidActivePanelChange)(function () {
199
+ }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidAddGroup, _this.onDidRemove, _this.onDidMovePanel, _this.onDidActivePanelChange, _this.onDidPopoutGroupPositionChange, _this.onDidPopoutGroupSizeChange)(function () {
196
200
  _this._bufferOnDidLayoutChange.fire();
197
201
  }), lifecycle_1.Disposable.from(function () {
198
202
  var e_1, _a, e_2, _b;
@@ -541,13 +545,26 @@ var DockviewComponent = /** @class */ (function (_super) {
541
545
  },
542
546
  },
543
547
  };
544
- popoutWindowDisposable.addDisposables(
548
+ var _onDidWindowPositionChange = (0, dom_1.onDidWindowMoveEnd)(_window.window);
549
+ popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, (0, dom_1.onDidWindowResizeEnd)(_window.window, function () {
550
+ _this._onDidPopoutGroupSizeChange.fire({
551
+ width: _window.window.innerWidth,
552
+ height: _window.window.innerHeight,
553
+ group: group,
554
+ });
555
+ }), _onDidWindowPositionChange.event(function () {
556
+ _this._onDidPopoutGroupPositionChange.fire({
557
+ screenX: _window.window.screenX,
558
+ screenY: _window.window.screenX,
559
+ group: group,
560
+ });
561
+ }),
545
562
  /**
546
563
  * ResizeObserver seems slow here, I do not know why but we don't need it
547
564
  * since we can reply on the window resize event as we will occupy the full
548
565
  * window dimensions
549
566
  */
550
- (0, events_1.addDisposableWindowListener)(_window.window, 'resize', function () {
567
+ (0, events_1.addDisposableListener)(_window.window, 'resize', function () {
551
568
  group.layout(_window.window.innerWidth, _window.window.innerHeight);
552
569
  }), overlayRenderContainer, lifecycle_1.Disposable.from(function () {
553
570
  if (_this.isDisposed) {
@@ -770,7 +787,7 @@ var DockviewComponent = /** @class */ (function (_super) {
770
787
  }
771
788
  this.updateWatermark();
772
789
  };
773
- DockviewComponent.prototype.orthogonalize = function (position) {
790
+ DockviewComponent.prototype.orthogonalize = function (position, options) {
774
791
  switch (position) {
775
792
  case 'top':
776
793
  case 'bottom':
@@ -795,10 +812,10 @@ var DockviewComponent = /** @class */ (function (_super) {
795
812
  case 'top':
796
813
  case 'left':
797
814
  case 'center':
798
- return this.createGroupAtLocation([0]); // insert into first position
815
+ return this.createGroupAtLocation([0], undefined, options); // insert into first position
799
816
  case 'bottom':
800
817
  case 'right':
801
- return this.createGroupAtLocation([this.gridview.length]); // insert into last position
818
+ return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position
802
819
  default:
803
820
  throw new Error("unsupported position ".concat(position));
804
821
  }
@@ -1424,7 +1441,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1424
1441
  }
1425
1442
  }
1426
1443
  else {
1427
- var group_1 = this.orthogonalize((0, droptarget_1.directionToPosition)(options.direction));
1444
+ var group_1 = this.orthogonalize((0, droptarget_1.directionToPosition)(options.direction), options);
1428
1445
  if (!options.skipSetActive) {
1429
1446
  this.doSetGroupAndPanelActive(group_1);
1430
1447
  }
@@ -1909,8 +1926,8 @@ var DockviewComponent = /** @class */ (function (_super) {
1909
1926
  });
1910
1927
  return panel;
1911
1928
  };
1912
- DockviewComponent.prototype.createGroupAtLocation = function (location, size) {
1913
- var group = this.createGroup();
1929
+ DockviewComponent.prototype.createGroupAtLocation = function (location, size, options) {
1930
+ var group = this.createGroup(options);
1914
1931
  this.doAddGroup(group, location, size);
1915
1932
  return group;
1916
1933
  };
@@ -58,6 +58,13 @@ export interface DockviewOptions {
58
58
  noPanelsOverlay?: 'emptyGroup' | 'watermark';
59
59
  theme?: DockviewTheme;
60
60
  disableTabsOverflowList?: boolean;
61
+ /**
62
+ * Select `native` to use built-in scrollbar behaviours and `custom` to use an internal implementation
63
+ * that allows for improved scrollbar overlay UX.
64
+ *
65
+ * This is only applied to the tab header section. Defaults to `custom`.
66
+ */
67
+ scrollbars?: 'native' | 'custom';
61
68
  }
62
69
  export interface DockviewDndOverlayEvent extends IAcceptableEvent {
63
70
  nativeEvent: DragEvent;
@@ -53,6 +53,7 @@ exports.PROPERTY_KEYS_DOCKVIEW = (function () {
53
53
  dndEdges: undefined,
54
54
  theme: undefined,
55
55
  disableTabsOverflowList: undefined,
56
+ scrollbars: undefined,
56
57
  };
57
58
  return Object.keys(properties);
58
59
  })();
package/dist/cjs/dom.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Event as DockviewEvent } from './events';
1
+ import { Event as DockviewEvent, Emitter } from './events';
2
2
  import { IDisposable, CompositeDisposable } from './lifecycle';
3
3
  export interface OverflowEvent {
4
4
  hasScrollX: boolean;
@@ -15,13 +15,13 @@ export declare const removeClasses: (element: HTMLElement, ...classes: string[])
15
15
  export declare const addClasses: (element: HTMLElement, ...classes: string[]) => void;
16
16
  export declare const toggleClass: (element: HTMLElement, className: string, isToggled: boolean) => void;
17
17
  export declare function isAncestor(testChild: Node | null, testAncestor: Node | null): boolean;
18
- export declare function getElementsByTagName(tag: string): HTMLElement[];
18
+ export declare function getElementsByTagName(tag: string, document: ParentNode): HTMLElement[];
19
19
  export interface IFocusTracker extends IDisposable {
20
20
  readonly onDidFocus: DockviewEvent<void>;
21
21
  readonly onDidBlur: DockviewEvent<void>;
22
22
  refreshState?(): void;
23
23
  }
24
- export declare function trackFocus(element: HTMLElement | Window): IFocusTracker;
24
+ export declare function trackFocus(element: HTMLElement): IFocusTracker;
25
25
  export declare function quasiPreventDefault(event: Event): void;
26
26
  export declare function quasiDefaultPrevented(event: Event): boolean;
27
27
  export declare function addStyles(document: Document, styleSheetList: StyleSheetList): void;
@@ -37,7 +37,7 @@ export declare function getDomNodePagePosition(domNode: Element): {
37
37
  */
38
38
  export declare function isInDocument(element: Element): boolean;
39
39
  export declare function addTestId(element: HTMLElement, id: string): void;
40
- export declare function disableIframePointEvents(): {
40
+ export declare function disableIframePointEvents(rootNode?: ParentNode): {
41
41
  release: () => void;
42
42
  };
43
43
  export declare function getDockviewTheme(element: HTMLElement): string | undefined;
@@ -48,3 +48,5 @@ export declare class Classnames {
48
48
  setClassNames(classNames: string): void;
49
49
  }
50
50
  export declare function isChildEntirelyVisibleWithinParent(child: HTMLElement, parent: HTMLElement): boolean;
51
+ export declare function onDidWindowMoveEnd(window: Window): Emitter<void>;
52
+ export declare function onDidWindowResizeEnd(element: Window, cb: () => void): CompositeDisposable;
package/dist/cjs/dom.js CHANGED
@@ -25,33 +25,8 @@ var __values = (this && this.__values) || function(o) {
25
25
  };
26
26
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
27
27
  };
28
- var __read = (this && this.__read) || function (o, n) {
29
- var m = typeof Symbol === "function" && o[Symbol.iterator];
30
- if (!m) return o;
31
- var i = m.call(o), r, ar = [], e;
32
- try {
33
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
- }
35
- catch (error) { e = { error: error }; }
36
- finally {
37
- try {
38
- if (r && !r.done && (m = i["return"])) m.call(i);
39
- }
40
- finally { if (e) throw e.error; }
41
- }
42
- return ar;
43
- };
44
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
45
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
46
- if (ar || !(i in from)) {
47
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
48
- ar[i] = from[i];
49
- }
50
- }
51
- return to.concat(ar || Array.prototype.slice.call(from));
52
- };
53
28
  Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.isChildEntirelyVisibleWithinParent = exports.Classnames = exports.getDockviewTheme = exports.disableIframePointEvents = exports.addTestId = exports.isInDocument = exports.getDomNodePagePosition = exports.addStyles = exports.quasiDefaultPrevented = exports.quasiPreventDefault = exports.trackFocus = exports.getElementsByTagName = exports.isAncestor = exports.toggleClass = exports.addClasses = exports.removeClasses = exports.watchElementResize = exports.OverflowObserver = void 0;
29
+ exports.onDidWindowResizeEnd = exports.onDidWindowMoveEnd = exports.isChildEntirelyVisibleWithinParent = exports.Classnames = exports.getDockviewTheme = exports.disableIframePointEvents = exports.addTestId = exports.isInDocument = exports.getDomNodePagePosition = exports.addStyles = exports.quasiDefaultPrevented = exports.quasiPreventDefault = exports.trackFocus = exports.getElementsByTagName = exports.isAncestor = exports.toggleClass = exports.addClasses = exports.removeClasses = exports.watchElementResize = exports.OverflowObserver = void 0;
55
30
  var events_1 = require("./events");
56
31
  var lifecycle_1 = require("./lifecycle");
57
32
  var OverflowObserver = /** @class */ (function (_super) {
@@ -159,8 +134,8 @@ function isAncestor(testChild, testAncestor) {
159
134
  return false;
160
135
  }
161
136
  exports.isAncestor = isAncestor;
162
- function getElementsByTagName(tag) {
163
- return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);
137
+ function getElementsByTagName(tag, document) {
138
+ return Array.prototype.slice.call(document.querySelectorAll(tag), 0);
164
139
  }
165
140
  exports.getElementsByTagName = getElementsByTagName;
166
141
  function trackFocus(element) {
@@ -211,14 +186,8 @@ var FocusTracker = /** @class */ (function (_super) {
211
186
  }
212
187
  }
213
188
  };
214
- if (element instanceof HTMLElement) {
215
- _this.addDisposables((0, events_1.addDisposableListener)(element, 'focus', onFocus, true));
216
- _this.addDisposables((0, events_1.addDisposableListener)(element, 'blur', onBlur, true));
217
- }
218
- else {
219
- _this.addDisposables((0, events_1.addDisposableWindowListener)(element, 'focus', onFocus, true));
220
- _this.addDisposables((0, events_1.addDisposableWindowListener)(element, 'blur', onBlur, true));
221
- }
189
+ _this.addDisposables((0, events_1.addDisposableListener)(element, 'focus', onFocus, true));
190
+ _this.addDisposables((0, events_1.addDisposableListener)(element, 'blur', onBlur, true));
222
191
  return _this;
223
192
  }
224
193
  FocusTracker.prototype.refreshState = function () {
@@ -321,9 +290,43 @@ function addTestId(element, id) {
321
290
  element.setAttribute('data-testid', id);
322
291
  }
323
292
  exports.addTestId = addTestId;
324
- function disableIframePointEvents() {
325
- var e_5, _a;
326
- var iframes = __spreadArray(__spreadArray([], __read(getElementsByTagName('iframe')), false), __read(getElementsByTagName('webview')), false);
293
+ /**
294
+ * Should be more efficient than element.querySelectorAll("*") since there
295
+ * is no need to store every element in-memory using this approach
296
+ */
297
+ function allTagsNamesInclusiveOfShadowDoms(tagNames) {
298
+ var iframes = [];
299
+ function findIframesInNode(node) {
300
+ var e_5, _a;
301
+ if (node.nodeType === Node.ELEMENT_NODE) {
302
+ if (tagNames.includes(node.tagName)) {
303
+ iframes.push(node);
304
+ }
305
+ if (node.shadowRoot) {
306
+ findIframesInNode(node.shadowRoot);
307
+ }
308
+ try {
309
+ for (var _b = __values(node.children), _c = _b.next(); !_c.done; _c = _b.next()) {
310
+ var child = _c.value;
311
+ findIframesInNode(child);
312
+ }
313
+ }
314
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
315
+ finally {
316
+ try {
317
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
318
+ }
319
+ finally { if (e_5) throw e_5.error; }
320
+ }
321
+ }
322
+ }
323
+ findIframesInNode(document.documentElement);
324
+ return iframes;
325
+ }
326
+ function disableIframePointEvents(rootNode) {
327
+ var e_6, _a;
328
+ if (rootNode === void 0) { rootNode = document; }
329
+ var iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);
327
330
  var original = new WeakMap(); // don't hold onto HTMLElement references longer than required
328
331
  try {
329
332
  for (var iframes_1 = __values(iframes), iframes_1_1 = iframes_1.next(); !iframes_1_1.done; iframes_1_1 = iframes_1.next()) {
@@ -332,16 +335,16 @@ function disableIframePointEvents() {
332
335
  iframe.style.pointerEvents = 'none';
333
336
  }
334
337
  }
335
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
338
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
336
339
  finally {
337
340
  try {
338
341
  if (iframes_1_1 && !iframes_1_1.done && (_a = iframes_1.return)) _a.call(iframes_1);
339
342
  }
340
- finally { if (e_5) throw e_5.error; }
343
+ finally { if (e_6) throw e_6.error; }
341
344
  }
342
345
  return {
343
346
  release: function () {
344
- var e_6, _a;
347
+ var e_7, _a;
345
348
  var _b;
346
349
  try {
347
350
  for (var iframes_2 = __values(iframes), iframes_2_1 = iframes_2.next(); !iframes_2_1.done; iframes_2_1 = iframes_2.next()) {
@@ -349,12 +352,12 @@ function disableIframePointEvents() {
349
352
  iframe.style.pointerEvents = (_b = original.get(iframe)) !== null && _b !== void 0 ? _b : 'auto';
350
353
  }
351
354
  }
352
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
355
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
353
356
  finally {
354
357
  try {
355
358
  if (iframes_2_1 && !iframes_2_1.done && (_a = iframes_2.return)) _a.call(iframes_2);
356
359
  }
357
- finally { if (e_6) throw e_6.error; }
360
+ finally { if (e_7) throw e_7.error; }
358
361
  }
359
362
  iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required
360
363
  },
@@ -389,19 +392,19 @@ var Classnames = /** @class */ (function () {
389
392
  this._classNames = [];
390
393
  }
391
394
  Classnames.prototype.setClassNames = function (classNames) {
392
- var e_7, _a, e_8, _b;
395
+ var e_8, _a, e_9, _b;
393
396
  try {
394
397
  for (var _c = __values(this._classNames), _d = _c.next(); !_d.done; _d = _c.next()) {
395
398
  var className = _d.value;
396
399
  (0, exports.toggleClass)(this.element, className, false);
397
400
  }
398
401
  }
399
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
402
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
400
403
  finally {
401
404
  try {
402
405
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
403
406
  }
404
- finally { if (e_7) throw e_7.error; }
407
+ finally { if (e_8) throw e_8.error; }
405
408
  }
406
409
  this._classNames = classNames
407
410
  .split(' ')
@@ -412,17 +415,18 @@ var Classnames = /** @class */ (function () {
412
415
  (0, exports.toggleClass)(this.element, className, true);
413
416
  }
414
417
  }
415
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
418
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
416
419
  finally {
417
420
  try {
418
421
  if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
419
422
  }
420
- finally { if (e_8) throw e_8.error; }
423
+ finally { if (e_9) throw e_9.error; }
421
424
  }
422
425
  };
423
426
  return Classnames;
424
427
  }());
425
428
  exports.Classnames = Classnames;
429
+ var DEBOUCE_DELAY = 100;
426
430
  function isChildEntirelyVisibleWithinParent(child, parent) {
427
431
  //
428
432
  var childPosition = getDomNodePagePosition(child);
@@ -437,3 +441,40 @@ function isChildEntirelyVisibleWithinParent(child, parent) {
437
441
  return true;
438
442
  }
439
443
  exports.isChildEntirelyVisibleWithinParent = isChildEntirelyVisibleWithinParent;
444
+ function onDidWindowMoveEnd(window) {
445
+ var emitter = new events_1.Emitter();
446
+ var previousScreenX = window.screenX;
447
+ var previousScreenY = window.screenY;
448
+ var timeout;
449
+ var checkMovement = function () {
450
+ if (window.closed) {
451
+ return;
452
+ }
453
+ var currentScreenX = window.screenX;
454
+ var currentScreenY = window.screenY;
455
+ if (currentScreenX !== previousScreenX ||
456
+ currentScreenY !== previousScreenY) {
457
+ clearTimeout(timeout);
458
+ timeout = setTimeout(function () {
459
+ emitter.fire();
460
+ }, DEBOUCE_DELAY);
461
+ previousScreenX = currentScreenX;
462
+ previousScreenY = currentScreenY;
463
+ }
464
+ requestAnimationFrame(checkMovement);
465
+ };
466
+ checkMovement();
467
+ return emitter;
468
+ }
469
+ exports.onDidWindowMoveEnd = onDidWindowMoveEnd;
470
+ function onDidWindowResizeEnd(element, cb) {
471
+ var resizeTimeout;
472
+ var disposable = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableListener)(element, 'resize', function () {
473
+ clearTimeout(resizeTimeout);
474
+ resizeTimeout = setTimeout(function () {
475
+ cb();
476
+ }, DEBOUCE_DELAY);
477
+ }));
478
+ return disposable;
479
+ }
480
+ exports.onDidWindowResizeEnd = onDidWindowResizeEnd;
@@ -54,7 +54,7 @@ export declare class Emitter<T> implements IDisposable {
54
54
  fire(e: T): void;
55
55
  dispose(): void;
56
56
  }
57
- export declare function addDisposableWindowListener<K extends keyof WindowEventMap>(element: Window, type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): IDisposable;
57
+ export declare function addDisposableListener<K extends keyof WindowEventMap>(element: Window, type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): IDisposable;
58
58
  export declare function addDisposableListener<K extends keyof HTMLElementEventMap>(element: HTMLElement, type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): IDisposable;
59
59
  /**
60
60
  *
@@ -11,7 +11,7 @@ var __values = (this && this.__values) || function(o) {
11
11
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.AsapEvent = exports.addDisposableListener = exports.addDisposableWindowListener = exports.Emitter = exports.AcceptableEvent = exports.DockviewEvent = exports.Event = void 0;
14
+ exports.AsapEvent = exports.addDisposableListener = exports.Emitter = exports.AcceptableEvent = exports.DockviewEvent = exports.Event = void 0;
15
15
  var Event;
16
16
  (function (Event) {
17
17
  Event.any = function () {
@@ -216,15 +216,6 @@ var Emitter = /** @class */ (function () {
216
216
  return Emitter;
217
217
  }());
218
218
  exports.Emitter = Emitter;
219
- function addDisposableWindowListener(element, type, listener, options) {
220
- element.addEventListener(type, listener, options);
221
- return {
222
- dispose: function () {
223
- element.removeEventListener(type, listener, options);
224
- },
225
- };
226
- }
227
- exports.addDisposableWindowListener = addDisposableWindowListener;
228
219
  function addDisposableListener(element, type, listener, options) {
229
220
  element.addEventListener(type, listener, options);
230
221
  return {
@@ -239,7 +239,7 @@ var Overlay = /** @class */ (function (_super) {
239
239
  dispose: function () {
240
240
  iframes.release();
241
241
  },
242
- }, (0, events_1.addDisposableWindowListener)(window, 'pointermove', function (e) {
242
+ }, (0, events_1.addDisposableListener)(window, 'pointermove', function (e) {
243
243
  var containerRect = _this.options.container.getBoundingClientRect();
244
244
  var x = e.clientX - containerRect.left;
245
245
  var y = e.clientY - containerRect.top;
@@ -276,7 +276,7 @@ var Overlay = /** @class */ (function (_super) {
276
276
  bounds.right = right;
277
277
  }
278
278
  _this.setBounds(bounds);
279
- }), (0, events_1.addDisposableWindowListener)(window, 'pointerup', function () {
279
+ }), (0, events_1.addDisposableListener)(window, 'pointerup', function () {
280
280
  (0, dom_1.toggleClass)(_this._element, 'dv-resize-container-dragging', false);
281
281
  move.dispose();
282
282
  _this._onDidChangeEnd.fire();
@@ -322,7 +322,7 @@ var Overlay = /** @class */ (function (_super) {
322
322
  e.preventDefault();
323
323
  var startPosition = null;
324
324
  var iframes = (0, dom_1.disableIframePointEvents)();
325
- move.value = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableWindowListener)(window, 'pointermove', function (e) {
325
+ move.value = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableListener)(window, 'pointermove', function (e) {
326
326
  var containerRect = _this.options.container.getBoundingClientRect();
327
327
  var overlayRect = _this._element.getBoundingClientRect();
328
328
  var y = e.clientY - containerRect.top;
@@ -446,7 +446,7 @@ var Overlay = /** @class */ (function (_super) {
446
446
  dispose: function () {
447
447
  iframes.release();
448
448
  },
449
- }, (0, events_1.addDisposableWindowListener)(window, 'pointerup', function () {
449
+ }, (0, events_1.addDisposableListener)(window, 'pointerup', function () {
450
450
  move.dispose();
451
451
  _this._onDidChangeEnd.fire();
452
452
  }));
@@ -12,14 +12,25 @@ export interface PaneviewDidDropEvent extends DroptargetEvent {
12
12
  api: PaneviewApi;
13
13
  }
14
14
  export declare abstract class DraggablePaneviewPanel extends PaneviewPanel {
15
- private readonly accessor;
16
15
  private handler;
17
16
  private target;
18
17
  private readonly _onDidDrop;
19
18
  readonly onDidDrop: Event<PaneviewDidDropEvent>;
20
19
  private readonly _onUnhandledDragOverEvent;
21
20
  readonly onUnhandledDragOverEvent: Event<PaneviewDndOverlayEvent>;
22
- constructor(accessor: IPaneviewComponent, id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
21
+ readonly accessor: IPaneviewComponent;
22
+ constructor(options: {
23
+ accessor: IPaneviewComponent;
24
+ id: string;
25
+ component: string;
26
+ headerComponent: string | undefined;
27
+ orientation: Orientation;
28
+ isExpanded: boolean;
29
+ disableDnd: boolean;
30
+ headerSize: number;
31
+ minimumBodySize: number;
32
+ maximumBodySize: number;
33
+ });
23
34
  private initDragFeatures;
24
35
  private onDrop;
25
36
  }
@@ -36,15 +36,25 @@ var options_1 = require("./options");
36
36
  var paneviewPanel_1 = require("./paneviewPanel");
37
37
  var DraggablePaneviewPanel = /** @class */ (function (_super) {
38
38
  __extends(DraggablePaneviewPanel, _super);
39
- function DraggablePaneviewPanel(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
40
- var _this = _super.call(this, id, component, headerComponent, orientation, isExpanded, true) || this;
41
- _this.accessor = accessor;
39
+ function DraggablePaneviewPanel(options) {
40
+ var _this = _super.call(this, {
41
+ id: options.id,
42
+ component: options.component,
43
+ headerComponent: options.headerComponent,
44
+ orientation: options.orientation,
45
+ isExpanded: options.isExpanded,
46
+ isHeaderVisible: true,
47
+ headerSize: options.headerSize,
48
+ minimumBodySize: options.minimumBodySize,
49
+ maximumBodySize: options.maximumBodySize,
50
+ }) || this;
42
51
  _this._onDidDrop = new events_1.Emitter();
43
52
  _this.onDidDrop = _this._onDidDrop.event;
44
53
  _this._onUnhandledDragOverEvent = new events_1.Emitter();
45
54
  _this.onUnhandledDragOverEvent = _this._onUnhandledDragOverEvent.event;
55
+ _this.accessor = options.accessor;
46
56
  _this.addDisposables(_this._onDidDrop, _this._onUnhandledDragOverEvent);
47
- if (!disableDnd) {
57
+ if (!options.disableDnd) {
48
58
  _this.initDragFeatures();
49
59
  }
50
60
  return _this;
@@ -12,6 +12,7 @@ export interface SerializedPaneviewPanel {
12
12
  priority?: LayoutPriority;
13
13
  minimumSize?: number;
14
14
  maximumSize?: number;
15
+ headerSize?: number;
15
16
  data: {
16
17
  id: string;
17
18
  component: string;
@@ -40,6 +41,9 @@ export declare class PaneFramework extends DraggablePaneviewPanel {
40
41
  isExpanded: boolean;
41
42
  disableDnd: boolean;
42
43
  accessor: IPaneviewComponent;
44
+ headerSize: number;
45
+ minimumBodySize: number;
46
+ maximumBodySize: number;
43
47
  });
44
48
  getBodyComponent(): IPanePart;
45
49
  getHeaderComponent(): IPanePart;
@@ -51,6 +55,7 @@ export interface AddPaneviewComponentOptions<T extends object = Parameters> {
51
55
  params?: T;
52
56
  minimumBodySize?: number;
53
57
  maximumBodySize?: number;
58
+ headerSize?: number;
54
59
  isExpanded?: boolean;
55
60
  title: string;
56
61
  index?: number;