dockview 1.4.0 → 1.4.3

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 (141) hide show
  1. package/README.md +4 -195
  2. package/dist/cjs/api/component.api.d.ts +8 -8
  3. package/dist/cjs/api/component.api.js +16 -19
  4. package/dist/cjs/api/component.api.js.map +1 -1
  5. package/dist/cjs/api/panelApi.d.ts +1 -2
  6. package/dist/cjs/api/panelApi.js +3 -3
  7. package/dist/cjs/api/panelApi.js.map +1 -1
  8. package/dist/cjs/dnd/droptarget.d.ts +1 -2
  9. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -17
  10. package/dist/cjs/dockview/components/tab/defaultTab.js +9 -64
  11. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  12. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -2
  13. package/dist/cjs/dockview/defaultGroupPanelView.js +2 -4
  14. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  15. package/dist/cjs/dockview/deserializer.d.ts +0 -12
  16. package/dist/cjs/dockview/deserializer.js +0 -52
  17. package/dist/cjs/dockview/deserializer.js.map +1 -1
  18. package/dist/cjs/dockview/dockviewComponent.d.ts +5 -7
  19. package/dist/cjs/dockview/dockviewComponent.js +79 -42
  20. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  21. package/dist/cjs/dockview/dockviewGroupPanel.js +1 -1
  22. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  23. package/dist/cjs/dockview/options.d.ts +6 -1
  24. package/dist/cjs/gridview/baseComponentGridview.d.ts +4 -2
  25. package/dist/cjs/gridview/baseComponentGridview.js +1 -1
  26. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  27. package/dist/cjs/gridview/basePanelView.js +1 -1
  28. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  29. package/dist/cjs/gridview/gridview.js +1 -1
  30. package/dist/cjs/gridview/gridview.js.map +1 -1
  31. package/dist/cjs/gridview/gridviewComponent.d.ts +1 -2
  32. package/dist/cjs/gridview/gridviewComponent.js +28 -24
  33. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  34. package/dist/cjs/gridview/gridviewPanel.d.ts +2 -3
  35. package/dist/cjs/gridview/gridviewPanel.js +4 -4
  36. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  37. package/dist/cjs/groupview/groupview.d.ts +4 -3
  38. package/dist/cjs/groupview/groupview.js +20 -8
  39. package/dist/cjs/groupview/groupview.js.map +1 -1
  40. package/dist/cjs/groupview/groupviewPanel.d.ts +2 -2
  41. package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
  42. package/dist/cjs/groupview/tab.js +1 -0
  43. package/dist/cjs/groupview/tab.js.map +1 -1
  44. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +3 -5
  45. package/dist/cjs/groupview/titlebar/tabsContainer.js +2 -4
  46. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  47. package/dist/cjs/groupview/types.d.ts +1 -3
  48. package/dist/cjs/index.d.ts +1 -0
  49. package/dist/cjs/index.js +1 -0
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/cjs/paneview/defaultPaneviewHeader.js +6 -4
  52. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  53. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -0
  54. package/dist/cjs/paneview/paneviewComponent.js +20 -17
  55. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  56. package/dist/cjs/react/dockview/dockview.d.ts +2 -3
  57. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  58. package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -4
  59. package/dist/cjs/react/dockview/reactContentPart.js +0 -3
  60. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  61. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +0 -1
  62. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +0 -3
  63. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  64. package/dist/cjs/react/gridview/view.js +2 -2
  65. package/dist/cjs/react/gridview/view.js.map +1 -1
  66. package/dist/cjs/react/index.d.ts +0 -1
  67. package/dist/cjs/react/index.js +0 -1
  68. package/dist/cjs/react/index.js.map +1 -1
  69. package/dist/cjs/react/splitview/view.js +2 -2
  70. package/dist/cjs/react/splitview/view.js.map +1 -1
  71. package/dist/cjs/splitview/core/options.d.ts +2 -2
  72. package/dist/cjs/splitview/splitviewComponent.d.ts +2 -1
  73. package/dist/cjs/splitview/splitviewComponent.js +23 -21
  74. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  75. package/dist/cjs/splitview/splitviewPanel.js +4 -6
  76. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  77. package/dist/dockview.amd.js +165 -250
  78. package/dist/dockview.amd.min.js +2 -2
  79. package/dist/dockview.amd.min.noStyle.js +2 -2
  80. package/dist/dockview.amd.noStyle.js +164 -249
  81. package/dist/dockview.cjs.js +165 -250
  82. package/dist/dockview.esm.js +160 -244
  83. package/dist/dockview.esm.min.js +2 -2
  84. package/dist/dockview.js +165 -250
  85. package/dist/dockview.min.js +2 -2
  86. package/dist/dockview.min.noStyle.js +2 -2
  87. package/dist/dockview.noStyle.js +164 -249
  88. package/dist/esm/api/component.api.d.ts +8 -8
  89. package/dist/esm/api/component.api.js +16 -19
  90. package/dist/esm/api/panelApi.d.ts +1 -2
  91. package/dist/esm/api/panelApi.js +3 -3
  92. package/dist/esm/dnd/droptarget.d.ts +1 -2
  93. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -17
  94. package/dist/esm/dockview/components/tab/defaultTab.js +8 -49
  95. package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -2
  96. package/dist/esm/dockview/defaultGroupPanelView.js +3 -5
  97. package/dist/esm/dockview/deserializer.d.ts +0 -12
  98. package/dist/esm/dockview/deserializer.js +1 -27
  99. package/dist/esm/dockview/dockviewComponent.d.ts +5 -7
  100. package/dist/esm/dockview/dockviewComponent.js +50 -24
  101. package/dist/esm/dockview/dockviewGroupPanel.js +1 -1
  102. package/dist/esm/dockview/options.d.ts +6 -1
  103. package/dist/esm/gridview/baseComponentGridview.d.ts +4 -2
  104. package/dist/esm/gridview/baseComponentGridview.js +1 -1
  105. package/dist/esm/gridview/basePanelView.js +1 -1
  106. package/dist/esm/gridview/gridviewComponent.d.ts +1 -2
  107. package/dist/esm/gridview/gridviewComponent.js +17 -13
  108. package/dist/esm/gridview/gridviewPanel.d.ts +2 -3
  109. package/dist/esm/gridview/gridviewPanel.js +4 -4
  110. package/dist/esm/groupview/groupview.d.ts +4 -3
  111. package/dist/esm/groupview/groupview.js +19 -8
  112. package/dist/esm/groupview/groupviewPanel.d.ts +2 -2
  113. package/dist/esm/groupview/tab.js +1 -0
  114. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +3 -5
  115. package/dist/esm/groupview/titlebar/tabsContainer.js +2 -4
  116. package/dist/esm/groupview/types.d.ts +1 -3
  117. package/dist/esm/index.d.ts +1 -0
  118. package/dist/esm/index.js +1 -0
  119. package/dist/esm/paneview/defaultPaneviewHeader.js +6 -4
  120. package/dist/esm/paneview/paneviewComponent.d.ts +2 -0
  121. package/dist/esm/paneview/paneviewComponent.js +8 -5
  122. package/dist/esm/react/dockview/dockview.d.ts +2 -3
  123. package/dist/esm/react/dockview/reactContentPart.d.ts +2 -4
  124. package/dist/esm/react/dockview/reactContentPart.js +0 -3
  125. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +0 -1
  126. package/dist/esm/react/dockview/v2/reactContentRenderer.js +0 -3
  127. package/dist/esm/react/gridview/view.js +2 -2
  128. package/dist/esm/react/index.d.ts +0 -1
  129. package/dist/esm/react/index.js +0 -1
  130. package/dist/esm/react/splitview/view.js +2 -2
  131. package/dist/esm/splitview/core/options.d.ts +2 -2
  132. package/dist/esm/splitview/splitviewComponent.d.ts +2 -1
  133. package/dist/esm/splitview/splitviewComponent.js +11 -9
  134. package/dist/esm/splitview/splitviewPanel.js +4 -6
  135. package/dist/styles/dockview.css +5 -0
  136. package/package.json +2 -2
  137. package/dist/cjs/react/dockview/components.d.ts +0 -11
  138. package/dist/cjs/react/dockview/components.js +0 -81
  139. package/dist/cjs/react/dockview/components.js.map +0 -1
  140. package/dist/esm/react/dockview/components.d.ts +0 -11
  141. package/dist/esm/react/dockview/components.js +0 -54
@@ -40,7 +40,7 @@ export class BasePanelView extends CompositeDisposable {
40
40
  layout(width, height) {
41
41
  this._width = width;
42
42
  this._height = height;
43
- this.api._onDidPanelDimensionChange.fire({ width, height });
43
+ this.api._onDidDimensionChange.fire({ width, height });
44
44
  if (this.part) {
45
45
  if (this._params) {
46
46
  this.part.update(this._params.params);
@@ -37,7 +37,6 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
37
37
  updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
38
38
  addPanel(options: AddComponentOptions): IGridviewPanel;
39
39
  removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
40
- toggleVisibility(panel: IGridviewPanel): void;
41
40
  focus(): void;
42
41
  fromJSON(serializedGridview: SerializedGridview): void;
43
42
  toJSON(): SerializedGridview;
@@ -70,9 +69,9 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
70
69
  toJSON(): SerializedGridview;
71
70
  setVisible(panel: GridviewPanel, visible: boolean): void;
72
71
  setActive(panel: GridviewPanel): void;
73
- toggleVisibility(panel: GridviewPanel): void;
74
72
  focus(): void;
75
73
  fromJSON(serializedGridview: SerializedGridview): void;
74
+ clear(): void;
76
75
  movePanel(panel: GridviewPanel, options: {
77
76
  direction: Direction;
78
77
  reference: string;
@@ -3,7 +3,6 @@ import { Position } from '../dnd/droptarget';
3
3
  import { tail, sequenceEquals } from '../array';
4
4
  import { CompositeDisposable } from '../lifecycle';
5
5
  import { BaseGrid, toTarget, } from './baseComponentGridview';
6
- import { GridviewApi } from '../api/component.api';
7
6
  import { createComponent } from '../panel/componentFactory';
8
7
  import { Emitter } from '../events';
9
8
  export class GridviewComponent extends BaseGrid {
@@ -40,7 +39,7 @@ export class GridviewComponent extends BaseGrid {
40
39
  }
41
40
  updateOptions(options) {
42
41
  const hasOrientationChanged = typeof options.orientation === 'string' &&
43
- this.options.orientation !== options.orientation;
42
+ this.gridview.orientation !== options.orientation;
44
43
  this._options = Object.assign(Object.assign({}, this.options), options);
45
44
  if (hasOrientationChanged) {
46
45
  this.gridview.orientation = options.orientation;
@@ -71,21 +70,13 @@ export class GridviewComponent extends BaseGrid {
71
70
  value.value.setActive(panel === value.value);
72
71
  });
73
72
  }
74
- toggleVisibility(panel) {
75
- this.setVisible(panel, !this.isVisible(panel));
76
- }
77
73
  focus() {
78
74
  var _a;
79
75
  (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
80
76
  }
81
77
  fromJSON(serializedGridview) {
78
+ this.clear();
82
79
  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
- }
88
- this.gridview.clear();
89
80
  const queue = [];
90
81
  this.gridview.deserialize(grid, {
91
82
  fromJSON: (node) => {
@@ -104,9 +95,10 @@ export class GridviewComponent extends BaseGrid {
104
95
  maximumHeight: data.maximumHeight,
105
96
  priority: data.priority,
106
97
  snap: !!data.snap,
107
- containerApi: new GridviewApi(this),
98
+ accessor: this,
108
99
  isVisible: node.visible,
109
100
  }));
101
+ this._onDidAddGroup.fire(view);
110
102
  this.registerPanel(view);
111
103
  return view;
112
104
  },
@@ -121,6 +113,18 @@ export class GridviewComponent extends BaseGrid {
121
113
  }
122
114
  this._onDidLayoutfromJSON.fire();
123
115
  }
116
+ clear() {
117
+ const hasActiveGroup = this.activeGroup;
118
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
119
+ for (const group of groups) {
120
+ group.disposable.dispose();
121
+ this.doRemoveGroup(group.value, { skipActive: true });
122
+ }
123
+ if (hasActiveGroup) {
124
+ this.doSetGroupActive(undefined);
125
+ }
126
+ this.gridview.clear();
127
+ }
124
128
  movePanel(panel, options) {
125
129
  var _a;
126
130
  let relativeLocation;
@@ -170,7 +174,7 @@ export class GridviewComponent extends BaseGrid {
170
174
  maximumHeight: options.maximumHeight,
171
175
  priority: options.priority,
172
176
  snap: !!options.snap,
173
- containerApi: new GridviewApi(this),
177
+ accessor: this,
174
178
  isVisible: true,
175
179
  });
176
180
  this.registerPanel(view);
@@ -1,11 +1,10 @@
1
1
  import { PanelInitParameters } from '../panel/types';
2
- import { IGridPanelComponentView } from './gridviewComponent';
2
+ import { GridviewComponent, IGridPanelComponentView } from './gridviewComponent';
3
3
  import { BasePanelView, BasePanelViewExported, BasePanelViewState } from './basePanelView';
4
4
  import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
5
5
  import { LayoutPriority } from '../splitview/core/splitview';
6
6
  import { Event } from '../events';
7
7
  import { IViewSize } from './gridview';
8
- import { GridviewApi } from '../api/component.api';
9
8
  export interface GridviewInitParameters extends PanelInitParameters {
10
9
  minimumWidth?: number;
11
10
  maximumWidth?: number;
@@ -13,7 +12,7 @@ export interface GridviewInitParameters extends PanelInitParameters {
13
12
  maximumHeight?: number;
14
13
  priority?: LayoutPriority;
15
14
  snap?: boolean;
16
- containerApi: GridviewApi;
15
+ accessor: GridviewComponent;
17
16
  isVisible?: boolean;
18
17
  }
19
18
  export interface IGridviewPanel extends BasePanelViewExported<GridviewPanelApiImpl> {
@@ -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') {
@@ -1,6 +1,6 @@
1
1
  import { PanelTransfer } from '../dnd/dataTransfer';
2
2
  import { Position } from '../dnd/droptarget';
3
- import { IDockviewComponent } from '../dockview/dockviewComponent';
3
+ import { DockviewComponent } from '../dockview/dockviewComponent';
4
4
  import { Event } from '../events';
5
5
  import { IGridPanelView } from '../gridview/baseComponentGridview';
6
6
  import { IViewSize } from '../gridview/gridview';
@@ -133,7 +133,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
133
133
  get hasWatermark(): boolean;
134
134
  get header(): IHeader;
135
135
  get isContentFocused(): boolean;
136
- constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupPanel);
136
+ constructor(container: HTMLElement, accessor: DockviewComponent, id: string, options: GroupOptions, parent: GroupPanel);
137
137
  initialize(): void;
138
138
  indexOf(panel: IDockviewPanel): number;
139
139
  toJSON(): GroupPanelViewState;
@@ -152,7 +152,8 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
152
152
  openPanel(panel: IDockviewPanel, options?: {
153
153
  index?: number;
154
154
  skipFocus?: boolean;
155
- skipSetActive?: boolean;
155
+ skipSetPanelActive?: boolean;
156
+ skipSetGroupActive?: boolean;
156
157
  }): void;
157
158
  removePanel(groupItemOrId: IDockviewPanel | string): IDockviewPanel;
158
159
  closeAllPanels(): void;
@@ -210,16 +210,21 @@ export class Groupview extends CompositeDisposable {
210
210
  options.index > this.panels.length) {
211
211
  options.index = this.panels.length;
212
212
  }
213
- const skipSetActive = !!options.skipSetActive;
213
+ const skipSetPanelActive = !!options.skipSetPanelActive;
214
+ const skipSetGroupActive = !!options.skipSetGroupActive;
214
215
  // ensure the group is updated before we fire any events
215
216
  panel.updateParentGroup(this.parent, true);
216
- if (!skipSetActive && this._activePanel === panel) {
217
- this.accessor.doSetGroupActive(this.parent);
217
+ if (this._activePanel === panel) {
218
+ if (!skipSetGroupActive) {
219
+ this.accessor.doSetGroupActive(this.parent);
220
+ }
218
221
  return;
219
222
  }
220
- this.doAddPanel(panel, options.index);
221
- if (!skipSetActive) {
223
+ this.doAddPanel(panel, options.index, skipSetPanelActive);
224
+ if (!skipSetPanelActive) {
222
225
  this.doSetActivePanel(panel);
226
+ }
227
+ if (!skipSetGroupActive) {
223
228
  this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
224
229
  }
225
230
  this.updateContainer();
@@ -323,11 +328,13 @@ export class Groupview extends CompositeDisposable {
323
328
  panel,
324
329
  });
325
330
  }
326
- doAddPanel(panel, index = this.panels.length) {
331
+ doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
327
332
  const existingPanel = this._panels.indexOf(panel);
328
333
  const hasExistingPanel = existingPanel > -1;
329
334
  this.tabsContainer.openPanel(panel, index);
330
- this.contentContainer.openPanel(panel);
335
+ if (!skipSetActive) {
336
+ this.contentContainer.openPanel(panel);
337
+ }
331
338
  this.tabsContainer.show();
332
339
  this.contentContainer.show();
333
340
  if (hasExistingPanel) {
@@ -393,7 +400,11 @@ export class Groupview extends CompositeDisposable {
393
400
  canDisplayOverlay(event, target) {
394
401
  // custom overlay handler
395
402
  if (this.accessor.options.showDndOverlay) {
396
- return this.accessor.options.showDndOverlay(event, target);
403
+ return this.accessor.options.showDndOverlay({
404
+ nativeEvent: event,
405
+ target,
406
+ group: this.accessor.getPanel(this.id),
407
+ });
397
408
  }
398
409
  return false;
399
410
  }
@@ -1,5 +1,5 @@
1
1
  import { IFrameworkPart } from '../panel/types';
2
- import { IDockviewComponent } from '../dockview/dockviewComponent';
2
+ import { DockviewComponent } from '../dockview/dockviewComponent';
3
3
  import { GridviewPanelApi } from '../api/gridviewPanelApi';
4
4
  import { Groupview, GroupOptions, IHeader } from './groupview';
5
5
  import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
@@ -26,7 +26,7 @@ export declare class GroupPanel extends GridviewPanel implements IGroupviewPanel
26
26
  get locked(): boolean;
27
27
  set locked(value: boolean);
28
28
  get header(): IHeader;
29
- constructor(accessor: IDockviewComponent, id: string, options: GroupOptions);
29
+ constructor(accessor: DockviewComponent, id: string, options: GroupOptions);
30
30
  initialize(): void;
31
31
  setActive(isActive: boolean): void;
32
32
  layout(width: number, height: number): 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);
@@ -2,7 +2,7 @@ import { IDisposable, CompositeDisposable } from '../../lifecycle';
2
2
  import { Event } from '../../events';
3
3
  import { ITab } from '../tab';
4
4
  import { IDockviewPanel } from '../groupPanel';
5
- import { IDockviewComponent } from '../../dockview/dockviewComponent';
5
+ import { DockviewComponent } from '../../dockview/dockviewComponent';
6
6
  import { GroupPanel } from '../groupviewPanel';
7
7
  export interface TabDropIndexEvent {
8
8
  event: DragEvent;
@@ -37,8 +37,6 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
37
37
  private readonly voidDropTarget;
38
38
  private tabs;
39
39
  private selectedIndex;
40
- private active;
41
- private activePanel;
42
40
  private actions;
43
41
  private _height;
44
42
  private _hidden;
@@ -57,10 +55,10 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
57
55
  isActive(tab: ITab): boolean;
58
56
  at(index: number): ITab;
59
57
  indexOf(id: string): number;
60
- constructor(accessor: IDockviewComponent, group: GroupPanel, options: {
58
+ constructor(accessor: DockviewComponent, group: GroupPanel, options: {
61
59
  tabHeight?: number;
62
60
  });
63
- setActive(isGroupActive: boolean): void;
61
+ setActive(_isGroupActive: boolean): void;
64
62
  private addTab;
65
63
  delete(id: string): void;
66
64
  setActivePanel(panel: IDockviewPanel): void;
@@ -12,7 +12,6 @@ export class TabsContainer extends CompositeDisposable {
12
12
  this.group = group;
13
13
  this.tabs = [];
14
14
  this.selectedIndex = -1;
15
- this.active = false;
16
15
  this._hidden = false;
17
16
  this._onDrop = new Emitter();
18
17
  this.onDrop = this._onDrop.event;
@@ -116,8 +115,8 @@ export class TabsContainer extends CompositeDisposable {
116
115
  indexOf(id) {
117
116
  return this.tabs.findIndex((tab) => tab.value.panelId === id);
118
117
  }
119
- setActive(isGroupActive) {
120
- this.active = isGroupActive;
118
+ setActive(_isGroupActive) {
119
+ // noop
121
120
  }
122
121
  addTab(tab, index = this.tabs.length) {
123
122
  if (index < 0 || index > this.tabs.length) {
@@ -178,7 +177,6 @@ export class TabsContainer extends CompositeDisposable {
178
177
  }));
179
178
  const value = { value: tabToAdd, disposable };
180
179
  this.addTab(value, index);
181
- this.activePanel = panel;
182
180
  }
183
181
  closePanel(panel) {
184
182
  this.delete(panel.id);
@@ -5,7 +5,6 @@ import { PanelInitParameters, IPanel } from '../panel/types';
5
5
  import { DockviewApi } from '../api/component.api';
6
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,7 +20,7 @@ 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;
@@ -43,7 +42,6 @@ export interface IContentRenderer extends IPanel {
43
42
  readonly onDidBlur?: Event<void>;
44
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;
@@ -6,6 +6,7 @@ export * from './groupview/groupview';
6
6
  export * from './gridview/baseComponentGridview';
7
7
  export * from './groupview/panel/content';
8
8
  export * from './groupview/tab';
9
+ export * from './groupview/dnd';
9
10
  export * from './groupview/types';
10
11
  export * from './dockview/options';
11
12
  export * from './dockview/dockviewComponent';
package/dist/esm/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './groupview/groupview';
6
6
  export * from './gridview/baseComponentGridview';
7
7
  export * from './groupview/panel/content';
8
8
  export * from './groupview/tab';
9
+ export * from './groupview/dnd';
9
10
  export * from './groupview/types';
10
11
  export * from './dockview/options';
11
12
  export * from './dockview/dockviewComponent';
@@ -1,5 +1,6 @@
1
1
  import { addDisposableListener } from '../events';
2
2
  import { CompositeDisposable, MutableDisposable } from '../lifecycle';
3
+ import { toggleClass } from '../dom';
3
4
  export class DefaultHeader extends CompositeDisposable {
4
5
  constructor() {
5
6
  super();
@@ -9,9 +10,9 @@ export class DefaultHeader extends CompositeDisposable {
9
10
  this.element.className = 'default-header';
10
11
  this._content = document.createElement('span');
11
12
  this._expander = document.createElement('a');
12
- this.element.appendChild(this._content);
13
13
  this.element.appendChild(this._expander);
14
- this.addDisposables(addDisposableListener(this._expander, 'click', () => {
14
+ this.element.appendChild(this._content);
15
+ this.addDisposables(addDisposableListener(this._element, 'click', () => {
15
16
  var _a;
16
17
  (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);
17
18
  }));
@@ -22,9 +23,10 @@ export class DefaultHeader extends CompositeDisposable {
22
23
  init(params) {
23
24
  this.apiRef.api = params.api;
24
25
  this._content.textContent = params.title;
25
- this._expander.textContent = params.api.isExpanded ? '<' : '>';
26
+ this._expander.textContent = '';
27
+ toggleClass(this._expander, 'collapsed', !params.api.isExpanded);
26
28
  this.disposable.value = params.api.onDidExpansionChange((e) => {
27
- this._expander.textContent = e.isExpanded ? '<' : '>';
29
+ toggleClass(this._expander, 'collapsed', !e.isExpanded);
28
30
  });
29
31
  }
30
32
  update(_params) {
@@ -75,6 +75,7 @@ export interface IPaneviewComponent extends IDisposable {
75
75
  getPanel(id: string): IPaneviewPanel | undefined;
76
76
  movePanel(from: number, to: number): void;
77
77
  updateOptions(options: Partial<PaneviewComponentOptions>): void;
78
+ clear(): void;
78
79
  }
79
80
  export declare class PaneviewComponent extends CompositeDisposable implements IPaneviewComponent {
80
81
  private element;
@@ -110,6 +111,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
110
111
  layout(width: number, height: number): void;
111
112
  toJSON(): SerializedPaneview;
112
113
  fromJSON(serializedPaneview: SerializedPaneview): void;
114
+ clear(): void;
113
115
  private doAddPanel;
114
116
  private doRemovePanel;
115
117
  dispose(): void;
@@ -170,13 +170,9 @@ export class PaneviewComponent extends CompositeDisposable {
170
170
  };
171
171
  }
172
172
  fromJSON(serializedPaneview) {
173
+ this.clear();
173
174
  const { views, size } = serializedPaneview;
174
175
  const queue = [];
175
- for (const [_, value] of this._viewDisposables.entries()) {
176
- value.dispose();
177
- }
178
- this._viewDisposables.clear();
179
- this.paneview.dispose();
180
176
  this.paneview = new Paneview(this.element, {
181
177
  orientation: Orientation.VERTICAL,
182
178
  descriptor: {
@@ -235,6 +231,13 @@ export class PaneviewComponent extends CompositeDisposable {
235
231
  queue.forEach((f) => f());
236
232
  this._onDidLayoutfromJSON.fire();
237
233
  }
234
+ clear() {
235
+ for (const [_, value] of this._viewDisposables.entries()) {
236
+ value.dispose();
237
+ }
238
+ this._viewDisposables.clear();
239
+ this.paneview.dispose();
240
+ }
238
241
  doAddPanel(panel) {
239
242
  const disposable = panel.onDidDrop((event) => {
240
243
  this._onDidDrop.fire(event);
@@ -1,11 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { DockviewDropEvent } from '../../dockview/dockviewComponent';
3
- import { TabContextMenuEvent } from '../../dockview/options';
3
+ import { DockviewDndOverlayEvent, TabContextMenuEvent } from '../../dockview/options';
4
4
  import { DockviewPanelApi } from '../../api/groupPanelApi';
5
5
  import { DockviewApi } from '../../api/component.api';
6
6
  import { IWatermarkPanelProps } from './reactWatermarkPart';
7
7
  import { PanelCollection, PanelParameters } from '../types';
8
- import { DockviewDropTargets } from '../../groupview/dnd';
9
8
  export interface IGroupPanelBaseProps<T extends {} = Record<string, any>> extends PanelParameters<T> {
10
9
  api: DockviewPanelApi;
11
10
  containerApi: DockviewApi;
@@ -25,7 +24,7 @@ export interface IDockviewReactProps {
25
24
  tabHeight?: number;
26
25
  onTabContextMenu?: (event: TabContextMenuEvent) => void;
27
26
  onDidDrop?: (event: DockviewDropEvent) => void;
28
- showDndOverlay?: (event: DragEvent, target: DockviewDropTargets) => boolean;
27
+ showDndOverlay?: (event: DockviewDndOverlayEvent) => boolean;
29
28
  hideBorders?: boolean;
30
29
  className?: string;
31
30
  disableAutoResizing?: boolean;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { IContentRenderer, GroupPanelContentPartInitParameters } from '../../groupview/types';
2
+ import { IContentRenderer, GroupPanelContentPartInitParameters, ITabRenderer } from '../../groupview/types';
3
3
  import { ReactPortalStore } from '../react';
4
4
  import { IDockviewPanelProps } from '../dockview/dockview';
5
5
  import { PanelUpdateEvent } from '../../panel/types';
@@ -7,7 +7,6 @@ import { DockviewPanelApi } from '../../api/groupPanelApi';
7
7
  import { DockviewApi } from '../../api/component.api';
8
8
  import { GroupPanel } from '../../groupview/groupviewPanel';
9
9
  import { Event } from '../../events';
10
- import { WrappedTab } from '../../dockview/components/tab/defaultTab';
11
10
  export interface IGroupPanelActionbarProps {
12
11
  api: DockviewPanelApi;
13
12
  containerApi: DockviewApi;
@@ -16,7 +15,7 @@ export interface ReactContentPartContext {
16
15
  api: DockviewPanelApi;
17
16
  containerApi: DockviewApi;
18
17
  actionsPortalElement: HTMLElement;
19
- tabPortalElement: WrappedTab;
18
+ tabPortalElement: ITabRenderer;
20
19
  }
21
20
  export declare class ReactPanelContentPart implements IContentRenderer {
22
21
  readonly id: string;
@@ -42,6 +41,5 @@ export declare class ReactPanelContentPart implements IContentRenderer {
42
41
  update(event: PanelUpdateEvent): void;
43
42
  updateParentGroup(group: GroupPanel, _isPanelVisible: boolean): void;
44
43
  layout(_width: number, _height: number): void;
45
- close(): Promise<boolean>;
46
44
  dispose(): void;
47
45
  }
@@ -51,9 +51,6 @@ export class ReactPanelContentPart {
51
51
  layout(_width, _height) {
52
52
  // noop
53
53
  }
54
- close() {
55
- return Promise.resolve(true);
56
- }
57
54
  dispose() {
58
55
  var _a, _b;
59
56
  this._onDidFocus.dispose();
@@ -25,6 +25,5 @@ export declare class ReactContentRenderer implements IContentRenderer {
25
25
  update(params: PanelUpdateEvent): void;
26
26
  updateParentGroup(group: GroupPanel, _isPanelVisible: boolean): void;
27
27
  layout(_width: number, _height: number): void;
28
- close(): Promise<boolean>;
29
28
  dispose(): void;
30
29
  }
@@ -62,9 +62,6 @@ export class ReactContentRenderer {
62
62
  layout(_width, _height) {
63
63
  this._hostedContainer.layout(this.element);
64
64
  }
65
- close() {
66
- return Promise.resolve(true);
67
- }
68
65
  dispose() {
69
66
  var _a;
70
67
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
@@ -1,3 +1,4 @@
1
+ import { GridviewApi } from '../../api/component.api';
1
2
  import { GridviewPanel, } from '../../gridview/gridviewPanel';
2
3
  import { ReactPart } from '../react';
3
4
  export class ReactGridPanelView extends GridviewPanel {
@@ -11,8 +12,7 @@ export class ReactGridPanelView extends GridviewPanel {
11
12
  return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
12
13
  params: ((_a = this._params) === null || _a === void 0 ? void 0 : _a.params) || {},
13
14
  api: this.api,
14
- containerApi: this._params
15
- .containerApi,
15
+ containerApi: new GridviewApi(this._params.accessor),
16
16
  });
17
17
  }
18
18
  }
@@ -1,5 +1,4 @@
1
1
  export * from './dockview/dockview';
2
- export * from './dockview/components';
3
2
  export * from './splitview/splitview';
4
3
  export * from './gridview/gridview';
5
4
  export * from './dockview/reactContentPart';
@@ -1,5 +1,4 @@
1
1
  export * from './dockview/dockview';
2
- export * from './dockview/components';
3
2
  export * from './splitview/splitview';
4
3
  export * from './gridview/gridview';
5
4
  export * from './dockview/reactContentPart';
@@ -1,3 +1,4 @@
1
+ import { SplitviewApi } from '../../api/component.api';
1
2
  import { SplitviewPanel } from '../../splitview/splitviewPanel';
2
3
  import { ReactPart } from '../react';
3
4
  export class ReactPanelView extends SplitviewPanel {
@@ -11,8 +12,7 @@ export class ReactPanelView extends SplitviewPanel {
11
12
  return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
12
13
  params: ((_a = this._params) === null || _a === void 0 ? void 0 : _a.params) || {},
13
14
  api: this.api,
14
- containerApi: this._params
15
- .containerApi,
15
+ containerApi: new SplitviewApi(this._params.accessor),
16
16
  });
17
17
  }
18
18
  }
@@ -2,13 +2,13 @@ import { IPanel, PanelInitParameters } from '../../panel/types';
2
2
  import { IView, SplitViewOptions, LayoutPriority } from './splitview';
3
3
  import { FrameworkFactory } from '../../types';
4
4
  import { SplitviewPanel } from '../splitviewPanel';
5
- import { SplitviewApi } from '../../api/component.api';
5
+ import { SplitviewComponent } from '../splitviewComponent';
6
6
  export interface PanelViewInitParameters extends PanelInitParameters {
7
7
  minimumSize?: number;
8
8
  maximumSize?: number;
9
9
  snap?: boolean;
10
10
  priority?: LayoutPriority;
11
- containerApi: SplitviewApi;
11
+ accessor: SplitviewComponent;
12
12
  }
13
13
  export interface ISerializableView extends IView, IPanel {
14
14
  init: (params: PanelViewInitParameters) => void;
@@ -50,10 +50,10 @@ export interface ISplitviewComponent extends IDisposable {
50
50
  fromJSON(serializedSplitview: SerializedSplitview): void;
51
51
  focus(): void;
52
52
  getPanel(id: string): ISplitviewPanel | undefined;
53
- setActive(view: ISplitviewPanel, skipFocus?: boolean): void;
54
53
  removePanel(panel: ISplitviewPanel, sizing?: Sizing): void;
55
54
  setVisible(panel: ISplitviewPanel, visible: boolean): void;
56
55
  movePanel(from: number, to: number): void;
56
+ clear(): void;
57
57
  }
58
58
  /**
59
59
  * A high-level implementation of splitview that works using 'panels'
@@ -96,5 +96,6 @@ export declare class SplitviewComponent extends CompositeDisposable implements I
96
96
  private doAddView;
97
97
  toJSON(): SerializedSplitview;
98
98
  fromJSON(serializedSplitview: SerializedSplitview): void;
99
+ clear(): void;
99
100
  dispose(): void;
100
101
  }