dockview 1.3.1 → 1.4.2

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 (190) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/api/component.api.d.ts +25 -34
  3. package/dist/cjs/api/component.api.js +27 -39
  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/api/panelApi.d.ts +1 -2
  9. package/dist/cjs/api/panelApi.js +3 -3
  10. package/dist/cjs/api/panelApi.js.map +1 -1
  11. package/dist/cjs/dnd/droptarget.d.ts +3 -1
  12. package/dist/cjs/dnd/droptarget.js +11 -11
  13. package/dist/cjs/dnd/droptarget.js.map +1 -1
  14. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -19
  15. package/dist/cjs/dockview/components/tab/defaultTab.js +9 -64
  16. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  17. package/dist/cjs/dockview/components/watermark/watermark.d.ts +2 -2
  18. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  19. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +4 -5
  20. package/dist/cjs/dockview/defaultGroupPanelView.js +2 -4
  21. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  22. package/dist/cjs/dockview/deserializer.d.ts +9 -6
  23. package/dist/cjs/dockview/deserializer.js +17 -10
  24. package/dist/cjs/dockview/deserializer.js.map +1 -1
  25. package/dist/cjs/dockview/dockviewComponent.d.ts +31 -31
  26. package/dist/cjs/dockview/dockviewComponent.js +31 -28
  27. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  28. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +6 -6
  29. package/dist/cjs/dockview/dockviewGroupPanel.js +6 -5
  30. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  31. package/dist/cjs/dockview/options.d.ts +5 -6
  32. package/dist/cjs/gridview/baseComponentGridview.d.ts +0 -5
  33. package/dist/cjs/gridview/baseComponentGridview.js +0 -10
  34. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  35. package/dist/cjs/gridview/basePanelView.js +1 -1
  36. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  37. package/dist/cjs/gridview/gridview.d.ts +2 -2
  38. package/dist/cjs/gridview/gridviewComponent.d.ts +3 -5
  39. package/dist/cjs/gridview/gridviewComponent.js +6 -9
  40. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  41. package/dist/cjs/gridview/gridviewPanel.d.ts +2 -3
  42. package/dist/cjs/gridview/gridviewPanel.js +4 -4
  43. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  44. package/dist/cjs/groupview/groupPanel.d.ts +4 -4
  45. package/dist/cjs/groupview/groupview.d.ts +52 -39
  46. package/dist/cjs/groupview/groupview.js +54 -20
  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 +3 -3
  52. package/dist/cjs/groupview/panel/content.js.map +1 -1
  53. package/dist/cjs/groupview/tab.d.ts +4 -4
  54. package/dist/cjs/groupview/tab.js +1 -0
  55. package/dist/cjs/groupview/tab.js.map +1 -1
  56. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +14 -12
  57. package/dist/cjs/groupview/titlebar/tabsContainer.js +19 -7
  58. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  59. package/dist/cjs/groupview/types.d.ts +5 -7
  60. package/dist/cjs/index.d.ts +1 -1
  61. package/dist/cjs/index.js +6 -2
  62. package/dist/cjs/index.js.map +1 -1
  63. package/dist/cjs/paneview/draggablePaneviewPanel.js +2 -2
  64. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  65. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -7
  66. package/dist/cjs/paneview/paneviewComponent.js +9 -15
  67. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  68. package/dist/cjs/react/deserializer.d.ts +3 -2
  69. package/dist/cjs/react/deserializer.js +2 -2
  70. package/dist/cjs/react/deserializer.js.map +1 -1
  71. package/dist/cjs/react/dockview/dockview.d.ts +2 -3
  72. package/dist/cjs/react/dockview/dockview.js +0 -1
  73. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  74. package/dist/cjs/react/dockview/reactContentPart.d.ts +4 -6
  75. package/dist/cjs/react/dockview/reactContentPart.js +0 -3
  76. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  77. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -2
  78. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  79. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +2 -2
  80. package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
  81. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +2 -3
  82. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +0 -3
  83. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  84. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  85. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js.map +1 -1
  86. package/dist/cjs/react/gridview/gridview.d.ts +2 -2
  87. package/dist/cjs/react/gridview/gridview.js +2 -1
  88. package/dist/cjs/react/gridview/gridview.js.map +1 -1
  89. package/dist/cjs/react/gridview/view.js +2 -2
  90. package/dist/cjs/react/gridview/view.js.map +1 -1
  91. package/dist/cjs/react/index.d.ts +0 -1
  92. package/dist/cjs/react/index.js +0 -1
  93. package/dist/cjs/react/index.js.map +1 -1
  94. package/dist/cjs/react/paneview/paneview.d.ts +2 -2
  95. package/dist/cjs/react/splitview/splitview.d.ts +2 -2
  96. package/dist/cjs/react/splitview/splitview.js +2 -1
  97. package/dist/cjs/react/splitview/splitview.js.map +1 -1
  98. package/dist/cjs/react/splitview/view.js +2 -2
  99. package/dist/cjs/react/splitview/view.js.map +1 -1
  100. package/dist/cjs/splitview/core/options.d.ts +2 -2
  101. package/dist/cjs/splitview/splitviewComponent.d.ts +6 -12
  102. package/dist/cjs/splitview/splitviewComponent.js +32 -38
  103. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  104. package/dist/cjs/splitview/splitviewPanel.js +4 -6
  105. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  106. package/dist/dockview.amd.js +2286 -2380
  107. package/dist/dockview.amd.min.js +2 -2
  108. package/dist/dockview.amd.min.noStyle.js +2 -2
  109. package/dist/dockview.amd.noStyle.js +2286 -2380
  110. package/dist/dockview.cjs.js +2286 -2380
  111. package/dist/dockview.esm.js +2286 -2379
  112. package/dist/dockview.esm.min.js +2 -2
  113. package/dist/dockview.js +2286 -2380
  114. package/dist/dockview.min.js +2 -2
  115. package/dist/dockview.min.noStyle.js +2 -2
  116. package/dist/dockview.noStyle.js +2286 -2380
  117. package/dist/esm/api/component.api.d.ts +25 -34
  118. package/dist/esm/api/component.api.js +15 -39
  119. package/dist/esm/api/groupPanelApi.d.ts +7 -7
  120. package/dist/esm/api/groupPanelApi.js +1 -1
  121. package/dist/esm/api/panelApi.d.ts +1 -2
  122. package/dist/esm/api/panelApi.js +3 -3
  123. package/dist/esm/dnd/droptarget.d.ts +3 -1
  124. package/dist/esm/dnd/droptarget.js +11 -11
  125. package/dist/esm/dockview/components/tab/defaultTab.d.ts +2 -19
  126. package/dist/esm/dockview/components/tab/defaultTab.js +8 -49
  127. package/dist/esm/dockview/components/watermark/watermark.d.ts +2 -2
  128. package/dist/esm/dockview/defaultGroupPanelView.d.ts +4 -5
  129. package/dist/esm/dockview/defaultGroupPanelView.js +3 -5
  130. package/dist/esm/dockview/deserializer.d.ts +9 -6
  131. package/dist/esm/dockview/deserializer.js +17 -10
  132. package/dist/esm/dockview/dockviewComponent.d.ts +31 -31
  133. package/dist/esm/dockview/dockviewComponent.js +32 -29
  134. package/dist/esm/dockview/dockviewGroupPanel.d.ts +6 -6
  135. package/dist/esm/dockview/dockviewGroupPanel.js +6 -5
  136. package/dist/esm/dockview/options.d.ts +5 -6
  137. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -5
  138. package/dist/esm/gridview/baseComponentGridview.js +0 -10
  139. package/dist/esm/gridview/basePanelView.js +1 -1
  140. package/dist/esm/gridview/gridview.d.ts +2 -2
  141. package/dist/esm/gridview/gridviewComponent.d.ts +3 -5
  142. package/dist/esm/gridview/gridviewComponent.js +6 -9
  143. package/dist/esm/gridview/gridviewPanel.d.ts +2 -3
  144. package/dist/esm/gridview/gridviewPanel.js +4 -4
  145. package/dist/esm/groupview/groupPanel.d.ts +4 -4
  146. package/dist/esm/groupview/groupview.d.ts +52 -39
  147. package/dist/esm/groupview/groupview.js +45 -20
  148. package/dist/esm/groupview/groupviewPanel.d.ts +16 -2
  149. package/dist/esm/groupview/groupviewPanel.js +24 -4
  150. package/dist/esm/groupview/panel/content.d.ts +3 -3
  151. package/dist/esm/groupview/tab.d.ts +4 -4
  152. package/dist/esm/groupview/tab.js +1 -0
  153. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +14 -12
  154. package/dist/esm/groupview/titlebar/tabsContainer.js +15 -7
  155. package/dist/esm/groupview/types.d.ts +5 -7
  156. package/dist/esm/index.d.ts +1 -1
  157. package/dist/esm/index.js +1 -1
  158. package/dist/esm/paneview/draggablePaneviewPanel.js +2 -2
  159. package/dist/esm/paneview/paneviewComponent.d.ts +2 -7
  160. package/dist/esm/paneview/paneviewComponent.js +5 -15
  161. package/dist/esm/react/deserializer.d.ts +3 -2
  162. package/dist/esm/react/deserializer.js +2 -2
  163. package/dist/esm/react/dockview/dockview.d.ts +2 -3
  164. package/dist/esm/react/dockview/dockview.js +0 -1
  165. package/dist/esm/react/dockview/reactContentPart.d.ts +4 -6
  166. package/dist/esm/react/dockview/reactContentPart.js +0 -3
  167. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -2
  168. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +2 -2
  169. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +2 -3
  170. package/dist/esm/react/dockview/v2/reactContentRenderer.js +0 -3
  171. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  172. package/dist/esm/react/gridview/gridview.d.ts +2 -2
  173. package/dist/esm/react/gridview/gridview.js +2 -1
  174. package/dist/esm/react/gridview/view.js +2 -2
  175. package/dist/esm/react/index.d.ts +0 -1
  176. package/dist/esm/react/index.js +0 -1
  177. package/dist/esm/react/paneview/paneview.d.ts +2 -2
  178. package/dist/esm/react/splitview/splitview.d.ts +2 -2
  179. package/dist/esm/react/splitview/splitview.js +2 -1
  180. package/dist/esm/react/splitview/view.js +2 -2
  181. package/dist/esm/splitview/core/options.d.ts +2 -2
  182. package/dist/esm/splitview/splitviewComponent.d.ts +6 -12
  183. package/dist/esm/splitview/splitviewComponent.js +24 -34
  184. package/dist/esm/splitview/splitviewPanel.js +4 -6
  185. package/package.json +11 -10
  186. package/dist/cjs/react/dockview/components.d.ts +0 -11
  187. package/dist/cjs/react/dockview/components.js +0 -81
  188. package/dist/cjs/react/dockview/components.js.map +0 -1
  189. package/dist/esm/react/dockview/components.d.ts +0 -11
  190. package/dist/esm/react/dockview/components.js +0 -54
@@ -17,11 +17,11 @@ export class GridviewPanel extends BasePanelView {
17
17
  this.onDidChange = this._onDidChange.event;
18
18
  this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
19
19
  const { isVisible } = event;
20
- const { containerApi } = this._params;
21
- containerApi.setVisible(this, isVisible);
20
+ const { accessor } = this._params;
21
+ accessor.setVisible(this, isVisible);
22
22
  }), this.api.onActiveChange(() => {
23
- const { containerApi } = this._params;
24
- containerApi.setActive(this);
23
+ const { accessor } = this._params;
24
+ accessor.setActive(this);
25
25
  }), this.api.onDidConstraintsChangeInternal((event) => {
26
26
  if (typeof event.minimumWidth === 'number' ||
27
27
  typeof event.minimumWidth === 'function') {
@@ -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,11 +119,11 @@ 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;
@@ -120,32 +131,34 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
120
131
  get minimumWidth(): number;
121
132
  get maximumWidth(): number;
122
133
  get hasWatermark(): boolean;
123
- constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupviewPanel);
134
+ get header(): IHeader;
135
+ get isContentFocused(): boolean;
136
+ constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupPanel);
124
137
  initialize(): void;
125
- isContentFocused(): boolean;
126
- indexOf(panel: IGroupPanel): number;
138
+ indexOf(panel: IDockviewPanel): number;
127
139
  toJSON(): GroupPanelViewState;
128
140
  moveToNext(options?: {
129
- panel?: IGroupPanel;
141
+ panel?: IDockviewPanel;
130
142
  suppressRoll?: boolean;
131
143
  }): void;
132
144
  moveToPrevious(options?: {
133
- panel?: IGroupPanel;
145
+ panel?: IDockviewPanel;
134
146
  suppressRoll?: boolean;
135
147
  }): void;
136
- containsPanel(panel: IGroupPanel): boolean;
148
+ containsPanel(panel: IDockviewPanel): boolean;
137
149
  init(_params: PanelInitParameters): void;
138
150
  update(_params: PanelUpdateEvent): void;
139
151
  focus(): void;
140
- openPanel(panel: IGroupPanel, options?: {
152
+ openPanel(panel: IDockviewPanel, options?: {
141
153
  index?: number;
142
154
  skipFocus?: boolean;
155
+ skipSetActive?: boolean;
143
156
  }): void;
144
- removePanel(groupItemOrId: IGroupPanel | string): IGroupPanel;
157
+ removePanel(groupItemOrId: IDockviewPanel | string): IDockviewPanel;
145
158
  closeAllPanels(): void;
146
- closePanel(panel: IGroupPanel): void;
159
+ closePanel(panel: IDockviewPanel): void;
147
160
  private doClose;
148
- isPanelActive(panel: IGroupPanel): boolean;
161
+ isPanelActive(panel: IDockviewPanel): boolean;
149
162
  updateActions(): void;
150
163
  setActive(isGroupActive: boolean, skipFocus?: boolean, force?: boolean): void;
151
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;
@@ -102,6 +107,15 @@ export class Groupview extends CompositeDisposable {
102
107
  get hasWatermark() {
103
108
  return !!(this.watermark && this.container.contains(this.watermark.element));
104
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
+ }
105
119
  initialize() {
106
120
  var _a, _b;
107
121
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -117,22 +131,23 @@ export class Groupview extends CompositeDisposable {
117
131
  this.setActive(this.isActive, true, true);
118
132
  this.updateContainer();
119
133
  }
120
- isContentFocused() {
121
- if (!document.activeElement) {
122
- return false;
123
- }
124
- return isAncestor(document.activeElement, this.contentContainer.element);
125
- }
126
134
  indexOf(panel) {
127
135
  return this.tabsContainer.indexOf(panel.id);
128
136
  }
129
137
  toJSON() {
130
138
  var _a;
131
- return {
139
+ const result = {
132
140
  views: this.tabsContainer.panels,
133
141
  activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
134
142
  id: this.id,
135
143
  };
144
+ if (this.locked) {
145
+ result.locked = true;
146
+ }
147
+ if (this.header.hidden) {
148
+ result.hideHeader = true;
149
+ }
150
+ return result;
136
151
  }
137
152
  moveToNext(options) {
138
153
  if (!options) {
@@ -195,15 +210,18 @@ export class Groupview extends CompositeDisposable {
195
210
  options.index > this.panels.length) {
196
211
  options.index = this.panels.length;
197
212
  }
213
+ const skipSetActive = !!options.skipSetActive;
198
214
  // ensure the group is updated before we fire any events
199
215
  panel.updateParentGroup(this.parent, true);
200
- if (this._activePanel === panel) {
216
+ if (!skipSetActive && this._activePanel === panel) {
201
217
  this.accessor.doSetGroupActive(this.parent);
202
218
  return;
203
219
  }
204
- this.doAddPanel(panel, options.index);
205
- this.doSetActivePanel(panel);
206
- this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
220
+ this.doAddPanel(panel, options.index, skipSetActive);
221
+ if (!skipSetActive) {
222
+ this.doSetActivePanel(panel);
223
+ this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
224
+ }
207
225
  this.updateContainer();
208
226
  }
209
227
  removePanel(groupItemOrId) {
@@ -305,11 +323,13 @@ export class Groupview extends CompositeDisposable {
305
323
  panel,
306
324
  });
307
325
  }
308
- doAddPanel(panel, index = this.panels.length) {
326
+ doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
309
327
  const existingPanel = this._panels.indexOf(panel);
310
328
  const hasExistingPanel = existingPanel > -1;
311
329
  this.tabsContainer.openPanel(panel, index);
312
- this.contentContainer.openPanel(panel);
330
+ if (!skipSetActive) {
331
+ this.contentContainer.openPanel(panel);
332
+ }
313
333
  this.tabsContainer.show();
314
334
  this.contentContainer.show();
315
335
  if (hasExistingPanel) {
@@ -402,7 +422,12 @@ export class Groupview extends CompositeDisposable {
402
422
  });
403
423
  }
404
424
  else {
405
- this._onDidDrop.fire({ nativeEvent: event, position, index });
425
+ this._onDidDrop.fire({
426
+ nativeEvent: event,
427
+ position,
428
+ index,
429
+ getData: () => getPanelData(),
430
+ });
406
431
  }
407
432
  }
408
433
  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,7 +23,7 @@ export declare class ContentContainer extends CompositeDisposable implements ICo
23
23
  constructor();
24
24
  show(): void;
25
25
  hide(): void;
26
- openPanel(panel: IGroupPanel): void;
26
+ openPanel(panel: IDockviewPanel): void;
27
27
  layout(_width: number, _height: number): void;
28
28
  closePanel(): void;
29
29
  dispose(): void;
@@ -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;
@@ -24,6 +24,7 @@ export class Tab extends CompositeDisposable {
24
24
  this._element.className = 'tab';
25
25
  this._element.tabIndex = 0;
26
26
  this._element.draggable = true;
27
+ toggleClass(this.element, 'inactive-tab', true);
27
28
  this.addDisposables(new (class Handler extends DragHandler {
28
29
  constructor() {
29
30
  super(...arguments);
@@ -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
  }
@@ -36,16 +37,17 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
36
37
  private readonly voidDropTarget;
37
38
  private tabs;
38
39
  private selectedIndex;
39
- private active;
40
- private activePanel;
41
40
  private actions;
42
41
  private _height;
42
+ private _hidden;
43
43
  private readonly _onDrop;
44
44
  readonly onDrop: Event<TabDropIndexEvent>;
45
45
  get panels(): string[];
46
46
  get size(): number;
47
47
  get height(): number | undefined;
48
48
  set height(value: number | undefined);
49
+ get hidden(): boolean;
50
+ set hidden(value: boolean);
49
51
  show(): void;
50
52
  hide(): void;
51
53
  setActionElement(element: HTMLElement | undefined): void;
@@ -53,14 +55,14 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
53
55
  isActive(tab: ITab): boolean;
54
56
  at(index: number): ITab;
55
57
  indexOf(id: string): number;
56
- constructor(accessor: IDockviewComponent, group: GroupviewPanel, options: {
58
+ constructor(accessor: IDockviewComponent, group: GroupPanel, options: {
57
59
  tabHeight?: number;
58
60
  });
59
- setActive(isGroupActive: boolean): void;
61
+ setActive(_isGroupActive: boolean): void;
60
62
  private addTab;
61
63
  delete(id: string): void;
62
- setActivePanel(panel: IGroupPanel): void;
63
- openPanel(panel: IGroupPanel, index?: number): void;
64
- closePanel(panel: IGroupPanel): void;
64
+ setActivePanel(panel: IDockviewPanel): void;
65
+ openPanel(panel: IDockviewPanel, index?: number): void;
66
+ closePanel(panel: IDockviewPanel): void;
65
67
  dispose(): void;
66
68
  }
@@ -12,7 +12,7 @@ export class TabsContainer extends CompositeDisposable {
12
12
  this.group = group;
13
13
  this.tabs = [];
14
14
  this.selectedIndex = -1;
15
- this.active = false;
15
+ this._hidden = false;
16
16
  this._onDrop = new Emitter();
17
17
  this.onDrop = this._onDrop.event;
18
18
  this.addDisposables(this._onDrop);
@@ -73,11 +73,20 @@ export class TabsContainer extends CompositeDisposable {
73
73
  this.element.style.setProperty('--dv-tabs-and-actions-container-height', `${value}px`);
74
74
  }
75
75
  }
76
+ get hidden() {
77
+ return this._hidden;
78
+ }
79
+ set hidden(value) {
80
+ this._hidden = value;
81
+ this.element.style.display = value ? 'none' : '';
82
+ }
76
83
  show() {
77
- this.element.style.display = '';
84
+ if (!this.hidden) {
85
+ this.element.style.display = '';
86
+ }
78
87
  }
79
88
  hide() {
80
- this.element.style.display = 'none';
89
+ this._element.style.display = 'none';
81
90
  }
82
91
  setActionElement(element) {
83
92
  if (this.actions === element) {
@@ -106,8 +115,8 @@ export class TabsContainer extends CompositeDisposable {
106
115
  indexOf(id) {
107
116
  return this.tabs.findIndex((tab) => tab.value.panelId === id);
108
117
  }
109
- setActive(isGroupActive) {
110
- this.active = isGroupActive;
118
+ setActive(_isGroupActive) {
119
+ // noop
111
120
  }
112
121
  addTab(tab, index = this.tabs.length) {
113
122
  if (index < 0 || index > this.tabs.length) {
@@ -149,7 +158,7 @@ export class TabsContainer extends CompositeDisposable {
149
158
  const disposable = CompositeDisposable.from(tabToAdd.onChanged((event) => {
150
159
  var _a;
151
160
  const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
152
- this.group.model.isContentFocused();
161
+ this.group.model.isContentFocused;
153
162
  this.accessor.fireMouseEvent(Object.assign(Object.assign({}, event), { panel, tab: true }));
154
163
  const isLeftClick = event.event.button === 0;
155
164
  if (!isLeftClick || event.event.defaultPrevented) {
@@ -168,7 +177,6 @@ export class TabsContainer extends CompositeDisposable {
168
177
  }));
169
178
  const value = { value: tabToAdd, disposable };
170
179
  this.addTab(value, index);
171
- this.activePanel = panel;
172
180
  }
173
181
  closePanel(panel) {
174
182
  this.delete(panel.id);
@@ -3,9 +3,8 @@ import { IDockviewComponent } from '../dockview/dockviewComponent';
3
3
  import { DockviewPanelApi } from '../api/groupPanelApi';
4
4
  import { PanelInitParameters, IPanel } from '../panel/types';
5
5
  import { DockviewApi } from '../api/component.api';
6
- import { GroupviewPanel } from './groupviewPanel';
6
+ import { GroupPanel } from './groupviewPanel';
7
7
  import { Event } from '../events';
8
- import { WrappedTab } from '../dockview/components/tab/defaultTab';
9
8
  export interface IRenderable {
10
9
  id: string;
11
10
  element: HTMLElement;
@@ -21,17 +20,17 @@ export interface GroupPanelPartInitParameters extends PanelInitParameters, Heade
21
20
  containerApi: DockviewApi;
22
21
  }
23
22
  export interface GroupPanelContentPartInitParameters extends GroupPanelPartInitParameters {
24
- tab: WrappedTab;
23
+ tab: ITabRenderer;
25
24
  }
26
25
  export interface IWatermarkRenderer extends IPanel {
27
26
  readonly element: HTMLElement;
28
27
  init: (params: GroupPanelPartInitParameters) => void;
29
- updateParentGroup(group: GroupviewPanel, visible: boolean): void;
28
+ updateParentGroup(group: GroupPanel, visible: boolean): void;
30
29
  }
31
30
  export interface ITabRenderer extends IPanel {
32
31
  readonly element: HTMLElement;
33
32
  init(parameters: GroupPanelPartInitParameters): void;
34
- updateParentGroup(group: GroupviewPanel, isPanelVisible: boolean): void;
33
+ updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
35
34
  }
36
35
  export interface IActionsRenderer extends IDisposable {
37
36
  readonly element: HTMLElement;
@@ -41,9 +40,8 @@ export interface IContentRenderer extends IPanel {
41
40
  readonly actions?: HTMLElement;
42
41
  readonly onDidFocus?: Event<void>;
43
42
  readonly onDidBlur?: Event<void>;
44
- updateParentGroup(group: GroupviewPanel, isPanelVisible: boolean): void;
43
+ updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
45
44
  init(parameters: GroupPanelContentPartInitParameters): void;
46
- close?(): Promise<boolean>;
47
45
  }
48
46
  export interface WatermarkPartInitParameters {
49
47
  accessor: IDockviewComponent;