dockview 1.0.1 → 1.1.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 (221) hide show
  1. package/README.md +243 -186
  2. package/dist/cjs/api/component.api.d.ts +32 -17
  3. package/dist/cjs/api/component.api.js +155 -28
  4. package/dist/cjs/api/component.api.js.map +1 -1
  5. package/dist/cjs/api/gridviewPanelApi.js +1 -0
  6. package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
  7. package/dist/cjs/api/groupPanelApi.d.ts +11 -14
  8. package/dist/cjs/api/groupPanelApi.js +19 -17
  9. package/dist/cjs/api/groupPanelApi.js.map +1 -1
  10. package/dist/cjs/api/panelApi.d.ts +0 -25
  11. package/dist/cjs/api/panelApi.js +1 -20
  12. package/dist/cjs/api/panelApi.js.map +1 -1
  13. package/dist/cjs/api/paneviewPanelApi.js +1 -0
  14. package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
  15. package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
  16. package/dist/cjs/api/splitviewPanelApi.js +1 -5
  17. package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
  18. package/dist/cjs/dnd/abstractDragHandler.d.ts +3 -3
  19. package/dist/cjs/dnd/abstractDragHandler.js +15 -14
  20. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  21. package/dist/cjs/dnd/dataTransfer.d.ts +0 -25
  22. package/dist/cjs/dnd/dataTransfer.js +1 -45
  23. package/dist/cjs/dnd/dataTransfer.js.map +1 -1
  24. package/dist/cjs/dnd/dnd.d.ts +1 -14
  25. package/dist/cjs/dnd/dnd.js +1 -79
  26. package/dist/cjs/dnd/dnd.js.map +1 -1
  27. package/dist/cjs/dnd/droptarget.d.ts +4 -5
  28. package/dist/cjs/dnd/droptarget.js +70 -46
  29. package/dist/cjs/dnd/droptarget.js.map +1 -1
  30. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
  31. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -8
  32. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  33. package/dist/cjs/dockview/defaultGroupPanelView.js +3 -1
  34. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  35. package/dist/cjs/dockview/dockviewComponent.d.ts +27 -19
  36. package/dist/cjs/dockview/dockviewComponent.js +67 -178
  37. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  38. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +2 -5
  39. package/dist/cjs/dockview/dockviewGroupPanel.js +2 -31
  40. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  41. package/dist/cjs/dockview/options.d.ts +2 -1
  42. package/dist/cjs/events.d.ts +7 -0
  43. package/dist/cjs/events.js +47 -5
  44. package/dist/cjs/events.js.map +1 -1
  45. package/dist/cjs/gridview/baseComponentGridview.d.ts +9 -0
  46. package/dist/cjs/gridview/baseComponentGridview.js +20 -15
  47. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  48. package/dist/cjs/gridview/basePanelView.d.ts +5 -8
  49. package/dist/cjs/gridview/basePanelView.js +14 -8
  50. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  51. package/dist/cjs/gridview/branchNode.js +1 -1
  52. package/dist/cjs/gridview/branchNode.js.map +1 -1
  53. package/dist/cjs/gridview/gridview.js +19 -18
  54. package/dist/cjs/gridview/gridview.js.map +1 -1
  55. package/dist/cjs/gridview/gridviewComponent.d.ts +4 -0
  56. package/dist/cjs/gridview/gridviewComponent.js +5 -0
  57. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  58. package/dist/cjs/gridview/gridviewPanel.d.ts +0 -1
  59. package/dist/cjs/gridview/gridviewPanel.js +3 -6
  60. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  61. package/dist/cjs/gridview/leafNode.js +1 -0
  62. package/dist/cjs/gridview/leafNode.js.map +1 -1
  63. package/dist/cjs/groupview/groupPanel.d.ts +0 -7
  64. package/dist/cjs/groupview/groupview.d.ts +15 -8
  65. package/dist/cjs/groupview/groupview.js +38 -125
  66. package/dist/cjs/groupview/groupview.js.map +1 -1
  67. package/dist/cjs/groupview/groupviewPanel.d.ts +5 -2
  68. package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
  69. package/dist/cjs/groupview/panel/content.js +1 -0
  70. package/dist/cjs/groupview/panel/content.js.map +1 -1
  71. package/dist/cjs/groupview/tab.d.ts +10 -13
  72. package/dist/cjs/groupview/tab.js +22 -80
  73. package/dist/cjs/groupview/tab.js.map +1 -1
  74. package/dist/cjs/groupview/titlebar/tabsContainer.js +6 -8
  75. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  76. package/dist/cjs/index.d.ts +1 -1
  77. package/dist/cjs/lifecycle.js +2 -1
  78. package/dist/cjs/lifecycle.js.map +1 -1
  79. package/dist/cjs/panel/types.d.ts +0 -2
  80. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
  81. package/dist/cjs/paneview/draggablePaneviewPanel.js +32 -29
  82. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  83. package/dist/cjs/paneview/paneview.d.ts +1 -1
  84. package/dist/cjs/paneview/paneview.js +2 -5
  85. package/dist/cjs/paneview/paneview.js.map +1 -1
  86. package/dist/cjs/paneview/paneviewComponent.d.ts +6 -5
  87. package/dist/cjs/paneview/paneviewComponent.js +11 -16
  88. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  89. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -1
  90. package/dist/cjs/paneview/paneviewPanel.js +14 -2
  91. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  92. package/dist/cjs/react/deserializer.js +1 -3
  93. package/dist/cjs/react/deserializer.js.map +1 -1
  94. package/dist/cjs/react/dockview/dockview.d.ts +9 -9
  95. package/dist/cjs/react/dockview/dockview.js +14 -1
  96. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  97. package/dist/cjs/react/dockview/reactContentPart.js +4 -4
  98. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  99. package/dist/cjs/react/dockview/reactHeaderPart.js +1 -0
  100. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  101. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +1 -2
  102. package/dist/cjs/react/dockview/reactWatermarkPart.js +1 -2
  103. package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
  104. package/dist/cjs/react/gridview/view.js +2 -2
  105. package/dist/cjs/react/gridview/view.js.map +1 -1
  106. package/dist/cjs/react/index.d.ts +1 -0
  107. package/dist/cjs/react/index.js.map +1 -1
  108. package/dist/cjs/react/react.js +1 -2
  109. package/dist/cjs/react/react.js.map +1 -1
  110. package/dist/cjs/react/splitview/view.js +2 -2
  111. package/dist/cjs/react/splitview/view.js.map +1 -1
  112. package/dist/cjs/splitview/core/splitview.js +1 -1
  113. package/dist/cjs/splitview/core/splitview.js.map +1 -1
  114. package/dist/cjs/splitview/splitviewComponent.d.ts +9 -6
  115. package/dist/cjs/splitview/splitviewComponent.js +11 -1
  116. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  117. package/dist/cjs/splitview/splitviewPanel.d.ts +1 -6
  118. package/dist/cjs/splitview/splitviewPanel.js +5 -3
  119. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  120. package/dist/dockview.amd.js +480 -567
  121. package/dist/dockview.amd.min.js +2 -16
  122. package/dist/dockview.amd.min.noStyle.js +2 -16
  123. package/dist/dockview.amd.noStyle.js +479 -566
  124. package/dist/dockview.cjs.js +480 -567
  125. package/dist/dockview.esm.js +480 -563
  126. package/dist/dockview.esm.min.js +2 -16
  127. package/dist/dockview.js +480 -567
  128. package/dist/dockview.min.js +2 -16
  129. package/dist/dockview.min.noStyle.js +2 -16
  130. package/dist/dockview.noStyle.js +479 -566
  131. package/dist/esm/api/component.api.d.ts +32 -17
  132. package/dist/esm/api/component.api.js +71 -20
  133. package/dist/esm/api/gridviewPanelApi.js +1 -0
  134. package/dist/esm/api/groupPanelApi.d.ts +11 -14
  135. package/dist/esm/api/groupPanelApi.js +18 -13
  136. package/dist/esm/api/panelApi.d.ts +0 -25
  137. package/dist/esm/api/panelApi.js +1 -20
  138. package/dist/esm/api/paneviewPanelApi.js +1 -0
  139. package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
  140. package/dist/esm/api/splitviewPanelApi.js +1 -5
  141. package/dist/esm/dnd/abstractDragHandler.d.ts +3 -3
  142. package/dist/esm/dnd/abstractDragHandler.js +9 -8
  143. package/dist/esm/dnd/dataTransfer.d.ts +0 -25
  144. package/dist/esm/dnd/dataTransfer.js +0 -40
  145. package/dist/esm/dnd/dnd.d.ts +1 -14
  146. package/dist/esm/dnd/dnd.js +1 -69
  147. package/dist/esm/dnd/droptarget.d.ts +4 -5
  148. package/dist/esm/dnd/droptarget.js +70 -46
  149. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
  150. package/dist/esm/dockview/components/tab/defaultTab.js +1 -9
  151. package/dist/esm/dockview/defaultGroupPanelView.js +3 -1
  152. package/dist/esm/dockview/dockviewComponent.d.ts +27 -19
  153. package/dist/esm/dockview/dockviewComponent.js +54 -118
  154. package/dist/esm/dockview/dockviewGroupPanel.d.ts +2 -5
  155. package/dist/esm/dockview/dockviewGroupPanel.js +2 -30
  156. package/dist/esm/dockview/options.d.ts +2 -1
  157. package/dist/esm/events.d.ts +7 -0
  158. package/dist/esm/events.js +20 -3
  159. package/dist/esm/gridview/baseComponentGridview.d.ts +9 -0
  160. package/dist/esm/gridview/baseComponentGridview.js +21 -16
  161. package/dist/esm/gridview/basePanelView.d.ts +5 -8
  162. package/dist/esm/gridview/basePanelView.js +10 -8
  163. package/dist/esm/gridview/branchNode.js +1 -1
  164. package/dist/esm/gridview/gridview.js +16 -16
  165. package/dist/esm/gridview/gridviewComponent.d.ts +4 -0
  166. package/dist/esm/gridview/gridviewComponent.js +5 -0
  167. package/dist/esm/gridview/gridviewPanel.d.ts +0 -1
  168. package/dist/esm/gridview/gridviewPanel.js +3 -6
  169. package/dist/esm/gridview/leafNode.js +1 -0
  170. package/dist/esm/groupview/groupPanel.d.ts +0 -7
  171. package/dist/esm/groupview/groupview.d.ts +15 -8
  172. package/dist/esm/groupview/groupview.js +24 -58
  173. package/dist/esm/groupview/groupviewPanel.d.ts +5 -2
  174. package/dist/esm/groupview/panel/content.js +1 -0
  175. package/dist/esm/groupview/tab.d.ts +10 -13
  176. package/dist/esm/groupview/tab.js +17 -24
  177. package/dist/esm/groupview/titlebar/tabsContainer.js +6 -8
  178. package/dist/esm/index.d.ts +1 -1
  179. package/dist/esm/lifecycle.js +2 -1
  180. package/dist/esm/panel/types.d.ts +0 -2
  181. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
  182. package/dist/esm/paneview/draggablePaneviewPanel.js +32 -29
  183. package/dist/esm/paneview/paneview.d.ts +1 -1
  184. package/dist/esm/paneview/paneview.js +2 -5
  185. package/dist/esm/paneview/paneviewComponent.d.ts +6 -5
  186. package/dist/esm/paneview/paneviewComponent.js +11 -8
  187. package/dist/esm/paneview/paneviewPanel.d.ts +5 -1
  188. package/dist/esm/paneview/paneviewPanel.js +10 -2
  189. package/dist/esm/react/deserializer.js +1 -3
  190. package/dist/esm/react/dockview/dockview.d.ts +9 -9
  191. package/dist/esm/react/dockview/dockview.js +15 -2
  192. package/dist/esm/react/dockview/reactContentPart.js +4 -4
  193. package/dist/esm/react/dockview/reactHeaderPart.js +1 -0
  194. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +1 -2
  195. package/dist/esm/react/dockview/reactWatermarkPart.js +1 -2
  196. package/dist/esm/react/gridview/view.js +2 -2
  197. package/dist/esm/react/index.d.ts +1 -0
  198. package/dist/esm/react/react.js +1 -2
  199. package/dist/esm/react/splitview/view.js +2 -2
  200. package/dist/esm/splitview/core/splitview.js +1 -1
  201. package/dist/esm/splitview/splitviewComponent.d.ts +9 -6
  202. package/dist/esm/splitview/splitviewComponent.js +10 -2
  203. package/dist/esm/splitview/splitviewPanel.d.ts +1 -6
  204. package/dist/esm/splitview/splitviewPanel.js +5 -3
  205. package/dist/styles/dockview.css +5 -9
  206. package/package.json +4 -4
  207. package/dist/cjs/functions.d.ts +0 -1
  208. package/dist/cjs/functions.js +0 -42
  209. package/dist/cjs/functions.js.map +0 -1
  210. package/dist/cjs/groupview/panel/hostedPanel.d.ts +0 -22
  211. package/dist/cjs/groupview/panel/hostedPanel.js +0 -57
  212. package/dist/cjs/groupview/panel/hostedPanel.js.map +0 -1
  213. package/dist/cjs/json.d.ts +0 -1
  214. package/dist/cjs/json.js +0 -14
  215. package/dist/cjs/json.js.map +0 -1
  216. package/dist/esm/functions.d.ts +0 -1
  217. package/dist/esm/functions.js +0 -8
  218. package/dist/esm/groupview/panel/hostedPanel.d.ts +0 -22
  219. package/dist/esm/groupview/panel/hostedPanel.js +0 -43
  220. package/dist/esm/json.d.ts +0 -1
  221. package/dist/esm/json.js +0 -9
@@ -42,7 +42,7 @@ export class TabsContainer extends CompositeDisposable {
42
42
  });
43
43
  this.addDisposables(this.voidDropTarget.onDrop((event) => {
44
44
  this._onDrop.fire({
45
- event: event.event,
45
+ event: event.nativeEvent,
46
46
  index: this.tabs.length,
47
47
  });
48
48
  }), this.voidDropTarget, addDisposableListener(this.tabContainer, 'mousedown', (event) => {
@@ -155,16 +155,14 @@ export class TabsContainer extends CompositeDisposable {
155
155
  if (!isLeftClick || event.event.defaultPrevented) {
156
156
  return;
157
157
  }
158
- switch (event.kind) {
159
- case MouseEventKind.CLICK:
160
- this.group.model.openPanel(panel, {
161
- skipFocus: alreadyFocused,
162
- });
163
- break;
158
+ if (event.kind === MouseEventKind.CLICK) {
159
+ this.group.model.openPanel(panel, {
160
+ skipFocus: alreadyFocused,
161
+ });
164
162
  }
165
163
  }), tabToAdd.onDrop((event) => {
166
164
  this._onDrop.fire({
167
- event: event.event,
165
+ event: event.nativeEvent,
168
166
  index: this.tabs.findIndex((x) => x.value === tabToAdd),
169
167
  });
170
168
  }));
@@ -21,7 +21,7 @@ export * from './paneview/paneviewPanel';
21
21
  export * from './groupview/groupPanel';
22
22
  export * from './react';
23
23
  export { Position } from './dnd/droptarget';
24
- export { StateObject, State, FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
24
+ export { FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
25
25
  export { SizeEvent, GridviewPanelApi, GridConstraintChangeEvent, } from './api/gridviewPanelApi';
26
26
  export { TitleEvent, SuppressClosableEvent, DockviewPanelApi, } from './api/groupPanelApi';
27
27
  export { PanelSizeEvent, PanelConstraintChangeEvent, SplitviewPanelApi, } from './api/splitviewPanelApi';
@@ -14,7 +14,7 @@ export class CompositeDisposable {
14
14
  return new CompositeDisposable(...args);
15
15
  }
16
16
  addDisposables(...args) {
17
- args === null || args === void 0 ? void 0 : args.forEach((arg) => this.disposables.push(arg));
17
+ args.forEach((arg) => this.disposables.push(arg));
18
18
  }
19
19
  dispose() {
20
20
  this.disposables.forEach((arg) => arg.dispose());
@@ -33,6 +33,7 @@ export class MutableDisposable {
33
33
  dispose() {
34
34
  if (this._disposable) {
35
35
  this._disposable.dispose();
36
+ this._disposable = Disposable.NONE;
36
37
  }
37
38
  }
38
39
  }
@@ -1,4 +1,3 @@
1
- import { State } from '../api/panelApi';
2
1
  import { IDisposable } from '../lifecycle';
3
2
  import { LayoutPriority } from '../splitview/core/splitview';
4
3
  /**
@@ -9,7 +8,6 @@ export interface Parameters {
9
8
  }
10
9
  export interface PanelInitParameters {
11
10
  params: Parameters;
12
- state?: State;
13
11
  }
14
12
  export interface PanelUpdateEvent<T extends Parameters = Parameters> {
15
13
  params: Partial<T>;
@@ -1,6 +1,5 @@
1
1
  import { PaneTransfer } from '../dnd/dataTransfer';
2
2
  import { DroptargetEvent } from '../dnd/droptarget';
3
- import { Event } from '../events';
4
3
  import { Orientation } from '../splitview/core/splitview';
5
4
  import { IPaneviewPanel, PaneviewPanel } from './paneviewPanel';
6
5
  export interface PaneviewDropEvent2 extends DroptargetEvent {
@@ -11,7 +10,8 @@ export declare abstract class DraggablePaneviewPanel extends PaneviewPanel {
11
10
  private handler;
12
11
  private target;
13
12
  private readonly _onDidDrop;
14
- readonly onDidDrop: Event<PaneviewDropEvent2>;
13
+ readonly onDidDrop: import("../events").Event<PaneviewDropEvent2>;
15
14
  constructor(id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
16
15
  private initDragFeatures;
16
+ private onDrop;
17
17
  }
@@ -5,7 +5,7 @@ import { Emitter } from '../events';
5
5
  import { PaneviewPanel, } from './paneviewPanel';
6
6
  export class DraggablePaneviewPanel extends PaneviewPanel {
7
7
  constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
8
- super(id, component, headerComponent, orientation, isExpanded);
8
+ super(id, component, headerComponent, orientation, isExpanded, true);
9
9
  this._onDidDrop = new Emitter();
10
10
  this.onDidDrop = this._onDidDrop.event;
11
11
  if (!disableDnd) {
@@ -39,34 +39,37 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
39
39
  },
40
40
  });
41
41
  this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
42
- const data = getPaneData();
43
- if (!data) {
44
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
45
- return;
46
- }
47
- const containerApi = this.params
48
- .containerApi;
49
- const panelId = data.paneId;
50
- const existingPanel = containerApi.getPanel(panelId);
51
- if (!existingPanel) {
52
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
53
- return;
54
- }
55
- const allPanels = containerApi.getPanels();
56
- const fromIndex = allPanels.indexOf(existingPanel);
57
- let toIndex = containerApi.getPanels().indexOf(this);
58
- if (event.position === Position.Left ||
59
- event.position === Position.Top) {
60
- toIndex = Math.max(0, toIndex - 1);
61
- }
62
- if (event.position === Position.Right ||
63
- event.position === Position.Bottom) {
64
- if (fromIndex > toIndex) {
65
- toIndex++;
66
- }
67
- toIndex = Math.min(allPanels.length - 1, toIndex);
68
- }
69
- containerApi.movePanel(fromIndex, toIndex);
42
+ this.onDrop(event);
70
43
  }));
71
44
  }
45
+ onDrop(event) {
46
+ const data = getPaneData();
47
+ if (!data) {
48
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
49
+ return;
50
+ }
51
+ const containerApi = this._params
52
+ .containerApi;
53
+ const panelId = data.paneId;
54
+ const existingPanel = containerApi.getPanel(panelId);
55
+ if (!existingPanel) {
56
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
57
+ return;
58
+ }
59
+ const allPanels = containerApi.getPanels();
60
+ const fromIndex = allPanels.indexOf(existingPanel);
61
+ let toIndex = containerApi.getPanels().indexOf(this);
62
+ if (event.position === Position.Left ||
63
+ event.position === Position.Top) {
64
+ toIndex = Math.max(0, toIndex - 1);
65
+ }
66
+ if (event.position === Position.Right ||
67
+ event.position === Position.Bottom) {
68
+ if (fromIndex > toIndex) {
69
+ toIndex++;
70
+ }
71
+ toIndex = Math.min(allPanels.length - 1, toIndex);
72
+ }
73
+ containerApi.movePanel(fromIndex, toIndex);
74
+ }
72
75
  }
@@ -12,6 +12,7 @@ export declare class Paneview extends CompositeDisposable implements IDisposable
12
12
  private paneItems;
13
13
  private _orientation;
14
14
  private animationTimer;
15
+ private skipAnimation;
15
16
  private readonly _onDidChange;
16
17
  readonly onDidChange: Event<void>;
17
18
  get onDidAddView(): Event<PaneviewPanel>;
@@ -29,7 +30,6 @@ export declare class Paneview extends CompositeDisposable implements IDisposable
29
30
  getViewSize(index: number): number;
30
31
  getPanes(): PaneviewPanel[];
31
32
  removePane(index: number): PaneItem;
32
- private skipAnimation;
33
33
  moveView(from: number, to: number): void;
34
34
  layout(size: number, orthogonalSize: number): void;
35
35
  private setupAnimation;
@@ -7,9 +7,9 @@ export class Paneview extends CompositeDisposable {
7
7
  var _a;
8
8
  super();
9
9
  this.paneItems = [];
10
+ this.skipAnimation = false;
10
11
  this._onDidChange = new Emitter();
11
12
  this.onDidChange = this._onDidChange.event;
12
- this.skipAnimation = false;
13
13
  this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;
14
14
  this.element = document.createElement('div');
15
15
  this.element.className = 'pane-container';
@@ -37,7 +37,7 @@ export class Paneview extends CompositeDisposable {
37
37
  this.paneItems.push(paneItem);
38
38
  pane.orthogonalSize = this.splitview.orthogonalSize;
39
39
  });
40
- this.addDisposables(this.splitview.onDidSashEnd(() => {
40
+ this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
41
41
  this._onDidChange.fire(undefined);
42
42
  }), this.splitview.onDidAddView(() => {
43
43
  this._onDidChange.fire();
@@ -109,9 +109,6 @@ export class Paneview extends CompositeDisposable {
109
109
  }
110
110
  }
111
111
  layout(size, orthogonalSize) {
112
- // for (const paneItem of this.paneItems) {
113
- // paneItem.pane.orthogonalSize = orthogonalSize;
114
- // }
115
112
  this.splitview.layout(size, orthogonalSize);
116
113
  }
117
114
  setupAnimation() {
@@ -18,9 +18,6 @@ export interface SerializedPaneviewPanel {
18
18
  params?: {
19
19
  [index: string]: any;
20
20
  };
21
- state?: {
22
- [index: string]: any;
23
- };
24
21
  };
25
22
  size: number;
26
23
  expanded?: boolean;
@@ -63,6 +60,8 @@ export interface IPaneviewComponent extends IDisposable {
63
60
  readonly height: number;
64
61
  readonly minimumSize: number;
65
62
  readonly maximumSize: number;
63
+ readonly onDidAddView: Event<PaneviewPanel>;
64
+ readonly onDidRemoveView: Event<PaneviewPanel>;
66
65
  readonly onDidDrop: Event<PaneviewDropEvent2>;
67
66
  readonly onDidLayoutChange: Event<void>;
68
67
  addPanel(options: AddPaneviewCompponentOptions): IDisposable;
@@ -85,8 +84,10 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
85
84
  readonly onDidLayoutChange: Event<void>;
86
85
  private readonly _onDidDrop;
87
86
  readonly onDidDrop: Event<PaneviewDropEvent2>;
88
- get onDidAddView(): Event<PaneviewPanel>;
89
- get onDidRemoveView(): Event<PaneviewPanel>;
87
+ private readonly _onDidAddView;
88
+ readonly onDidAddView: Event<PaneviewPanel>;
89
+ private readonly _onDidRemoveView;
90
+ readonly onDidRemoveView: Event<PaneviewPanel>;
90
91
  set paneview(value: Paneview);
91
92
  get paneview(): Paneview;
92
93
  get minimumSize(): number;
@@ -27,6 +27,11 @@ export class PaneviewComponent extends CompositeDisposable {
27
27
  this.onDidLayoutChange = this._onDidLayoutChange.event;
28
28
  this._onDidDrop = new Emitter();
29
29
  this.onDidDrop = this._onDidDrop.event;
30
+ this._onDidAddView = new Emitter();
31
+ this.onDidAddView = this._onDidAddView.event;
32
+ this._onDidRemoveView = new Emitter();
33
+ this.onDidRemoveView = this._onDidRemoveView.event;
34
+ this.addDisposables(this._onDidLayoutChange, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);
30
35
  this._options = options;
31
36
  if (!options.components) {
32
37
  options.components = {};
@@ -40,17 +45,11 @@ export class PaneviewComponent extends CompositeDisposable {
40
45
  });
41
46
  this.addDisposables(this._disposable);
42
47
  }
43
- get onDidAddView() {
44
- return this._paneview.onDidAddView;
45
- }
46
- get onDidRemoveView() {
47
- return this._paneview.onDidRemoveView;
48
- }
49
48
  set paneview(value) {
50
49
  this._paneview = value;
51
- this._disposable.value = new CompositeDisposable(this.paneview.onDidChange(() => {
50
+ this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {
52
51
  this._onDidLayoutChange.fire(undefined);
53
- }));
52
+ }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));
54
53
  }
55
54
  get paneview() {
56
55
  return this._paneview;
@@ -230,6 +229,10 @@ export class PaneviewComponent extends CompositeDisposable {
230
229
  });
231
230
  panel.orientation = this.paneview.orientation;
232
231
  });
232
+ setTimeout(() => {
233
+ // the original onDidAddView events are missed since they are fired before we can subcribe to them
234
+ this._onDidAddView.fire(panel);
235
+ }, 0);
233
236
  return { size: view.size, view: panel };
234
237
  }),
235
238
  },
@@ -39,6 +39,7 @@ export interface IPaneviewPanel extends BasePanelViewExported<PaneviewPanelApiIm
39
39
  readonly maximumBodySize: number;
40
40
  isExpanded(): boolean;
41
41
  setExpanded(isExpanded: boolean): void;
42
+ headerVisible: boolean;
42
43
  }
43
44
  export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelApiImpl> implements IPaneview, IPaneviewPanel {
44
45
  private readonly headerComponent;
@@ -59,6 +60,7 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
59
60
  private expandedSize;
60
61
  private animationTimer;
61
62
  private _orientation;
63
+ private _headerVisible;
62
64
  set orientation(value: Orientation);
63
65
  get orientation(): Orientation;
64
66
  get minimumSize(): number;
@@ -70,7 +72,9 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
70
72
  set minimumBodySize(value: number);
71
73
  get maximumBodySize(): number;
72
74
  set maximumBodySize(value: number);
73
- constructor(id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean);
75
+ get headerVisible(): boolean;
76
+ set headerVisible(value: boolean);
77
+ constructor(id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, isHeaderVisible: boolean);
74
78
  setVisible(isVisible: boolean): void;
75
79
  setActive(isActive: boolean): void;
76
80
  isExpanded(): boolean;
@@ -4,7 +4,7 @@ import { addDisposableListener, Emitter } from '../events';
4
4
  import { BasePanelView, } from '../gridview/basePanelView';
5
5
  import { Orientation } from '../splitview/core/splitview';
6
6
  export class PaneviewPanel extends BasePanelView {
7
- constructor(id, component, headerComponent, orientation, isExpanded) {
7
+ constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {
8
8
  super(id, component, new PaneviewPanelApiImpl(id));
9
9
  this.headerComponent = headerComponent;
10
10
  this._onDidChangeExpansionState = new Emitter({ replay: true });
@@ -20,6 +20,7 @@ export class PaneviewPanel extends BasePanelView {
20
20
  this.expandedSize = 0;
21
21
  this.api.pane = this; // TODO cannot use 'this' before 'super'
22
22
  this._isExpanded = isExpanded;
23
+ this._headerVisible = isHeaderVisible;
23
24
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
24
25
  this._orientation = orientation;
25
26
  this.element.classList.add('pane');
@@ -87,6 +88,13 @@ export class PaneviewPanel extends BasePanelView {
87
88
  this._maximumBodySize =
88
89
  typeof value === 'number' ? value : Number.POSITIVE_INFINITY;
89
90
  }
91
+ get headerVisible() {
92
+ return this._headerVisible;
93
+ }
94
+ set headerVisible(value) {
95
+ this._headerVisible = value;
96
+ this.header.style.display = value ? '' : 'none';
97
+ }
90
98
  setVisible(isVisible) {
91
99
  this.api._onDidVisibilityChange.fire({ isVisible });
92
100
  }
@@ -149,7 +157,7 @@ export class PaneviewPanel extends BasePanelView {
149
157
  }
150
158
  }
151
159
  toJSON() {
152
- const params = this.params;
160
+ const params = this._params;
153
161
  return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });
154
162
  }
155
163
  renderOnce() {
@@ -12,7 +12,6 @@ export class ReactPanelDeserialzier {
12
12
  const panelId = panelData.id;
13
13
  const params = panelData.params;
14
14
  const title = panelData.title;
15
- const state = panelData.state;
16
15
  const suppressClosable = panelData.suppressClosable;
17
16
  const viewData = panelData.view;
18
17
  const view = new DefaultGroupPanelView({
@@ -21,13 +20,12 @@ export class ReactPanelDeserialzier {
21
20
  ? createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab)
22
21
  : new DefaultTab(),
23
22
  });
24
- const panel = new DockviewGroupPanel(panelId, new DockviewApi(this.layout));
23
+ const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout));
25
24
  panel.init({
26
25
  view,
27
26
  title,
28
27
  suppressClosable,
29
28
  params: params || {},
30
- state: state || {},
31
29
  });
32
30
  return panel;
33
31
  }
@@ -1,32 +1,32 @@
1
1
  import * as React from 'react';
2
+ import { DockviewDropEvent } from '../../dockview/dockviewComponent';
2
3
  import { TabContextMenuEvent } from '../../dockview/options';
3
4
  import { DockviewPanelApi } from '../../api/groupPanelApi';
4
5
  import { DockviewApi } from '../../api/component.api';
6
+ import { IWatermarkPanelProps } from './reactWatermarkPart';
5
7
  import { PanelCollection, PanelParameters } from '../types';
8
+ import { DockviewDropTargets } from '../../groupview/dnd';
6
9
  export interface IGroupPanelBaseProps<T extends {} = Record<string, any>> extends PanelParameters<T> {
7
10
  api: DockviewPanelApi;
8
11
  containerApi: DockviewApi;
9
12
  }
10
- export interface IDockviewPanelProps<T extends {
13
+ export declare type IDockviewPanelHeaderProps<T extends {} = Record<string, any>> = IGroupPanelBaseProps<T>;
14
+ export declare type IDockviewPanelProps<T extends {
11
15
  [index: string]: any;
12
- } = any> extends IGroupPanelBaseProps<T> {
13
- }
16
+ } = any> = IGroupPanelBaseProps<T>;
14
17
  export interface DockviewReadyEvent {
15
18
  api: DockviewApi;
16
19
  }
17
- export interface IWatermarkPanelProps<T extends {} = Record<string, any>> extends PanelParameters<T> {
18
- containerApi: DockviewApi;
19
- close(): void;
20
- }
21
20
  export interface IDockviewReactProps {
22
21
  components?: PanelCollection<IDockviewPanelProps>;
23
- tabComponents?: PanelCollection<IGroupPanelBaseProps>;
22
+ tabComponents?: PanelCollection<IDockviewPanelHeaderProps>;
24
23
  watermarkComponent?: React.FunctionComponent<IWatermarkPanelProps>;
25
24
  onReady?: (event: DockviewReadyEvent) => void;
26
25
  debug?: boolean;
27
26
  tabHeight?: number;
28
- enableExternalDragEvents?: boolean;
29
27
  onTabContextMenu?: (event: TabContextMenuEvent) => void;
28
+ onDidDrop?: (event: DockviewDropEvent) => void;
29
+ showDndOverlay?: (event: DragEvent, target: DockviewDropTargets) => boolean;
30
30
  hideBorders?: boolean;
31
31
  className?: string;
32
32
  disableAutoResizing?: boolean;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { DockviewComponent } from '../../dockview/dockviewComponent';
2
+ import { DockviewComponent, } from '../../dockview/dockviewComponent';
3
3
  import { ReactPanelContentPart } from './reactContentPart';
4
4
  import { ReactPanelHeaderPart } from './reactHeaderPart';
5
5
  import { ReactPanelDeserialzier } from '../deserializer';
@@ -59,12 +59,16 @@ export const DockviewReact = React.forwardRef((props, ref) => {
59
59
  frameworkTabComponents: props.tabComponents,
60
60
  tabHeight: props.tabHeight,
61
61
  debug: props.debug,
62
- enableExternalDragEvents: props.enableExternalDragEvents,
63
62
  watermarkFrameworkComponent: props.watermarkComponent,
64
63
  styles: props.hideBorders
65
64
  ? { separatorBorder: 'transparent' }
66
65
  : undefined,
67
66
  });
67
+ const disposable = dockview.onDidDrop((event) => {
68
+ if (props.onDidDrop) {
69
+ props.onDidDrop(event);
70
+ }
71
+ });
68
72
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
69
73
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
70
74
  const { clientWidth, clientHeight } = domRef.current;
@@ -74,6 +78,7 @@ export const DockviewReact = React.forwardRef((props, ref) => {
74
78
  }
75
79
  dockviewRef.current = dockview;
76
80
  return () => {
81
+ disposable.dispose();
77
82
  dockview.dispose();
78
83
  };
79
84
  }, []);
@@ -85,6 +90,14 @@ export const DockviewReact = React.forwardRef((props, ref) => {
85
90
  frameworkComponents: props.components,
86
91
  });
87
92
  }, [props.components]);
93
+ React.useEffect(() => {
94
+ if (!dockviewRef.current) {
95
+ return;
96
+ }
97
+ dockviewRef.current.updateOptions({
98
+ showDndOverlay: props.showDndOverlay,
99
+ });
100
+ }, [props.showDndOverlay]);
88
101
  React.useEffect(() => {
89
102
  if (!dockviewRef.current) {
90
103
  return;
@@ -11,16 +11,14 @@ export class ReactPanelContentPart {
11
11
  this._onDidBlur = new Emitter();
12
12
  this.onDidBlur = this._onDidBlur.event;
13
13
  this._element = document.createElement('div');
14
- this._element.style.height = '100%';
15
- this._element.style.width = '100%';
14
+ this._element.className = 'dockview-react-part';
16
15
  // this.hostedContainer = new HostedContainer({
17
16
  // id,
18
17
  // });
19
18
  // this.hostedContainer.onDidFocus(() => this._onDidFocus.fire());
20
19
  // this.hostedContainer.onDidBlur(() => this._onDidBlur.fire());
21
20
  this._actionsElement = document.createElement('div');
22
- this._actionsElement.style.height = '100%';
23
- this._actionsElement.style.width = '100%';
21
+ this._actionsElement.className = 'dockview-react-part';
24
22
  }
25
23
  get element() {
26
24
  return this._element;
@@ -68,6 +66,8 @@ export class ReactPanelContentPart {
68
66
  }
69
67
  dispose() {
70
68
  var _a, _b;
69
+ this._onDidFocus.dispose();
70
+ this._onDidBlur.dispose();
71
71
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
72
72
  // this.hostedContainer?.dispose();
73
73
  (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
@@ -5,6 +5,7 @@ export class ReactPanelHeaderPart {
5
5
  this.component = component;
6
6
  this.reactPortalStore = reactPortalStore;
7
7
  this._element = document.createElement('div');
8
+ this._element.className = 'dockview-react-part';
8
9
  }
9
10
  get element() {
10
11
  return this._element;
@@ -4,7 +4,7 @@ import { GroupviewPanel } from '../../groupview/groupviewPanel';
4
4
  import { ReactPortalStore } from '../react';
5
5
  import { IGroupPanelBaseProps } from './dockview';
6
6
  import { PanelUpdateEvent } from '../../panel/types';
7
- interface IWatermarkPanelProps extends IGroupPanelBaseProps {
7
+ export interface IWatermarkPanelProps extends IGroupPanelBaseProps {
8
8
  close: () => void;
9
9
  }
10
10
  export declare class ReactWatermarkPart implements IWatermarkRenderer {
@@ -27,4 +27,3 @@ export declare class ReactWatermarkPart implements IWatermarkRenderer {
27
27
  updateParentGroup(group: GroupviewPanel, isPanelVisible: boolean): void;
28
28
  dispose(): void;
29
29
  }
30
- export {};
@@ -8,8 +8,7 @@ export class ReactWatermarkPart {
8
8
  value: undefined,
9
9
  };
10
10
  this._element = document.createElement('div');
11
- this._element.style.height = '100%';
12
- this._element.style.width = '100%';
11
+ this._element.className = 'dockview-react-part';
13
12
  }
14
13
  get element() {
15
14
  return this._element;
@@ -9,9 +9,9 @@ export class ReactGridPanelView extends GridviewPanel {
9
9
  getComponent() {
10
10
  var _a;
11
11
  return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
12
- params: ((_a = this.params) === null || _a === void 0 ? void 0 : _a.params) || {},
12
+ params: ((_a = this._params) === null || _a === void 0 ? void 0 : _a.params) || {},
13
13
  api: this.api,
14
- containerApi: this.params
14
+ containerApi: this._params
15
15
  .containerApi,
16
16
  });
17
17
  }
@@ -4,6 +4,7 @@ export * from './splitview/splitview';
4
4
  export * from './gridview/gridview';
5
5
  export * from './dockview/reactContentPart';
6
6
  export * from './dockview/reactHeaderPart';
7
+ export { IWatermarkPanelProps } from './dockview/reactWatermarkPart';
7
8
  export * from './paneview/paneview';
8
9
  export * from './types';
9
10
  export * from './react';
@@ -55,14 +55,13 @@ export class ReactPart {
55
55
  if (this.disposed) {
56
56
  throw new Error('invalid operation: resource is already disposed');
57
57
  }
58
- // TODO use a better check for isReactFunctionalComponent
59
58
  if (typeof this.component !== 'function') {
60
59
  /**
61
60
  * we know this isn't a React.FunctionComponent so throw an error here.
62
61
  * if we do not intercept this the React library will throw a very obsure error
63
62
  * for the same reason, at least at this point we will emit a sensible stacktrace.
64
63
  */
65
- throw new Error('invalid operation: only functional components are supported');
64
+ throw new Error('Invalid Operation. dockview only supports React Functional Components.');
66
65
  }
67
66
  const bridgeComponent = React.createElement(React.forwardRef(ReactComponentBridge), {
68
67
  component: this
@@ -9,9 +9,9 @@ export class ReactPanelView extends SplitviewPanel {
9
9
  getComponent() {
10
10
  var _a;
11
11
  return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
12
- params: ((_a = this.params) === null || _a === void 0 ? void 0 : _a.params) || {},
12
+ params: ((_a = this._params) === null || _a === void 0 ? void 0 : _a.params) || {},
13
13
  api: this.api,
14
- containerApi: this.params
14
+ containerApi: this._params
15
15
  .containerApi,
16
16
  });
17
17
  }
@@ -51,7 +51,7 @@ export class Splitview {
51
51
  this._onDidAddView = new Emitter();
52
52
  this.onDidAddView = this._onDidAddView.event;
53
53
  this._onDidRemoveView = new Emitter();
54
- this.onDidRemoveView = this._onDidAddView.event;
54
+ this.onDidRemoveView = this._onDidRemoveView.event;
55
55
  this._startSnappingEnabled = true;
56
56
  this._endSnappingEnabled = true;
57
57
  this.resize = (index, delta, sizes = this.views.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {
@@ -1,5 +1,5 @@
1
1
  import { CompositeDisposable, IDisposable } from '../lifecycle';
2
- import { LayoutPriority, Orientation, Sizing, Splitview } from './core/splitview';
2
+ import { IView, LayoutPriority, Orientation, Sizing, Splitview } from './core/splitview';
3
3
  import { SplitviewComponentOptions } from './core/options';
4
4
  import { BaseComponentOptions } from '../panel/types';
5
5
  import { Event } from '../events';
@@ -12,9 +12,6 @@ export interface SerializedSplitviewPanelData {
12
12
  params?: {
13
13
  [index: string]: any;
14
14
  };
15
- state?: {
16
- [index: string]: any;
17
- };
18
15
  }
19
16
  export interface SerializedSplitviewPanel {
20
17
  snap?: boolean;
@@ -42,6 +39,8 @@ export interface ISplitviewComponent extends IDisposable {
42
39
  readonly width: number;
43
40
  readonly length: number;
44
41
  readonly orientation: Orientation;
42
+ readonly onDidAddView: Event<IView>;
43
+ readonly onDidRemoveView: Event<IView>;
45
44
  updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
46
45
  addPanel(options: AddSplitviewComponentOptions): void;
47
46
  layout(width: number, height: number): void;
@@ -67,12 +66,16 @@ export declare class SplitviewComponent extends CompositeDisposable implements I
67
66
  private _activePanel;
68
67
  private panels;
69
68
  private _options;
69
+ private readonly _onDidAddView;
70
+ readonly onDidAddView: Event<IView>;
71
+ private readonly _onDidRemoveView;
72
+ readonly onDidRemoveView: Event<IView>;
73
+ private readonly _onDidLayoutChange;
74
+ readonly onDidLayoutChange: Event<void>;
70
75
  get options(): SplitviewComponentOptions;
71
76
  get orientation(): Orientation;
72
77
  get splitview(): Splitview;
73
78
  set splitview(value: Splitview);
74
- private readonly _onDidLayoutChange;
75
- readonly onDidLayoutChange: Event<void>;
76
79
  get minimumSize(): number;
77
80
  get maximumSize(): number;
78
81
  get height(): number;