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
@@ -1,16 +1,16 @@
1
1
  import { SerializedGridObject } from '../gridview/gridview';
2
2
  import { Position } from '../dnd/droptarget';
3
- import { GroupviewPanelState, IGroupPanel } from '../groupview/groupPanel';
3
+ import { GroupviewPanelState, IDockviewPanel } from '../groupview/groupPanel';
4
4
  import { Event } from '../events';
5
5
  import { IWatermarkRenderer } from '../groupview/types';
6
6
  import { IPanelDeserializer } from './deserializer';
7
- import { AddGroupOptions, AddPanelOptions, DockviewOptions as DockviewComponentOptions, MovementOptions, TabContextMenuEvent } from './options';
7
+ import { AddGroupOptions, AddPanelOptions, DockviewComponentOptions, MovementOptions, TabContextMenuEvent } from './options';
8
8
  import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
9
9
  import { DockviewApi } from '../api/component.api';
10
10
  import { LayoutMouseEvent } from '../groupview/tab';
11
11
  import { Orientation } from '../splitview/core/splitview';
12
12
  import { GroupOptions, GroupPanelViewState, GroupviewDropEvent } from '../groupview/groupview';
13
- import { GroupviewPanel } from '../groupview/groupviewPanel';
13
+ import { GroupPanel } from '../groupview/groupviewPanel';
14
14
  export interface PanelReference {
15
15
  update: (event: {
16
16
  params: {
@@ -30,7 +30,7 @@ export interface SerializedDockview {
30
30
  [key: string]: GroupviewPanelState;
31
31
  };
32
32
  activeGroup?: string;
33
- options: {
33
+ options?: {
34
34
  tabHeight?: number;
35
35
  };
36
36
  }
@@ -38,21 +38,21 @@ export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptio
38
38
  export interface DockviewDropEvent extends GroupviewDropEvent {
39
39
  api: DockviewApi;
40
40
  }
41
- export interface IDockviewComponent extends IBaseGrid<GroupviewPanel> {
42
- readonly activePanel: IGroupPanel | undefined;
41
+ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
42
+ readonly activePanel: IDockviewPanel | undefined;
43
43
  readonly totalPanels: number;
44
- readonly panels: IGroupPanel[];
44
+ readonly panels: IDockviewPanel[];
45
45
  readonly onDidDrop: Event<DockviewDropEvent>;
46
46
  tabHeight: number | undefined;
47
47
  deserializer: IPanelDeserializer | undefined;
48
48
  updateOptions(options: DockviewComponentUpdateOptions): void;
49
- moveGroupOrPanel(referenceGroup: GroupviewPanel, groupId: string, itemId: string, target: Position, index?: number): void;
50
- doSetGroupActive: (group: GroupviewPanel, skipFocus?: boolean) => void;
51
- removeGroup: (group: GroupviewPanel) => void;
49
+ moveGroupOrPanel(referenceGroup: GroupPanel, groupId: string, itemId: string, target: Position, index?: number): void;
50
+ doSetGroupActive: (group: GroupPanel, skipFocus?: boolean) => void;
51
+ removeGroup: (group: GroupPanel) => void;
52
52
  options: DockviewComponentOptions;
53
- addPanel(options: AddPanelOptions): IGroupPanel;
54
- removePanel(panel: IGroupPanel): void;
55
- getGroupPanel: (id: string) => IGroupPanel | undefined;
53
+ addPanel(options: AddPanelOptions): IDockviewPanel;
54
+ removePanel(panel: IDockviewPanel): void;
55
+ getGroupPanel: (id: string) => IDockviewPanel | undefined;
56
56
  fireMouseEvent(event: LayoutMouseEvent): void;
57
57
  createWatermarkComponent(): IWatermarkRenderer;
58
58
  addEmptyGroup(options?: AddGroupOptions): void;
@@ -61,16 +61,16 @@ export interface IDockviewComponent extends IBaseGrid<GroupviewPanel> {
61
61
  onTabContextMenu: Event<TabContextMenuEvent>;
62
62
  moveToNext(options?: MovementOptions): void;
63
63
  moveToPrevious(options?: MovementOptions): void;
64
- setActivePanel(panel: IGroupPanel): void;
64
+ setActivePanel(panel: IDockviewPanel): void;
65
65
  focus(): void;
66
66
  toJSON(): SerializedDockview;
67
67
  fromJSON(data: SerializedDockview): void;
68
- readonly onDidRemovePanel: Event<IGroupPanel>;
69
- readonly onDidAddPanel: Event<IGroupPanel>;
68
+ readonly onDidRemovePanel: Event<IDockviewPanel>;
69
+ readonly onDidAddPanel: Event<IDockviewPanel>;
70
70
  readonly onDidLayoutfromJSON: Event<void>;
71
- readonly onDidActivePanelChange: Event<IGroupPanel | undefined>;
71
+ readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
72
72
  }
73
- export declare class DockviewComponent extends BaseGrid<GroupviewPanel> implements IDockviewComponent {
73
+ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements IDockviewComponent {
74
74
  private _deserializer;
75
75
  private _api;
76
76
  private _options;
@@ -81,26 +81,26 @@ export declare class DockviewComponent extends BaseGrid<GroupviewPanel> implemen
81
81
  private readonly _onDidDrop;
82
82
  readonly onDidDrop: Event<DockviewDropEvent>;
83
83
  private readonly _onDidRemovePanel;
84
- readonly onDidRemovePanel: Event<IGroupPanel>;
84
+ readonly onDidRemovePanel: Event<IDockviewPanel>;
85
85
  private readonly _onDidAddPanel;
86
- readonly onDidAddPanel: Event<IGroupPanel>;
86
+ readonly onDidAddPanel: Event<IDockviewPanel>;
87
87
  private readonly _onDidLayoutfromJSON;
88
88
  readonly onDidLayoutfromJSON: Event<void>;
89
89
  private readonly _onDidActivePanelChange;
90
- readonly onDidActivePanelChange: Event<IGroupPanel | undefined>;
90
+ readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
91
91
  get totalPanels(): number;
92
- get panels(): IGroupPanel[];
92
+ get panels(): IDockviewPanel[];
93
93
  get deserializer(): IPanelDeserializer | undefined;
94
94
  set deserializer(value: IPanelDeserializer | undefined);
95
95
  get options(): DockviewComponentOptions;
96
- get activePanel(): IGroupPanel | undefined;
96
+ get activePanel(): IDockviewPanel | undefined;
97
97
  set tabHeight(height: number | undefined);
98
98
  get tabHeight(): number | undefined;
99
99
  constructor(element: HTMLElement, options: DockviewComponentOptions);
100
100
  updateOptions(options: DockviewComponentUpdateOptions): void;
101
101
  focus(): void;
102
- getGroupPanel(id: string): IGroupPanel | undefined;
103
- setActivePanel(panel: IGroupPanel): void;
102
+ getGroupPanel(id: string): IDockviewPanel | undefined;
103
+ setActivePanel(panel: IDockviewPanel): void;
104
104
  moveToNext(options?: MovementOptions): void;
105
105
  moveToPrevious(options?: MovementOptions): void;
106
106
  /**
@@ -112,20 +112,21 @@ export declare class DockviewComponent extends BaseGrid<GroupviewPanel> implemen
112
112
  fromJSON(data: SerializedDockview): void;
113
113
  closeAllGroups(): void;
114
114
  fireMouseEvent(event: LayoutMouseEvent): void;
115
- addPanel(options: AddPanelOptions): IGroupPanel;
116
- removePanel(panel: IGroupPanel, options?: {
115
+ addPanel(options: AddPanelOptions): IDockviewPanel;
116
+ removePanel(panel: IDockviewPanel, options?: {
117
117
  removeEmptyGroup: boolean;
118
+ skipDispose: boolean;
118
119
  }): void;
119
120
  createWatermarkComponent(): IWatermarkRenderer;
120
121
  addEmptyGroup(options: AddGroupOptions): void;
121
- removeGroup(group: GroupviewPanel, skipActive?: boolean): void;
122
- moveGroupOrPanel(referenceGroup: GroupviewPanel, groupId: string, itemId: string, target: Position, index?: number): void;
123
- doSetGroupActive(group: GroupviewPanel | undefined, skipFocus?: boolean): void;
124
- createGroup(options?: GroupOptions): GroupviewPanel;
125
- private _addPanel;
122
+ removeGroup(group: GroupPanel, skipActive?: boolean): void;
123
+ moveGroupOrPanel(referenceGroup: GroupPanel, groupId: string, itemId: string, target: Position, index?: number): void;
124
+ doSetGroupActive(group: GroupPanel | undefined, skipFocus?: boolean): void;
125
+ createGroup(options?: GroupOptions): GroupPanel;
126
+ private createPanel;
126
127
  private createContentComponent;
127
128
  private createTabComponent;
128
- private addPanelToNewGroup;
129
+ private createGroupAtLocation;
129
130
  private findGroup;
130
131
  dispose(): void;
131
132
  }
@@ -14,7 +14,7 @@ import { MouseEventKind } from '../groupview/tab';
14
14
  import { Orientation } from '../splitview/core/splitview';
15
15
  import { DefaultTab } from './components/tab/defaultTab';
16
16
  import { GroupChangeKind2, } from '../groupview/groupview';
17
- import { GroupviewPanel } from '../groupview/groupviewPanel';
17
+ import { GroupPanel } from '../groupview/groupviewPanel';
18
18
  import { DefaultGroupPanelView } from './defaultGroupPanelView';
19
19
  const nextGroupId = sequentialNumberGenerator();
20
20
  export class DockviewComponent extends BaseGrid {
@@ -65,7 +65,7 @@ export class DockviewComponent extends BaseGrid {
65
65
  return this.panels.length;
66
66
  }
67
67
  get panels() {
68
- return this.groups.flatMap((group) => group.model.panels);
68
+ return this.groups.flatMap((group) => group.panels);
69
69
  }
70
70
  get deserializer() {
71
71
  return this._deserializer;
@@ -81,12 +81,12 @@ export class DockviewComponent extends BaseGrid {
81
81
  if (!activeGroup) {
82
82
  return undefined;
83
83
  }
84
- return activeGroup.model.activePanel;
84
+ return activeGroup.activePanel;
85
85
  }
86
86
  set tabHeight(height) {
87
87
  this.options.tabHeight = height;
88
88
  this._groups.forEach((value) => {
89
- value.value.model.tabHeight = height;
89
+ value.value.model.header.height = height;
90
90
  });
91
91
  }
92
92
  get tabHeight() {
@@ -109,9 +109,6 @@ export class DockviewComponent extends BaseGrid {
109
109
  return this.panels.find((panel) => panel.id === id);
110
110
  }
111
111
  setActivePanel(panel) {
112
- if (!panel.group) {
113
- throw new Error(`Panel ${panel.id} has no associated group`);
114
- }
115
112
  this.doSetGroupActive(panel.group);
116
113
  panel.group.model.openPanel(panel);
117
114
  }
@@ -124,8 +121,8 @@ export class DockviewComponent extends BaseGrid {
124
121
  options.group = this.activeGroup;
125
122
  }
126
123
  if (options.includePanel && options.group) {
127
- if (options.group.model.activePanel !==
128
- options.group.model.panels[options.group.model.panels.length - 1]) {
124
+ if (options.group.activePanel !==
125
+ options.group.panels[options.group.panels.length - 1]) {
129
126
  options.group.model.moveToNext({ suppressRoll: true });
130
127
  return;
131
128
  }
@@ -143,8 +140,8 @@ export class DockviewComponent extends BaseGrid {
143
140
  options.group = this.activeGroup;
144
141
  }
145
142
  if (options.includePanel && options.group) {
146
- if (options.group.model.activePanel !==
147
- options.group.model.panels[0]) {
143
+ if (options.group.activePanel !==
144
+ options.group.panels[0]) {
148
145
  options.group.model.moveToPrevious({ suppressRoll: true });
149
146
  return;
150
147
  }
@@ -192,9 +189,9 @@ export class DockviewComponent extends BaseGrid {
192
189
  throw new Error('no deserializer provided');
193
190
  }
194
191
  this.gridview.deserialize(grid, new DefaultDeserializer(this, {
195
- createPanel: (id) => {
192
+ createPanel: (id, group) => {
196
193
  const panelData = panels[id];
197
- return this.deserializer.fromJSON(panelData);
194
+ return this.deserializer.fromJSON(panelData, group);
198
195
  },
199
196
  }));
200
197
  if (typeof activeGroup === 'string') {
@@ -225,7 +222,9 @@ export class DockviewComponent extends BaseGrid {
225
222
  }
226
223
  addPanel(options) {
227
224
  var _a, _b;
228
- const panel = this._addPanel(options);
225
+ if (this.panels.find((_) => _.id === options.id)) {
226
+ throw new Error(`panel with id ${options.id} already exists`);
227
+ }
229
228
  let referenceGroup;
230
229
  if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
231
230
  const referencePanel = this.getGroupPanel(options.position.referencePanel);
@@ -237,29 +236,42 @@ export class DockviewComponent extends BaseGrid {
237
236
  else {
238
237
  referenceGroup = this.activeGroup;
239
238
  }
239
+ let panel;
240
240
  if (referenceGroup) {
241
241
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
242
242
  if (target === Position.Center) {
243
+ panel = this.createPanel(options, referenceGroup);
243
244
  referenceGroup.model.openPanel(panel);
244
245
  }
245
246
  else {
246
247
  const location = getGridLocation(referenceGroup.element);
247
248
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
248
- this.addPanelToNewGroup(panel, relativeLocation);
249
+ const group = this.createGroupAtLocation(relativeLocation);
250
+ panel = this.createPanel(options, group);
251
+ group.model.openPanel(panel);
249
252
  }
250
253
  }
251
254
  else {
252
- this.addPanelToNewGroup(panel);
255
+ const group = this.createGroupAtLocation();
256
+ panel = this.createPanel(options, group);
257
+ group.model.openPanel(panel);
253
258
  }
254
259
  return panel;
255
260
  }
256
- removePanel(panel, options = { removeEmptyGroup: true }) {
261
+ removePanel(panel, options = {
262
+ removeEmptyGroup: true,
263
+ skipDispose: false,
264
+ }) {
257
265
  const group = panel.group;
258
266
  if (!group) {
259
267
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
260
268
  }
261
269
  group.model.removePanel(panel);
262
- if (group.model.size === 0 && options.removeEmptyGroup) {
270
+ panel.dispose();
271
+ const retainGroupForWatermark = this.size === 1;
272
+ if (!retainGroupForWatermark &&
273
+ group.size === 0 &&
274
+ options.removeEmptyGroup) {
263
275
  this.removeGroup(group);
264
276
  }
265
277
  }
@@ -292,10 +304,11 @@ export class DockviewComponent extends BaseGrid {
292
304
  }
293
305
  }
294
306
  removeGroup(group, skipActive = false) {
295
- const panels = [...group.model.panels]; // reassign since group panels will mutate
307
+ const panels = [...group.panels]; // reassign since group panels will mutate
296
308
  for (const panel of panels) {
297
309
  this.removePanel(panel, {
298
310
  removeEmptyGroup: false,
311
+ skipDispose: false,
299
312
  });
300
313
  }
301
314
  super.doRemoveGroup(group, { skipActive });
@@ -319,7 +332,7 @@ export class DockviewComponent extends BaseGrid {
319
332
  else {
320
333
  const referenceLocation = getGridLocation(referenceGroup.element);
321
334
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
322
- if (sourceGroup && sourceGroup.model.size < 2) {
335
+ if (sourceGroup && sourceGroup.size < 2) {
323
336
  const [targetParentLocation, to] = tail(targetLocation);
324
337
  const sourceLocation = getGridLocation(sourceGroup.element);
325
338
  const [sourceParentLocation, from] = tail(sourceLocation);
@@ -348,7 +361,8 @@ export class DockviewComponent extends BaseGrid {
348
361
  throw new Error(`No panel with id ${itemId}`);
349
362
  }
350
363
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
351
- this.addPanelToNewGroup(groupItem, dropLocation);
364
+ const group = this.createGroupAtLocation(dropLocation);
365
+ group.model.openPanel(groupItem);
352
366
  }
353
367
  }
354
368
  }
@@ -356,8 +370,8 @@ export class DockviewComponent extends BaseGrid {
356
370
  var _a, _b;
357
371
  const isGroupAlreadyFocused = this._activeGroup === group;
358
372
  super.doSetGroupActive(group, skipFocus);
359
- if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.model.activePanel)) {
360
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel);
373
+ if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {
374
+ this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
361
375
  }
362
376
  }
363
377
  createGroup(options) {
@@ -378,7 +392,8 @@ export class DockviewComponent extends BaseGrid {
378
392
  id = nextGroupId.next();
379
393
  }
380
394
  }
381
- const view = new GroupviewPanel(this, id, options);
395
+ const view = new GroupPanel(this, id, options);
396
+ view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
382
397
  if (!this._groups.has(view.id)) {
383
398
  const disposable = new CompositeDisposable(view.model.onMove((event) => {
384
399
  const { groupId, itemId, target, index } = event;
@@ -408,16 +423,16 @@ export class DockviewComponent extends BaseGrid {
408
423
  // not an ideal pattern
409
424
  view.initialize();
410
425
  if (typeof this.options.tabHeight === 'number') {
411
- view.model.tabHeight = this.options.tabHeight;
426
+ view.model.header.height = this.options.tabHeight;
412
427
  }
413
428
  return view;
414
429
  }
415
- _addPanel(options) {
430
+ createPanel(options, group) {
416
431
  const view = new DefaultGroupPanelView({
417
432
  content: this.createContentComponent(options.id, options.component),
418
433
  tab: this.createTabComponent(options.id, options.tabComponent),
419
434
  });
420
- const panel = new DockviewGroupPanel(options.id, this, this._api);
435
+ const panel = new DockviewGroupPanel(options.id, this, this._api, group);
421
436
  panel.init({
422
437
  view,
423
438
  title: options.title || options.id,
@@ -434,10 +449,10 @@ export class DockviewComponent extends BaseGrid {
434
449
  var _a;
435
450
  return createComponent(id, componentName, this.options.tabComponents || {}, this.options.frameworkTabComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, () => new DefaultTab());
436
451
  }
437
- addPanelToNewGroup(panel, location = [0]) {
452
+ createGroupAtLocation(location = [0]) {
438
453
  const group = this.createGroup();
439
454
  this.doAddGroup(group, location);
440
- group.model.openPanel(panel);
455
+ return group;
441
456
  }
442
457
  findGroup(panel) {
443
458
  var _a;
@@ -1,11 +1,11 @@
1
1
  import { DockviewApi } from '../api/component.api';
2
2
  import { DockviewPanelApiImpl } from '../api/groupPanelApi';
3
- import { GroupPanelUpdateEvent, GroupviewPanelState, IGroupPanel, IGroupPanelInitParameters } from '../groupview/groupPanel';
4
- import { GroupviewPanel } from '../groupview/groupviewPanel';
3
+ import { GroupPanelUpdateEvent, GroupviewPanelState, IDockviewPanel, IGroupPanelInitParameters } from '../groupview/groupPanel';
4
+ import { GroupPanel } from '../groupview/groupviewPanel';
5
5
  import { CompositeDisposable } from '../lifecycle';
6
6
  import { IGroupPanelView } from './defaultGroupPanelView';
7
7
  import { DockviewComponent } from './dockviewComponent';
8
- export declare class DockviewGroupPanel extends CompositeDisposable implements IGroupPanel {
8
+ export declare class DockviewGroupPanel extends CompositeDisposable implements IDockviewPanel {
9
9
  readonly id: string;
10
10
  private readonly containerApi;
11
11
  private readonly mutableDisposable;
@@ -18,16 +18,16 @@ export declare class DockviewGroupPanel extends CompositeDisposable implements I
18
18
  get params(): any;
19
19
  get title(): string;
20
20
  get suppressClosable(): boolean;
21
- get group(): GroupviewPanel | undefined;
21
+ get group(): GroupPanel;
22
22
  get view(): IGroupPanelView | undefined;
23
- constructor(id: string, accessor: DockviewComponent, containerApi: DockviewApi);
23
+ constructor(id: string, accessor: DockviewComponent, containerApi: DockviewApi, group: GroupPanel);
24
24
  init(params: IGroupPanelInitParameters): void;
25
25
  focus(): void;
26
26
  toJSON(): GroupviewPanelState;
27
27
  setTitle(title: string): void;
28
28
  setSuppressClosable(suppressClosable: boolean): void;
29
29
  update(event: GroupPanelUpdateEvent): void;
30
- updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
30
+ updateParentGroup(group: GroupPanel, isGroupActive: boolean): void;
31
31
  layout(width: number, height: number): void;
32
32
  dispose(): void;
33
33
  }
@@ -1,13 +1,14 @@
1
1
  import { DockviewPanelApiImpl } from '../api/groupPanelApi';
2
2
  import { CompositeDisposable, MutableDisposable } from '../lifecycle';
3
3
  export class DockviewGroupPanel extends CompositeDisposable {
4
- constructor(id, accessor, containerApi) {
4
+ constructor(id, accessor, containerApi, group) {
5
5
  super();
6
6
  this.id = id;
7
7
  this.containerApi = containerApi;
8
8
  this.mutableDisposable = new MutableDisposable();
9
9
  this._suppressClosable = false;
10
10
  this._title = '';
11
+ this._group = group;
11
12
  this.api = new DockviewPanelApiImpl(this, this._group);
12
13
  this.addDisposables(this.api.onActiveChange(() => {
13
14
  accessor.setActivePanel(this);
@@ -104,13 +105,13 @@ export class DockviewGroupPanel extends CompositeDisposable {
104
105
  (_a = this.view) === null || _a === void 0 ? void 0 : _a.updateParentGroup(this._group, this._group.model.isPanelActive(this));
105
106
  }
106
107
  layout(width, height) {
107
- var _a, _b;
108
+ var _a;
108
109
  // the obtain the correct dimensions of the content panel we must deduct the tab height
109
110
  this.api._onDidPanelDimensionChange.fire({
110
111
  width,
111
- height: height - (((_a = this.group) === null || _a === void 0 ? void 0 : _a.model.tabHeight) || 0),
112
+ height: height - (this.group.model.header.height || 0),
112
113
  });
113
- (_b = this.view) === null || _b === void 0 ? void 0 : _b.layout(width, height);
114
+ (_a = this.view) === null || _a === void 0 ? void 0 : _a.layout(width, height);
114
115
  }
115
116
  dispose() {
116
117
  var _a;
@@ -1,9 +1,9 @@
1
1
  import { DockviewApi } from '../api/component.api';
2
2
  import { Direction } from '../gridview/baseComponentGridview';
3
3
  import { IGridView } from '../gridview/gridview';
4
- import { IGroupPanel } from '../groupview/groupPanel';
4
+ import { IDockviewPanel } from '../groupview/groupPanel';
5
5
  import { IContentRenderer, ITabRenderer, WatermarkConstructor, IWatermarkRenderer } from '../groupview/types';
6
- import { GroupviewPanel } from '../groupview/groupviewPanel';
6
+ import { GroupPanel } from '../groupview/groupviewPanel';
7
7
  import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
8
8
  import { FrameworkFactory } from '../types';
9
9
  import { DockviewDropTargets } from '../groupview/dnd';
@@ -15,7 +15,7 @@ export interface GroupPanelFrameworkComponentFactory {
15
15
  export interface TabContextMenuEvent {
16
16
  event: MouseEvent;
17
17
  api: DockviewApi;
18
- panel: IGroupPanel;
18
+ panel: IDockviewPanel;
19
19
  }
20
20
  export interface DockviewRenderFunctions {
21
21
  tabComponents?: {
@@ -39,12 +39,11 @@ export interface ViewFactoryData {
39
39
  content: string;
40
40
  tab?: string;
41
41
  }
42
- export interface DockviewOptions extends DockviewRenderFunctions {
42
+ export interface DockviewComponentOptions extends DockviewRenderFunctions {
43
43
  watermarkComponent?: WatermarkConstructor;
44
44
  watermarkFrameworkComponent?: any;
45
45
  frameworkComponentFactory?: GroupPanelFrameworkComponentFactory;
46
46
  tabHeight?: number;
47
- debug?: boolean;
48
47
  orientation?: Orientation;
49
48
  styles?: ISplitviewStyles;
50
49
  showDndOverlay?: (event: DragEvent, target: DockviewDropTargets) => boolean;
@@ -76,5 +75,5 @@ export interface MovementOptions2 {
76
75
  }
77
76
  export interface MovementOptions extends MovementOptions2 {
78
77
  includePanel?: boolean;
79
- group?: GroupviewPanel;
78
+ group?: GroupPanel;
80
79
  }
@@ -36,7 +36,6 @@ export interface IBaseGrid<T extends IGridPanelView> {
36
36
  toJSON(): object;
37
37
  fromJSON(data: any): void;
38
38
  layout(width: number, height: number, force?: boolean): void;
39
- resizeToFit(): void;
40
39
  setVisible(panel: T, visible: boolean): void;
41
40
  isVisible(panel: T): boolean;
42
41
  }
@@ -82,9 +81,5 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
82
81
  moveToNext(options?: MovementOptions2): void;
83
82
  moveToPrevious(options?: MovementOptions2): void;
84
83
  layout(width: number, height: number, forceResize?: boolean): void;
85
- /**
86
- * Resize the layout to fit the parent container
87
- */
88
- resizeToFit(): void;
89
84
  dispose(): void;
90
85
  }
@@ -100,6 +100,7 @@ export class BaseGrid extends CompositeDisposable {
100
100
  const view = this.gridview.remove(group, Sizing.Distribute);
101
101
  if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
102
102
  item.disposable.dispose();
103
+ item.value.dispose();
103
104
  this._groups.delete(group.id);
104
105
  }
105
106
  this._onDidRemoveGroup.fire(group);
@@ -174,22 +175,15 @@ export class BaseGrid extends CompositeDisposable {
174
175
  this.element.style.width = `${width}px`;
175
176
  this.gridview.layout(width, height);
176
177
  }
177
- /**
178
- * Resize the layout to fit the parent container
179
- */
180
- resizeToFit() {
181
- if (!this.element.parentElement) {
182
- return;
183
- }
184
- const { width, height } = this.element.parentElement.getBoundingClientRect();
185
- this.layout(width, height);
186
- }
187
178
  dispose() {
188
179
  super.dispose();
189
180
  this._onDidActiveGroupChange.dispose();
190
181
  this._onDidAddGroup.dispose();
191
182
  this._onDidRemoveGroup.dispose();
192
183
  this._onDidLayoutChange.dispose();
184
+ for (const group of this.groups) {
185
+ group.dispose();
186
+ }
193
187
  this.gridview.dispose();
194
188
  }
195
189
  }
@@ -66,7 +66,9 @@ export class BasePanelView extends CompositeDisposable {
66
66
  };
67
67
  }
68
68
  dispose() {
69
+ var _a;
69
70
  super.dispose();
70
71
  this.api.dispose();
72
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
71
73
  }
72
74
  }
@@ -201,7 +201,7 @@ export class BranchNode extends CompositeDisposable {
201
201
  }
202
202
  setupChildrenEvents() {
203
203
  this._childrenDisposable.dispose();
204
- this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {
204
+ this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))(() => {
205
205
  /**
206
206
  * indicate a change has occured to allows any re-rendering but don't bubble
207
207
  * event because that was specific to this branch
@@ -57,9 +57,9 @@ export interface SerializedGridObject<T> {
57
57
  size?: number;
58
58
  visible?: boolean;
59
59
  }
60
- export interface ISerializedLeafNode {
60
+ export interface ISerializedLeafNode<T = any> {
61
61
  type: 'leaf';
62
- data: any;
62
+ data: T;
63
63
  size: number;
64
64
  visible?: boolean;
65
65
  }
@@ -352,7 +352,7 @@ export class Gridview {
352
352
  const [parentIndex, ...__] = [...rest].reverse();
353
353
  const isSiblingVisible = parent.isChildVisible(0);
354
354
  parent.removeChild(0, sizing);
355
- const sizes = grandParent.children.map((size, i) => grandParent.getChildSize(i));
355
+ const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
356
356
  grandParent.removeChild(parentIndex, sizing);
357
357
  if (sibling instanceof BranchNode) {
358
358
  sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
@@ -5,12 +5,8 @@ import { GridviewComponentOptions } from './options';
5
5
  import { BaseGrid, Direction, IBaseGrid, IGridPanelView } from './baseComponentGridview';
6
6
  import { GridviewPanel, GridviewInitParameters, GridPanelViewState, IGridviewPanel } from './gridviewPanel';
7
7
  import { BaseComponentOptions } from '../panel/types';
8
- import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
9
8
  import { Orientation, Sizing } from '../splitview/core/splitview';
10
9
  import { Event } from '../events';
11
- interface PanelReference {
12
- api: GridviewPanelApiImpl;
13
- }
14
10
  export interface SerializedGridview {
15
11
  grid: {
16
12
  height: number;
@@ -21,14 +17,13 @@ export interface SerializedGridview {
21
17
  activePanel?: string;
22
18
  }
23
19
  export interface AddComponentOptions extends BaseComponentOptions {
24
- size?: number;
25
20
  minimumWidth?: number;
26
21
  maximumWidth?: number;
27
22
  minimumHeight?: number;
28
23
  maximumHeight?: number;
29
24
  position?: {
30
25
  direction: Direction;
31
- reference: string;
26
+ referencePanel: string;
32
27
  };
33
28
  location?: number[];
34
29
  }
@@ -40,11 +35,11 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
40
35
  readonly orientation: Orientation;
41
36
  readonly onDidLayoutFromJSON: Event<void>;
42
37
  updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
43
- addPanel(options: AddComponentOptions): void;
38
+ addPanel(options: AddComponentOptions): IGridviewPanel;
44
39
  removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
45
40
  toggleVisibility(panel: IGridviewPanel): void;
46
41
  focus(): void;
47
- fromJSON(serializedGridview: SerializedGridview, deferComponentLayout?: boolean): void;
42
+ fromJSON(serializedGridview: SerializedGridview): void;
48
43
  toJSON(): SerializedGridview;
49
44
  movePanel(panel: IGridviewPanel, options: {
50
45
  direction: Direction;
@@ -77,16 +72,15 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
77
72
  setActive(panel: GridviewPanel): void;
78
73
  toggleVisibility(panel: GridviewPanel): void;
79
74
  focus(): void;
80
- fromJSON(serializedGridview: SerializedGridview, deferComponentLayout?: boolean): void;
75
+ fromJSON(serializedGridview: SerializedGridview): void;
81
76
  movePanel(panel: GridviewPanel, options: {
82
77
  direction: Direction;
83
78
  reference: string;
84
79
  size?: number;
85
80
  }): void;
86
- addPanel(options: AddComponentOptions): PanelReference;
81
+ addPanel(options: AddComponentOptions): IGridviewPanel;
87
82
  private registerPanel;
88
83
  moveGroup(referenceGroup: IGridPanelComponentView, groupId: string, target: Position): void;
89
84
  removeGroup(group: GridviewPanel): void;
90
85
  dispose(): void;
91
86
  }
92
- export {};