dockview-core 3.2.0 → 4.0.1

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 (110) hide show
  1. package/dist/cjs/api/component.api.d.ts +0 -2
  2. package/dist/cjs/api/component.api.js +0 -10
  3. package/dist/cjs/dnd/abstractDragHandler.js +4 -2
  4. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +16 -0
  5. package/dist/cjs/dnd/dropTargetAnchorContainer.js +105 -0
  6. package/dist/cjs/dnd/droptarget.d.ts +16 -0
  7. package/dist/cjs/dnd/droptarget.js +138 -14
  8. package/dist/cjs/dnd/ghost.d.ts +4 -1
  9. package/dist/cjs/dnd/ghost.js +3 -2
  10. package/dist/cjs/dnd/groupDragHandler.js +3 -1
  11. package/dist/cjs/dockview/components/panel/content.js +10 -13
  12. package/dist/cjs/dockview/components/popupService.d.ts +13 -0
  13. package/dist/cjs/dockview/components/popupService.js +76 -0
  14. package/dist/cjs/dockview/components/tab/tab.js +17 -7
  15. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.d.ts +8 -0
  16. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +20 -0
  17. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +45 -0
  18. package/dist/cjs/dockview/components/titlebar/tabs.js +288 -0
  19. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +8 -9
  20. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +108 -152
  21. package/dist/cjs/dockview/components/titlebar/voidContainer.js +2 -9
  22. package/dist/cjs/dockview/dockviewComponent.d.ts +10 -3
  23. package/dist/cjs/dockview/dockviewComponent.js +71 -30
  24. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +4 -0
  25. package/dist/cjs/dockview/dockviewGroupPanelModel.js +31 -0
  26. package/dist/cjs/dockview/dockviewPanelModel.d.ts +5 -3
  27. package/dist/cjs/dockview/dockviewPanelModel.js +25 -4
  28. package/dist/cjs/dockview/framework.d.ts +4 -1
  29. package/dist/cjs/dockview/options.d.ts +8 -5
  30. package/dist/cjs/dockview/options.js +3 -1
  31. package/dist/cjs/dockview/theme.d.ts +31 -0
  32. package/dist/cjs/dockview/theme.js +42 -0
  33. package/dist/cjs/dockview/types.d.ts +5 -1
  34. package/dist/cjs/dom.d.ts +1 -0
  35. package/dist/cjs/dom.js +15 -1
  36. package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -0
  37. package/dist/cjs/index.d.ts +1 -0
  38. package/dist/cjs/index.js +1 -0
  39. package/dist/cjs/paneview/paneviewComponent.js +1 -0
  40. package/dist/cjs/scrollbar.d.ts +12 -0
  41. package/dist/cjs/scrollbar.js +106 -0
  42. package/dist/cjs/splitview/splitview.js +1 -0
  43. package/dist/cjs/splitview/splitviewComponent.js +1 -0
  44. package/dist/dockview-core.amd.js +930 -293
  45. package/dist/dockview-core.amd.js.map +1 -1
  46. package/dist/dockview-core.amd.min.js +2 -2
  47. package/dist/dockview-core.amd.min.js.map +1 -1
  48. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  49. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  50. package/dist/dockview-core.amd.noStyle.js +929 -292
  51. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  52. package/dist/dockview-core.cjs.js +930 -293
  53. package/dist/dockview-core.cjs.js.map +1 -1
  54. package/dist/dockview-core.esm.js +923 -294
  55. package/dist/dockview-core.esm.js.map +1 -1
  56. package/dist/dockview-core.esm.min.js +2 -2
  57. package/dist/dockview-core.esm.min.js.map +1 -1
  58. package/dist/dockview-core.js +930 -293
  59. package/dist/dockview-core.js.map +1 -1
  60. package/dist/dockview-core.min.js +2 -2
  61. package/dist/dockview-core.min.js.map +1 -1
  62. package/dist/dockview-core.min.noStyle.js +2 -2
  63. package/dist/dockview-core.min.noStyle.js.map +1 -1
  64. package/dist/dockview-core.noStyle.js +929 -292
  65. package/dist/dockview-core.noStyle.js.map +1 -1
  66. package/dist/esm/api/component.api.d.ts +0 -2
  67. package/dist/esm/api/component.api.js +0 -6
  68. package/dist/esm/dnd/abstractDragHandler.js +4 -2
  69. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +16 -0
  70. package/dist/esm/dnd/dropTargetAnchorContainer.js +74 -0
  71. package/dist/esm/dnd/droptarget.d.ts +16 -0
  72. package/dist/esm/dnd/droptarget.js +134 -14
  73. package/dist/esm/dnd/ghost.d.ts +4 -1
  74. package/dist/esm/dnd/ghost.js +3 -2
  75. package/dist/esm/dnd/groupDragHandler.js +3 -1
  76. package/dist/esm/dockview/components/panel/content.js +10 -13
  77. package/dist/esm/dockview/components/popupService.d.ts +13 -0
  78. package/dist/esm/dockview/components/popupService.js +53 -0
  79. package/dist/esm/dockview/components/tab/tab.js +15 -7
  80. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +8 -0
  81. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +16 -0
  82. package/dist/esm/dockview/components/titlebar/tabs.d.ts +45 -0
  83. package/dist/esm/dockview/components/titlebar/tabs.js +183 -0
  84. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +8 -9
  85. package/dist/esm/dockview/components/titlebar/tabsContainer.js +133 -162
  86. package/dist/esm/dockview/components/titlebar/voidContainer.js +2 -9
  87. package/dist/esm/dockview/dockviewComponent.d.ts +10 -3
  88. package/dist/esm/dockview/dockviewComponent.js +69 -24
  89. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +4 -0
  90. package/dist/esm/dockview/dockviewGroupPanelModel.js +27 -0
  91. package/dist/esm/dockview/dockviewPanelModel.d.ts +5 -3
  92. package/dist/esm/dockview/dockviewPanelModel.js +14 -4
  93. package/dist/esm/dockview/framework.d.ts +4 -1
  94. package/dist/esm/dockview/options.d.ts +8 -5
  95. package/dist/esm/dockview/options.js +3 -1
  96. package/dist/esm/dockview/theme.d.ts +31 -0
  97. package/dist/esm/dockview/theme.js +39 -0
  98. package/dist/esm/dockview/types.d.ts +5 -1
  99. package/dist/esm/dom.d.ts +1 -0
  100. package/dist/esm/dom.js +13 -0
  101. package/dist/esm/gridview/baseComponentGridview.d.ts +3 -0
  102. package/dist/esm/index.d.ts +1 -0
  103. package/dist/esm/index.js +1 -0
  104. package/dist/esm/paneview/paneviewComponent.js +1 -0
  105. package/dist/esm/scrollbar.d.ts +12 -0
  106. package/dist/esm/scrollbar.js +80 -0
  107. package/dist/esm/splitview/splitview.js +1 -0
  108. package/dist/esm/splitview/splitviewComponent.js +1 -0
  109. package/dist/styles/dockview.css +423 -69
  110. package/package.json +1 -1
@@ -22,6 +22,7 @@ var dataTransfer_1 = require("../../../dnd/dataTransfer");
22
22
  var dom_1 = require("../../../dom");
23
23
  var droptarget_1 = require("../../../dnd/droptarget");
24
24
  var abstractDragHandler_1 = require("../../../dnd/abstractDragHandler");
25
+ var ghost_1 = require("../../../dnd/ghost");
25
26
  var TabDragHandler = /** @class */ (function (_super) {
26
27
  __extends(TabDragHandler, _super);
27
28
  function TabDragHandler(element, accessor, group, panel) {
@@ -64,25 +65,34 @@ var Tab = /** @class */ (function (_super) {
64
65
  (0, dom_1.toggleClass)(_this.element, 'dv-inactive-tab', true);
65
66
  var dragHandler = new TabDragHandler(_this._element, _this.accessor, _this.group, _this.panel);
66
67
  _this.dropTarget = new droptarget_1.Droptarget(_this._element, {
67
- acceptedTargetZones: ['center'],
68
+ acceptedTargetZones: ['left', 'right'],
69
+ overlayModel: { activationSize: { value: 50, type: 'percentage' } },
68
70
  canDisplayOverlay: function (event, position) {
69
71
  if (_this.group.locked) {
70
72
  return false;
71
73
  }
72
74
  var data = (0, dataTransfer_1.getPanelData)();
73
75
  if (data && _this.accessor.id === data.viewId) {
74
- if (data.panelId === null &&
75
- data.groupId === _this.group.id) {
76
- // don't allow group move to drop on self
77
- return false;
78
- }
79
- return _this.panel.id !== data.panelId;
76
+ return true;
80
77
  }
81
78
  return _this.group.model.canDisplayOverlay(event, position, 'tab');
82
79
  },
80
+ getOverrideTarget: function () { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
83
81
  });
84
82
  _this.onWillShowOverlay = _this.dropTarget.onWillShowOverlay;
85
83
  _this.addDisposables(_this._onPointDown, _this._onDropped, _this._onDragStart, dragHandler.onDragStart(function (event) {
84
+ if (event.dataTransfer) {
85
+ var style_1 = getComputedStyle(_this.element);
86
+ var newNode_1 = _this.element.cloneNode(true);
87
+ Array.from(style_1).forEach(function (key) {
88
+ return newNode_1.style.setProperty(key, style_1.getPropertyValue(key), style_1.getPropertyPriority(key));
89
+ });
90
+ newNode_1.style.position = 'absolute';
91
+ (0, ghost_1.addGhostImage)(event.dataTransfer, newNode_1, {
92
+ y: -10,
93
+ x: 30,
94
+ });
95
+ }
86
96
  _this._onDragStart.fire(event);
87
97
  }), dragHandler, (0, events_1.addDisposableListener)(_this._element, 'pointerdown', function (event) {
88
98
  _this._onPointDown.fire(event);
@@ -0,0 +1,8 @@
1
+ export type DropdownElement = {
2
+ element: HTMLElement;
3
+ update: (params: {
4
+ tabs: number;
5
+ }) => void;
6
+ dispose?: () => void;
7
+ };
8
+ export declare function createDropdownElementHandle(): DropdownElement;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDropdownElementHandle = void 0;
4
+ var svg_1 = require("../../../svg");
5
+ function createDropdownElementHandle() {
6
+ var el = document.createElement('div');
7
+ el.className = 'dv-tabs-overflow-dropdown-default';
8
+ var text = document.createElement('span');
9
+ text.textContent = "";
10
+ var icon = (0, svg_1.createChevronRightButton)();
11
+ el.appendChild(icon);
12
+ el.appendChild(text);
13
+ return {
14
+ element: el,
15
+ update: function (params) {
16
+ text.textContent = "".concat(params.tabs);
17
+ },
18
+ };
19
+ }
20
+ exports.createDropdownElementHandle = createDropdownElementHandle;
@@ -0,0 +1,45 @@
1
+ import { Event } from '../../../events';
2
+ import { CompositeDisposable } from '../../../lifecycle';
3
+ import { DockviewComponent } from '../../dockviewComponent';
4
+ import { DockviewGroupPanel } from '../../dockviewGroupPanel';
5
+ import { WillShowOverlayLocationEvent } from '../../dockviewGroupPanelModel';
6
+ import { IDockviewPanel } from '../../dockviewPanel';
7
+ import { Tab } from '../tab/tab';
8
+ import { TabDragEvent, TabDropIndexEvent } from './tabsContainer';
9
+ export declare class Tabs extends CompositeDisposable {
10
+ private readonly group;
11
+ private readonly accessor;
12
+ private readonly _element;
13
+ private readonly _tabsList;
14
+ private readonly _observerDisposable;
15
+ private _tabs;
16
+ private selectedIndex;
17
+ private _showTabsOverflowControl;
18
+ private readonly _onTabDragStart;
19
+ readonly onTabDragStart: Event<TabDragEvent>;
20
+ private readonly _onDrop;
21
+ readonly onDrop: Event<TabDropIndexEvent>;
22
+ private readonly _onWillShowOverlay;
23
+ readonly onWillShowOverlay: Event<WillShowOverlayLocationEvent>;
24
+ private readonly _onOverflowTabsChange;
25
+ readonly onOverflowTabsChange: Event<{
26
+ tabs: string[];
27
+ reset: boolean;
28
+ }>;
29
+ get showTabsOverflowControl(): boolean;
30
+ set showTabsOverflowControl(value: boolean);
31
+ get element(): HTMLElement;
32
+ get panels(): string[];
33
+ get size(): number;
34
+ get tabs(): Tab[];
35
+ constructor(group: DockviewGroupPanel, accessor: DockviewComponent, options: {
36
+ showTabsOverflowControl: boolean;
37
+ });
38
+ indexOf(id: string): number;
39
+ isActive(tab: Tab): boolean;
40
+ setActivePanel(panel: IDockviewPanel): void;
41
+ openPanel(panel: IDockviewPanel, index?: number): void;
42
+ delete(id: string): void;
43
+ private addTab;
44
+ private toggleDropdown;
45
+ }
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __values = (this && this.__values) || function(o) {
18
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
19
+ if (m) return m.call(o);
20
+ if (o && typeof o.length === "number") return {
21
+ next: function () {
22
+ if (o && i >= o.length) o = void 0;
23
+ return { value: o && o[i++], done: !o };
24
+ }
25
+ };
26
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
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
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.Tabs = void 0;
55
+ var dataTransfer_1 = require("../../../dnd/dataTransfer");
56
+ var dom_1 = require("../../../dom");
57
+ var events_1 = require("../../../events");
58
+ var lifecycle_1 = require("../../../lifecycle");
59
+ var scrollbar_1 = require("../../../scrollbar");
60
+ var dockviewGroupPanelModel_1 = require("../../dockviewGroupPanelModel");
61
+ var tab_1 = require("../tab/tab");
62
+ var Tabs = /** @class */ (function (_super) {
63
+ __extends(Tabs, _super);
64
+ function Tabs(group, accessor, options) {
65
+ var _this = _super.call(this) || this;
66
+ _this.group = group;
67
+ _this.accessor = accessor;
68
+ _this._observerDisposable = new lifecycle_1.MutableDisposable();
69
+ _this._tabs = [];
70
+ _this.selectedIndex = -1;
71
+ _this._showTabsOverflowControl = false;
72
+ _this._onTabDragStart = new events_1.Emitter();
73
+ _this.onTabDragStart = _this._onTabDragStart.event;
74
+ _this._onDrop = new events_1.Emitter();
75
+ _this.onDrop = _this._onDrop.event;
76
+ _this._onWillShowOverlay = new events_1.Emitter();
77
+ _this.onWillShowOverlay = _this._onWillShowOverlay.event;
78
+ _this._onOverflowTabsChange = new events_1.Emitter();
79
+ _this.onOverflowTabsChange = _this._onOverflowTabsChange.event;
80
+ _this._tabsList = document.createElement('div');
81
+ _this._tabsList.className = 'dv-tabs-container dv-horizontal';
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) {
86
+ if (event.defaultPrevented) {
87
+ return;
88
+ }
89
+ var isLeftClick = event.button === 0;
90
+ if (isLeftClick) {
91
+ _this.accessor.doSetGroupActive(_this.group);
92
+ }
93
+ }), lifecycle_1.Disposable.from(function () {
94
+ var e_1, _a;
95
+ try {
96
+ for (var _b = __values(_this._tabs), _c = _b.next(); !_c.done; _c = _b.next()) {
97
+ var _d = _c.value, value = _d.value, disposable = _d.disposable;
98
+ disposable.dispose();
99
+ value.dispose();
100
+ }
101
+ }
102
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
103
+ finally {
104
+ try {
105
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
106
+ }
107
+ finally { if (e_1) throw e_1.error; }
108
+ }
109
+ _this._tabs = [];
110
+ }));
111
+ return _this;
112
+ }
113
+ Object.defineProperty(Tabs.prototype, "showTabsOverflowControl", {
114
+ get: function () {
115
+ return this._showTabsOverflowControl;
116
+ },
117
+ set: function (value) {
118
+ var _this = this;
119
+ if (this._showTabsOverflowControl == value) {
120
+ return;
121
+ }
122
+ this._showTabsOverflowControl = value;
123
+ if (value) {
124
+ var observer = new dom_1.OverflowObserver(this._tabsList);
125
+ this._observerDisposable.value = new lifecycle_1.CompositeDisposable(observer, observer.onDidChange(function (event) {
126
+ var hasOverflow = event.hasScrollX || event.hasScrollY;
127
+ _this.toggleDropdown({ reset: !hasOverflow });
128
+ }), (0, events_1.addDisposableListener)(this._tabsList, 'scroll', function () {
129
+ _this.toggleDropdown({ reset: false });
130
+ }));
131
+ }
132
+ },
133
+ enumerable: false,
134
+ configurable: true
135
+ });
136
+ Object.defineProperty(Tabs.prototype, "element", {
137
+ get: function () {
138
+ return this._element;
139
+ },
140
+ enumerable: false,
141
+ configurable: true
142
+ });
143
+ Object.defineProperty(Tabs.prototype, "panels", {
144
+ get: function () {
145
+ return this._tabs.map(function (_) { return _.value.panel.id; });
146
+ },
147
+ enumerable: false,
148
+ configurable: true
149
+ });
150
+ Object.defineProperty(Tabs.prototype, "size", {
151
+ get: function () {
152
+ return this._tabs.length;
153
+ },
154
+ enumerable: false,
155
+ configurable: true
156
+ });
157
+ Object.defineProperty(Tabs.prototype, "tabs", {
158
+ get: function () {
159
+ return this._tabs.map(function (_) { return _.value; });
160
+ },
161
+ enumerable: false,
162
+ configurable: true
163
+ });
164
+ Tabs.prototype.indexOf = function (id) {
165
+ return this._tabs.findIndex(function (tab) { return tab.value.panel.id === id; });
166
+ };
167
+ Tabs.prototype.isActive = function (tab) {
168
+ return (this.selectedIndex > -1 &&
169
+ this._tabs[this.selectedIndex].value === tab);
170
+ };
171
+ Tabs.prototype.setActivePanel = function (panel) {
172
+ var e_2, _a;
173
+ var runningWidth = 0;
174
+ try {
175
+ for (var _b = __values(this._tabs), _c = _b.next(); !_c.done; _c = _b.next()) {
176
+ var tab = _c.value;
177
+ var isActivePanel = panel.id === tab.value.panel.id;
178
+ tab.value.setActive(isActivePanel);
179
+ if (isActivePanel) {
180
+ var element = tab.value.element;
181
+ var parentElement = element.parentElement;
182
+ if (runningWidth < parentElement.scrollLeft ||
183
+ runningWidth + element.clientWidth >
184
+ parentElement.scrollLeft + parentElement.clientWidth) {
185
+ parentElement.scrollLeft = runningWidth;
186
+ }
187
+ }
188
+ runningWidth += tab.value.element.clientWidth;
189
+ }
190
+ }
191
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
192
+ finally {
193
+ try {
194
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
195
+ }
196
+ finally { if (e_2) throw e_2.error; }
197
+ }
198
+ };
199
+ Tabs.prototype.openPanel = function (panel, index) {
200
+ var _this = this;
201
+ if (index === void 0) { index = this._tabs.length; }
202
+ if (this._tabs.find(function (tab) { return tab.value.panel.id === panel.id; })) {
203
+ return;
204
+ }
205
+ var tab = new tab_1.Tab(panel, this.accessor, this.group);
206
+ tab.setContent(panel.view.tab);
207
+ var disposable = new lifecycle_1.CompositeDisposable(tab.onDragStart(function (event) {
208
+ _this._onTabDragStart.fire({ nativeEvent: event, panel: panel });
209
+ }), tab.onPointerDown(function (event) {
210
+ if (event.defaultPrevented) {
211
+ return;
212
+ }
213
+ var isFloatingGroupsEnabled = !_this.accessor.options.disableFloatingGroups;
214
+ var isFloatingWithOnePanel = _this.group.api.location.type === 'floating' &&
215
+ _this.size === 1;
216
+ if (isFloatingGroupsEnabled &&
217
+ !isFloatingWithOnePanel &&
218
+ event.shiftKey) {
219
+ event.preventDefault();
220
+ var panel_1 = _this.accessor.getGroupPanel(tab.panel.id);
221
+ var _a = tab.element.getBoundingClientRect(), top_1 = _a.top, left = _a.left;
222
+ var _b = _this.accessor.element.getBoundingClientRect(), rootTop = _b.top, rootLeft = _b.left;
223
+ _this.accessor.addFloatingGroup(panel_1, {
224
+ x: left - rootLeft,
225
+ y: top_1 - rootTop,
226
+ inDragMode: true,
227
+ });
228
+ return;
229
+ }
230
+ switch (event.button) {
231
+ case 0: // left click or touch
232
+ if (_this.group.activePanel !== panel) {
233
+ _this.group.model.openPanel(panel);
234
+ }
235
+ break;
236
+ }
237
+ }), tab.onDrop(function (event) {
238
+ _this._onDrop.fire({
239
+ event: event.nativeEvent,
240
+ index: _this._tabs.findIndex(function (x) { return x.value === tab; }),
241
+ });
242
+ }), tab.onWillShowOverlay(function (event) {
243
+ _this._onWillShowOverlay.fire(new dockviewGroupPanelModel_1.WillShowOverlayLocationEvent(event, {
244
+ kind: 'tab',
245
+ panel: _this.group.activePanel,
246
+ api: _this.accessor.api,
247
+ group: _this.group,
248
+ getData: dataTransfer_1.getPanelData,
249
+ }));
250
+ }));
251
+ var value = { value: tab, disposable: disposable };
252
+ this.addTab(value, index);
253
+ };
254
+ Tabs.prototype.delete = function (id) {
255
+ var index = this.indexOf(id);
256
+ var tabToRemove = this._tabs.splice(index, 1)[0];
257
+ var value = tabToRemove.value, disposable = tabToRemove.disposable;
258
+ disposable.dispose();
259
+ value.dispose();
260
+ value.element.remove();
261
+ };
262
+ Tabs.prototype.addTab = function (tab, index) {
263
+ if (index === void 0) { index = this._tabs.length; }
264
+ if (index < 0 || index > this._tabs.length) {
265
+ throw new Error('invalid location');
266
+ }
267
+ this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);
268
+ this._tabs = __spreadArray(__spreadArray(__spreadArray([], __read(this._tabs.slice(0, index)), false), [
269
+ tab
270
+ ], false), __read(this._tabs.slice(index)), false);
271
+ if (this.selectedIndex < 0) {
272
+ this.selectedIndex = index;
273
+ }
274
+ };
275
+ Tabs.prototype.toggleDropdown = function (options) {
276
+ var _this = this;
277
+ var tabs = options.reset
278
+ ? []
279
+ : this._tabs
280
+ .filter(function (tab) {
281
+ return !(0, dom_1.isChildEntirelyVisibleWithinParent)(tab.value.element, _this._tabsList);
282
+ })
283
+ .map(function (x) { return x.value.panel.id; });
284
+ this._onOverflowTabsChange.fire({ tabs: tabs, reset: options.reset });
285
+ };
286
+ return Tabs;
287
+ }(lifecycle_1.CompositeDisposable));
288
+ exports.Tabs = Tabs;
@@ -43,21 +43,21 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
43
43
  private readonly accessor;
44
44
  private readonly group;
45
45
  private readonly _element;
46
- private readonly tabContainer;
46
+ private readonly tabs;
47
47
  private readonly rightActionsContainer;
48
48
  private readonly leftActionsContainer;
49
49
  private readonly preActionsContainer;
50
50
  private readonly voidContainer;
51
- private tabs;
52
- private selectedIndex;
53
51
  private rightActions;
54
52
  private leftActions;
55
53
  private preActions;
56
54
  private _hidden;
55
+ private dropdownPart;
56
+ private _overflowTabs;
57
+ private readonly _dropdownDisposable;
57
58
  private readonly _onDrop;
58
59
  readonly onDrop: Event<TabDropIndexEvent>;
59
- private readonly _onTabDragStart;
60
- readonly onTabDragStart: Event<TabDragEvent>;
60
+ get onTabDragStart(): Event<TabDragEvent>;
61
61
  private readonly _onGroupDragStart;
62
62
  readonly onGroupDragStart: Event<GroupDragEvent>;
63
63
  private readonly _onWillShowOverlay;
@@ -66,21 +66,20 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
66
66
  get size(): number;
67
67
  get hidden(): boolean;
68
68
  set hidden(value: boolean);
69
+ get element(): HTMLElement;
70
+ constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
69
71
  show(): void;
70
72
  hide(): void;
71
73
  setRightActionsElement(element: HTMLElement | undefined): void;
72
74
  setLeftActionsElement(element: HTMLElement | undefined): void;
73
75
  setPrefixActionsElement(element: HTMLElement | undefined): void;
74
- get element(): HTMLElement;
75
76
  isActive(tab: Tab): boolean;
76
77
  indexOf(id: string): number;
77
- constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
78
78
  setActive(_isGroupActive: boolean): void;
79
79
  delete(id: string): void;
80
80
  setActivePanel(panel: IDockviewPanel): void;
81
81
  openPanel(panel: IDockviewPanel, index?: number): void;
82
82
  closePanel(panel: IDockviewPanel): void;
83
- dispose(): void;
84
- private addTab;
85
83
  private updateClassnames;
84
+ private toggleDropdown;
86
85
  }