dockview 1.2.0 → 1.4.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 (196) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/api/component.api.d.ts +37 -37
  3. package/dist/cjs/api/component.api.js +44 -27
  4. package/dist/cjs/api/component.api.js.map +1 -1
  5. package/dist/cjs/api/groupPanelApi.d.ts +7 -7
  6. package/dist/cjs/api/groupPanelApi.js +1 -1
  7. package/dist/cjs/api/groupPanelApi.js.map +1 -1
  8. package/dist/cjs/dnd/abstractDragHandler.js +1 -1
  9. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  10. package/dist/cjs/dnd/droptarget.d.ts +3 -1
  11. package/dist/cjs/dnd/droptarget.js +14 -14
  12. package/dist/cjs/dnd/droptarget.js.map +1 -1
  13. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +4 -4
  14. package/dist/cjs/dockview/components/tab/defaultTab.js +1 -1
  15. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  16. package/dist/cjs/dockview/components/watermark/watermark.d.ts +4 -4
  17. package/dist/cjs/dockview/components/watermark/watermark.js +4 -4
  18. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  19. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +3 -3
  20. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  21. package/dist/cjs/dockview/deserializer.d.ts +9 -6
  22. package/dist/cjs/dockview/deserializer.js +17 -10
  23. package/dist/cjs/dockview/deserializer.js.map +1 -1
  24. package/dist/cjs/dockview/dockviewComponent.d.ts +34 -33
  25. package/dist/cjs/dockview/dockviewComponent.js +43 -28
  26. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  27. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +6 -6
  28. package/dist/cjs/dockview/dockviewGroupPanel.js +5 -4
  29. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  30. package/dist/cjs/dockview/options.d.ts +5 -6
  31. package/dist/cjs/gridview/baseComponentGridview.d.ts +0 -5
  32. package/dist/cjs/gridview/baseComponentGridview.js +26 -10
  33. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  34. package/dist/cjs/gridview/basePanelView.js +2 -0
  35. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  36. package/dist/cjs/gridview/branchNode.js +1 -1
  37. package/dist/cjs/gridview/branchNode.js.map +1 -1
  38. package/dist/cjs/gridview/gridview.d.ts +2 -2
  39. package/dist/cjs/gridview/gridview.js +1 -1
  40. package/dist/cjs/gridview/gridview.js.map +1 -1
  41. package/dist/cjs/gridview/gridviewComponent.d.ts +5 -11
  42. package/dist/cjs/gridview/gridviewComponent.js +34 -20
  43. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  44. package/dist/cjs/groupview/groupPanel.d.ts +4 -4
  45. package/dist/cjs/groupview/groupview.d.ts +55 -41
  46. package/dist/cjs/groupview/groupview.js +63 -23
  47. package/dist/cjs/groupview/groupview.js.map +1 -1
  48. package/dist/cjs/groupview/groupviewPanel.d.ts +16 -2
  49. package/dist/cjs/groupview/groupviewPanel.js +63 -18
  50. package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
  51. package/dist/cjs/groupview/panel/content.d.ts +4 -4
  52. package/dist/cjs/groupview/panel/content.js +1 -1
  53. package/dist/cjs/groupview/panel/content.js.map +1 -1
  54. package/dist/cjs/groupview/tab.d.ts +4 -4
  55. package/dist/cjs/groupview/tab.js.map +1 -1
  56. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +13 -9
  57. package/dist/cjs/groupview/titlebar/tabsContainer.js +17 -3
  58. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  59. package/dist/cjs/groupview/types.d.ts +4 -4
  60. package/dist/cjs/hostedContainer.js +2 -2
  61. package/dist/cjs/hostedContainer.js.map +1 -1
  62. package/dist/cjs/index.d.ts +1 -1
  63. package/dist/cjs/index.js +6 -2
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/panel/types.d.ts +1 -0
  66. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +1 -1
  67. package/dist/cjs/paneview/defaultPaneviewHeader.js +1 -1
  68. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  69. package/dist/cjs/paneview/draggablePaneviewPanel.js +3 -3
  70. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  71. package/dist/cjs/paneview/paneview.d.ts +3 -1
  72. package/dist/cjs/paneview/paneview.js +9 -4
  73. package/dist/cjs/paneview/paneview.js.map +1 -1
  74. package/dist/cjs/paneview/paneviewComponent.d.ts +13 -12
  75. package/dist/cjs/paneview/paneviewComponent.js +74 -32
  76. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  77. package/dist/cjs/react/deserializer.d.ts +3 -2
  78. package/dist/cjs/react/deserializer.js +2 -2
  79. package/dist/cjs/react/deserializer.js.map +1 -1
  80. package/dist/cjs/react/dockview/dockview.d.ts +2 -3
  81. package/dist/cjs/react/dockview/dockview.js +18 -10
  82. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  83. package/dist/cjs/react/dockview/reactContentPart.d.ts +3 -3
  84. package/dist/cjs/react/dockview/reactContentPart.js +2 -13
  85. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  86. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +3 -3
  87. package/dist/cjs/react/dockview/reactHeaderPart.js +2 -2
  88. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  89. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +3 -3
  90. package/dist/cjs/react/dockview/reactWatermarkPart.js +2 -2
  91. package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
  92. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +3 -3
  93. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +2 -2
  94. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  95. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +3 -3
  96. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +2 -2
  97. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js.map +1 -1
  98. package/dist/cjs/react/gridview/gridview.d.ts +2 -2
  99. package/dist/cjs/react/gridview/gridview.js +2 -1
  100. package/dist/cjs/react/gridview/gridview.js.map +1 -1
  101. package/dist/cjs/react/gridview/view.d.ts +3 -2
  102. package/dist/cjs/react/gridview/view.js.map +1 -1
  103. package/dist/cjs/react/paneview/paneview.d.ts +2 -2
  104. package/dist/cjs/react/paneview/paneview.js +1 -1
  105. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  106. package/dist/cjs/react/splitview/splitview.d.ts +2 -2
  107. package/dist/cjs/react/splitview/splitview.js +2 -1
  108. package/dist/cjs/react/splitview/splitview.js.map +1 -1
  109. package/dist/cjs/splitview/splitviewComponent.d.ts +11 -14
  110. package/dist/cjs/splitview/splitviewComponent.js +80 -47
  111. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  112. package/dist/dockview.amd.js +2378 -2309
  113. package/dist/dockview.amd.min.js +2 -2
  114. package/dist/dockview.amd.min.noStyle.js +2 -2
  115. package/dist/dockview.amd.noStyle.js +2377 -2308
  116. package/dist/dockview.cjs.js +2378 -2309
  117. package/dist/dockview.esm.js +2378 -2309
  118. package/dist/dockview.esm.min.js +2 -2
  119. package/dist/dockview.js +2378 -2309
  120. package/dist/dockview.min.js +2 -2
  121. package/dist/dockview.min.noStyle.js +2 -2
  122. package/dist/dockview.noStyle.js +2377 -2308
  123. package/dist/esm/api/component.api.d.ts +37 -37
  124. package/dist/esm/api/component.api.js +24 -27
  125. package/dist/esm/api/groupPanelApi.d.ts +7 -7
  126. package/dist/esm/api/groupPanelApi.js +1 -1
  127. package/dist/esm/dnd/abstractDragHandler.js +1 -1
  128. package/dist/esm/dnd/droptarget.d.ts +3 -1
  129. package/dist/esm/dnd/droptarget.js +14 -14
  130. package/dist/esm/dockview/components/tab/defaultTab.d.ts +4 -4
  131. package/dist/esm/dockview/components/tab/defaultTab.js +1 -1
  132. package/dist/esm/dockview/components/watermark/watermark.d.ts +4 -4
  133. package/dist/esm/dockview/components/watermark/watermark.js +4 -4
  134. package/dist/esm/dockview/defaultGroupPanelView.d.ts +3 -3
  135. package/dist/esm/dockview/deserializer.d.ts +9 -6
  136. package/dist/esm/dockview/deserializer.js +17 -10
  137. package/dist/esm/dockview/dockviewComponent.d.ts +34 -33
  138. package/dist/esm/dockview/dockviewComponent.js +44 -29
  139. package/dist/esm/dockview/dockviewGroupPanel.d.ts +6 -6
  140. package/dist/esm/dockview/dockviewGroupPanel.js +5 -4
  141. package/dist/esm/dockview/options.d.ts +5 -6
  142. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -5
  143. package/dist/esm/gridview/baseComponentGridview.js +4 -10
  144. package/dist/esm/gridview/basePanelView.js +2 -0
  145. package/dist/esm/gridview/branchNode.js +1 -1
  146. package/dist/esm/gridview/gridview.d.ts +2 -2
  147. package/dist/esm/gridview/gridview.js +1 -1
  148. package/dist/esm/gridview/gridviewComponent.d.ts +5 -11
  149. package/dist/esm/gridview/gridviewComponent.js +12 -20
  150. package/dist/esm/groupview/groupPanel.d.ts +4 -4
  151. package/dist/esm/groupview/groupview.d.ts +55 -41
  152. package/dist/esm/groupview/groupview.js +48 -20
  153. package/dist/esm/groupview/groupviewPanel.d.ts +16 -2
  154. package/dist/esm/groupview/groupviewPanel.js +24 -4
  155. package/dist/esm/groupview/panel/content.d.ts +4 -4
  156. package/dist/esm/groupview/panel/content.js +1 -1
  157. package/dist/esm/groupview/tab.d.ts +4 -4
  158. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +13 -9
  159. package/dist/esm/groupview/titlebar/tabsContainer.js +13 -3
  160. package/dist/esm/groupview/types.d.ts +4 -4
  161. package/dist/esm/hostedContainer.js +2 -2
  162. package/dist/esm/index.d.ts +1 -1
  163. package/dist/esm/index.js +1 -1
  164. package/dist/esm/panel/types.d.ts +1 -0
  165. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
  166. package/dist/esm/paneview/defaultPaneviewHeader.js +1 -1
  167. package/dist/esm/paneview/draggablePaneviewPanel.js +3 -3
  168. package/dist/esm/paneview/paneview.d.ts +3 -1
  169. package/dist/esm/paneview/paneview.js +8 -4
  170. package/dist/esm/paneview/paneviewComponent.d.ts +13 -12
  171. package/dist/esm/paneview/paneviewComponent.js +36 -31
  172. package/dist/esm/react/deserializer.d.ts +3 -2
  173. package/dist/esm/react/deserializer.js +2 -2
  174. package/dist/esm/react/dockview/dockview.d.ts +2 -3
  175. package/dist/esm/react/dockview/dockview.js +18 -10
  176. package/dist/esm/react/dockview/reactContentPart.d.ts +3 -3
  177. package/dist/esm/react/dockview/reactContentPart.js +2 -13
  178. package/dist/esm/react/dockview/reactHeaderPart.d.ts +3 -3
  179. package/dist/esm/react/dockview/reactHeaderPart.js +2 -2
  180. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +3 -3
  181. package/dist/esm/react/dockview/reactWatermarkPart.js +2 -2
  182. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +3 -3
  183. package/dist/esm/react/dockview/v2/reactContentRenderer.js +2 -2
  184. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +3 -3
  185. package/dist/esm/react/dockview/v2/webviewContentRenderer.js +2 -2
  186. package/dist/esm/react/gridview/gridview.d.ts +2 -2
  187. package/dist/esm/react/gridview/gridview.js +2 -1
  188. package/dist/esm/react/gridview/view.d.ts +3 -2
  189. package/dist/esm/react/paneview/paneview.d.ts +2 -2
  190. package/dist/esm/react/paneview/paneview.js +1 -1
  191. package/dist/esm/react/splitview/splitview.d.ts +2 -2
  192. package/dist/esm/react/splitview/splitview.js +2 -1
  193. package/dist/esm/splitview/splitviewComponent.d.ts +11 -14
  194. package/dist/esm/splitview/splitviewComponent.js +39 -42
  195. package/dist/styles/dockview.css +5 -6
  196. package/package.json +13 -12
@@ -67,7 +67,7 @@ export class GridviewComponent extends BaseGrid {
67
67
  this.gridview.setViewVisible(getGridLocation(panel.element), visible);
68
68
  }
69
69
  setActive(panel) {
70
- this._groups.forEach((value, key) => {
70
+ this._groups.forEach((value, _key) => {
71
71
  value.value.setActive(panel === value.value);
72
72
  });
73
73
  }
@@ -78,10 +78,14 @@ export class GridviewComponent extends BaseGrid {
78
78
  var _a;
79
79
  (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
80
80
  }
81
- fromJSON(serializedGridview, deferComponentLayout) {
81
+ fromJSON(serializedGridview) {
82
82
  const { grid, activePanel } = serializedGridview;
83
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
84
+ for (const group of groups) {
85
+ group.disposable.dispose();
86
+ this.doRemoveGroup(group.value, { skipActive: true });
87
+ }
83
88
  this.gridview.clear();
84
- this._groups.clear();
85
89
  const queue = [];
86
90
  this.gridview.deserialize(grid, {
87
91
  fromJSON: (node) => {
@@ -108,14 +112,7 @@ export class GridviewComponent extends BaseGrid {
108
112
  },
109
113
  });
110
114
  this.layout(this.width, this.height, true);
111
- if (deferComponentLayout) {
112
- setTimeout(() => {
113
- queue.forEach((f) => f());
114
- }, 0);
115
- }
116
- else {
117
- queue.forEach((f) => f());
118
- }
115
+ queue.forEach((f) => f());
119
116
  if (typeof activePanel === 'string') {
120
117
  const panel = this.getPanel(activePanel);
121
118
  if (panel) {
@@ -145,10 +142,10 @@ export class GridviewComponent extends BaseGrid {
145
142
  addPanel(options) {
146
143
  var _a, _b;
147
144
  let relativeLocation = options.location || [0];
148
- if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.reference) {
149
- const referenceGroup = (_b = this._groups.get(options.position.reference)) === null || _b === void 0 ? void 0 : _b.value;
145
+ if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
146
+ const referenceGroup = (_b = this._groups.get(options.position.referencePanel)) === null || _b === void 0 ? void 0 : _b.value;
150
147
  if (!referenceGroup) {
151
- throw new Error(`reference group ${options.position.reference} does not exist`);
148
+ throw new Error(`reference group ${options.position.referencePanel} does not exist`);
152
149
  }
153
150
  const target = toTarget(options.position.direction);
154
151
  if (target === Position.Center) {
@@ -178,7 +175,7 @@ export class GridviewComponent extends BaseGrid {
178
175
  });
179
176
  this.registerPanel(view);
180
177
  this.doAddGroup(view, relativeLocation, options.size);
181
- return { api: view.api };
178
+ return view;
182
179
  }
183
180
  registerPanel(panel) {
184
181
  const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {
@@ -229,11 +226,6 @@ export class GridviewComponent extends BaseGrid {
229
226
  }
230
227
  removeGroup(group) {
231
228
  super.removeGroup(group);
232
- const panel = this._groups.get(group.id);
233
- if (panel) {
234
- panel.disposable.dispose();
235
- this._groups.delete(group.id);
236
- }
237
229
  }
238
230
  dispose() {
239
231
  super.dispose();
@@ -2,7 +2,7 @@ import { DockviewPanelApi } from '../api/groupPanelApi';
2
2
  import { IDisposable } from '../lifecycle';
3
3
  import { HeaderPartInitParameters } from './types';
4
4
  import { IPanel, PanelInitParameters, PanelUpdateEvent, Parameters } from '../panel/types';
5
- import { GroupviewPanel } from './groupviewPanel';
5
+ import { GroupPanel } from './groupviewPanel';
6
6
  import { IGroupPanelView } from '../dockview/defaultGroupPanelView';
7
7
  export interface IGroupPanelInitParameters extends PanelInitParameters, HeaderPartInitParameters {
8
8
  view: IGroupPanelView;
@@ -12,14 +12,14 @@ export declare type GroupPanelUpdateEvent = PanelUpdateEvent<{
12
12
  title?: string;
13
13
  suppressClosable?: boolean;
14
14
  }>;
15
- export interface IGroupPanel extends IDisposable, IPanel {
15
+ export interface IDockviewPanel extends IDisposable, IPanel {
16
16
  readonly view?: IGroupPanelView;
17
- readonly group?: GroupviewPanel;
17
+ readonly group: GroupPanel;
18
18
  readonly api: DockviewPanelApi;
19
19
  readonly title: string;
20
20
  readonly suppressClosable: boolean;
21
21
  readonly params: Record<string, any> | undefined;
22
- updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
22
+ updateParentGroup(group: GroupPanel, isGroupActive: boolean): void;
23
23
  init(params: IGroupPanelInitParameters): void;
24
24
  toJSON(): GroupviewPanelState;
25
25
  update(event: GroupPanelUpdateEvent): void;
@@ -1,3 +1,4 @@
1
+ import { PanelTransfer } from '../dnd/dataTransfer';
1
2
  import { Position } from '../dnd/droptarget';
2
3
  import { IDockviewComponent } from '../dockview/dockviewComponent';
3
4
  import { Event } from '../events';
@@ -5,8 +6,8 @@ import { IGridPanelView } from '../gridview/baseComponentGridview';
5
6
  import { IViewSize } from '../gridview/gridview';
6
7
  import { CompositeDisposable, IDisposable } from '../lifecycle';
7
8
  import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
8
- import { IGroupPanel } from './groupPanel';
9
- import { GroupviewPanel } from './groupviewPanel';
9
+ import { IDockviewPanel } from './groupPanel';
10
+ import { GroupPanel } from './groupviewPanel';
10
11
  import { DockviewDropTargets } from './dnd';
11
12
  export declare enum GroupChangeKind2 {
12
13
  ADD_PANEL = "ADD_PANEL",
@@ -32,55 +33,64 @@ interface GroupMoveEvent {
32
33
  target: Position;
33
34
  index?: number;
34
35
  }
35
- export interface GroupOptions {
36
- readonly panels?: IGroupPanel[];
37
- readonly activePanel?: IGroupPanel;
36
+ interface CoreGroupOptions {
37
+ locked?: boolean;
38
+ hideHeader?: boolean;
39
+ }
40
+ export interface GroupOptions extends CoreGroupOptions {
41
+ readonly panels?: IDockviewPanel[];
42
+ readonly activePanel?: IDockviewPanel;
38
43
  readonly id?: string;
39
44
  tabHeight?: number;
40
45
  }
41
- export interface GroupviewChangeEvent {
42
- readonly kind: GroupChangeKind2;
43
- readonly panel?: IGroupPanel;
44
- }
45
- export interface GroupPanelViewState {
46
+ export interface GroupPanelViewState extends CoreGroupOptions {
46
47
  views: string[];
47
48
  activeView?: string;
48
49
  id: string;
49
50
  }
51
+ export interface GroupviewChangeEvent {
52
+ readonly kind: GroupChangeKind2;
53
+ readonly panel?: IDockviewPanel;
54
+ }
50
55
  export interface GroupviewDropEvent {
51
56
  nativeEvent: DragEvent;
52
57
  position: Position;
58
+ getData(): PanelTransfer | undefined;
53
59
  index?: number;
54
60
  }
61
+ export interface IHeader {
62
+ hidden: boolean;
63
+ height: number | undefined;
64
+ }
55
65
  export interface IGroupview extends IDisposable, IGridPanelView {
56
66
  readonly isActive: boolean;
57
67
  readonly size: number;
58
- readonly panels: IGroupPanel[];
59
- readonly tabHeight: number | undefined;
60
- readonly activePanel: IGroupPanel | undefined;
68
+ readonly panels: IDockviewPanel[];
69
+ readonly activePanel: IDockviewPanel | undefined;
70
+ readonly header: IHeader;
71
+ readonly isContentFocused: boolean;
61
72
  readonly onDidDrop: Event<GroupviewDropEvent>;
62
- isPanelActive: (panel: IGroupPanel) => boolean;
63
- indexOf(panel: IGroupPanel): number;
64
- openPanel(panel: IGroupPanel, options?: {
73
+ readonly onDidGroupChange: Event<GroupviewChangeEvent>;
74
+ readonly onMove: Event<GroupMoveEvent>;
75
+ locked: boolean;
76
+ isPanelActive: (panel: IDockviewPanel) => boolean;
77
+ indexOf(panel: IDockviewPanel): number;
78
+ openPanel(panel: IDockviewPanel, options?: {
65
79
  index?: number;
66
80
  skipFocus?: boolean;
67
81
  }): void;
68
- closePanel(panel: IGroupPanel): void;
82
+ closePanel(panel: IDockviewPanel): void;
69
83
  closeAllPanels(): void;
70
- containsPanel(panel: IGroupPanel): boolean;
71
- removePanel: (panelOrId: IGroupPanel | string) => IGroupPanel;
72
- onDidGroupChange: Event<GroupviewChangeEvent>;
73
- onMove: Event<GroupMoveEvent>;
84
+ containsPanel(panel: IDockviewPanel): boolean;
85
+ removePanel: (panelOrId: IDockviewPanel | string) => IDockviewPanel;
74
86
  moveToNext(options?: {
75
- panel?: IGroupPanel;
87
+ panel?: IDockviewPanel;
76
88
  suppressRoll?: boolean;
77
89
  }): void;
78
90
  moveToPrevious(options?: {
79
- panel?: IGroupPanel;
91
+ panel?: IDockviewPanel;
80
92
  suppressRoll?: boolean;
81
93
  }): void;
82
- isContentFocused(): boolean;
83
- updateActions(): void;
84
94
  canDisplayOverlay(event: DragEvent, target: DockviewDropTargets): boolean;
85
95
  }
86
96
  export declare class Groupview extends CompositeDisposable implements IGroupview {
@@ -95,6 +105,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
95
105
  private _activePanel?;
96
106
  private watermark?;
97
107
  private _isGroupActive;
108
+ private _locked;
98
109
  private mostRecentlyUsed;
99
110
  private readonly _onDidChange;
100
111
  readonly onDidChange: Event<IViewSize | undefined>;
@@ -108,43 +119,46 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
108
119
  private readonly _onDidDrop;
109
120
  readonly onDidDrop: Event<GroupviewDropEvent>;
110
121
  get element(): HTMLElement;
111
- get activePanel(): IGroupPanel | undefined;
112
- get tabHeight(): number | undefined;
113
- set tabHeight(height: number | undefined);
122
+ get activePanel(): IDockviewPanel | undefined;
123
+ get locked(): boolean;
124
+ set locked(value: boolean);
114
125
  get isActive(): boolean;
115
- get panels(): IGroupPanel[];
126
+ get panels(): IDockviewPanel[];
116
127
  get size(): number;
117
128
  get isEmpty(): boolean;
118
129
  get minimumHeight(): number;
119
130
  get maximumHeight(): number;
120
131
  get minimumWidth(): number;
121
132
  get maximumWidth(): number;
122
- constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupviewPanel);
133
+ get hasWatermark(): boolean;
134
+ get header(): IHeader;
135
+ get isContentFocused(): boolean;
136
+ constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupPanel);
123
137
  initialize(): void;
124
- isContentFocused(): boolean;
125
- indexOf(panel: IGroupPanel): number;
138
+ indexOf(panel: IDockviewPanel): number;
126
139
  toJSON(): GroupPanelViewState;
127
140
  moveToNext(options?: {
128
- panel?: IGroupPanel;
141
+ panel?: IDockviewPanel;
129
142
  suppressRoll?: boolean;
130
143
  }): void;
131
144
  moveToPrevious(options?: {
132
- panel?: IGroupPanel;
145
+ panel?: IDockviewPanel;
133
146
  suppressRoll?: boolean;
134
147
  }): void;
135
- containsPanel(panel: IGroupPanel): boolean;
136
- init(params: PanelInitParameters): void;
137
- update(params: PanelUpdateEvent): void;
148
+ containsPanel(panel: IDockviewPanel): boolean;
149
+ init(_params: PanelInitParameters): void;
150
+ update(_params: PanelUpdateEvent): void;
138
151
  focus(): void;
139
- openPanel(panel: IGroupPanel, options?: {
152
+ openPanel(panel: IDockviewPanel, options?: {
140
153
  index?: number;
141
154
  skipFocus?: boolean;
155
+ skipSetActive?: boolean;
142
156
  }): void;
143
- removePanel(groupItemOrId: IGroupPanel | string): IGroupPanel;
157
+ removePanel(groupItemOrId: IDockviewPanel | string): IDockviewPanel;
144
158
  closeAllPanels(): void;
145
- closePanel(panel: IGroupPanel): void;
159
+ closePanel(panel: IDockviewPanel): void;
146
160
  private doClose;
147
- isPanelActive(panel: IGroupPanel): boolean;
161
+ isPanelActive(panel: IDockviewPanel): boolean;
148
162
  updateActions(): void;
149
163
  setActive(isGroupActive: boolean, skipFocus?: boolean, force?: boolean): void;
150
164
  layout(width: number, height: number): void;
@@ -22,6 +22,7 @@ export class Groupview extends CompositeDisposable {
22
22
  this.options = options;
23
23
  this.parent = parent;
24
24
  this._isGroupActive = false;
25
+ this._locked = false;
25
26
  this.mostRecentlyUsed = [];
26
27
  this._onDidChange = new Emitter();
27
28
  this.onDidChange = this._onDidChange.event;
@@ -42,7 +43,10 @@ export class Groupview extends CompositeDisposable {
42
43
  this.contentContainer = new ContentContainer();
43
44
  this.dropTarget = new Droptarget(this.contentContainer.element, {
44
45
  validOverlays: 'all',
45
- canDisplayOverlay: (event) => {
46
+ canDisplayOverlay: (event, quadrant) => {
47
+ if (this.locked && !quadrant) {
48
+ return false;
49
+ }
46
50
  const data = getPanelData();
47
51
  if (data) {
48
52
  const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
@@ -52,6 +56,8 @@ export class Groupview extends CompositeDisposable {
52
56
  },
53
57
  });
54
58
  container.append(this.tabsContainer.element, this.contentContainer.element);
59
+ this.header.hidden = !!options.hideHeader;
60
+ this.locked = !!options.locked;
55
61
  this.addDisposables(this._onMove, this._onDidGroupChange, this.tabsContainer.onDrop((event) => {
56
62
  this.handleDropEvent(event.event, Position.Center, event.index);
57
63
  }), this.contentContainer.onDidFocus(() => {
@@ -68,12 +74,11 @@ export class Groupview extends CompositeDisposable {
68
74
  get activePanel() {
69
75
  return this._activePanel;
70
76
  }
71
- get tabHeight() {
72
- return this.tabsContainer.height;
77
+ get locked() {
78
+ return this._locked;
73
79
  }
74
- set tabHeight(height) {
75
- this.tabsContainer.height = height;
76
- this.layout(this._width, this._height);
80
+ set locked(value) {
81
+ this._locked = value;
77
82
  }
78
83
  get isActive() {
79
84
  return this._isGroupActive;
@@ -99,6 +104,18 @@ export class Groupview extends CompositeDisposable {
99
104
  get maximumWidth() {
100
105
  return Number.MAX_SAFE_INTEGER;
101
106
  }
107
+ get hasWatermark() {
108
+ return !!(this.watermark && this.container.contains(this.watermark.element));
109
+ }
110
+ get header() {
111
+ return this.tabsContainer;
112
+ }
113
+ get isContentFocused() {
114
+ if (!document.activeElement) {
115
+ return false;
116
+ }
117
+ return isAncestor(document.activeElement, this.contentContainer.element);
118
+ }
102
119
  initialize() {
103
120
  var _a, _b;
104
121
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -114,22 +131,23 @@ export class Groupview extends CompositeDisposable {
114
131
  this.setActive(this.isActive, true, true);
115
132
  this.updateContainer();
116
133
  }
117
- isContentFocused() {
118
- if (!document.activeElement) {
119
- return false;
120
- }
121
- return isAncestor(document.activeElement, this.contentContainer.element);
122
- }
123
134
  indexOf(panel) {
124
135
  return this.tabsContainer.indexOf(panel.id);
125
136
  }
126
137
  toJSON() {
127
138
  var _a;
128
- return {
139
+ const result = {
129
140
  views: this.tabsContainer.panels,
130
141
  activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
131
142
  id: this.id,
132
143
  };
144
+ if (this.locked) {
145
+ result.locked = true;
146
+ }
147
+ if (this.header.hidden) {
148
+ result.hideHeader = true;
149
+ }
150
+ return result;
133
151
  }
134
152
  moveToNext(options) {
135
153
  if (!options) {
@@ -177,10 +195,10 @@ export class Groupview extends CompositeDisposable {
177
195
  containsPanel(panel) {
178
196
  return this.panels.includes(panel);
179
197
  }
180
- init(params) {
198
+ init(_params) {
181
199
  //noop
182
200
  }
183
- update(params) {
201
+ update(_params) {
184
202
  //noop
185
203
  }
186
204
  focus() {
@@ -192,15 +210,18 @@ export class Groupview extends CompositeDisposable {
192
210
  options.index > this.panels.length) {
193
211
  options.index = this.panels.length;
194
212
  }
213
+ const skipSetActive = !!options.skipSetActive;
195
214
  // ensure the group is updated before we fire any events
196
215
  panel.updateParentGroup(this.parent, true);
197
- if (this._activePanel === panel) {
216
+ if (!skipSetActive && this._activePanel === panel) {
198
217
  this.accessor.doSetGroupActive(this.parent);
199
218
  return;
200
219
  }
201
220
  this.doAddPanel(panel, options.index);
202
- this.doSetActivePanel(panel);
203
- this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
221
+ if (!skipSetActive) {
222
+ this.doSetActivePanel(panel);
223
+ this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
224
+ }
204
225
  this.updateContainer();
205
226
  }
206
227
  removePanel(groupItemOrId) {
@@ -399,14 +420,21 @@ export class Groupview extends CompositeDisposable {
399
420
  });
400
421
  }
401
422
  else {
402
- this._onDidDrop.fire({ nativeEvent: event, position, index });
423
+ this._onDidDrop.fire({
424
+ nativeEvent: event,
425
+ position,
426
+ index,
427
+ getData: () => getPanelData(),
428
+ });
403
429
  }
404
430
  }
405
431
  dispose() {
432
+ var _a;
433
+ super.dispose();
434
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
406
435
  for (const panel of this.panels) {
407
436
  panel.dispose();
408
437
  }
409
- super.dispose();
410
438
  this.dropTarget.dispose();
411
439
  this.tabsContainer.dispose();
412
440
  this.contentContainer.dispose();
@@ -1,17 +1,31 @@
1
1
  import { IFrameworkPart } from '../panel/types';
2
2
  import { IDockviewComponent } from '../dockview/dockviewComponent';
3
- import { Groupview, GroupOptions } from './groupview';
3
+ import { GridviewPanelApi } from '../api/gridviewPanelApi';
4
+ import { Groupview, GroupOptions, IHeader } from './groupview';
4
5
  import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
6
+ import { IDockviewPanel } from './groupPanel';
5
7
  export interface IGroupviewPanel extends IGridviewPanel {
6
8
  model: Groupview;
9
+ locked: boolean;
10
+ readonly size: number;
11
+ readonly panels: IDockviewPanel[];
12
+ readonly activePanel: IDockviewPanel | undefined;
7
13
  }
8
- export declare class GroupviewPanel extends GridviewPanel implements IGroupviewPanel {
14
+ export declare type IGroupviewPanelPublic = IGroupviewPanel;
15
+ export declare type GroupviewPanelApi = GridviewPanelApi;
16
+ export declare class GroupPanel extends GridviewPanel implements IGroupviewPanel {
9
17
  private readonly _model;
18
+ get panels(): IDockviewPanel[];
19
+ get activePanel(): IDockviewPanel | undefined;
20
+ get size(): number;
10
21
  get model(): Groupview;
11
22
  get minimumHeight(): number;
12
23
  get maximumHeight(): number;
13
24
  get minimumWidth(): number;
14
25
  get maximumWidth(): number;
26
+ get locked(): boolean;
27
+ set locked(value: boolean);
28
+ get header(): IHeader;
15
29
  constructor(accessor: IDockviewComponent, id: string, options: GroupOptions);
16
30
  initialize(): void;
17
31
  setActive(isActive: boolean): void;
@@ -1,11 +1,22 @@
1
- import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
1
+ import { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';
2
2
  import { Groupview } from './groupview';
3
3
  import { GridviewPanel } from '../gridview/gridviewPanel';
4
- export class GroupviewPanel extends GridviewPanel {
4
+ class GroupviewApi extends GridviewPanelApiImpl {
5
+ }
6
+ export class GroupPanel extends GridviewPanel {
5
7
  constructor(accessor, id, options) {
6
- super(id, 'groupview_default', new GridviewPanelApiImpl(id));
8
+ super(id, 'groupview_default', new GroupviewApi(id));
7
9
  this._model = new Groupview(this.element, accessor, id, options, this);
8
10
  }
11
+ get panels() {
12
+ return this._model.panels;
13
+ }
14
+ get activePanel() {
15
+ return this._model.activePanel;
16
+ }
17
+ get size() {
18
+ return this._model.size;
19
+ }
9
20
  get model() {
10
21
  return this._model;
11
22
  }
@@ -21,8 +32,17 @@ export class GroupviewPanel extends GridviewPanel {
21
32
  get maximumWidth() {
22
33
  return this._model.maximumWidth;
23
34
  }
35
+ get locked() {
36
+ return this._model.locked;
37
+ }
38
+ set locked(value) {
39
+ this._model.locked = value;
40
+ }
41
+ get header() {
42
+ return this._model.header;
43
+ }
24
44
  initialize() {
25
- this.model.initialize();
45
+ this._model.initialize();
26
46
  }
27
47
  setActive(isActive) {
28
48
  super.setActive(isActive);
@@ -1,12 +1,12 @@
1
1
  import { CompositeDisposable, IDisposable } from '../../lifecycle';
2
2
  import { Event } from '../../events';
3
- import { IGroupPanel } from '../groupPanel';
3
+ import { IDockviewPanel } from '../groupPanel';
4
4
  export interface IContentContainer extends IDisposable {
5
5
  onDidFocus: Event<void>;
6
6
  onDidBlur: Event<void>;
7
7
  element: HTMLElement;
8
8
  layout(width: number, height: number): void;
9
- openPanel: (panel: IGroupPanel) => void;
9
+ openPanel: (panel: IDockviewPanel) => void;
10
10
  closePanel: () => void;
11
11
  show(): void;
12
12
  hide(): void;
@@ -23,8 +23,8 @@ export declare class ContentContainer extends CompositeDisposable implements ICo
23
23
  constructor();
24
24
  show(): void;
25
25
  hide(): void;
26
- openPanel(panel: IGroupPanel): void;
27
- layout(width: number, height: number): void;
26
+ openPanel(panel: IDockviewPanel): void;
27
+ layout(_width: number, _height: number): void;
28
28
  closePanel(): void;
29
29
  dispose(): void;
30
30
  }
@@ -56,7 +56,7 @@ export class ContentContainer extends CompositeDisposable {
56
56
  }
57
57
  this.disposable.value = disposable;
58
58
  }
59
- layout(width, height) {
59
+ layout(_width, _height) {
60
60
  // noop
61
61
  }
62
62
  closePanel() {
@@ -2,8 +2,8 @@ import { Event } from '../events';
2
2
  import { CompositeDisposable } from '../lifecycle';
3
3
  import { IDockviewComponent } from '../dockview/dockviewComponent';
4
4
  import { ITabRenderer } from './types';
5
- import { IGroupPanel } from './groupPanel';
6
- import { GroupviewPanel } from './groupviewPanel';
5
+ import { IDockviewPanel } from './groupPanel';
6
+ import { GroupPanel } from './groupviewPanel';
7
7
  import { DroptargetEvent } from '../dnd/droptarget';
8
8
  export declare enum MouseEventKind {
9
9
  CLICK = "CLICK",
@@ -12,7 +12,7 @@ export declare enum MouseEventKind {
12
12
  export interface LayoutMouseEvent {
13
13
  readonly kind: MouseEventKind;
14
14
  readonly event: MouseEvent;
15
- readonly panel?: IGroupPanel;
15
+ readonly panel?: IDockviewPanel;
16
16
  readonly tab?: boolean;
17
17
  }
18
18
  export interface ITab {
@@ -34,7 +34,7 @@ export declare class Tab extends CompositeDisposable implements ITab {
34
34
  private readonly _onDropped;
35
35
  readonly onDrop: Event<DroptargetEvent>;
36
36
  get element(): HTMLElement;
37
- constructor(panelId: string, accessor: IDockviewComponent, group: GroupviewPanel);
37
+ constructor(panelId: string, accessor: IDockviewComponent, group: GroupPanel);
38
38
  setActive(isActive: boolean): void;
39
39
  setContent(part: ITabRenderer): void;
40
40
  dispose(): void;
@@ -1,9 +1,9 @@
1
1
  import { IDisposable, CompositeDisposable } from '../../lifecycle';
2
2
  import { Event } from '../../events';
3
3
  import { ITab } from '../tab';
4
- import { IGroupPanel } from '../groupPanel';
4
+ import { IDockviewPanel } from '../groupPanel';
5
5
  import { IDockviewComponent } from '../../dockview/dockviewComponent';
6
- import { GroupviewPanel } from '../groupviewPanel';
6
+ import { GroupPanel } from '../groupviewPanel';
7
7
  export interface TabDropIndexEvent {
8
8
  event: DragEvent;
9
9
  readonly index: number;
@@ -18,11 +18,12 @@ export interface ITabsContainer extends IDisposable {
18
18
  at: (index: number) => ITab;
19
19
  onDrop: Event<TabDropIndexEvent>;
20
20
  setActive: (isGroupActive: boolean) => void;
21
- setActivePanel: (panel: IGroupPanel) => void;
21
+ setActivePanel: (panel: IDockviewPanel) => void;
22
22
  isActive: (tab: ITab) => boolean;
23
- closePanel: (panel: IGroupPanel) => void;
24
- openPanel: (panel: IGroupPanel, index?: number) => void;
23
+ closePanel: (panel: IDockviewPanel) => void;
24
+ openPanel: (panel: IDockviewPanel, index?: number) => void;
25
25
  setActionElement(element: HTMLElement | undefined): void;
26
+ hidden: boolean;
26
27
  show(): void;
27
28
  hide(): void;
28
29
  }
@@ -40,12 +41,15 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
40
41
  private activePanel;
41
42
  private actions;
42
43
  private _height;
44
+ private _hidden;
43
45
  private readonly _onDrop;
44
46
  readonly onDrop: Event<TabDropIndexEvent>;
45
47
  get panels(): string[];
46
48
  get size(): number;
47
49
  get height(): number | undefined;
48
50
  set height(value: number | undefined);
51
+ get hidden(): boolean;
52
+ set hidden(value: boolean);
49
53
  show(): void;
50
54
  hide(): void;
51
55
  setActionElement(element: HTMLElement | undefined): void;
@@ -53,14 +57,14 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
53
57
  isActive(tab: ITab): boolean;
54
58
  at(index: number): ITab;
55
59
  indexOf(id: string): number;
56
- constructor(accessor: IDockviewComponent, group: GroupviewPanel, options: {
60
+ constructor(accessor: IDockviewComponent, group: GroupPanel, options: {
57
61
  tabHeight?: number;
58
62
  });
59
63
  setActive(isGroupActive: boolean): void;
60
64
  private addTab;
61
65
  delete(id: string): void;
62
- setActivePanel(panel: IGroupPanel): void;
63
- openPanel(panel: IGroupPanel, index?: number): void;
64
- closePanel(panel: IGroupPanel): void;
66
+ setActivePanel(panel: IDockviewPanel): void;
67
+ openPanel(panel: IDockviewPanel, index?: number): void;
68
+ closePanel(panel: IDockviewPanel): void;
65
69
  dispose(): void;
66
70
  }